( (
) ) ( ) )
( ( ) ) ( (
) ) ( ( ) )
██████╗ █████╗ ██████╗ ██████╗ ███████╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗███████╗
██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔═══██╗██║ ██║██╔════╝██║ ██║██╔════╝
██████╔╝███████║██████╔╝██████╔╝█████╗ ██║ ██║██║ ██║█████╗ ██║ ██║█████╗
██╔══██╗██╔══██║██╔══██╗██╔══██╗██╔══╝ ██║▄▄ ██║██║ ██║██╔══╝ ██║ ██║██╔══╝
██████╔╝██║ ██║██║ ██║██████╔╝███████╗╚██████╔╝╚██████╔╝███████╗╚██████╔╝███████╗
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚══════╝ ╚══▀▀═╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝
═══════════════════════════════════════════════════════════════════════════════════
you, at midnight ▸ ticket ▸ ticket ▸ ticket ▸ gate ▸ report ▸ you, in the morning
Installs /barbequeue, a Claude Code skill that drains a ticket backlog unattended.
A queue, and a barbeque. It works its way down the line and leaves everything on the grill for you.
You go to bed. It takes every eligible ticket, implements each one in its own subagent session, commits it to a drain branch, verifies the whole night's work at the end, and leaves you a report. Nothing is merged. You review in the morning.
It is built to sit on top of Matt Pocock's engineering skills: /to-tickets produces the backlog, /implement does each ticket, /code-review checks the result. /barbequeue is the loop around them.
Not on npm yet, so install straight from GitHub:
npx -y github:rvoertmann/barbequeue install --global # ~/.claude/skills/barbequeue
npx -y github:rvoertmann/barbequeue install --project # ./.claude/skills/barbequeue
The scope flag is required. Global follows you into every repo; project is committable and travels with the repo for your teammates. If both exist, the project copy wins inside that repo.
Installing from GitHub tracks the default branch rather than a released version, so re-running it is how you update. The checksum guard still protects your local edits, it just cannot tell you whether a newer version exists.
Once it is published, the shorter form works and status can tell you whether you are current:
npx barbequeue install --global
npx barbequeue@latest update --global
npx barbequeue status # what is installed, where, and whether it is current
npx barbequeue uninstall --project
The installer copies the skill rather than symlinking it, so it keeps working with no npm involvement afterwards. It records a checksum at install time, so if you have edited your copy, an update refuses to overwrite it and tells you how to diff. Pass --force when you mean it.
/barbequeue consumes tickets, it never generates them. Run /to-tickets first.docs/agents/issue-tracker.md, from /setup-matt-pocock-skills. GitHub, GitLab, and local markdown all work./barbequeue drain every eligible ticket in the tracker
/barbequeue auth-rework drain one feature's tickets
A ticket is eligible when it is ready-for-agent and every ticket it is blocked by is done. The frontier is recomputed each iteration, so a ticket you file at 3am gets picked up.
Each ticket goes to a fresh subagent, which runs /implement and returns a three-line verdict: done, failed, or blocked. The loop never reads the ticket bodies, only the verdicts, which is what lets it stay alive all night.
| A ticket fails | Its partial work is preserved on failed/<NN>-<slug>, the drain branch resets clean, its dependents stay blocked, the loop continues. No retry. |
| The end gate goes red | git bisect names the culprit commit, it gets reverted, the gate re-runs. At most twice. |
| A revert conflicts | It stops and tells you. Conflicts are never resolved unattended. |
| A ticket is ambiguous | Verdict is blocked. It never guesses at intent. |
ready-for-agent ticket. Everything it or its subagents file is ready-for-human, which is the only reason a loop with no iteration cap terminates.docs/adr/0001-serial-execution.md.drain/<scope> when you named a scope, and otherwise takes its name from what it drained: drain/2026-07-31-auth-rework+2-more for a night that was mostly auth-rework plus two other features..scratch/<scope>/DRAIN-REPORT.md, rewritten after every ticket so it exists even if the run died. It opens with a Start here section listing everything needing your attention, written so you can hand each item straight to an agent..scratch/<scope>/logs/<NN>-<slug>.md, one detailed log per ticket.GATE.md, the review of the whole night's diff.The skill is one markdown file. There is no runtime, and nothing here executes your tickets; Claude Code does, by reading the skill.
skill/SKILL.md | The skill itself. This is the whole product. |
bin/cli.js | The installer. Copies the skill into ~/.claude/skills or ./.claude/skills, stamps a version and checksum beside it, and refuses to clobber your edits. |
CONTEXT.md | The glossary. Terms like frontier, verdict, and the gate mean one thing here, and this is where that is pinned down. |
docs/adr/ | Why the design is what it is, mostly the load-bearing refusals. |
docs/agents/ | Conventions the skill assumes: the issue tracker layout and the triage labels. |
Read CONTEXT.md before changing prose in SKILL.md. The skill, the glossary, and this README are expected to agree with each other, and a change to the behavior of one is a change to all three.
7 commits
JavaScript
100.0%
( (
) ) ( ) )
( ( ) ) ( (
) ) ( ( ) )
██████╗ █████╗ ██████╗ ██████╗ ███████╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗███████╗
██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔═══██╗██║ ██║██╔════╝██║ ██║██╔════╝
██████╔╝███████║██████╔╝██████╔╝█████╗ ██║ ██║██║ ██║█████╗ ██║ ██║█████╗
██╔══██╗██╔══██║██╔══██╗██╔══██╗██╔══╝ ██║▄▄ ██║██║ ██║██╔══╝ ██║ ██║██╔══╝
██████╔╝██║ ██║██║ ██║██████╔╝███████╗╚██████╔╝╚██████╔╝███████╗╚██████╔╝███████╗
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚══════╝ ╚══▀▀═╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝
═══════════════════════════════════════════════════════════════════════════════════
you, at midnight ▸ ticket ▸ ticket ▸ ticket ▸ gate ▸ report ▸ you, in the morning
Installs /barbequeue, a Claude Code skill that drains a ticket backlog unattended.
A queue, and a barbeque. It works its way down the line and leaves everything on the grill for you.
You go to bed. It takes every eligible ticket, implements each one in its own subagent session, commits it to a drain branch, verifies the whole night's work at the end, and leaves you a report. Nothing is merged. You review in the morning.
It is built to sit on top of Matt Pocock's engineering skills: /to-tickets produces the backlog, /implement does each ticket, /code-review checks the result. /barbequeue is the loop around them.
Not on npm yet, so install straight from GitHub:
npx -y github:rvoertmann/barbequeue install --global # ~/.claude/skills/barbequeue
npx -y github:rvoertmann/barbequeue install --project # ./.claude/skills/barbequeue
The scope flag is required. Global follows you into every repo; project is committable and travels with the repo for your teammates. If both exist, the project copy wins inside that repo.
Installing from GitHub tracks the default branch rather than a released version, so re-running it is how you update. The checksum guard still protects your local edits, it just cannot tell you whether a newer version exists.
Once it is published, the shorter form works and status can tell you whether you are current:
npx barbequeue install --global
npx barbequeue@latest update --global
npx barbequeue status # what is installed, where, and whether it is current
npx barbequeue uninstall --project
The installer copies the skill rather than symlinking it, so it keeps working with no npm involvement afterwards. It records a checksum at install time, so if you have edited your copy, an update refuses to overwrite it and tells you how to diff. Pass --force when you mean it.
/barbequeue consumes tickets, it never generates them. Run /to-tickets first.docs/agents/issue-tracker.md, from /setup-matt-pocock-skills. GitHub, GitLab, and local markdown all work./barbequeue drain every eligible ticket in the tracker
/barbequeue auth-rework drain one feature's tickets
A ticket is eligible when it is ready-for-agent and every ticket it is blocked by is done. The frontier is recomputed each iteration, so a ticket you file at 3am gets picked up.
Each ticket goes to a fresh subagent, which runs /implement and returns a three-line verdict: done, failed, or blocked. The loop never reads the ticket bodies, only the verdicts, which is what lets it stay alive all night.
| A ticket fails | Its partial work is preserved on failed/<NN>-<slug>, the drain branch resets clean, its dependents stay blocked, the loop continues. No retry. |
| The end gate goes red | git bisect names the culprit commit, it gets reverted, the gate re-runs. At most twice. |
| A revert conflicts | It stops and tells you. Conflicts are never resolved unattended. |
| A ticket is ambiguous | Verdict is blocked. It never guesses at intent. |
ready-for-agent ticket. Everything it or its subagents file is ready-for-human, which is the only reason a loop with no iteration cap terminates.docs/adr/0001-serial-execution.md.drain/<scope> when you named a scope, and otherwise takes its name from what it drained: drain/2026-07-31-auth-rework+2-more for a night that was mostly auth-rework plus two other features..scratch/<scope>/DRAIN-REPORT.md, rewritten after every ticket so it exists even if the run died. It opens with a Start here section listing everything needing your attention, written so you can hand each item straight to an agent..scratch/<scope>/logs/<NN>-<slug>.md, one detailed log per ticket.GATE.md, the review of the whole night's diff.The skill is one markdown file. There is no runtime, and nothing here executes your tickets; Claude Code does, by reading the skill.
skill/SKILL.md | The skill itself. This is the whole product. |
bin/cli.js | The installer. Copies the skill into ~/.claude/skills or ./.claude/skills, stamps a version and checksum beside it, and refuses to clobber your edits. |
CONTEXT.md | The glossary. Terms like frontier, verdict, and the gate mean one thing here, and this is where that is pinned down. |
docs/adr/ | Why the design is what it is, mostly the load-bearing refusals. |
docs/agents/ | Conventions the skill assumes: the issue tracker layout and the triage labels. |
Read CONTEXT.md before changing prose in SKILL.md. The skill, the glossary, and this README are expected to agree with each other, and a change to the behavior of one is a change to all three.
7 commits
JavaScript
100.0%