A set of GitHub Actions workflows that use claude-code-action enhanced with the Compound Engineering plugin to automate issue triage, planning, fixing, and end-to-end resolution — all driven by GitHub issue labels.
These workflows go beyond basic Claude Code Action by integrating the Compound Engineering plugin — a set of slash commands that give Claude structured, battle-tested workflows for planning and implementation:
| Command | What it does | Used in |
|---|---|---|
/ce:plan |
Creates structured implementation plans with architecture analysis, risk assessment, and step-by-step breakdown | plan, solve jobs |
/ce:work |
Implements changes systematically following a plan, with built-in quality checks | fix (medium/large), solve jobs |
/ce:review |
Performs thorough code reviews with multiple analysis passes | @claude mentions on PRs |
/ce:brainstorm |
Explores approaches collaboratively before committing to an implementation | @claude mentions |
Without the plugin, Claude handles tasks with generic prompting. With Compound Engineering, each phase uses a purpose-built workflow that produces more thorough, consistent results — especially for medium and large scope work.
The plugin is configured in each workflow via:
plugin_marketplaces: "https://github.com/EveryInc/compound-engineering-plugin.git"
plugins: "compound-engineering@compound-engineering-plugin"These workflows turn GitHub issues into an autonomous development pipeline. Apply a label to an issue, and Claude handles the rest — from understanding the problem to opening a PR with the fix.
Issue Created → label "triage" → Claude classifies & scopes
→ label "plan" → Claude writes implementation plan (/ce:plan) + draft PR
→ label "fix" → Claude implements a targeted fix (/ce:work) + PR
→ label "solve" → Claude does all of the above end-to-end
You can also @claude in any issue or PR comment to interact directly (with full access to /ce: commands).
.github/
├── actions/
│ └── setup-node/
│ └── action.yml # Composite action: Node.js setup + npm cache
├── workflows/
│ ├── ci-agent.yml # Label-triggered jobs (triage, plan, fix, solve)
│ ├── claude.yml # @claude mention handler for issues & PRs
│ └── scheduled-triage.yml # Cron job to auto-triage new issues
Add ANTHROPIC_API_KEY as a repository secret:
Settings → Secrets and variables → Actions → New repository secret
Copy the .github/ directory into your repository root.
The setup-node action reads your Node.js version from .nvmrc:
22
Create these labels in your repository (Issues → Labels → New label):
| Label | Color | Description |
|---|---|---|
triage |
#d4c5f9 |
Triggers AI triage — classifies and scopes the issue |
plan |
#bfdadc |
Triggers AI planning — creates implementation plan + draft PR |
fix |
#f9d0c4 |
Triggers AI fix — implements a targeted fix + PR |
solve |
#0e8a16 |
Triggers full AI resolution — triage → plan → implement → PR |
| Label | Color | Description |
|---|---|---|
bug |
#d73a4a |
Something isn't working |
feature |
#a2eeef |
New feature or request |
chore |
#fef2c0 |
Maintenance, dependencies, config |
improvement |
#7057ff |
Enhancement to existing functionality |
| Label | Color | Description |
|---|---|---|
scope:mini |
#e6e6e6 |
Trivial one-liner (typo, config value) |
scope:small |
#c2e0c6 |
Under 1 hour, limited files |
scope:medium |
#fbca04 |
1-4 hours, multiple files |
scope:large |
#b60205 |
4+ hours, significant feature or refactor |
| Label | Color | Description |
|---|---|---|
planned |
#0075ca |
Implementation plan exists |
in-progress |
#006b75 |
Fix or solution in progress |
autofix-candidate |
#2ea44f |
Good candidate for automated fix |
needs-review |
#e4e669 |
PR needs human review (medium/low confidence) |
Create a CLAUDE.md in your repo root with project-specific context. This is read by Claude before every action. Include:
- Project architecture overview
- Key directories and files
- Build/test/lint commands
- Branch naming conventions
- Any project-specific rules
Claude reads the issue, reviews relevant code, and:
- Classifies it (bug, feature, chore, improvement)
- Estimates scope (mini, small, medium, large)
- Flags it as
autofix-candidateif appropriate - Comments with a summary
- Removes the
triagelabel
Model: Sonnet (fast, cost-effective) · Max turns: 8
Claude uses /ce:plan to create a structured implementation plan and:
- Saves it to
docs/plans/issue-{N}.md - Opens a draft PR with the plan
- Adds the
plannedlabel - Comments with a summary + link
The Compound Engineering /ce:plan command produces plans with architecture analysis, affected areas, risk assessment, and step-by-step implementation details — far more thorough than unstructured planning.
Model: Opus (thorough planning) · Max turns: 15
Claude implements a fix, adapting its approach to scope:
| Scope | Model | Max Turns | Approach |
|---|---|---|---|
| mini | Sonnet | 15 | Direct change, lint only |
| small | Sonnet | 15 | Direct implementation + tests |
| medium | Opus | 20 | /ce:work — systematic implementation |
| large | Opus | 30 | /ce:work — systematic implementation |
For medium and large scope issues, the Compound Engineering /ce:work command provides a structured implementation workflow with built-in quality gates.
After fixing:
- Opens a PR (draft if confidence is medium/low)
- Runs lint and tests
- Comments with results + confidence assessment
Claude handles the entire lifecycle using Compound Engineering commands:
- Triage — classify and scope
- Plan —
/ce:planto create implementation plan (skipped for mini scope) - Implement —
/ce:workto write the code (medium/large) or direct implementation (mini/small) - Deliver — branch, commit, PR
- Assess — confidence level, draft PR if uncertain
Model: Opus · Max turns: 35
Mention @claude in any issue comment, PR review comment, or PR review to interact directly. Claude has full access to Compound Engineering commands:
/ce:review— thorough multi-pass code review/ce:plan— create implementation plans/ce:work— implement changes/ce:brainstorm— explore approaches
Model: Opus · Max turns: 10
Runs weekdays at 12:00 PM Eastern. Finds open issues missing classification labels and triages up to 5 per run. Can also be triggered manually via workflow_dispatch.
Model: Sonnet · Max turns: 15
Here's how these pieces work together for a typical issue:
1. Someone creates an issue describing a bug
2. You add the "triage" label
3. Claude classifies it as "bug" + "scope:small" + "autofix-candidate"
4. You add the "fix" label
5. Claude implements the fix, runs tests, opens a PR
6. You review the PR (or ask @claude for a /ce:review)
7. Merge!
For complex issues, use solve to let Claude handle steps 2-5 autonomously.
The workflows default to targeting main for PRs. If you use a different branch (e.g., staging, develop), update the PR target references in ci-agent.yml.
Each job specifies its model and max turns in claude_args. Adjust based on your needs:
- Sonnet — faster and cheaper, good for triage and small fixes
- Opus — more capable, better for complex planning and implementation
If you don't want to use the plugin, remove these two lines from each job:
plugin_marketplaces: "https://github.com/EveryInc/compound-engineering-plugin.git"
plugins: "compound-engineering@compound-engineering-plugin"And replace /ce:plan and /ce:work references in the prompts with generic instructions.
If your project doesn't use Node.js, remove the Setup Node step from the fix and solve jobs, and delete the actions/setup-node/ directory. Update the lint/test commands in the prompts accordingly.
- Scope-aware model selection — mini/small issues use cheaper Sonnet; medium/large use Opus
- Turn limits — each job has a max turn count to prevent runaway costs
- Concurrency groups — re-labeling cancels in-progress runs
- Scheduled triage limit — processes max 5 issues per run
- Timeout limits — jobs are killed after their timeout (10-30 min)
MIT