issues-workflow
Fixes a batch of GitHub issues in parallel worktrees through a background Workflow, one PR each, optionally merged on green CI.
Install
/plugin install issues-workflow --marketplace rezk2ll/skills What it does
issues-workflow hands a batch of open GitHub issues to a background Workflow. Each issue gets its own agent in its own git worktree, which reproduces the bug with a test, fixes it, runs the checks and review skills, and opens one PR. Your main session only scouts and launches, so its context stays small.
When to use it
- You want several issues fixed in parallel: "work these issues in workflow mode".
- You want the fixes done without spending main-session tokens.
- You want the PRs merged one at a time on green CI, each rebased on the one before.
How it works
- Lists the repo's open issues and picks the ones you name. With no list, it takes the bugs and tells you which it left out.
- Asks once whether to merge on green CI or leave the PRs open.
- Launches
workflow.jswith args such asrepo,issues,merge,base,reviewSkills,prSkill,serialandchecks. The skill file lists them all. - An agent that finds the issue is not a bug, or needs a product decision, stops and reports back instead of guessing.
- Merges run serially: rebase, watch CI with
gh run watch, fix up to three times, then squash-merge.
Requirements
- Claude Code with the Workflow tool.
gitand the GitHub CLI (gh), authenticated.- Optional: the
code-reviewplugin fromclaude-plugins-official(/plugin install code-review@claude-plugins-official). It is the default review step; agents skip review skills that are not installed. - Optional: any PR skill passed as
prSkill, such as theprplugin from this repo.
Source
---
name: issues-workflow
description: Work a batch of open GitHub issues in parallel through a background Workflow, one agent per issue in its own git worktree, one PR each, optionally merged one at a time on green CI. Use when the user asks to work open issues "in workflow mode", "in parallel", or without spending main-session tokens.
---
The main session only scouts and launches. The agents do the fixing, so the main context stays small.
1. Find the repo with `gh repo view --json nameWithOwner,defaultBranchRef`, then list the issues with `gh issue list --state open --json number,title,labels,assignees`.
2. Pick the issues the user asked for. With no explicit list, take the bugs and name the ones left out (enhancements, deferred).
3. Ask once, unless the user's memory or CLAUDE.md already answers it: should PRs be merged on green CI, or left open for review?
4. Launch `Workflow({scriptPath: "<this skill's directory>/workflow.js", args})`, with the absolute path.
5. Do not poll. When the completion notification arrives, report per issue: PR, merged or not, blockers. A `blocked` or `not_a_bug` result is a question for the user.
## args
- `repo` (required): `owner/name`. Pass it explicitly, since a local `origin` can point at a renamed repo.
- `issues` (required): issue numbers.
- `merge`: `true` to rebase, wait for CI and squash-merge each PR in turn. Default `false`, PRs stay open.
- `base`: target branch, default `main`.
- `context`: files or instructions every fix agent reads first (handoff notes, a CONTRIBUTING file, check quirks).
- `reviewSkills`: skills run in order before the PR, default `["code-review --fix"]`. Agents skip any that are not installed.
- `prSkill`: a skill that opens the PR in the team's format. Default plain `gh pr create`.
- `mergeSuffix`: text appended to the merge command, for a hook that asks for a confirmation marker.
- `model`: model for the agents. Default: the session's model.
- `serial`: `true` runs one fix agent at a time. Use it when parallel test runs overload the machine.
- `checks`: how to run the checks on this machine (worker caps, scoped specs). Overrides the agents' defaults.
- `wip`: `{issue: "/abs/path.patch"}`, an interrupted run's diff the agent applies as a draft.
Example:
```json
{"repo": "acme/api", "issues": [408, 409], "merge": true,
"context": ["CONTRIBUTING.md"], "reviewSkills": ["code-review --fix", "simplify"]}
```
## Notes
- Each agent runs in a git worktree. Worktree guard hooks often refuse compound git commands (pipes, `&&`, wrappers), so the prompts tell agents to keep git commands simple.
- Merges run one at a time, so each PR rebases on the one merged before it. Translation files are the usual conflict.
- Resume after a crash: `Workflow({scriptPath, resumeFromRunId})` with the same args.