Fix a triaged issue by following its pre-written plan from plans/triage/active/. This skill
knows nothing about any specific tracker — Step 5 is where the project's actual
resolve-in-tracker mechanism gets plugged in.
Step 1 — Locate the plan file
If $ARGUMENTS is provided, treat it as an issue number (e.g. 35) or partial filename.
- Search
plans/triage/active/(notimplemented/orhold/) for a file matchingissue-<number>or the given string. - If no match is found, list all open plan files and use
AskUserQuestionto ask which one to fix.
triage always writes plan files with status: draft — there's no separate approval UI for this
pipeline the way feature-analyst has one; the user invoking this skill on a specific issue is
the approval. If the located plan's status is still draft, flip it to approved now, before
delegating in Step 2 (this is what lets ralph-implement proceed instead of bouncing it back as
unapproved).
Step 2 — Delegate the fix and tests
Skill(skill: "ralph-implement", args: "plans/triage/active/issue-<N>-*.md")
ralph-implement reads the plan's ## Root cause and ## Fix plan checklist, applies each item,
then works through ## Tests, running real commands and retrying failures up to the plan's
max_iterations before giving up. It owns all checkbox flipping, retry/iteration bookkeeping, and
the final ## Definition of Done gate. Do not duplicate any of that logic here.
- If it reports
status: blocked— relay its## Blockedsection to the user verbatim and stop. Do not attempt to silently finish the fix yourself. - If it reports
status: doneand the plan has a## UAT verificationsection — run the same Phase 4.5 black-box loopfeature-analystuses (spawnuat-tester, retry viaralph-implementerup tomax_uat_rounds, blocked on exhaustion) before Step 3. - If it reports
status: done(no UAT section, or UAT passed) — proceed to Step 3. The plan file is still inplans/triage/active/at this point (ralph-implementnever moves files — that stays this skill's job, see Step 5).
Step 3 — Optional smoke check
If this project has an obvious way to manually exercise the fix (a running dev server, a CLI
command, a script) and the plan or the issue names a specific page/flow to check, exercise it now
and verify the specific behavior the issue reported is now correct. Skip this step entirely if
there's no clear way to do it — it's a human-facing sanity check on top of ## Tests, not a
replacement for it, and not worth inventing a check that doesn't already fit the project.
Step 4 — Confirm resolution with user
Use AskUserQuestion to ask:
- Question:
"Issue #<N> — <one-line summary of what was fixed>. Mark as resolved?" - Options:
"Yes — mark resolved","No — something looks wrong"
If the user selects No, ask a follow-up AskUserQuestion: "What still looks wrong?" and
investigate.
Step 5 — Update the tracker and move the plan
Only if the user selected Yes:
- Mark the issue resolved through whatever mechanism this project's tracker uses (an API call, a database update, a status field edit) — the specific command is project-specific and not something to guess at; use what the plan or this project's docs already show, or ask the user if neither says. If the tracker's own resolution flow sends notifications, let it do that — don't invent a separate notification step here.
- Move the plan file:
plans/triage/active/issue-<N>-*.md→plans/triage/implemented/IMPLEMENTED-issue-<N>-*.md. - Report: "Issue # marked resolved. Plan moved to
implemented/."
Notes
- This skill is the pipeline-specific wrapper around
ralph-implement, not a reimplementation of it — it owns issue lookup, the optional smoke check, the human resolution gate, and the tracker/implemented/bookkeeping, exactly the parts of this flow that are unique to triage-sourced bugfixes.ralph-implementitself never touches a tracker, never notifies anyone, and never moves plan files. - Do not push to git.
- For any destructive write beyond marking the single issue resolved, ask the user to confirm first.
- Triage plan files live in
plans/triage/active/. Resolved files go toplans/triage/implemented/with theIMPLEMENTED-prefix. On-hold files live inplans/triage/hold/(the tracker-driven hold state fromtriage, separate from a plan's ownstatus: blockedfrontmatter field, which means the implementation loop hit its retry budget — check both meanings if a plan seems stuck).