Use when noticing something off (code smell, design smell, workaround) while working and want to capture it without losing flow - grounds observation in codebase and files a proper bead that future...
File beads that future agents can execute with zero shared context. You receive an observation, ground it in the codebase, and create a bead that stands alone.
A bead is good if a stranger-agent can execute it knowing ONLY:
They should NOT need: conversation history, the observer's context, or clarification.
human-needed label, describe optionsbd createbd sync (just git commit isn't enough - beads live on beads-sync branch)Title: Concise, grounded summary (not vague)
Description: The concrete issue
## What's Wrong
[Specific problem - what IS off, grounded in files]
## Where
[Exact file paths, line numbers]
## Why It Matters
[What could go wrong, why this is tech debt]
## Files to Study
- path/to/file.rs (the problematic code)
- path/to/related.py (the other side of the mismatch)
Fields to set (run bd create --help to see all available):
| Flag | When to use |
|---|---|
--type task |
Default. Use bug if actively broken, feature for new capability |
--priority |
P0 critical (security/data loss), P1 high (bugs/blockers), P2 medium, P3 low (polish), P4 backlog - default to your judgment based on impact |
--labels human-needed |
Multiple valid approaches exist (see below) |
--deps discovered-from:<id> |
Main agent was working on a specific bead |
--acceptance |
Fill if obvious - what would "done" look like? |
--design |
Fill if obvious - brief notes on approach/constraints |
Fold context into description footer:
---
*Discovered while: [what triggered this observation]*
Use when there are forks requiring human decision:
When using human-needed, add to description:
## Decision Needed
[Specific question]
## Options
1. **Option A**: [approach] - [pros/cons]
2. **Option B**: [approach] - [pros/cons]
Input from main agent: "The severity is hardcoded in transform.rs. Noticed while adding analyzer endpoint."
Your process:
parse_severity("HIGH")Output bead:
bd create "RuleViolation drops priority - Rust hardcodes HIGH severity" \
--type task \
--priority 1 \
--acceptance "Rust RuleViolation receives and uses Python's computed priority" \
--description "## What's Wrong
Rust transform hardcodes severity to HIGH, ignoring Python's computed priority.
Line 250 in transform.rs:
\`\`\`rust
let priority = parse_severity(\"HIGH\").unwrap_or(RuleSeverity::Medium);
\`\`\`
## Where
- oxide/server/src/eval/transform.rs:250 (hardcoded value)
- oxide/server/src/eval_client.rs:165-173 (RuleViolation missing priority field)
- src/app/features/evaluation/contracts/rules_contracts.py:62-75 (RuleViolationDto HAS priority)
## Why It Matters
Python evaluator computes actual priority per-violation, but Rust discards it. All violations appear HIGH priority regardless of actual severity. Silent data loss.
## Files to Study
- oxide/server/src/eval/transform.rs (the transform)
- oxide/server/src/eval_client.rs (HTTP receive types)
- src/app/features/evaluation/contracts/rules_contracts.py (Python source types)
---
*Discovered while: adding analyzer endpoint*"