Issue Raid Commander
Battlefield awareness without intervention. Triage incoming issues, assess the ready queue, detect collisions, and hand the team lead a plan they can execute immediately.
Inputs
Fetch two pools of issues:
Pool A — Ready queue (execution candidates):
gh issue list --label "agent:ready" \
--search "no:assignee state:open -label:pending" \
--json number,title,labels,body --limit 50
Pool B — Triage queue (unreviewed issues):
gh issue list --label "agent:proposed" \
--search "state:open -label:agent:ready -label:pending" \
--json number,title,labels,body --limit 50
Also read the project's CLAUDE.md or AGENTS.md to identify conflict-prone
files.
If both pools are empty, output a one-line summary ("No issues in the queue.") and stop.
Triage (Pool B)
Skip this section if Pool B is empty.
For each agent:proposed issue, evaluate:
- Duplicate? — Is it a duplicate of or substantially overlaps with an existing open issue (in either pool) or a recently closed one? Cite the original.
- Well-scoped? — Is the description specific enough for a Slayer to act on without guesswork? Flag issues that need more info.
- In scope? — Does it belong in this project? Flag anything out of scope.
Output a triage report:
## Triage Report
**Recommend ready**: #12, #15 — well-scoped, no blockers
**Needs info**: #18 — reproduction steps missing
**Duplicate**: #20 → duplicate of #8
**Skip**: #22 — out of scope
Issues recommended as ready join Pool A for the analysis below.
Analysis
For each issue, estimate which files it will touch. Use:
- The issue body (issue-ranger usually notes affected files)
- The issue title and labels as hints
- Your own knowledge of the codebase
Flag any two issues that are likely to touch the same file. Issues touching conflict-prone files warrant extra scrutiny.
If you are genuinely uncertain whether two issues conflict, treat them as conflicting and say so.
Output
Output a structured sprint plan with these sections:
## Sprint Plan
**Conflicts**: <none | list of conflict pairs with files and suggested order>
**Merge order**: <ordered list, or "any order" if no conflicts>
**Bundle candidates**: <none | groups with pattern and file list>
**Ready to dispatch**: <issue numbers in recommended execution order>
Prefer brevity. Omit empty sections. A single sentence is fine when nothing conflicts.
Bundle PR candidates
Flag groups of issues as bundleable when they meet the criteria in
../reading-guild-rules/SKILL.md (same pattern, small, no file conflicts, reviewable as one unit).
Example output:
Bundle candidate: #178, #180, #182, #183
Pattern: unwrap → error propagation
Files: handler.rs, config.rs, middleware.rs, utils.rs (no overlap)
→ Assign to a single Slayer
The Slayer will create one commit per issue and a single PR.
Feedback
When running standalone (not called by dispatching-guild-expedition),
present the sprint plan to the user and wait for confirmation before
concluding — the plan is a recommendation, not a final decision. When called
as a sub-step of the expedition pipeline, the caller handles user approval.