skills/review/SKILL.md
Validate plans, execution, or PRs against wish criteria — returns SHIP / FIX-FIRST / BLOCKED with severity-tagged gaps.
npx skillsauth add automagik-dev/genie reviewInstall 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.
Validate any artifact against its wish criteria. Dispatch as a subagent — never review your own work inline.
This skill receives its scope from the dispatch layer:
.genie/wishes/<slug>/WISH.md in the shared worktreeIf context is injected, use it directly. Do not re-parse for information already provided.
/work — validate a wish plan is ready for execution/work — verify implementation meets acceptance criteriaWhen a council team is active, the review can incorporate council perspectives:
genie chat post --team <team>/work)depends-on / blocks)/work)| Severity | Meaning | Blocks? | |----------|---------|---------| | CRITICAL | Security flaw, data loss, crash | Yes | | HIGH | Bug, major perf issue | Yes | | MEDIUM | Code smell, minor issue | No | | LOW | Style, naming preference | No |
| Verdict | Condition | Next step |
|---------|-----------|-----------|
| SHIP | Zero CRITICAL/HIGH gaps, validations pass | See SHIP Next-Steps below |
| FIX-FIRST | Any CRITICAL/HIGH gap or failing validation | Auto-invoke /fix |
| BLOCKED | Scope or architecture issue requiring wish revision | Escalate to human |
| Review Context | On SHIP |
|---------------|---------|
| Plan review (after /brainstorm) | Proceed to /wish to create executable plan |
| Plan review (after /wish) | Proceed to /work to execute the plan |
| Execution review (after /work) | Create PR targeting dev |
| PR review (before merge) | Merge to dev (agents) or approve for human merge |
When the verdict is FIX-FIRST:
/fix with the severity-tagged gap list./fix completes, re-run /review (max 2 fix loops).When a failure is found but the root cause is unclear:
/trace to investigate before dispatching /fix./trace produces a diagnosis report; /fix uses it to apply the correction.The reviewer must not be the engineer. Always dispatch review as a separate subagent.
# Spawn a reviewer subagent
genie agent spawn reviewer
When a PG task exists for the reviewed work, log the verdict as a task comment:
| Verdict | Task Action |
|---------|-------------|
| SHIP | genie task comment #<seq> "SHIP — all criteria passed" |
| FIX-FIRST | genie task comment #<seq> "FIX-FIRST: [gap list]" then genie task move #<seq> --to build |
| BLOCKED | genie task block #<seq> --reason "<reason>" |
Graceful degradation: If no PG task exists for the reviewed work, skip all genie task commands. Verdict logging is an enhancement — the review flow must never fail due to missing tasks.
After /work completes wish fix-dispatch-initial-prompt, the orchestrator dispatches /review:
genie agent spawn reviewer
genie agent send 'Review wish fix-dispatch-initial-prompt execution. Criteria:
1. initialPrompt added to all 5 dispatch call sites
2. protocolRouter.sendMessage kept as backup with warning logging
3. bun test passes
4. bun run typecheck clean
Check: gh pr diff 746, then run validations.' --to reviewer
Reviewer output:
## Review: fix-dispatch-initial-prompt (Execution)
### Checklist
- [x] All acceptance criteria met — 5/5 call sites have initialPrompt
- [x] Validation: bun test — 1137 pass, 0 fail
- [x] Validation: bun run typecheck — clean
- [x] No scope creep — only dispatch.ts and team.ts modified
- [x] No regressions — test count unchanged
### Gaps
(none)
### Verdict: SHIP
Next: create PR targeting dev
/fix.Every session MUST end by writing a terminal outcome to the turn-session contract. This is how the orchestrator reconciles executor state — skipping it leaves the row open and blocks auto-resume.
genie done — work completed, acceptance criteria metgenie blocked --reason "<why>" — stuck, needs human input or an unblocking signalgenie failed --reason "<why>" — aborted, irrecoverable error, or cannot proceedRules:
blocked / failed require --reason.genie done inside an agent session (GENIE_AGENT_NAME set) closes the current executor; it does not require a wish ref.testing
Wire a Genie agent to an Omni channel in one canonical flow — register the agent, bind to an instance, verify the round-trip. Replaces the 5+ command legacy chain.
data-ai
Dispatch trace subagent to investigate unknown issues — reproduces, traces, and reports root cause for /fix handoff.
data-ai
Investigate bugs comprehensively — cascade through /trace, capture browser evidence, extract observability data, and auto-create a GitHub issue with all findings.
data-ai
Full PM playbook — triage backlog, prioritize, assign, track, report, escalate. Copilot, autopilot, or pair modes.