Fix Issues Command
Diagnose, reproduce, and (when reproducible) fix open GitHub issues in parallel — each in its own clean worktree, with build artifacts symlinked so nothing recompiles.
Arguments
$ARGUMENTS— optional. Either:- a space- or comma-separated list of issue numbers / URLs, OR
- GitHub-search qualifiers (
is:open,label:bug,author:foo, ...) and/or a relative time window like3d,2w,12h.
If no issues and no flags are passed, default to all open issues opened in the last 3 days.
Steps
1. Resolve the issue set
Parse $ARGUMENTS.
-
If explicit issue numbers/URLs given, use them verbatim.
-
Otherwise call the
githubtool withop: search_issues. Default (no args):github { op: "search_issues", query: "is:open", since: "3d", limit: 50 }Pass any user-supplied qualifiers verbatim through
query(combine withis:openif not already present). Usesincefor the time window (3d,2w,12h, ISO date — see thegithubtool docs); setdateField: "updated"instead of thecreateddefault only when the user explicitly asks for recently-touched issues.
Print the resolved set before fanning out so the user can confirm scope.
2. Fan out one subagent per issue
Use task with parallel subagents — one task per issue. Pass the issue number, title, body summary, and the workflow below as the assignment. Subagents work in isolation; coordinate via irc only when two issues clearly touch the same file.
Each subagent MUST follow this exact workflow:
a. Read everything
- Read
issue://<N>(orissue://<owner>/<repo>/<N>for cross-repo) — fetches the issue body plus comments; comments often carry the real repro and fix hints. Append?comments=0only if you explicitly want to skip them. gh search prsfor the issue number to see if a fix is already in flight.- If a PR exists and looks reasonable → switch tracks: review that PR per
.omp/commands/review-prs.mdinstead, and report back asexisting-pr. Do not open a competing fix.
- If a PR exists and looks reasonable → switch tracks: review that PR per
b. Diagnose & try to reproduce — in the current cwd, on main
Reproduce here first, before touching any worktree. The point is to confirm the bug is real on current main before investing in a fix branch.
- Read the relevant source paths in this checkout. Form a concrete hypothesis (one or two sentences) about the failure.
- Write a focused test file under the package the bug lives in. Naming:
repro-issue-<N>-<slug>.test.ts(or.rs, etc.) — unique, greppable, deletable. - Run only that test file, not the suite. Confirm it fails for the reason in the issue.
Outcomes:
- Reproduced → continue to (c).
- Not reproduced → stop. Delete the test file. Report
unreproducedwith: hypothesis tried, evidence it doesn't fail, and what info would unblock (versions, OS, config, repro snippet from author). Do not create a worktree or commit. - Out of scope / not a bug (e.g. user config error, intended behavior, dup) → stop. Report
not-a-bugwith the explanation suitable for posting to the issue.
c. Create a worktree off main
Only after a confirmed local repro:
MAIN="$(git rev-parse --show-toplevel)"
ENC="$(printf '%s' "$MAIN" | sed 's|[/\\:]|-|g')"
WT="$HOME/.omp/wt/${ENC}/fix-issue-<N>"
git -C "$MAIN" fetch origin main
git -C "$MAIN" worktree add -B "fix/issue-<N>" "$WT" origin/main
Branch naming: fix/issue-<N> (or fix/issue-<N>-<slug> if you'll open multiple). Path under ~/.omp/wt/<encoded-main-path>/... matches the convention pr_checkout uses.
d. Symlink build artifacts
From the new worktree, link build outputs from $MAIN so bun check / cargo build / native loaders skip rebuilds:
cd "$WT"
ln -snf "$MAIN/target" "$WT/target"
ln -snf "$MAIN/node_modules" "$WT/node_modules"
# Only the .node binaries are expensive to rebuild. The rest of
# packages/natives/native/ is tracked by git, so folder-level symlinks would
# shadow real source files and break the fix.
for f in "$MAIN"/packages/natives/native/*.node; do
[ -e "$f" ] && ln -snf "$f" "$WT/packages/natives/native/"
done
Use absolute paths — the worktree lives outside the main checkout.
e. Move the repro test in & fix
- Move (don't copy) the failing test file from the main checkout into the same path inside the worktree. Delete it from main so the original cwd is left clean.
- Confirm it still fails inside the worktree on the current branch.
- Implement the fix in source. Match existing patterns (see
AGENTS.md); fix at the source, not at the symptom; no stubs, no mocks added to product code. - Re-run the repro test until it passes.
- Add or adjust adjacent unit/contract tests where the fix changes a real contract — not just plumbing. Run only the affected test files; no full-suite runs from subagents.
- Run
bun fmtover the union of files edited.
f. Commit
Conventional commit, one logical change per commit, with Fixes #<N>:
git add -A
git commit -m "fix(<scope>): <one-line summary>
<short body explaining root cause and the fix>
Fixes #<N>."
Do not push. The human pushes / opens the PR.
g. Report back
Each subagent returns a short structured report:
Issue #<N> <title>
Status: fixed | unreproduced | not-a-bug | existing-pr (#<M>)
Repro: <test path inside worktree> (if applicable)
Worktree: ~/.omp/wt/.../fix-issue-<N> (if created)
Branch: fix/issue-<N> (if created)
Commits: <shas + one-liners> (if any)
Notes: <root cause in one sentence; or what info is missing>
3. Aggregate
After all subagents finish, print a single summary table:
| # | Title | Status | Branch / Notes |
|---|-------|--------|----------------|
Group worktree paths by status (fixed first), so the user can cd and push the ready ones in one pass.
Rules
- MUST reproduce on
mainin the current cwd before creating any worktree. No worktree until repro is confirmed. - MUST use parallel subagents — one per issue.
- MUST check for an existing PR first; if one exists and is reasonable, divert to
review-prsflow instead of duplicating work. - MUST symlink
target,node_modules, and the native*.nodebinaries before any build/test runs in the worktree. MUST NOT symlink the wholepackages/natives/native/directory that would shadow tracked source files. - MUST use conventional commits with
Fixes #<N>in the body. - MUST NOT push, open PRs, or comment on issues. Human handles delivery.
- MUST NOT ship stubs, mocks-as-product-code, or "TODO: implement" placeholders as a fix.
- MUST NOT expand scope: fix the reported bug, not adjacent code smells.
- If repro fails, delete the temporary test file from cwd before yielding — leave the original checkout clean.