Use after implementation is verified and before merge — consolidates multiple spec iterations into a single final-state report, marks related specs, and records key lessons
Consolidate a feature's spec history into a single human-readable final report. The report presents the final implemented state as its primary content — what WAS BUILT, not what was tried. A brief Journey Log at the end captures notable failures and pivots for future designers.
Core principle: Final state first. The reader should understand the feature from this report alone, without reading any spec.
Announce at start: "I'm using the report skill to write the final report for this feature."
Save reports to: the reports/ directory given in the <compose_docs_dir> block of your prompt, as <feature-name>.md
Specs are accumulative (new file per iteration). Final reports are overwrite (same file updated in place):
specs and plans lists to include any new entriesStandard step after implementation is complete and verified — write a final report summarizing what was delivered.
Skip when:
Every report MUST use this structure:
---
feature: <feature-name>
status: delivered
specs:
- <spec-1-path>
- <spec-2-path>
plans:
- <plan-path>
branch: <branch-name>
commits: <first-sha>..<last-sha>
---
# [Feature Name] — Final Report
## What Was Built
[1-3 paragraph executive summary. What does the feature do? What problem
does it solve? Written for first contact — no "v1 tried X" narrative.]
## Architecture
[Final architecture as implemented. Components, boundaries, data flow,
key interfaces. Self-contained — reader needs no spec file.]
### Design Decisions
[Important choices and rationale. Frame as "we chose X because Y" —
never "we tried A, then B, then settled on X".]
## Usage
[How to use/configure/interact. Commands, config options, API surface.
Concrete examples.]
## Verification
[How the feature was verified. Test summary, manual testing, edge cases.]
## Journey Log
> Brief notes on what informed the final design. Not required reading.
- [dead end] Tried X — failed because Y
- [pivot] Switched from A to B after discovering C
- [lesson] Transferable insight here
## Source Materials
| File | Role | Notes |
|------|------|-------|
| `path/to/spec-1.md` | Initial design | See §3 for context on constraint X |
| `path/to/spec-2.md` | Revised after Y | Superseded by this report |
| `path/to/plan.md` | Implementation plan | Complete |For each file listed in specs and plans, insert this NOTE block between the document title (H1) and the rest of the content:
> [!NOTE]
> This document may not reflect the current implementation.
> See the final report for up-to-date state:
> [Final Report](../reports/<feature-name>.md)Rules:
[!NOTE], not [!CAUTION])Scale to complexity:
"What Was Built" section:
"Architecture" section:
"Design Decisions" section:
"Journey Log":
[dead end], [pivot], or [lesson]After assembling the report, check:
specs/plans lists enable toolingPreceded by: compose:verify (feature must be verified before documenting) Followed by: compose:merge (the terminal workflow step)
After saving the report and marking specs, offer transition:
"Final report written and committed to
<path>. Related specs marked. Ready to finish the branch — invoking compose:merge."
ff87d47
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.