| name | br |
| description | Official skill for beads_rust (`br`), a local-first, dependency-aware issue tracker for AI agents. Use when creating issues, triaging backlogs, managing dependencies, finding ready work, updating status, or syncing to git via JSONL. |
| license | MIT |
| domain | project-management |
| role | specialist |
| scope | operations |
| output-format | commands |
| triggers | ["br","beads","beads_rust","issue tracker","issue triage","backlog","dependencies","ready work"] |
| metadata | {"author":"Dicklesworthstone","version":"1.0.0"} |
br -- Beads Rust Issue Tracker (Official Skill)
Non-invasive: br NEVER runs git commands. Sync and commit are YOUR responsibility.
Critical Rules for Agents
| Rule | Why |
|---|
Binary is br | NEVER bd (that is the old Go version) |
ALWAYS use --json | Structured output for parsing; --format toon for reduced tokens |
NEVER run bare bv | Blocks session in interactive TUI mode |
| Sync is EXPLICIT | br sync --flush-only exports DB to JSONL only |
| Git is YOUR job | br only touches .beads/ -- you must git add .beads/ && git commit |
| No cycles allowed | br dep cycles must return empty |
| Resolve actor at runtime | Use ACTOR="${BR_ACTOR:-assistant}" and pass --actor "$ACTOR" |
Quick Workflow
ACTOR="${BR_ACTOR:-assistant}"
br ready --json
br update --actor "$ACTOR" <id> --status in_progress
br close --actor "$ACTOR" <id> --reason "Implemented X"
br sync --flush-only
git add .beads/ && git commit -m "feat: X (<id>)"
Essential Commands
Issue Lifecycle
ACTOR="${BR_ACTOR:-assistant}"
br init
br create --actor "$ACTOR" "Title" -p 1 -t task
br q --actor "$ACTOR" "Quick note"
br show <id> --json
br update --actor "$ACTOR" <id> --status in_progress
br update --actor "$ACTOR" <id> --priority 0
br close --actor "$ACTOR" <id> --reason "Done"
br close --actor "$ACTOR" <id1> <id2> --reason "..."
br reopen --actor "$ACTOR" <id>
Create Options
br create --actor "$ACTOR" "Title" \
--priority 1 \
--type task \
--assignee "user@..." \
--labels backend,auth \
--description "..."
Update Options
br update --actor "$ACTOR" <id> \
--title "New title" \
--priority 0 \
--status in_progress \
--assignee "new@..." \
--add-label reliability \
--parent <parent-id> \
--claim
Bulk update (batch triage):
br update --actor "$ACTOR" <id1> <id2> <id3> --priority 2 --add-label triage-reviewed --json
Querying (always use --json for agents)
br ready --json
br list --json
br list --status open --sort priority --json
br list --priority 0-1 --json
br list --assignee alice --json
br blocked --json
br search "keyword" --json
br show <id> --json
br stale --days 30 --json
br count --by status --json
Dependencies
br dep add <child> <parent>
br dep add <id> <depends-on> --type blocks
br dep remove <child> <parent>
br dep list <id> --json
br dep tree <id> --json
br dep cycles --json
Critical: br dep cycles must return empty. Circular dependencies break the dependency graph and make br ready unreliable.
Labels
br label add <id> backend auth
br label remove <id> urgent
br label list <id>
br label list-all
Comments
ACTOR="${BR_ACTOR:-assistant}"
br comments add --actor "$ACTOR" <id> --message "Triage note" --json
br comments list <id> --json
Sync (EXPLICIT -- never automatic)
br sync --flush-only
br sync --import-only
br sync --status
Workflow after making changes:
br sync --flush-only
git add .beads/ && git commit -m "Update issues"
Workflow after pulling:
git pull
br sync --import-only
System and Diagnostics
br doctor
br stats --json
br config list
br config get id.prefix
br config set defaults.priority=1
br where
br version
br upgrade
br lint --json
Priority Scale
| Priority | Meaning | Use numbers, not words |
|---|
| 0 | Critical | Immediate action required |
| 1 | High | Important, do soon |
| 2 | Medium (default) | Normal priority |
| 3 | Low | When time permits |
| 4 | Backlog | Future consideration |
Issue Types
task, bug, feature, epic, question, docs
Output Formats
| Flag | Use case |
|---|
--json | Default for agents -- full structured data |
--format toon | Token-optimized alternative for context-window-sensitive agents |
| (no flag) | Human-readable terminal output with colors |
bv Integration
CRITICAL: Never run bare bv -- it launches interactive TUI and blocks.
bv --robot-next
bv --robot-triage
bv --robot-plan
bv --robot-insights | jq '.Cycles'
bv --robot-priority
bv --robot-alerts
Agent Mail Coordination
Use bead ID as thread_id for multi-agent coordination:
| Concept | Value |
|---|
Mail thread_id | bd-### (the issue ID) |
| Mail subject | [bd-###] ... |
File reservation reason | bd-### |
| Commit messages | Include bd-### for traceability |
file_reservation_paths(..., reason="bd-123")
send_message(..., thread_id="bd-123", subject="[bd-123] Starting...")
br close bd-123 --reason "Completed"
release_file_reservations(...)
Session Ending Pattern
Before ending any work session:
git pull --rebase
br sync --flush-only
git add .beads/ && git commit -m "Update issues"
git push
git status
Standard Agent Workflow (Full)
ACTOR="${BR_ACTOR:-assistant}"
br where
br ready --json
br blocked --json
br list --status open --sort priority --json
br show <id> --json
br update --actor "$ACTOR" <id> --status in_progress --claim
br close --actor "$ACTOR" <id> --reason "Implemented X in commit abc123"
br ready --json
br blocked --json
br sync --flush-only
git add .beads/ && git commit -m "feat: X (<id>)"
git push
Triage Decision Matrix
Classify each issue into exactly one category:
| Classification | Action |
|---|
implemented | Close with evidence (commit/PR/file/behavior) |
out-of-scope | Close with explicit boundary reason |
needs-clarification | Comment with specific unanswered questions |
actionable | Keep open, correct status/priority/labels/deps |
During large triage efforts, checkpoint every few updates:
br ready --json
br blocked --json
Anti-Patterns
- Running
br sync without --flush-only or --import-only
- Forgetting sync before git commit
- Creating circular dependencies
- Running bare
bv (blocks session)
- Assuming auto-commit behavior (br NEVER auto-commits)
- Inventing evidence for closure -- if unsure, comment instead
- Modifying unrelated issues during triage
- Adding speculative dependencies
Storage Layout
.beads/
beads.db # SQLite database (primary storage)
beads.db-shm # SQLite shared memory (WAL mode)
beads.db-wal # SQLite write-ahead log
issues.jsonl # JSONL export (for git)
config.yaml # Project configuration
metadata.json # Workspace metadata
Troubleshooting
br doctor
br dep cycles
br config list
which br
"Database locked": Check for other br processes with pgrep -f "br ".
Worktree error ('main' is already checked out):
git branch beads-sync main
br config set sync.branch beads-sync
Verbose debugging:
br -v list
br -vv list
RUST_LOG=debug br list
References