skills-internal/retro/SKILL.md
Review the current session, surface process improvements and tangential issues, and create follow-up tasks
npx skillsauth add gioe/tusk 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.
Reviews the current conversation history to capture process learnings, instruction improvements, and tangential issues. Creates structured follow-up tasks so nothing falls through the cracks.
Prefer
/create-taskfor all task creation. It handles decomposition, deduplication, acceptance criteria generation, and dependency proposals in one workflow. Usebin/tusk task-insertdirectly only when scripting bulk inserts or in automated contexts where the interactive review step is not applicable.
Fetch config, backlog, then determine retro mode:
tusk "SELECT complexity FROM tasks WHERE status = 'Done' ORDER BY updated_at DESC LIMIT 1"
tusk setup
Parse the JSON from tusk setup: use config for metadata assignment and backlog for duplicate comparison.
Read file: <base_directory>/FULL-RETRO.md
Then follow Steps 1–6 from that file. Do not continue below.Streamlined retro for small tasks. Skips subsumption analysis and dependency proposals.
Check for custom focus areas first. Attempt to read <base_directory>/FOCUS.md.
Analyze the full conversation context using the resolved categories.
If all categories are empty, report "Clean session — no findings" and stop. (Config and backlog were already fetched in Step 0 — no additional work needed.)
Compare each finding against the backlog for semantic overlap (use backlog from Step 0). Drop any already covered.
Run heuristic dupe check on surviving findings:
tusk dupes check "<proposed summary>"
Present findings and proposed tasks in a table. Wait for explicit user approval before inserting.
For Category A and Category E approved findings, follow LR-2a below before inserting tasks. For all other approved findings, insert tasks now:
tusk task-insert "<summary>" "<description>" --priority "<priority>" --domain "<domain>" --task-type "<task_type>" --assignee "<assignee>" --complexity "<complexity>" \
--criteria "<criterion 1>" [--criteria "<criterion 2>" ...]
Always include at least one --criteria flag — derive 1–3 concrete acceptance criteria from the task description. Omit --domain or --assignee entirely if the value is NULL/empty. Exit code 1 means duplicate — skip. Skip subsumption and dependency proposals.
Before creating tasks for Category A (process improvement) or Category E (debugging velocity) findings, check if any can be applied as inline patches to an existing skill or CLAUDE.md.
For each approved Category A finding:
Identify a target file — check whether the finding description mentions:
.claude/skills/ (list them with ls .claude/skills/)CLAUDE.mdIf a target file is identified:
a. Read the file (Read .claude/skills/<name>/SKILL.md or Read CLAUDE.md)
b. Produce a concrete proposed edit — the exact text to add, change, or remove. Show the specific diff, not a vague description.
c. Present the patch with three options:
Skill Patch Proposal — [finding title] File:
.claude/skills/<name>/SKILL.md- [existing text to replace] + [replacement text]approve — apply the edit now (no task created for this finding) defer — create a task with this diff included in the description skip — create a generic task as usual
If approved: apply the edit in-session using the Edit tool. Do not create a task for this finding.
If deferred: include the proposed diff verbatim in the task description when calling tusk task-insert.
If skipped, or if no target file was identified: proceed to normal task creation (step 4 above).
Apply this step if there are lint rule findings — Category D when using defaults, or a "Lint Rules" section when using a custom FOCUS.md.
The bar is high — only proceed if you observed an actual mistake that a grep rule would have caught. Do not apply lint rules for general advice.
For each lint rule finding, attempt inline application first:
Present the proposed rule — show the exact command and ask for approval:
Found lint rule candidate: [finding description] Command:
tusk lint-rule add '<pattern>' '<file_glob>' '<message>'Apply this rule now? (Reversible withtusk lint-rule remove <id>.)
If the user approves — run the command immediately:
tusk lint-rule add '<pattern>' '<file_glob>' '<message>'
If the user declines, or if inline application fails, create a task as a fallback:
tusk task-insert "Add lint rule: <short description>" \
"Run: tusk lint-rule add '<pattern>' '<file_glob>' '<message>'" \
--priority "Low" --task-type "<task_type>" --complexity "XS" \
--criteria "tusk lint-rule add has been run with the specified pattern, glob, and message"
For <task_type>: use the project's config task_types array (already fetched via tusk setup in Step 0). Pick the entry that best fits a maintenance/tooling task (e.g., maintenance, chore, tech-debt, infra — whatever is closest in your project's list). If no entry is a clear fit, omit --task-type entirely.
Fill in <pattern> (grep regex), <file_glob> (e.g., *.md or bin/tusk-*.py), and <message> (human-readable warning) with the specific values from your finding.
## Retrospective Complete (Lightweight)
**Session**: <what was accomplished>
**Findings**: X total (by category — use resolved category names)
**Created**: N tasks (#id, #id)
**Lint rules**: K applied inline, M deferred as tasks
**Skipped**: M duplicates
Then show the current backlog:
tusk -header -column "SELECT id, summary, priority, domain, task_type, status FROM tasks WHERE status = 'To Do' ORDER BY priority_score DESC, id"
End of lightweight retro. Do not continue to FULL-RETRO.md.
To override the default analysis categories, create a FOCUS.md file in the skill directory (replace <base_directory> with the actual path shown at the top of the loaded skill — typically .claude/skills/retro):
cp .claude/skills/retro/FOCUS.md.example .claude/skills/retro/FOCUS.md
# Edit FOCUS.md to define your custom categories
A template is available at <base_directory>/FOCUS.md.example showing the default category format. Custom categories replace A–D. Include a "Lint Rules" section to retain lint-rule handling.
FOCUS.md is not part of the distributed skill and will not be overwritten by tusk upgrade.
data-ai
Autonomously work through the backlog — dispatches /chain for chain heads, /tusk for standalone tasks, repeating until empty
data-ai
Groom the backlog by closing completed tickets, removing redundant/stale tickets, reprioritizing, and assigning agents
tools
File a GitHub issue against the tusk repo itself — tusk bugs, CLI limitations, skill improvements, or missing features. Use anytime the user identifies a gap in tusk (not in their own project's code).
tools
Contribute a client-discovered fix or improvement back to the configured iOS library repo from an ios_app tusk project.