config/agents/skills/beads/SKILL.md
Tracks complex, multi-session work using the Beads issue tracker and dependency graphs, and provides persistent memory that survives conversation compaction. Use when work spans multiple sessions, has complex dependencies, or needs persistent context across compaction cycles. Trigger with phrases like "create task for", "what's ready to work on", "show task", "track this work", "what's blocking", or "update status".
npx skillsauth add edmundmiller/dotfiles beadsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Graph-based issue tracker that survives conversation compaction. Provides persistent memory for multi-session work with complex dependencies.
bd (beads) replaces markdown task lists with a dependency-aware graph stored in git. Unlike TodoWrite (session-scoped), bd persists across compactions and tracks complex dependencies.
Key Distinction:
Core Capabilities:
.beads/issues.jsonl, sync with bd syncbd ready), blocked work (bd blocked)When to Use bd vs TodoWrite:
Decision Rule: If resuming in 2 weeks would be hard without bd, use bd.
Required:
bd init must be run once (humans do this, not agents)Verify Installation:
bd --version # Should return 0.34.0 or later
First-Time Setup (humans run once):
cd /path/to/your/repo
bd init # Creates .beads/ directory with database
Optional:
bd daemon --startEvery session, start here:
bd ready
Shows tasks with no open blockers, sorted by priority (P0 → P4).
What this shows:
myproject-abc)Example output:
claude-code-plugins-abc [P1] [task] open
Implement user authentication
claude-code-plugins-xyz [P0] [epic] in_progress
Refactor database layer
Choose the highest priority (P0 > P1 > P2 > P3 > P4) task that's ready.
bd show <task-id>
Displays:
bd update <task-id> --status in_progress
Marks task as actively being worked on.
bd update <task-id> --notes "Completed: X. In progress: Y. Blocked by: Z"
Critical for compaction survival: Write notes as if explaining to a future agent with zero conversation context.
Note Format (best practice):
COMPLETED: Specific deliverables (e.g., "implemented JWT refresh endpoint + rate limiting")
IN PROGRESS: Current state + next immediate step
BLOCKERS: What's preventing progress
KEY DECISIONS: Important context or user guidance
Create bd tasks when:
bd create "Task title" -p 1 --type task
Arguments:
Example:
bd create "Fix authentication bug" -p 0 --type bug
bd create "Implement OAuth" -p 1 --description "Add OAuth2 support for Google, GitHub, Microsoft. Use passport.js library."
# Create parent epic
bd create "Epic: OAuth Implementation" -p 0 --type epic
# Returns: myproject-abc
# Create child tasks
bd create "Research OAuth providers" -p 1 --parent myproject-abc
bd create "Implement auth endpoints" -p 1 --parent myproject-abc
bd create "Add frontend login UI" -p 2 --parent myproject-abc
bd update <task-id> --status <new-status>
Status Values:
open - Not startedin_progress - Actively workingblocked - Stuck, waiting on somethingclosed - CompletedExample:
bd update myproject-abc --status blocked
bd update <task-id> --notes "Progress update here"
Appends to existing notes field (doesn't replace).
bd update <task-id> -p 0 # Escalate to critical
bd label add <task-id> backend
bd label add <task-id> security
Labels provide cross-cutting categorization beyond status/type.
bd dep add <child-id> <parent-id>
Meaning: <parent-id> blocks <child-id> (parent must be completed first).
Dependency Types:
Example:
# Deployment blocked by tests passing
bd dep add deploy-task test-task # test-task blocks deploy-task
bd dep list <task-id>
Shows:
bd automatically prevents circular dependencies. If you try to create a cycle, the command fails.
bd close <task-id> --reason "Completion summary"
Best Practice: Always include a reason describing what was accomplished.
Example:
bd close myproject-abc --reason "Completed: OAuth endpoints implemented with Google, GitHub providers. Tests passing."
After closing a task, run:
bd ready
Closing a task may unblock dependent tasks, making them newly ready.
bd epic close-eligible
Automatically closes epics where all child tasks are closed.
bd sync
Performs:
.beads/issues.jsonlUse when: End of session, before handing off to teammate, after major progress.
bd export -o backup.jsonl
Creates JSONL backup without git operations.
bd import -i backup.jsonl
Imports JSONL file into database.
bd daemon --start # Auto-sync in background
bd daemon --status # Check daemon health
bd daemon --stop # Stop auto-sync
Daemon watches for database changes and auto-exports to JSONL.
bd ready
Shows tasks with no open blockers.
bd list --status open # Only open tasks
bd list --priority 0 # Only P0 (critical)
bd list --type bug # Only bugs
bd list --label backend # Only labeled "backend"
bd list --assignee alice # Only assigned to alice
bd show <task-id>
Full details: description, dependencies, audit trail, metadata.
bd search "authentication" # Search titles and descriptions
bd search login --status open # Combine with filters
bd blocked
Shows all tasks that have open blockers preventing them from being worked on.
bd stats
Shows:
| Command | When to Use | Example |
| ------------------------ | ----------------------------- | ----------------------------------------- |
| FIND COMMANDS | | |
| bd ready | Find unblocked tasks | User asks "what should I work on?" |
| bd list | View all tasks (with filters) | "Show me all open bugs" |
| bd show <id> | Get task details | "Show me task bd-42" |
| bd search <query> | Text search across tasks | "Find tasks about auth" |
| bd blocked | Find stuck work | "What's blocking us?" |
| bd stats | Project metrics | "How many tasks are open?" |
| CREATE COMMANDS | | |
| bd create | Track new work | "Create a task for this bug" |
| bd template create | Use issue template | "Create task from bug template" |
| bd init | Initialize beads | "Set up beads in this repo" (humans only) |
| UPDATE COMMANDS | | |
| bd update <id> | Change status/priority/notes | "Mark as in progress" |
| bd dep add | Link dependencies | "This blocks that" |
| bd label add | Tag with labels | "Label this as backend" |
| bd comments add | Add comment | "Add comment to task" |
| bd reopen <id> | Reopen closed task | "Reopen bd-42, found regression" |
| bd rename-prefix | Rename issue prefix | "Change prefix from bd- to proj-" |
| bd epic status | Check epic progress | "Show epic completion %" |
| COMPLETE COMMANDS | | |
| bd close <id> | Mark task done | "Close this task, it's done" |
| bd epic close-eligible | Auto-close complete epics | "Close epics where all children done" |
| SYNC COMMANDS | | |
| bd sync | Git sync (all-in-one) | "Sync tasks to git" |
| bd export | Export to JSONL | "Backup all tasks" |
| bd import | Import from JSONL | "Restore from backup" |
| bd daemon | Background sync manager | "Start auto-sync daemon" |
| CLEANUP COMMANDS | | |
| bd delete <id> | Delete issues | "Delete test task" (requires --force) |
| bd compact | Archive old closed tasks | "Compress database" |
| REPORTING COMMANDS | | |
| bd stats | Project metrics | "Show project health" |
| bd audit record | Log interactions | "Record this LLM call" |
| bd workflow | Show workflow guide | "How do I use beads?" |
| ADVANCED COMMANDS | | |
| bd prime | Refresh AI context | "Load bd workflow rules" |
| bd quickstart | Interactive tutorial | "Teach me beads basics" |
| bd daemons | Multi-repo daemon mgmt | "Manage all beads daemons" |
| bd version | Version check | "Check bd version" |
| bd restore <id> | Restore compacted issue | "Get full history from git" |
This skill produces:
Task IDs: Format <prefix>-<hash> (e.g., claude-code-plugins-abc, myproject-xyz)
Status Summaries:
5 open, 2 in_progress, 1 blocked, 47 closed
Dependency Graphs (visual tree):
myproject-abc: Deploy to production [P0] [blocked]
Blocked by:
↳ myproject-def: Run integration tests [P1] [in_progress]
↳ myproject-ghi: Fix failing tests [P1] [open]
Audit Trails (complete history):
2025-12-22 10:00 - Created by alice (P2, task)
2025-12-22 10:15 - Priority changed: P2 → P0
2025-12-22 10:30 - Status changed: open → in_progress
2025-12-22 11:00 - Notes added: "Implemented JWT auth..."
2025-12-22 14:00 - Status changed: in_progress → blocked
2025-12-22 14:01 - Notes added: "Blocked: API endpoint returns 503"
bd: command not foundCause: bd CLI not installed or not in PATH Solution: Install from https://github.com/steveyegge/beads
# macOS/Linux
curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
# Or via npm
npm install -g @beads/bd
# Or via Homebrew
brew install steveyegge/beads/bd
No .beads database foundCause: beads not initialized in this repository
Solution: Run bd init (humans do this once, not agents)
bd init # Creates .beads/ directory
Task not found: <id>Cause: Invalid task ID or task doesn't exist
Solution: Use bd list to see all tasks and verify ID format
bd list # See all tasks
bd search <partial-title> # Find task by title
Circular dependency detectedCause: Attempting to create a dependency cycle (A blocks B, B blocks A) Solution: bd prevents circular dependencies automatically. Restructure dependency graph.
bd dep list <id> # View current dependencies
.beads/issues.jsonlCause: Multiple users modified same issue Solution: bd sync handles JSONL conflicts automatically. If manual intervention needed:
# View conflict
git status
# bd provides conflict resolution tools
bd sync --merge # Attempt auto-resolution
Database is lockedCause: Daemon or another process has exclusive lock Solution: Restart daemon or wait for lock to release
bd daemon --stop
bd daemon --start
Cause: Network issues, authentication failures, or git configuration Solution: Check git remote access and credentials
git fetch # Test connectivity
git status # Verify repo state
User Request: "We need to implement OAuth, this will take multiple sessions"
Agent Response:
# Create epic
bd create "Epic: OAuth Implementation" -p 0 --type epic
# Returns: claude-code-plugins-abc
# Create child tasks
bd create "Research OAuth providers (Google, GitHub, Microsoft)" -p 1 --parent claude-code-plugins-abc
# Returns: claude-code-plugins-abc.1
bd create "Implement backend auth endpoints" -p 1 --parent claude-code-plugins-abc
# Returns: claude-code-plugins-abc.2
bd create "Add frontend login UI components" -p 2 --parent claude-code-plugins-abc
# Returns: claude-code-plugins-abc.3
# Add dependencies (backend must complete before frontend)
bd dep add claude-code-plugins-abc.3 claude-code-plugins-abc.2
# Start with research
bd update claude-code-plugins-abc.1 --status in_progress
Result: Work structured, ready to resume after compaction.
Scenario: Agent discovers API is down during implementation
Agent Actions:
# Mark current task as blocked
bd update claude-code-plugins-xyz --status blocked --notes "API endpoint /auth returns 503, reported to backend team"
# Create blocker task
bd create "Fix /auth endpoint 503 error" -p 0 --type bug
# Returns: claude-code-plugins-blocker
# Link dependency (blocker blocks original task)
bd dep add claude-code-plugins-xyz claude-code-plugins-blocker
# Find other ready work
bd ready
# Shows tasks that aren't blocked - agent can switch to those
Result: Blocked work documented, agent productive on other tasks.
Session 1:
bd create "Implement user authentication" -p 1
bd update myproject-auth --status in_progress
bd update myproject-auth --notes "COMPLETED: JWT library integrated. IN PROGRESS: Testing token refresh. NEXT: Rate limiting"
# [Conversation compacted - history deleted]
Session 2 (weeks later):
bd ready
# Shows: myproject-auth [P1] [task] in_progress
bd show myproject-auth
# Full context preserved:
# - Title: Implement user authentication
# - Status: in_progress
# - Notes: "COMPLETED: JWT library integrated. IN PROGRESS: Testing token refresh. NEXT: Rate limiting"
# - No conversation history needed!
# Agent continues exactly where it left off
bd update myproject-auth --notes "COMPLETED: Token refresh working. IN PROGRESS: Rate limiting implementation"
Result: Zero context loss despite compaction.
Scenario: Build feature with prerequisites
# Create tasks
bd create "Deploy to production" -p 0
# Returns: deploy-prod
bd create "Run integration tests" -p 1
# Returns: integration-tests
bd create "Fix failing unit tests" -p 1
# Returns: fix-tests
# Create dependency chain
bd dep add deploy-prod integration-tests # Integration blocks deploy
bd dep add integration-tests fix-tests # Fixes block integration
# Check what's ready
bd ready
# Shows: fix-tests (no blockers)
# Hides: integration-tests (blocked by fix-tests)
# Hides: deploy-prod (blocked by integration-tests)
# Work on ready task
bd update fix-tests --status in_progress
# ... fix tests ...
bd close fix-tests --reason "All unit tests passing"
# Check ready again
bd ready
# Shows: integration-tests (now unblocked!)
# Still hides: deploy-prod (still blocked)
Result: Dependency chain enforces correct order automatically.
Alice's Session:
bd create "Refactor database layer" -p 1
bd update db-refactor --status in_progress
bd update db-refactor --notes "Started: Migrating to Prisma ORM"
# End of day - sync to git
bd sync
# Commits tasks to git, pushes to remote
Bob's Session (next day):
# Start of day - sync from git
bd sync
# Pulls latest tasks from remote
bd ready
# Shows: db-refactor [P1] [in_progress] (assigned to alice)
# Bob checks status
bd show db-refactor
# Sees Alice's notes: "Started: Migrating to Prisma ORM"
# Bob works on different task (no conflicts)
bd create "Add API rate limiting" -p 2
bd update rate-limit --status in_progress
# End of day
bd sync
# Both Alice's and Bob's tasks synchronized
Result: Distributed team coordination through git.
Use bd when:
Use TodoWrite when:
Decision Rule: If resuming in 2 weeks would be hard without bd, use bd.
Top 10 most-used commands:
| Command | Purpose |
| ------------------------------------- | --------------------------- |
| bd ready | Show tasks ready to work on |
| bd create "Title" -p 1 | Create new task |
| bd show <id> | View task details |
| bd update <id> --status in_progress | Start working |
| bd update <id> --notes "Progress" | Add progress notes |
| bd close <id> --reason "Done" | Complete task |
| bd dep add <child> <parent> | Add dependency |
| bd list | See all tasks |
| bd search <query> | Find tasks by keyword |
| bd sync | Sync with git remote |
bd ready firstbd show <id> to get full contextin_progressbd uses .beads/ directory by default.
Alternate Database:
export BEADS_DIR=/path/to/alternate/beads
bd ready # Uses alternate database
Multiple Databases: Use BEADS_DIR to switch between projects.
For complex scenarios, see references:
Compaction Strategies: {baseDir}/references/ADVANCED_WORKFLOWS.md
Epic Management: {baseDir}/references/ADVANCED_WORKFLOWS.md
Template System: {baseDir}/references/ADVANCED_WORKFLOWS.md
Git Integration: {baseDir}/references/GIT_INTEGRATION.md
Team Collaboration: {baseDir}/references/TEAM_COLLABORATION.md
Complete reference: https://github.com/steveyegge/beads
Existing detailed guides:
{baseDir}/references/CLI_REFERENCE.md - Complete command syntax{baseDir}/references/WORKFLOWS.md - Detailed workflow patterns{baseDir}/references/DEPENDENCIES.md - Dependency system deep dive{baseDir}/references/RESUMABILITY.md - Compaction survival guide{baseDir}/references/BOUNDARIES.md - bd vs TodoWrite detailed comparison{baseDir}/references/STATIC_DATA.md - Database schema referenceProgressive Disclosure: This skill provides essential instructions for all 30 beads commands. For advanced topics (compaction, templates, team workflows), see the references directory. Slash commands (/bd-create, /bd-ready, etc.) remain available as explicit fallback for power users.
development
Read-only Linear issue access via the Linear GraphQL API.
data-ai
## <!-- Purpose: Teach agents fast day-to-day memory browse/search/read/sync workflows in pi-context-repo. --> name: searching-memory description: > Search, browse, and inspect memory quickly in pi-context-repo. Use when asked to find prior notes, inspect memory files, locate preferences, or sync recent memory updates. Trigger phrases: "search memory", "list memory files", "find in memory", "read memory file", "memory status", "sync memory". --- # Searching Memory Use this workflow for fast
development
Comprehensive guide for initializing or reorganizing agent memory into a deeply hierarchical file structure. Use when running /init, when user asks to set up memory, or when memory needs a major reorganization. Trigger phrases: "initialize memory", "set up memory", "populate memory", "build my memory", "memory init".
data-ai
Decomposes and reorganizes agent memory files into focused, single-purpose components. Use when memory has large multi-topic blocks, redundancy, or poor organization. Trigger phrases: "defrag memory", "reorganize memory", "clean up memory files", "split memory blocks".