Beads issue tracking and workflow management with automatic git branch creation...
bd-* prefix.allowed_prefixes for historical continuity.af-* or other legacy prefixes when a fresh bd-* issue is appropriate.bd-* is the default workflow contract for new work in canonical repos.AI-supervised issue tracking with git-backed distributed database.
Command surface: Use bdx for coordination commands. Raw bd is local diagnostics/bootstrap/path-sensitive operations only.
Prefix note: Examples use the Beads prefix for this repo (e.g., bd-xyz). If you are working in another repository, substitute that repo's issue ID prefix everywhere {issue-id} is shown (branch names, Feature-Key trailers, dependency IDs).
In agent-skills, do not rely on the Beads default issue prefix when creating new tracking work. If the active Beads context is af-* or another non-bd-* prefix, create or choose an explicit bd-* issue id before branch, commit, or PR work.
References:
Beads provides persistent task memory across sessions, enabling:
Use these tiers consistently:
bdx remember|memories|recall|forget for short global facts in Beads KV.
These are prime-injected upstream and should use stable keys.memory for structured durable knowledge with
metadata, provenance, staleness, and comments.bdx comments add for task-local history only.Do not use comments as fleet memory unless promoted to a memory record.
Required metadata for memory issues:
mem.scope: global|repo|tool|vendor|workflowmem.repo: repo name or globalmem.source_issue: concrete Beads id or nonemem.kind: decision|runbook|learning|gotcha|handoff|best_practicemem.maturity: draft|validated|coremem.confidence: low|medium|highOptional metadata:
mem.pathsmem.stale_if_pathsmem.source_commitmem.query_hintmem.symbolsStandalone/global memory records are valid when no single task is the source
(mem.source_issue=none, mem.repo=global).
~/.beads-runtime/.beads.bdx.~/bd is legacy/rollback Git-backed state only.agent-skills, active context must resolve to a repo-compatible bd-* issue id before commit or PR work. If bd-context surfaces af-* or another non-bd-* prefix here, stop early and create or choose the correct bd-* issue instead of carrying the mismatch forward.--repo/--repo=<name> to bdx writes. Use labels/metadata/cwd context to capture repo intent.sqlite3: unable to open database file or unknown command "dolt", stop and repair runtime/binary first.bdx dolt test --json
bdx preflight --json
bdx show <known-beads-id> --json
On macmini, do not use bdx ready --json as a tight-loop health probe. If you need to confirm CLI responsiveness, prefer:
bdx show <known-beads-id> --json
Broad readiness queries can be slow enough on macmini to look hung even when the Beads hub is healthy.
Before cross-VM, cross-repo, vendor/API, infra/auth/workflow, or repeated friction work, run targeted memory retrieval first:
bdx memories <keyword> --json
bdx search <keyword> --label memory --status all --json
bdx show <memory-id> --json
bdx comments <memory-id> --json
before acting, then use serena for symbol-aware edits when precision matters.
Fail-loud remediation (first response):
export PATH="$HOME/.local/bin:$PATH"
export BD_BIN="$HOME/.local/bin/bd"
export BEADS_DIR="$HOME/.beads-runtime/.beads"
hash -r
~/.agent/skills/health/bd-doctor/check.sh
Problem: Without dependencies, targeted task selection and BV graph analysis can't identify blocked tasks or critical paths.
Rule: When creating ANY issue, ALWAYS ask yourself:
bdx dep <blocker> --blocks <blocked>bdx dep add <blocked> <blocker>--parent <parent-id> or use bdx dep relate--parent <epic-id># When creating with dependency
bdx create --title "Impl: OAuth" --type feature --deps "bd-research-task"
# Add dependency to existing issue
bdx dep bd-required-api --blocks bd-new-feature
# Equivalent:
bdx dep add bd-new-feature bd-required-api
# Discovery: I found a bug while working on a feature
bdx create --title "Bug: <short-description>" --type bug --parent bd-parent-feature
# Epic subtask
bdx create --title "Impl: OAuth" --type feature --parent bd-epic
| Type | Meaning | Affects Ready Queue? |
|---|---|---|
blocks |
Hard blocker | ✅ Yes |
related |
Soft connection | ❌ No |
parent-child |
Epic hierarchy | ❌ No |
discovered-from |
Found during work | ❌ No |
Only blocks prevents a task from appearing in bdx ready.
When: User confirms this is epic-level work (weeks, multiple phases)
Steps:
feature-<FEATURE_KEY>Example execution:
# 1. Check context
bd-context
# 2. Create epic
# Use bdx create with JSON or flags
bdx create --title "AUTHENTICATION_SYSTEM" --type epic --priority 1 --description "OAuth + JWT..."
# Output: Created issue bd-xyz (AUTHENTICATION_SYSTEM)
# 3. Create phase tasks
bdx create --title "Research: OAuth" --type task --priority 1
# bd-xyz.1
bdx create --title "Spec: Auth flow" --type task --priority 1 --deps "bd-xyz.1" --parent bd-xyz
# bd-xyz.2
bdx create --title "Impl: OAuth" --type feature --priority 1 --deps "bd-xyz.2" --parent bd-xyz
# bd-xyz.3
# 4. Create and checkout branch
git checkout -b feature-AUTHENTICATION_SYSTEM
# 5. Start first task
bdx update bd-xyz.1 status=in_progress
# 6. Confirm
echo "✅ Created epic bd-xyz with phase tasks"
Branch naming: feature-<TITLE> where TITLE is sanitized (uppercase, underscores, no spaces)
When: User confirms this is feature-level work (days, single capability)
Steps:
feature-<FEATURE_KEY>Example execution:
# 1. Check context
bd-context
# 2. Create feature
bdx create --title "OAUTH_LOGIN_BUTTON" --type feature --priority 2 --description "Single OAuth login component..."
# Output: Created issue bd-abc
# 3. Create and checkout branch
git checkout -b feature-OAUTH_LOGIN_BUTTON
# 4. Start feature
bdx update bd-abc status=in_progress
# 5. Confirm
echo "✅ Created feature bd-abc"
Ready tasks (no blockers):
bdx ready
All issues:
bdx list --status open
Current context:
bd-context
Show issue:
bdx show bd-abc123
Update status:
bdx update bd-abc123 status=in_progress notes="Working on X"
Complete:
bdx close bd-abc123 reason="Completed: X"
New issue:
bdx create --title "Description" --type feature --priority 2
Link to PR:
bd-link-pr <pr-number>
Add blocker:
bdx dep bd-required-api --blocks bd-new-feature
Track discovery:
bdx create --title "Bug: <short-description>" --type bug --parent bd-parent-feature
Uses Beads:
When invoked: "commit my work", "save progress"
Uses Beads:
When invoked: "create PR", "merge into master"
Automated Beads Operations:
dx-check.sh - Primary operator entrypoint (dx-status + optional auto-fix via dx-hydrate)dx-status.sh - Read-only diagnosticsdx-hydrate.sh - Bootstrap/repair path when setup is missingdx-doctor.sh - Optional advanced coordinator diagnostics (not required for normal Beads ops)Manual Tools:
bd-doctor - Diagnose/repair canonical Beads connectivity and lock issuesbeads-dolt-fleet - Fleet-wide convergence and service health operationsWhen invoked: Database recovery, fleet convergence, environment bootstrap
See also: ~/agent-skills/docs/BEADS_DX_QUICK_REFERENCE.md
mcp__plugin_beads_beads__ready
mcp__plugin_beads_beads__list
mcp__plugin_beads_beads__show
mcp__plugin_beads_beads__create
mcp__plugin_beads_beads__update
mcp__plugin_beads_beads__close
bdx dep
bdx dep <blocker> --blocks <blocked> or bdx dep add <blocked> <blocker>bdx dep relate <id-a> <id-b> only for soft linksmcp__plugin_beads_beads__blocked
mcp__plugin_beads_beads__stats
bd-context
bd-link-pr
Canonical runtime service:
systemctl --user status beads-dolt.servicelaunchctl print gui/$(id -u)/com.starsend.beads-doltResult: Beads availability is managed as a host service, not per-repo JSONL sync hooks.
Check context:
bd-context
Find ready work:
mcp__plugin_beads_beads__ready()
Claim task:
mcp__plugin_beads_beads__update(
issue_id="<id>",
status="in_progress"
)
Discover bug/TODO:
mcp__plugin_beads_beads__create(
title="Bug: X doesn't handle Y",
issue_type="bug",
priority=1
)
Use `bdx create --parent <current-feature-id>` for discovered child work, or
`bdx create --deps "discovered-from:<current-feature-id>"` when a typed origin
edge is specifically required.
Update progress:
mcp__plugin_beads_beads__update(
issue_id="<current-id>",
notes="Implemented X, testing Y"
)
Commit:
Create PR:
Close issue (after merge):
mcp__plugin_beads_beads__close(
issue_id="<id>",
reason="Completed: merged PR#123"
)
feature - New functionality (priority 2 default) bug - Defects to fix (priority 1 default) task - General work (priority 2 default) epic - Large features with subtasks (priority 2 default) chore - Maintenance work (priority 3 default)
0 - Critical (production down) 1 - High (blocking work, major bugs) 2 - Normal (features, improvements) 3 - Low (nice-to-have) 4 - Backlog (future consideration)
blocks - Hard blocker (prevents work) related - Soft connection parent-child - Epic → subtask discovered-from - Found during parent work
Only "blocks" affects ready queue.
Use epics for features requiring multiple sub-tasks:
epic = mcp__plugin_beads_beads__create(
title="Authentication System",
issue_type="epic",
priority=1,
design="Overall architecture notes"
)
# Create sub-tasks
subtask1 = mcp__plugin_beads_beads__create(
title="JWT token generation",
issue_type="task",
priority=1
)
Create subtasks with `--parent "$epic_id"` so hierarchy is represented by the
native parent field.
Progressive breakdown:
--parentAll ready tasks:
mcp__plugin_beads_beads__ready()
High-priority only:
mcp__plugin_beads_beads__ready(priority=1)
Ref: https://github.com/steveyegge/beads/blob/main/docs/QUICKSTART.md#hierarchical-issues-epics
--parent or --deps "discovered-from:<id>" to track origin❌ Creating issues without descriptions ❌ Leaving issues in "in_progress" after completion ❌ Not linking discovered work to parent ❌ Forgetting to update status during long features ❌ Closing without reason/context
Beads CLI not found:
which bd~/bin or scripts/ in PATHBeads service unavailable or stale:
beads-dolt dolt test --jsonbeads-dolt status --jsonbeads-dolt.service on Linux or launchd agent on macOS)Issue not found:
bdx list --status openbd-abc123 (not just abc123)beads-dolt dolt test --jsonDolt lock contention (database ... is locked):
~/.beads-runtime/.beads/dolt on the hostsystemctl --user restart beads-dolt.service on Linux)beads-dolt dolt test --jsonbeads.role not configured warning or hung mutations:
This is local host config drift, not a hub/service outage.
If beads-dolt dolt test --json succeeds, the Beads hub is healthy.
Deterministic fix:
bd config set beads.role maintainer
Retry the mutation after setting the role. Do not escalate to hub diagnostics if the Dolt connection test passes.
Agents performing mutating coordination commands (bdx create/update/close/dep) should self-heal this before declaring Beads broken.
Last Updated: 2025-02-09 Related Skills: sync-feature-branch, create-pull-request Helper Scripts: bd-context, bd-link-pr References:
Before any Beads truth inspection on canonical hosts, run:
~/agent-skills/scripts/beads-truth-guard
If Dolt mode is detected, treat CLI results as source of truth and do not treat these files as live truth:
~/.beads-runtime/.beads/issues.jsonl~/.beads-runtime/.beads/backup/issues.jsonlUse:
bdx show <id> --jsonbdx list --jsonbeads-dolt status --json