ai/claude/skills/retro/SKILL.md
Analyze PR review comments to identify gaps in coding rules. Fetches comments from all registered repos, classifies them against existing rules, and proposes specific rule additions or refinements.
npx skillsauth add otto-nation/otto-workbench 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.
Analyzes PR review comments (human and bot) to identify gaps, weaknesses, and
false negatives in the coding rules at ai/guidelines/rules/. Proposes specific
rule additions, refinements, and strengthening.
Run manually with /retro. Auto-triggers every 3 days via the Stop hook managed
by otto-workbench sync.
Retro runs 4 sequential phases. Execute them in order. Do not skip phases.
ORIENT --> CLASSIFY --> PROPOSE --> REPORT
Goal: Collect PR review comments and cross-reference against current rules.
Run retro-scan to produce a structured report:
retro-scan
The report contains:
Read all rule files referenced in the report to understand what each rule currently covers before classifying.
If the scan report is empty (no PR comments found), skip to Phase 4 and record the timestamp — there's nothing to analyze.
Goal: Assign a category to each substantive PR comment.
For each comment in the scan report, assign exactly one category:
| Category | Meaning | When to assign |
|----------|---------|----------------|
| rule-gap | No existing rule covers this | Nearest rule is "none" or very weak match, and the comment identifies a generalizable pattern |
| rule-refinement | Existing rule is too vague or narrow | Nearest rule matches but doesn't address the specific concern |
| false-negative | Rule exists but wasn't followed | Nearest rule clearly covers this, but the code still violated it |
| one-off | Context-specific, doesn't generalize | Feedback is about this specific PR's requirements or design choices |
| noise | Not actionable | Remaining style nits, questions answered in-thread, approval-adjacent |
false-negative findings are high-priority — they mean existing rules aren't
working, which is worse than missing rulesGoal: Draft concrete rule changes for each actionable finding.
For each non-skip finding, draft a proposal:
rule-gap:rule-refinement:false-negative:Group proposals by target rule file. Include the source PR comment and PR number as evidence for each proposal.
Goal: Write the report and record the timestamp.
Write RETRO.md to the workbench memory directory (ai/memory/RETRO.md relative
to the workbench root). Determine the workbench path from the OTTO_WORKBENCH
environment variable, or default to ~/git/personal/otto-nation/otto-workbench/main.
# Retro Report
<!-- generated: YYYY-MM-DD -->
<!-- prs-analyzed: N | findings: N | proposals: N -->
## Proposals
### Rule Gaps (new rules needed)
#### 1. <rule-file> — <short description>
- **Evidence:** PR #N (@reviewer): "<comment text>"
- **Category:** rule-gap
- **Proposed addition:**
- **Suggested location:** After "<existing bullet text>" in <file>
### Rule Refinements
#### N. <rule-file> — <short description>
- **Evidence:** PR #N (@reviewer): "<comment text>"
- **Category:** rule-refinement
- **Current rule:** "<existing text>"
- **Proposed edit:** "<new text>"
### False Negatives (rule existed but wasn't followed)
#### N. <rule-file> — <short description>
- **Evidence:** PR #N (@reviewer): "<comment text>"
- **Category:** false-negative
- **Existing rule:** "<rule text>" in <file>
- **Proposed strengthening:** "<stronger version>"
## Skipped (one-off / noise)
- PR #N: "<comment>" — <reason>
~/.claude/skills/retro/retro-complete.sh
Print a one-line summary:
Retro complete: N PRs analyzed, N findings (N rule-gaps, N refinements, N false-negatives), N proposals written.
Report: <workbench>/ai/memory/RETRO.md
testing
Address incoming PR review comments: fetch, verify, fix, and reply. Works with human and bot reviewers.
development
Reviews accumulated Claude Code memories for promotion into durable workbench artifacts — lint rules, scripts, coding rules, hooks. Prioritizes mechanical enforcement over prose.
tools
Manage GitHub PR review lifecycle: analyze unanswered threads, update review files, and post replies. Initial posting is handled by the review-post script.
tools
Refresh the machine profile (~/.claude/machine/machine.md) — hardware, OS, runtimes, Docker, Git identity, and project registry. Run after upgrading tools or to force a refresh.