handoff-inbox-drain
Drain a handoff review inbox with judgment, without owning a scheduler. Brigade stays invoke-only; this skill is the allowlist-bound agent recipe for triage.
When this applies
- A handoff draft inbox has pending or reviewed items to triage.
- An operator schedules a headless harness (
claude -p, codex exec, or equivalent) against this skill.
- You are reinforcing existing memory, not inventing a parallel corpus.
Allowlist
Work only through this allowlist of Brigade surfaces and local reads:
brigade handoff list
brigade handoff show <id>
brigade handoff archive <id>
brigade handoff closeout (when the workspace supports it)
brigade handoff lint / brigade handoff doctor for health checks
- Read/Grep of on-disk handoff files,
memory/cards/, and related indexes already present in the target
Bash is scoped to those brigade handoff … commands only. Do not expand into arbitrary filesystem writes, remote APIs, unscoped shell, or tools outside this allowlist. Stay inside the handoff inbox / memory/cards/ roots; do not follow .. or symlinks out of those trees.
Grounded-edit rules
Every edit must be grounded. You must cite existing on-disk content (handoff body, card text, or index entry) before changing anything. Prefer reinforce-in-place: edit or refresh only what you can verify against a local source of truth. Date-bumps alone are not grounded edits.
Retention (never delete)
- Never delete handoff drafts or memory cards.
- Never remove inbox items by destructive filesystem ops.
- Never prune archives, queues, or card trees.
- Archive only: uncertain or done items go through archive/closeout paths, or a needs-human file the operator already uses.
Reinforce over duplicate (#724)
brigade ingest --promote-cards reinforces an existing card on exact content fingerprint match and inboxes near-match or opposite-polarity proposals for review. When draining the inbox:
- Search existing cards and recent handoffs for the same fact or decision.
- If ingest already proposed a near-match reinforce or contradiction, honor that routing — do not create a sibling card.
- If a close match exists without an ingest proposal, reinforce that card (cite the on-disk source) instead of creating a sibling.
- If unsure, leave the draft for human review rather than splitting the corpus.
Process
- List pending drafts with the allowlist commands.
- For each item, read the on-disk handoff and related cards.
- Triage: archive noise, closeout completed review, reinforce an existing card when the fact matches, or park uncertain items for a human.
- Capture outcomes against
handoff-inbox-drain when verification is part of the run.
- Stop when the inbox is drained or only needs-human items remain.
Failure paths
- Missing inbox or handoff source config: stop. Report the missing path/config; do not invent an inbox or create one.
- Empty inbox / no pending drafts: exit cleanly with "nothing to drain"; do not invent work.
- Malformed handoff entry (unreadable frontmatter, missing id, broken body): skip that item, leave it for a human, continue with the rest. Never rewrite a malformed file just to make the loop continue.
Out of scope
session-sweep (blocked on #466)
- Scheduler or model-dispatch integration
- Automatic card creation without an on-disk citation
1---2name: handoff-inbox-drain3description: Use when draining a Brigade handoff review inbox - triage drafts with allowlist-bound Brigade handoff commands, grounded edits that cite on-disk content, archive-only retention, and reinforce-in-place when ingest already matched a known fact (#724). Never delete, remove, or prune.4---56# handoff-inbox-drain78Drain a handoff review inbox with judgment, without owning a scheduler. Brigade stays invoke-only; this skill is the allowlist-bound agent recipe for triage.910## When this applies1112- A handoff draft inbox has pending or reviewed items to triage.13- An operator schedules a headless harness (`claude -p`, `codex exec`, or equivalent) against this skill.14- You are reinforcing existing memory, not inventing a parallel corpus.1516## Allowlist1718Work only through this allowlist of Brigade surfaces and local reads:1920- `brigade handoff list`21- `brigade handoff show <id>`22- `brigade handoff archive <id>`23- `brigade handoff closeout` (when the workspace supports it)24- `brigade handoff lint` / `brigade handoff doctor` for health checks25- Read/Grep of on-disk handoff files, `memory/cards/`, and related indexes already present in the target2627Bash is scoped to those `brigade handoff …` commands only. Do not expand into arbitrary filesystem writes, remote APIs, unscoped shell, or tools outside this allowlist. Stay inside the handoff inbox / `memory/cards/` roots; do not follow `..` or symlinks out of those trees.2829## Grounded-edit rules3031Every edit must be grounded. You must cite existing on-disk content (handoff body, card text, or index entry) before changing anything. Prefer reinforce-in-place: edit or refresh only what you can verify against a local source of truth. Date-bumps alone are not grounded edits.3233## Retention (never delete)3435- Never delete handoff drafts or memory cards.36- Never remove inbox items by destructive filesystem ops.37- Never prune archives, queues, or card trees.38- Archive only: uncertain or done items go through archive/closeout paths, or a needs-human file the operator already uses.3940## Reinforce over duplicate (#724)4142`brigade ingest --promote-cards` reinforces an existing card on exact content fingerprint match and inboxes near-match or opposite-polarity proposals for review. When draining the inbox:43441. Search existing cards and recent handoffs for the same fact or decision.452. If ingest already proposed a near-match reinforce or contradiction, honor that routing — do not create a sibling card.463. If a close match exists without an ingest proposal, reinforce that card (cite the on-disk source) instead of creating a sibling.474. If unsure, leave the draft for human review rather than splitting the corpus.4849## Process50511. List pending drafts with the allowlist commands.522. For each item, read the on-disk handoff and related cards.533. Triage: archive noise, closeout completed review, reinforce an existing card when the fact matches, or park uncertain items for a human.544. Capture outcomes against `handoff-inbox-drain` when verification is part of the run.555. Stop when the inbox is drained or only needs-human items remain.5657## Failure paths5859- Missing inbox or handoff source config: stop. Report the missing path/config; do not invent an inbox or create one.60- Empty inbox / no pending drafts: exit cleanly with "nothing to drain"; do not invent work.61- Malformed handoff entry (unreadable frontmatter, missing id, broken body): skip that item, leave it for a human, continue with the rest. Never rewrite a malformed file just to make the loop continue.6263## Out of scope6465- `session-sweep` (blocked on #466)66- Scheduler or model-dispatch integration67- Automatic card creation without an on-disk citation