Report Development
Create QWeb PDF reports and report actions in Odoo.
Best use case
Report Development is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Create QWeb PDF reports and report actions in Odoo.
Teams using Report Development should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/report-development/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Report Development Compares
| Feature / Agent | Report Development | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Create QWeb PDF reports and report actions in Odoo.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Creating Reports
## Steps
### 1. Define Report Action (`report/my_model_report.xml`)
```xml
<odoo>
<record id="action_report_my_model" model="ir.actions.report">
<field name="name">My Model Report</field>
<field name="model">my.model</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">my_module.report_my_model</field>
<field name="report_file">my_module.report_my_model</field>
<field name="print_report_name">'My Report - %s' % object.name</field>
<field name="binding_model_id" ref="model_my_model"/>
<field name="binding_type">report</field>
</record>
</odoo>
```
### 2. Create QWeb Report Template (`report/my_model_report_template.xml`)
```xml
<odoo>
<template id="report_my_model">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<t t-call="web.external_layout">
<div class="page">
<h2>
<span t-field="doc.name"/>
</h2>
<div class="row mt-4">
<div class="col-6">
<strong>Partner:</strong>
<span t-field="doc.partner_id"/>
</div>
<div class="col-6">
<strong>Date:</strong>
<span t-field="doc.create_date" t-options='{"widget": "date"}'/>
</div>
</div>
<table class="table table-sm mt-4">
<thead>
<tr>
<th>Description</th>
<th class="text-end">Amount</th>
</tr>
</thead>
<tbody>
<t t-foreach="doc.line_ids" t-as="line">
<tr>
<td><span t-field="line.name"/></td>
<td class="text-end">
<span t-field="line.amount"
t-options='{"widget": "monetary", "display_currency": doc.currency_id}'/>
</td>
</tr>
</t>
</tbody>
<tfoot>
<tr>
<th>Total</th>
<th class="text-end">
<span t-field="doc.total"/>
</th>
</tr>
</tfoot>
</table>
</div>
</t>
</t>
</t>
</template>
</odoo>
```
### 3. Custom Report Data (Optional - `report/my_model_report.py`)
```python
from odoo import api, models
class MyModelReport(models.AbstractModel):
_name = 'report.my_module.report_my_model'
_description = 'My Model Report'
@api.model
def _get_report_values(self, docids, data=None):
docs = self.env['my.model'].browse(docids)
return {
'doc_ids': docids,
'doc_model': 'my.model',
'docs': docs,
'data': data,
'extra_data': self._compute_extra_data(docs),
}
def _compute_extra_data(self, docs):
return {'summary': f'{len(docs)} records'}
```
### 4. Update Manifest
```python
'data': [
'report/my_model_report.xml',
'report/my_model_report_template.xml',
],
```
## Checklist
- [ ] Report action uses `qweb-pdf` as `report_type`
- [ ] Template calls `web.html_container` and `web.external_layout`
- [ ] Template iterates over `docs` recordset
- [ ] Uses `t-field` for field rendering (handles formatting/translation)
- [ ] Report files listed in manifest
- [ ] Binding set on the action for the Print menu
- [ ] Custom report model named `report.<module>.<report_name>` (if needed)Related Skills
reporter
Communication specialist - generates Worker instructions and formats user feedback
readiness-report
Evaluate how well a codebase supports autonomous AI development. Analyzes repositories across nine technical pillars (Style & Validation, Build System, Testing, Documentation, Dev Environment, Debugging & Observability, Security, Task Discovery, Product & Analytics) and five maturity levels. Use when users request `/readiness-report` or want to assess agent readiness, codebase maturity, or identify gaps preventing effective AI-assisted development.
react-nextjs-development
React and Next.js 14+ application development with App Router, Server Components, TypeScript, Tailwind CSS, and modern frontend patterns.
python-workflow-development
Develop Python scripts and modules for building AI workflows and integrations. Use when coding data ingestion, transformation, analysis, and automation pipelines in pilot projects requiring Python automation.
python-development
Modern Python development with Python 3.12+, Django, FastAPI, async patterns, and production best practices. Use for Python projects, APIs, data processing, or automation scripts.
python-development-python-scaffold
You are a Python project architecture expert specializing in scaffolding production-ready Python applications. Generate complete project structures with modern tooling (uv, FastAPI, Django), type hint
prpm-development
Use when developing PRPM (Prompt Package Manager) - comprehensive knowledge base covering architecture, format conversion, package types, collections, quality standards, testing, and deployment
proof-driven-development
Run proof-driven development using Lean 4 for formal verification - comprehensive skill handling both design (planning) and execution (verification)
project-development
This skill should be used when the user asks to "start an LLM project", "design batch pipeline", "evaluate task-model fit", "structure agent project", or mentions pipeline architecture, agent-assisted development, cost estimation, or choosing between LLM and traditional approaches.
preferences-react-tanstack-ui-development
React and TanStack UI development patterns including component design, routing, and state management. Load when working with React components or TanStack libraries.
perseus:report
Use when generating the final executive security report (Phase 4)
overnight-development
Automates software development overnight using git hooks to enforce test-driven Use when appropriate context detected. Trigger with relevant phrases based on skill purpose.