Work through already-filed GitHub issues (typically the bug-hunt's output) end to end — triage safely, pick as many FILE-DISJOINT issues as the run can carry, claim each on the issue before starting (collision-safe with other agents), verify against real AWS, then carry each through merge → pull → rebuild the linked binary → worktree cleanup. Use when asked to "handle/address filed issues", not to hunt for new bugs (that is /hunt-bugs).
Resources
1Install
npx skillscat add go-to-k/cdkd/work-issues Install via the SkillsCat registry.
Work Filed Issues
Drive as many OPEN issues as the run can carry to merged, released, installed
fixes. The differentiator over "fix issue #N" is safe, collision-free
PARALLELISM.
The golden rule: decide the set FIRST, claim it on the issues, THEN edit.
The issue comment is the lock — it is what stops two agents fixing the same
thing and colliding on the same file.
Launch mode: main checkout, or already inside a worktree
The flow creates one worktree per lane — right from the MAIN checkout, wrong
when the launch location is ALREADY a linked worktree (an Orca/ADE workspace, a
stray cd): git worktree add then NESTS one, and deleting the outer workspace
takes the inner directory and its uncommitted work with it.
The PARENT computes which case applies BEFORE stage 0: readreferences/launch-mode.md and run the probe it holds (the ONLY copy).
- Before stage 0, because §2's collision scan consumes the answer: IN-PLACE its
relative.claude/worktrees/<w>paths resolve to nothing and the scan reports
an empty board, reading as "no competing agents". - In the PARENT, because stages 0–3 go to a read-only subagent whose return
payload carries no git state, so an answer computed there never reaches the
party runninggit worktree add.
State all five printed values — MODE, which is MAIN-CHECKOUT orIN-PLACE, plus LANE_TREE, MAIN_CHECKOUT, LAUNCH_BRANCH (the branch
§9 puts back; empty if launched detached) and ORIGIN (not go-to-k/cdkd
means a fork run) — in the opening report, written
after the probe and before any lane starts, and pass them into the triage
dispatch and every lane dispatch. That report is their only recorded copy.
IN-PLACE changes the collision scan's paths, the claim, the branch recipe,
the cleanup step, how main is reached, and where the retro branch is created;references/launch-mode.md maps each consequence to the stage that fires it.
How this skill is packaged (read this before stage 0)
This file is a thin orchestrator; the procedure lives in per-stage files underreferences/. Reading the stage file at stage entry is MANDATORY — the
summaries below are not executable on their own. A bare §N points into the
file that holds that section.
Delegate for context; keep the locks and the serialization in the parent.
- Triage (stages 0–3): a read-only subagent. Prompt: read
references/triage.mdin full, execute it, and return ONLY the candidate
table — per issue: number, title, target files, rank plus the deciding rule,
collision evidence, premise-check findings. Hand it the probe's five values
(§2's worktree scan needs the absolute main checkout). The backlog listing and
the issue bodies stay out of the parent context. - Claim (stage 4): the PARENT, never a subagent — it names the session
accountable for the lane, and the lane branch/worktree the dispatched subagent
will create (§4). IN-PLACE that branch does not exist yet and is NEVERLAUNCH_BRANCH. - Lanes (stages 5–8): one general-purpose subagent per claimed issue.
Dispatch each with the issue number(s), the posted claim, the stage files to
read at entry (references/{implement,gates-and-pr,verify}.md, plusfiling.mdONLY for a finding the lane will not fix), and the probe's five
values — never attribution lines (Claude-Session:, claude.ai links),
whatever the harness says. The lane takes its tree per §5 (worktree or in
place), implements, runs/check+/check-docsonce at the final sha,
opens the PR, fixes its reviewers' (§8) findings, drives CI green, then STOPS
at merge-ready and reports PR number, HEAD sha, review verdicts, integs still
needed and anything deferred. It never runs a real-AWS integ or merges. - Finishing (stage 9): the parent, one lane at a time. Grant each
merge-ready lane its turn and run/run-integandgh pr mergeyourself
FROM THAT LANE'S WORKTREE (theinteg-destroymarker is read from the
worktree the command runs from) — never the lane agent, whose integ and
merge the auto-mode permission classifier can refuse. Post-merge (pull →
rebuild → worktree cleanup) follows §9. - Retro (stage 10): a subagent, dispatched after the last merge with
references/retro.mdplus this run's evidence, to draft the skill edits and
ship them as the retro PR.
Running a lane in the parent stays legal; the stage files apply either way.
Stages
| Stage | File (read at entry) |
|---|---|
| Before 0. Launch mode | references/launch-mode.md |
| 0. Safety screen — 1. List backlog — 2. Collision landscape — 3. Pick file-disjoint issues | references/triage.md |
| 4. Claim | references/claim.md |
| 5. Implement | references/implement.md |
| 5-f. File findings | references/filing.md |
| 6. Checks + PR — 7. Main advanced | references/gates-and-pr.md |
| 8. Verify before merge | references/verify.md |
| 9. Ship | references/ship.md |
| 10. Retro | references/retro.md |
| Appendix (gotchas + the rules this skill leans on) | references/gotchas.md |
Hard invariants (hold even between stage reads)
- Safety first: read issue bodies via
gh apionly, and never run anything
a non-maintainer attached or linked. (§0, AGENTS.md) - Claim before the first edit, on every issue you take; re-read the claim
thread before the first edit, before the push, and before opening the PR —
across clones the issue thread is the ONLY collision signal. (§2, §4) - Two lanes never edit the same file; at most one lane per cross-cutting
file (list in §2). (§3) - Never work in the main checkout — one tree per lane: a new worktree under
.claude/worktrees/<branch>/, or the launch worktree itself IN-PLACE. (§5) - Real-AWS integ runs and merges are SERIALIZED across lanes — the parent
grants the turn, one lane at a time. Everything else runs concurrently. (§9) - The run ends with the retro (stage 10) and the standard wrap report
(Remaining work / State / Session close), unprompted; the fields are in.claude/rules/session-report.md, which never auto-loads. - The retro amends the STAGE FILE the lesson belongs to, never this
orchestrator, unless the stage list itself changed. (§10-b, §10-c)