Beads Blocker Review
Clear the queue of Beads issues waiting on a person, one at a time, asking
each question through the interactive questionnaire tool.
When to Use This Skill
Use this skill when the user asks to:
- Go through blockers, or clear the human queue
- Answer beads that are waiting on them
- Triage
bd human list
- Unblock agent work that stalled on a decision
What Is In the Queue
Two mechanisms park work on a person, and they do not overlap. Check both.
- Beads labelled
human — listed by bd human list. This is the raw
inventory, not the actionable queue: a human bead can itself be waiting on
unfinished agent work. The bundled helper intersects it with bd ready so
only decisions whose prerequisites are complete are asked.
- Open human gates —
bd gate list shows open gates; the human ones are
those of type human, which resolve only by hand. A gate blocks another
bead until someone resolves it. Gates do not carry the human label,
so they never appear in bd human list; checking only the first queue
misses them silently.
Do not widen the sweep to bd blocked. Ordinary dependency blockers are
agent-resolvable work, not questions for the user.
Record the Answer, Don't Do the Work
Recording the user's answer is the whole job. For each blocker: ask, record,
move on.
Do not implement what the answer implies, even when the change looks
small. The user invoked this to drain a decision queue in one pass, and
stopping to write code after every answer defeats that.
This works because a bead waiting on a person contains only their part —
the dependent agent work lives in its own bead. Answering releases that work
to be picked up later, by a grind or by you in a separate session.
If you meet a bead that mixes the two — the person's part and agent work in
one issue — say so when you report. It should have been split, and answering
it will close work nobody did.
Workflow
Inventory both queues freshly.
Resolve the bundled scripts/list-actionable-human-beads.py relative to
this SKILL.md, run it, then run:
bd gate list --limit=0 --json
The helper returns actionable human beads that also appear in Beads'
authoritative bd ready result, plus waiting human beads whose
prerequisites are incomplete. Never prompt an item from waiting. Use
bd show "$id" --json for each waiting bead to identify and report its
unfinished blocking prerequisites without asking the user anything.
If actionable and the human-gate queue are both empty, report any
waiting beads separately and stop. Do not go hunting for other work.
Report the actionable total up front so the user knows how many
questions are coming — e.g. "7 beads and 1 gate are ready for you; 2 more
human beads are waiting on agent prerequisites."
For each actionable item, in priority order (P0 first), repeat steps
4-7.
Read it fully, including comments — the question is often in a comment
rather than the description:
bd show "$id"
bd comments "$id"
Also note what depends on it, so you can tell the user what their answer
will release. Note the direction: up shows what this bead blocks, which
is what you want here — the default down shows the opposite.
bd dep tree "$id" --direction=up
Summarise the decision in a few lines before asking: what the bead is,
why it is waiting, and what turns on the answer. Always name a bead as
<id> (<title>), never by bare ID.
Ask using the questionnaire tool, one bead per call:
- Claude Code:
AskUserQuestion
- OpenCode: the interactive questionnaire tool
- Pi:
ask_user
Derive the options from the bead itself — its "Alternatives Considered"
section, the comment posing the question, or the genuine choices the work
presents. Give 2-4 concrete, mutually exclusive options with descriptions
that state the consequence of picking each. If you have a recommendation,
make it the first option and append "(Recommended)" to its label.
Never batch several beads into one call. One bead, one call — that is what
makes the review legible.
If a question is genuinely open-ended (naming, free-form text), ask in
prose for that one bead. Think hard before concluding it is open-ended;
most "open" questions have 2-4 obvious candidates.
Record the answer immediately, before moving on.
For a labelled bead:
bd human respond "$id" --response "<the decision, plus rationale>"
This adds the response as a comment and closes the bead with reason
"Responded", which releases anything that depended on it. The human
label stays attached — that is deliberate, and bd human stats reads it.
If the answer makes the bead moot rather than deciding it:
bd human dismiss "$id" --reason "<why it no longer applies>"
For a gate, resolve it instead:
bd gate resolve "$gate-id" --reason "<the decision>"
Write the response so a reader six months from now understands it without
this conversation: the decision, the reason, and the rejected option.
Summarise at the end: how many were answered, dismissed, or skipped;
which beads are now unblocked and ready for agent work; and any
follow-up work the answers created.
Name the released beads specifically. The user wants to know what their
answers freed up, not just that the queue is empty.
Handling Interruption
The user may bail out partway through, or answer with something that changes
the rest of the queue. Both are fine.
Because each answer is recorded before the next question is asked, stopping
early loses nothing. If the user stops, summarise what was cleared and what
remains, and do not press on.
If an answer to one bead obviously settles a later one, still ask about the
later bead — but say what the earlier answer implies and offer that as the
first option.
Rules
- Never answer on the user's behalf. Do not call
bd human respond,
bd human dismiss, or bd gate resolve with a decision you invented. If
you cannot construct sensible options, ask in prose rather than guessing.
- Never skip an item silently. Report prerequisite-blocked human beads as
waiting, without prompting them. If an actionable item cannot be asked
about, say why.
- Verify before recording. Only record what the user actually chose,
including any free text they added to their selection.
- Re-read both queues if the session is long. Run the helper again rather
than reusing its output: closing the final prerequisite must make a human
bead actionable on the next fresh read. Items can be added or closed while
the review runs; check again before declaring the queues empty.
Verification
Run the bundled scripts/list-actionable-human-beads.py again, resolving it
relative to this SKILL.md, then run:
bd gate list --limit=0 --json # no open human gates left
bd human stats # responded and dismissed counts
bd ready # work released by the answers
The final helper output should have an empty actionable list. A non-empty
waiting list is not an unanswered human queue; report which agent
prerequisites still prevent those questions from being asked.
Related Skills
beads-best-practices — how beads
reach this queue, and the one-bead-one-doer rule that keeps them answerable
beads-grinding — the serial grind that
fills this queue and consumes the work it releases
beads — general Beads workflow
1---2name: beads-blocker-review3description: Review every Beads issue waiting on a person, one at a time, using the interactive questionnaire UI rather than plain-text prompts. Use when asked to go through blockers, clear the human queue, answer beads waiting on the user, triage `bd human list`, or unblock agent work that needs a decision.4---56# Beads Blocker Review78Clear the queue of Beads issues waiting on a person, one at a time, asking9each question through the interactive questionnaire tool.1011## When to Use This Skill1213Use this skill when the user asks to:1415- Go through blockers, or clear the human queue16- Answer beads that are waiting on them17- Triage `bd human list`18- Unblock agent work that stalled on a decision1920## What Is In the Queue2122Two mechanisms park work on a person, and they do not overlap. Check both.23241. **Beads labelled `human`** — listed by `bd human list`. This is the raw25 inventory, not the actionable queue: a human bead can itself be waiting on26 unfinished agent work. The bundled helper intersects it with `bd ready` so27 only decisions whose prerequisites are complete are asked.282. **Open human gates** — `bd gate list` shows open gates; the human ones are29 those of type `human`, which resolve only by hand. A gate blocks another30 bead until someone resolves it. Gates do **not** carry the `human` label,31 so they never appear in `bd human list`; checking only the first queue32 misses them silently.3334Do not widen the sweep to `bd blocked`. Ordinary dependency blockers are35agent-resolvable work, not questions for the user.3637## Record the Answer, Don't Do the Work3839Recording the user's answer is the whole job. For each blocker: ask, record,40move on.4142Do **not** implement what the answer implies, even when the change looks43small. The user invoked this to drain a decision queue in one pass, and44stopping to write code after every answer defeats that.4546This works because a bead waiting on a person contains **only** their part —47the dependent agent work lives in its own bead. Answering releases that work48to be picked up later, by a grind or by you in a separate session.4950If you meet a bead that mixes the two — the person's part and agent work in51one issue — say so when you report. It should have been split, and answering52it will close work nobody did.5354## Workflow55561. **Inventory both queues freshly.**5758 Resolve the bundled `scripts/list-actionable-human-beads.py` relative to59 this `SKILL.md`, run it, then run:6061 ```bash62 bd gate list --limit=0 --json63 ```6465 The helper returns `actionable` human beads that also appear in Beads'66 authoritative `bd ready` result, plus `waiting` human beads whose67 prerequisites are incomplete. Never prompt an item from `waiting`. Use68 `bd show "$id" --json` for each waiting bead to identify and report its69 unfinished blocking prerequisites without asking the user anything.7071 If `actionable` and the human-gate queue are both empty, report any72 `waiting` beads separately and stop. Do not go hunting for other work.73742. **Report the actionable total up front** so the user knows how many75 questions are coming — e.g. "7 beads and 1 gate are ready for you; 2 more76 human beads are waiting on agent prerequisites."77783. **For each actionable item, in priority order** (P0 first), repeat steps79 4-7.80814. **Read it fully**, including comments — the question is often in a comment82 rather than the description:8384 ```bash85 bd show "$id"86 bd comments "$id"87 ```8889 Also note what depends on it, so you can tell the user what their answer90 will release. Note the direction: `up` shows what this bead blocks, which91 is what you want here — the default `down` shows the opposite.9293 ```bash94 bd dep tree "$id" --direction=up95 ```96975. **Summarise the decision** in a few lines before asking: what the bead is,98 why it is waiting, and what turns on the answer. Always name a bead as99 `<id> (<title>)`, never by bare ID.1001016. **Ask using the questionnaire tool**, one bead per call:102103 - Claude Code: `AskUserQuestion`104 - OpenCode: the interactive questionnaire tool105 - Pi: `ask_user`106107 Derive the options from the bead itself — its "Alternatives Considered"108 section, the comment posing the question, or the genuine choices the work109 presents. Give 2-4 concrete, mutually exclusive options with descriptions110 that state the consequence of picking each. If you have a recommendation,111 make it the first option and append "(Recommended)" to its label.112113 Never batch several beads into one call. One bead, one call — that is what114 makes the review legible.115116 If a question is genuinely open-ended (naming, free-form text), ask in117 prose for that one bead. Think hard before concluding it is open-ended;118 most "open" questions have 2-4 obvious candidates.1191207. **Record the answer immediately**, before moving on.121122 For a labelled bead:123124 ```bash125 bd human respond "$id" --response "<the decision, plus rationale>"126 ```127128 This adds the response as a comment and closes the bead with reason129 "Responded", which releases anything that depended on it. The `human`130 label stays attached — that is deliberate, and `bd human stats` reads it.131132 If the answer makes the bead moot rather than deciding it:133134 ```bash135 bd human dismiss "$id" --reason "<why it no longer applies>"136 ```137138 For a gate, resolve it instead:139140 ```bash141 bd gate resolve "$gate-id" --reason "<the decision>"142 ```143144 Write the response so a reader six months from now understands it without145 this conversation: the decision, the reason, and the rejected option.1461478. **Summarise at the end**: how many were answered, dismissed, or skipped;148 **which beads are now unblocked and ready for agent work**; and any149 follow-up work the answers created.150151 Name the released beads specifically. The user wants to know what their152 answers freed up, not just that the queue is empty.153154## Handling Interruption155156The user may bail out partway through, or answer with something that changes157the rest of the queue. Both are fine.158159Because each answer is recorded before the next question is asked, stopping160early loses nothing. If the user stops, summarise what was cleared and what161remains, and do not press on.162163If an answer to one bead obviously settles a later one, still ask about the164later bead — but say what the earlier answer implies and offer that as the165first option.166167## Rules168169- **Never answer on the user's behalf.** Do not call `bd human respond`,170 `bd human dismiss`, or `bd gate resolve` with a decision you invented. If171 you cannot construct sensible options, ask in prose rather than guessing.172- **Never skip an item silently.** Report prerequisite-blocked human beads as173 `waiting`, without prompting them. If an actionable item cannot be asked174 about, say why.175- **Verify before recording.** Only record what the user actually chose,176 including any free text they added to their selection.177- **Re-read both queues if the session is long.** Run the helper again rather178 than reusing its output: closing the final prerequisite must make a human179 bead actionable on the next fresh read. Items can be added or closed while180 the review runs; check again before declaring the queues empty.181182## Verification183184Run the bundled `scripts/list-actionable-human-beads.py` again, resolving it185relative to this `SKILL.md`, then run:186187```bash188bd gate list --limit=0 --json # no open human gates left189bd human stats # responded and dismissed counts190bd ready # work released by the answers191```192193The final helper output should have an empty `actionable` list. A non-empty194`waiting` list is not an unanswered human queue; report which agent195prerequisites still prevent those questions from being asked.196197## Related Skills198199- [`beads-best-practices`](../beads-best-practices/SKILL.md) — how beads200 reach this queue, and the one-bead-one-doer rule that keeps them answerable201- [`beads-grinding`](../beads-grinding/SKILL.md) — the serial grind that202 fills this queue and consumes the work it releases203- [`beads`](../beads/SKILL.md) — general Beads workflow