Orchestrates parallel Mastra Code headless instances to debug and fix multiple GitHub issues simultaneously, managing git worktrees, PRs, and CI checks.
Install
npx skillscat add mastra-ai/mastra/gh-bulk-issues Install via the SkillsCat registry.
Orchestrates parallel Mastra Code headless instances to debug and fix multiple GitHub issues simultaneously, managing git worktrees, PRs, and CI checks.
Bulk Issue Solver
Orchestrate parallel mc (mastracode) headless instances to debug and fix multiple GitHub issues simultaneously. You act as the supervisor — spawning workers, monitoring progress, reviewing output, and creating PRs.
Inputs
$ARGUMENTS should be a space-separated list of GitHub issue numbers, e.g. 1234 5678 9012.
If no arguments are provided, use the GH CLI and the user's contribution history to recommend issues:
RUN gh issue list --state open --limit 50 --json number,title,labels,assignees
RUN git log --author="$(git config user.name)" --pretty=format:'' --name-only --since="6 months ago" | sed 's|/[^/]*$||' | sort | uniq -c | sort -rn | head -20
Summarize the user's contribution areas and match them to open issues. Ask the user which issues to work on before proceeding.
Setup
For each issue number in the list:
Create a git worktree with a dedicated branch:
git worktree add ../$(basename $PWD)-issue-<NUMBER> -b fix/issue-<NUMBER>Install and build in the worktree. Run 2 worktrees at a time to manage CPU:
cd ../$(basename $PWD)-issue-<NUMBER> && pnpm i && pnpm buildSpawn an
mcheadless instance in each worktree with a generous timeout (30 minutes):cd ../$(basename $PWD)-issue-<NUMBER> && pnpx tsx <path-to-mastracode>/src/main.ts --timeout 1800 --prompt "Activate the understand-issue skill for issue <NUMBER>"Run all instances as background processes with a matching timeout on
execute_command. Track each PID.
Monitoring
Create a reports/ directory in the main project root. For each issue, maintain a reports/issue-<NUMBER>.md file with:
- Issue number, title, and link
- Current status (Analyzing / Implementing / Tests passing / PR open / Done)
- Summary of the approach and changes
- PR URL once created
- Any blockers or notes
Check all processes every 3 minutes. For each check:
- Read the tail output of every running PID
- Update the corresponding report file
- Report a brief status table to the user
When an mc instance finishes or times out
- Check
git diff --statin the worktree to see what changed - Check for new changesets and ISSUE_SUMMARY files
- If the instance timed out but made progress, restart it with a
--promptthat says "Continue working on issue #." and summarizes where it left off based on the diff and last output - If the instance completed its work (code + tests + changeset):
- Review the diff — does the fix make sense?
- Report the changes to the user for review
- When approved, commit, push, and create a PR using
/gh-new-prconventions:- Conventional commit title:
fix: ...orfeat(pkg): ... - Concise PR description with code examples
- Reference
Closes #<NUMBER>
- Conventional commit title:
- Update the report file with the PR URL
PR Review Comments
After PRs are created, spawn mc instances with /gh-pr-comments <PR_NUMBER> to handle CodeRabbit and reviewer feedback. If an instance times out, restart it with context about which comments still need addressing.
CI Checks
After pushing a PR (and after each subsequent push from comment fixes), check CI status:
gh pr checks <PR_NUMBER>If any checks are failing, spawn an mc instance in the worktree with /gh-fix-ci to diagnose and fix the failures. If it times out, restart it with context about which checks failed and what was already attempted.
Key Rules
- 2 builds at a time to manage CPU during
pnpm build - All
mcinstances can run in parallel — they're IO-bound, not CPU-bound - One worktree per issue, always — every task related to an issue (debugging, PR comments, CI fixes) must run in that issue's worktree. Never create a second worktree for the same issue. The worktree accumulates context (commits, diffs, build artifacts) that each
mcinstance benefits from. - Always restart timed-out processes with a continuation prompt that includes context from the diff and last output
- Never leave a process unmonitored — check every 3 minutes
- Update report files continuously so the user always has a written record
- Review all
mcoutput before creating PRs — subagent work is untrusted