Skip to main content
How to use beads with Claude Code.

Setup

Quick Setup

This installs:
  • SessionStart hook - Runs bd prime --hook-json when a session starts. SessionStart also fires after context compaction, so the same hook refreshes context automatically.
  • CLAUDE.md pointer - A minimal beads section in your project’s CLAUDE.md (skipped if CLAUDE.md is a symlink).
By default the hook is written to the project’s .claude/settings.json. Variants:
If the beads plugin is enabled, bd setup claude skips writing hooks - the plugin provides its own, and duplicates would run bd prime twice per session.

Manual Setup

Add to .claude/settings.json (project) or ~/.claude/settings.json (global):
The --hook-json flag wraps the output in the hook JSON envelope Claude Code expects. No PreCompact hook is needed - SessionStart fires again after compaction.

Verify Setup

How It Works

  1. Session startsbd prime injects ~1-2k tokens of context
  2. You work → Use bd CLI commands directly
  3. Session compacts → SessionStart fires again and bd prime refreshes workflow context
  4. Session endsbd dolt push syncs changes

Why CLI + hooks instead of MCP?

Context efficiency. MCP tool schemas can add 10-50k tokens to every request; bd prime adds ~1-2k tokens of workflow context - 10-50x less overhead, which means lower cost, lower latency, and better model attention. Prefer CLI + hooks in any environment with shell access; use the MCP server only where the CLI is unavailable, such as Claude Desktop.

Why not Claude Skills?

Beads doesn’t ship or require Claude Skills (.claude/skills/). bd prime already delivers the workflow context, and the workflow fits a simple command set (ready → create → update → close → sync). Skills are also Claude-specific, which would break beads’ editor-agnostic approach - the same CLI works in Cursor, Windsurf, and every other shell-capable editor. You can create your own Skills on top of beads, but none are needed.

Essential Commands for Agents

Creating Issues

Working on Issues

Querying

Syncing

Best Practices

Always Use --json

Always Include Descriptions

Push Before Session End

Plugin (Optional)

For slash commands and enhanced UX, install the beads plugin:
Adds slash commands:
  • /beads:ready - Show ready work
  • /beads:create - Create issue
  • /beads:show - Show issue
  • /beads:update - Update issue
  • /beads:close - Close issue

Troubleshooting

Context not injected

Changes not syncing

Database not found

See Also