Skip to content
Back to skills

Brainstorm Queue Aware

ASecurity

Use when running as a brainstormer that a Brainstorm Steward is managing — redirect every Q-by-Q question to the Steward as a NEED message and block for the ANSWER instead of asking the human directly. Fires when your briefing names a steward.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
toolsgobash

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add thrum-team/thrum-pro --skill brainstorm-queue-aware --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Brainstorm Queue Aware?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Brainstorm Queue Aware
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thrum-team-brainstorm-queue-aware/badge)](https://www.skillsdirectory.com/skills/thrum-team-brainstorm-queue-aware)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: brainstorm-queue-aware
description: "Use when running as a brainstormer that a Brainstorm Steward is managing — redirect every Q-by-Q question to the Steward as a NEED message and block for the ANSWER instead of asking the human directly. Fires when your briefing names a steward."
---

# Brainstorm: Queue-Aware Mode

## When this fires

You are a brainstormer running the normal `brainstorming` skill, and your
briefing names a `steward: @<name>` (or otherwise tells you a Brainstorm
Steward is managing your slot in a queue of parallel brainstorms). That one
fact is the whole trigger. If no steward was named, ignore this skill
entirely and run `brainstorming` exactly as documented — ask the human
directly, the ordinary way.

Every `@<steward>` placeholder below stands for that same name from your
briefing — substitute the real agent name, not the literal text
`<steward>`.

This is a **thin overlay, not a replacement**. Everything about how you
research, propose options, and converge to a locked design is still owned by
the `brainstorming` skill. The only thing this skill changes is **where a
question goes when you would otherwise have asked the human.**

## The redirect

Wherever `brainstorming` says "ask the user" or "pause for the human's
answer," do this instead:

1. Compose the question exactly as you would have asked the human — one
   clear question, plus 2-3 concrete options (A/B/C) so the Steward has
   something to decide between, not an open-ended essay prompt.
2. Send it as a `NEED` to your steward, per the NEED/ANSWER convention
   (first line `NEED [<topic>]:`; the steward replies with an `ANSWER`):

   ```bash
   thrum send --to @<steward> --stdin <<'EOF'
   NEED [<topic>]: <one clear question>
   A) <option>
   B) <option>
   C) <option>
   EOF
   ```

3. Block on `thrum wait` rather than polling or continuing speculatively:

   ```bash
   thrum wait
   ```

4. When `thrum wait` returns, read the reply from your inbox the normal way.
   The Steward answers by replying directly to your NEED message (threaded,
   automatic), with a body starting `ANSWER:`. Treat that `ANSWER:` line
   exactly as if the human had just said it to you — fold it into the design
   and continue the brainstorm from there.

Nothing about the NEED/ANSWER convention is a new subcommand or a structured
payload — it's plain `thrum send` / `thrum reply` / `thrum wait` with a
one-line prose convention on top. Don't invent a schema, a JSON body, or a
`thrum need` command; none exists.

## One question at a time, still

The `brainstorming` skill's Q-by-Q discipline doesn't change: send **one**
NEED, block, get the **one** ANSWER, then decide whether the next question is
needed before sending it. Do not queue up three NEEDs in a row hoping to
save a round trip — the Steward may be juggling several brainstormers at
once, and batching on your end doesn't help it; it just makes your own
inbox harder to reason about when replies come back out of order. Batching
NEEDs across brainstormers so the human sees fewer round trips is the
**Steward's** job, not yours — that's the whole point of putting a Steward
in the loop.

## If the Steward doesn't answer

`thrum wait` blocking indefinitely is normal and expected — the Steward may
be waiting on the human, or working through other brainstormers first. Don't
treat a long wait as a signal to guess.

If the wait genuinely exceeds a reasonable bound for your situation (you've
been blocked far longer than the Steward's other visible turnarounds, or
you have independent reason to think the NEED never arrived):

1. **Re-send the NEED once** — a fresh `thrum send` with the same question,
   not a new phrasing, so the Steward isn't left reconciling two versions of
   the same ask. Note in the resend that this is a repeat:

   ```bash
   thrum send --to @<steward> --stdin <<'EOF'
   NEED [<topic>]: <one clear question> (resend — no answer yet)
   A) <option>
   B) <option>
   C) <option>
   EOF
   ```

2. If that still doesn't produce an ANSWER, **escalate to your `parent`**
   (the Steward, or whichever agent your briefing names as parent) with a
   plain status message — do not decide the content yourself:

   ```bash
   thrum send --to @<parent> --stdin <<'EOF'
   Blocked on NEED [<topic>] — resent once, still no ANSWER. Need a decision
   to keep moving; not proceeding on a guess.
   EOF
   ```

Never fill in the owner's decision from your own judgment because the
Steward is slow. A wrong guess here isn't a small correction later — it's a
design-lock built on a decision the owner never actually made.

## Design-lock discipline still belongs to you

The Steward is a **relay**, not a decider. It exists to keep your questions
moving through a queue when the human is juggling several brainstormers —
it is not delegated authority to choose between your options on the owner's
behalf, and an `ANSWER:` it relays is the owner's answer passed through, not
the Steward's own opinion. Nothing about a Steward being in the loop loosens
the standing brainstorm discipline: you still hold the RESOLVED-CHOICES
record for the owner (per the `interactive-brainstorm` role rule / the
standing brainstorm design-lock convention), and every locked decision still
needs to trace back to a real `ANSWER:` line, not to an inference you made
because the Steward's presence made the human feel one step further away.
If an `ANSWER:` is ambiguous or doesn't actually resolve the question you
asked, send a follow-up NEED rather than picking the reading that's
convenient.

## Announce handoffs, so the Steward can keep things moving

When you send finished work to another agent and then sit waiting on them —
for example, a brainstorm or plan sent to a coordinator for dual review —
send the Steward a brief, plain-prose heads-up so it can notice if you stall
and prompt a nudge. This is **not** a new convention; it's the same
unstructured-message style as NEED, just without the `NEED:` prefix (the
Steward isn't being asked to decide anything, only to keep an eye out):

```bash
thrum send --to @<steward> --stdin <<'EOF'
WAITING [<topic>]: sent the brainstorm to @<coordinator> for dual review.
EOF
```

You are **not** expected to poll for a response yourself while in this
state — that's the Steward's job, the same way batching NEEDs is. When the
response you were waiting on actually arrives, send a short close-out so the
Steward's picture of the queue stays current:

```bash
thrum send --to @<steward> --stdin <<'EOF'
UNBLOCKED [<topic>]: review came back, resuming.
EOF
```

Keep both messages short — one line of status, not a narrative. The Steward
reads these the same way it reads a NEED: as a judgment agent scanning its
inbox, not a parser expecting a fixed shape.

## Why this is safe to layer on

Nothing here adds a new delivery mechanism, a new command, or a schema —
every example above is `thrum send --stdin <<'EOF' ... EOF`, `thrum reply`,
or `thrum wait`, exactly as documented in the NEED/ANSWER convention. Using
a **quoted** heredoc delimiter (`<<'EOF'`, never bare `<<EOF`) is
deliberate: an unquoted heredoc runs command substitution on backticks and
`$()` inside your message body before it's ever sent, which can silently
execute something you only meant as text. Always quote the delimiter.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.