skills/retro/SKILL.md
Use when a user completes a phase, sprint, milestone, or meaningful unit of work and needs a retrospective. Also triggers on `/retro` command. Generates honest, structured retrospectives from available project data (GSD planning files, git history, GitHub PRs/issues, user input). Adapts to any project — GSD-managed, plain git repos, GitHub-heavy workflows, or unstructured projects. Jira-aware: detects `.jira/` and redirects per-sprint retros to `/jira:retro` (the plugin owns the tight coupling to CONTEXT.md/VERIFICATION.md). Produces phase retrospectives, cumulative summaries, and stakeholder reports.
npx skillsauth add koolamusic/claudefiles retroInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate honest, structured retrospectives for any Claude Code project. Retrospectives are the primary communication channel between engineering execution and product/stakeholder visibility.
.project/ or modify git history./retro 1 twice overwrites the previous output. No duplicates.| Command | Description |
|---------|-------------|
| /retro | Retrospective for the most recently completed phase |
| /retro <N> | Retrospective for phase N |
| /retro config | Show current config and allow edits |
| /retro status | Show which phases have retros, which are pending, gaps |
| /retro init | Initialize retrospective infrastructure |
Read .claude/retrospective.config.json. If missing, run first-run initialization (see references/config.md for schema and first-run behavior).
Probe for .jira/STATE.md at the project root. If absent, skip this step.
If found, the repo uses the jira plugin for sprint state. This skill does not read .jira/sprints/* files — that coupling lives inside /jira:retro, which knows how to interpret CONTEXT.md (locked decisions D-XX), VERIFICATION.md (goal-backward outcomes), and per-wave PLAN files.
Surface this to the user via AskUserQuestion before proceeding:
Detected .jira/ — this repo uses the jira plugin for sprint state.
For per-sprint retros, /jira:retro <sprint-slug> is the right tool —
it reads BRIEF.md, CONTEXT.md, every *-PLAN.md, EXECUTION.md, and
VERIFICATION.md for that sprint.
/retro here covers cross-sprint rollups via git + github only — it
intentionally does NOT open jira's per-sprint files.
Options:
/jira:retro — exit this skill; tell the user to invoke /jira:retro <slug> (or /jira:retro --since <date> for cross-sprint rollup inside the plugin).gsd provider for this run (it would misfire on legacy .planning/ patterns the jira repo doesn't use). Use only git, github, and manual. Note in the final retrospective output: "Generated by /retro with jira detection — per-sprint detail intentionally not included; see /jira:retro for that."/retro 3), use it..planning/STATE.md for current phase (skipped if jira-detected continue path was taken in step 1.5)ghQuery all enabled providers. For provider details, probe logic, and precedence rules, see references/providers.md.
Collect across providers:
Provider precedence (merge, never discard): GSD → GitHub → Git → Manual
Use the project's template from config, or the built-in default at _templates/PHASE-RETRO-TEMPLATE.md. Fill all 10 sections:
| # | Section | Focus | |---|---------|-------| | 1 | Phase Context | Objective, scope in/out, entry conditions, success criteria table | | 2 | Findings | Expected vs unexpected discoveries. Prioritize unexpected. | | 3 | Observations | Patterns, anomalies, technical notes for future phases | | 4 | Edge Cases | Non-obvious scenarios, how handled, impact | | 5 | Decisions Made | Options considered, choice, rationale — audit trail | | 6 | Risks & Issues | Issues (severity, resolution, time impact). Forward-looking risks. | | 7 | Metrics & Progress | Planned vs actual. Requirement completion with evidence. | | 8 | Learnings | What worked, what didn't, what we'd do differently. Be honest. | | 9 | Artifacts | Table of outputs with filenames and descriptions | | 10 | Stakeholder Highlights | Executive summary, key numbers, callouts, confidence scores |
Tone: Surface the bad and the ugly prominently. Sugarcoating defeats the purpose.
Before writing, self-audit the retrospective. For each of the 10 sections:
| Check | Pass Condition |
|-------|----------------|
| Section present | Heading exists with content below it |
| Tables populated | Every table has at least 1 data row (not just headers) |
| No placeholder text | No {{variables}}, "TBD", "N/A" for entire sections |
| Manual questions asked | If a section is empty after provider data, the user was asked |
| Honesty audit | Sections 2, 6, 7, 8 must not lead with positives if negatives exist. Any language that reframes a negative outcome as positive, neutral, or as a growth opportunity is prohibited. State what failed, why, and what it cost. Banned phrases include but are not limited to: "challenges", "despite difficulties", "evolved the approach", "learning opportunity", "room for improvement", "adjusted scope/timeline", "partially achieved/met", "minor setback", "incremental progress", "opportunity for improvement", "required additional iteration", "scope refinement". |
| Confidence scores | Section 10 has Completeness, Quality, Risk Exposure scores 1-5. Use this rubric: 5 = all requirements met, no significant issues. 4 = all requirements met, minor issues resolved. 3 = most requirements met, some issues outstanding. 2 = significant requirements unmet or major issues. 1 = critical failures, phase objectives not achieved. Scores must reflect reality — do not inflate. |
If any section is empty: Go back to Step 3 and ask the user via manual provider. Do not write a retrospective with blank sections.
Manual question minimums by data richness:
Go back and ask about surprises, failures, forward risks, edge cases, and decisions at minimum.
Save to <retrospective_dir>/phase-<N>-<slug>.md (default: .jira/sprints/<active-slug>/ if jira-managed, otherwise .project/retros/). Overwrite if exists.
Slug derivation: Phase name lowercased, spaces replaced with hyphens, non-alphanumeric characters (except hyphens) removed, truncated to 50 characters. If no phase name exists, use phase number only: phase-<N>.md.
If summary_tracker.auto_update is true, update <retrospective_dir>/SUMMARY.md:
If SUMMARY.md doesn't exist, create from built-in default at _templates/SUMMARY-TEMPLATE.md.
If stakeholder_report.auto_generate is true, generate <retrospective_dir>/phase-<N>-<slug>-stakeholder.md from _templates/STAKEHOLDER-REPORT-TEMPLATE.md:
The skill ships with hooks/retro-trigger.sh — a real Claude Code PostToolUse hook, not just instructions.
| Trigger | Tool Watched | Signal |
|---------|-------------|--------|
| GSD phase completion | Edit/Write on .planning/STATE.md | Status contains "complete" |
| Git tag creation | Bash running git tag <name> | Tag command pattern match |
auto: Prints [retro] Phase N complete. Auto-generating retrospective... to stderr (exit 2). The agent sees this as a hook message and should run /retro.prompt: Prints the prompt message and writes pending_retro to config. User decides when to run /retro.manual: Hook exits 0 silently. No-op.The hook must be registered in the project's .claude/settings.json:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write|Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/retro-trigger.sh",
"timeout": 10
}
]
}
],
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/retro-reminder.sh",
"timeout": 5
}
]
}
]
}
}
On /retro init, register both hooks automatically if the project's .claude/settings.json doesn't already have them. Merge into existing hook arrays — do not overwrite existing hooks for the same trigger.
Two hooks, two jobs:
retro-trigger.sh (PostToolUse) — detects phase completion in real timeretro-reminder.sh (SessionStart) — reminds about deferred retros on session startSee references/config.md for pending_retro schema.
development
Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions "red-green-refactor", wants integration tests, or asks for test-first development.
data-ai
Turn the current session into a coordination thread that routes per-branch implementation work to durable, reusable child agents. Use when the user says 'orchestrator on', wants this session to act as chief-of-staff across branches, or asks to route work without implementing locally.
development
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes - four-phase framework with built-in backward tracing for deep-stack failures, ensuring root-cause understanding before implementation
development
Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.