rvoertmann/barbequeue

Installs /barbeque, a Claude Code skill that drains a ticket backlog unattended, one subagent per ticket.

4

stars

7

commits

JavaScript

primary language

Aug 5, 2026

updated

README

        (                                                     (
     )   )        (                                          )   )
    (   (      )   )                                          (   (
     )   )    (   (                                          )   )
██████╗  █████╗ ██████╗ ██████╗ ███████╗ ██████╗ ██╗   ██╗███████╗██╗   ██╗███████╗
██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔═══██╗██║   ██║██╔════╝██║   ██║██╔════╝
██████╔╝███████║██████╔╝██████╔╝█████╗  ██║   ██║██║   ██║█████╗  ██║   ██║█████╗
██╔══██╗██╔══██║██╔══██╗██╔══██╗██╔══╝  ██║▄▄ ██║██║   ██║██╔══╝  ██║   ██║██╔══╝
██████╔╝██║  ██║██║  ██║██████╔╝███████╗╚██████╔╝╚██████╔╝███████╗╚██████╔╝███████╗
╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝╚═════╝ ╚══════╝ ╚══▀▀═╝  ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝
═══════════════════════════════════════════════════════════════════════════════════
  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.

Install

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.

Prerequisites

  • A git repo with a clean working tree.
  • A backlog. /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.
  • A green test suite before you start. A red baseline aborts the run.

Use

/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.

What it does when things go wrong

A ticket failsIts 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 redgit bisect names the culprit commit, it gets reverted, the gate re-runs. At most twice.
A revert conflictsIt stops and tells you. Conflicts are never resolved unattended.
A ticket is ambiguousVerdict is blocked. It never guesses at intent.

What it will not do

  • Merge to your default branch, or open a PR.
  • Write a fix during the gate. The gate may only revert, never author code.
  • Create a 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.
  • Run tickets in parallel. See docs/adr/0001-serial-execution.md.
  • Resolve a merge conflict, weaken a test, or run at all if the suite is already red.

The morning

  • The drain branch, one commit per successful ticket, pushed if you have a remote. It is 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.

What is in this repo

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.mdThe skill itself. This is the whole product.
bin/cli.jsThe installer. Copies the skill into ~/.claude/skills or ./.claude/skills, stamps a version and checksum beside it, and refuses to clobber your edits.
CONTEXT.mdThe 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.

License

MIT

Contributors

rvoertmann

7 commits

rvoertmann/barbequeue

Installs /barbeque, a Claude Code skill that drains a ticket backlog unattended, one subagent per ticket.

4

stars

7

commits

JavaScript

primary language

Aug 5, 2026

updated

README

        (                                                     (
     )   )        (                                          )   )
    (   (      )   )                                          (   (
     )   )    (   (                                          )   )
██████╗  █████╗ ██████╗ ██████╗ ███████╗ ██████╗ ██╗   ██╗███████╗██╗   ██╗███████╗
██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔═══██╗██║   ██║██╔════╝██║   ██║██╔════╝
██████╔╝███████║██████╔╝██████╔╝█████╗  ██║   ██║██║   ██║█████╗  ██║   ██║█████╗
██╔══██╗██╔══██║██╔══██╗██╔══██╗██╔══╝  ██║▄▄ ██║██║   ██║██╔══╝  ██║   ██║██╔══╝
██████╔╝██║  ██║██║  ██║██████╔╝███████╗╚██████╔╝╚██████╔╝███████╗╚██████╔╝███████╗
╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝╚═════╝ ╚══════╝ ╚══▀▀═╝  ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝
═══════════════════════════════════════════════════════════════════════════════════
  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.

Install

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.

Prerequisites

  • A git repo with a clean working tree.
  • A backlog. /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.
  • A green test suite before you start. A red baseline aborts the run.

Use

/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.

What it does when things go wrong

A ticket failsIts 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 redgit bisect names the culprit commit, it gets reverted, the gate re-runs. At most twice.
A revert conflictsIt stops and tells you. Conflicts are never resolved unattended.
A ticket is ambiguousVerdict is blocked. It never guesses at intent.

What it will not do

  • Merge to your default branch, or open a PR.
  • Write a fix during the gate. The gate may only revert, never author code.
  • Create a 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.
  • Run tickets in parallel. See docs/adr/0001-serial-execution.md.
  • Resolve a merge conflict, weaken a test, or run at all if the suite is already red.

The morning

  • The drain branch, one commit per successful ticket, pushed if you have a remote. It is 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.

What is in this repo

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.mdThe skill itself. This is the whole product.
bin/cli.jsThe installer. Copies the skill into ~/.claude/skills or ./.claude/skills, stamps a version and checksum beside it, and refuses to clobber your edits.
CONTEXT.mdThe 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.

License

MIT

Contributors

rvoertmann

7 commits

Languages

JavaScript

100.0%