skills/fix/SKILL.md
Dispatch fix subagent for FIX-FIRST gaps from /review, re-review, and escalate after 2 failed loops.
npx skillsauth add automagik-dev/genie fixInstall 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.
Resolve FIX-FIRST gaps from /review. Dispatch a fix subagent, re-review, repeat up to 2 loops, then escalate.
/review returned a FIX-FIRST verdict with CRITICAL or HIGH gaps| Verdict | Condition | Action | |---------|-----------|--------| | SHIP | — | Done. Return to orchestrator. | | FIX-FIRST | loop < 2 | Increment loop, go to step 2. | | FIX-FIRST | loop = 2 | Escalate — max loops reached. | | BLOCKED | — | Escalate immediately. |
Fix loop exceeded (2/2). Escalating to human.
Remaining gaps:
- [CRITICAL] <gap description> — <file>
- [HIGH] <gap description> — <file>
Fix and re-review must be separate dispatches — never combine them in one subagent.
# Spawn a fixer subagent
genie agent spawn fixer
# Spawn a reviewer subagent (separate from fixer)
genie agent spawn reviewer
When a PG task exists for the work being fixed, log each fix attempt as a task comment:
| Event | Command |
|-------|---------|
| Fix attempt start | genie task comment #<seq> "Fix loop 1/2: [gap summary]" |
| Fix attempt result | genie task comment #<seq> "Fix loop 1/2: [changes made]" |
| Fix success | genie task comment #<seq> "Fix complete — [summary of all changes]" |
| Escalation (max loops) | genie task block #<seq> --reason "Fix loop exceeded (2/2)" |
| Escalation (no progress) | genie task block #<seq> --reason "No progress — identical gaps across loops" |
Graceful degradation: If no PG task exists for the work being fixed, skip all genie task commands. Fix loop logging is an enhancement — the fix flow must never fail due to missing tasks.
/review returned FIX-FIRST with 2 gaps:
- [CRITICAL] workDispatchCommand missing initialPrompt — dispatch.ts:532
- [HIGH] protocolRouter.sendMessage result not checked — dispatch.ts:541
The orchestrator runs /fix:
# Loop 1: dispatch fixer with gaps
genie agent spawn fixer
genie agent send 'Fix these gaps from /review on wish fix-dispatch-initial-prompt:
- [CRITICAL] dispatch.ts:532 — add initialPrompt to handleWorkerSpawn
- [HIGH] dispatch.ts:541 — check protocolRouter.sendMessage result, log warning on failure
Reference: qa-runner.ts:334 shows correct pattern.' --to fixer
# Wait for fixer to complete
sleep 60 && genie agent log fixer --raw
# Re-review (separate subagent — never the same as fixer)
genie agent spawn reviewer
genie agent send 'Review wish fix-dispatch-initial-prompt. Check the fixer changes against acceptance criteria. Run bun test.' --to reviewer
# Reviewer returns SHIP → done
# If FIX-FIRST again → loop 2 (max 2 loops, then escalate)
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.