Curated Claude Code catalog
Updated 07.05.2026 · 19:39 CET
01 / Skill
gastownhall

beads

Quality
9.0

Beads provides a persistent, structured memory for AI coding agents, replacing traditional markdown plans with a dependency-aware graph. It excels at managing long-horizon tasks and multi-agent workflows by preserving context and preventing conflicts across sessions.

USP

Powered by Dolt, it offers version-controlled SQL with native branching and cell-level merge, ensuring zero-conflict multi-agent workflows. Its semantic "memory decay" compacts old tasks, optimizing context window usage.

Use cases

  • 01Managing long-horizon AI agent tasks
  • 02Tracking dependencies and blockers in multi-agent workflows
  • 03Persistent project memory across sessions
  • 04Context recovery after conversation compaction
  • 05Collaborative task management for coding projects

Detected files (5)

  • internal/templates/skills/beads/SKILL.mdskill
    Show content (2146 bytes)
    ---
    name: beads
    description: Use when working in a repository that uses bd or Beads for durable project task tracking, issue dependencies, blocker management, multi-session handoff, or shared work memory. Trigger when the user asks to find ready work, claim or close tasks, create follow-up work, inspect blockers, recover project context, or choose between local planning and persistent project tracking.
    ---
    
    # Beads
    
    Use Beads as the shared project task system. Local plans, scratch files, and personal memories are useful, but they are not the durable source of truth for project work.
    
    ## First Step
    
    Run:
    
    ```bash
    bd prime
    ```
    
    If that prints nothing, check whether the repository has an active Beads workspace:
    
    ```bash
    bd where
    ```
    
    ## Preferred Route
    
    Use the `bd` CLI when shell access is available. It is the most compact and direct Beads interface.
    
    ## Core CLI Workflow
    
    1. Find work:
    
    ```bash
    bd ready
    bd list --status=open
    bd list --status=in_progress
    ```
    
    2. Inspect before editing:
    
    ```bash
    bd show <id>
    ```
    
    3. Claim work atomically:
    
    ```bash
    bd update <id> --claim
    ```
    
    4. Create durable follow-up work when implementation reveals new tasks:
    
    ```bash
    bd create "Short title" --description="Why this exists and what needs to be done" --type=task --priority=2
    ```
    
    5. Close completed work:
    
    ```bash
    bd close <id> --reason="Completed"
    ```
    
    ## What Belongs In Beads
    
    Use Beads for:
    
    - shared project tasks
    - blockers and dependencies
    - discovered follow-up work
    - work that must survive thread reset, compaction, or handoff
    - status that another person or agent should be able to resume
    
    Use agent-local planning tools only for the current turn's execution checklist. Do not treat them as shared project state.
    
    ## Rules
    
    - Do not create markdown TODO files as the source of truth when Beads is available.
    - Do not use `bd edit`; it opens an interactive editor. Use `bd update` flags instead.
    - Prefer `--json` when parsing `bd` output programmatically.
    - If hooks are installed, `bd prime` may already be injected. Run it manually when context is missing.
    - Do not auto-close or mutate tasks unless the work is actually complete.
    
  • plugins/beads/skills/beads/SKILL.mdskill
    Show content (4838 bytes)
    ---
    name: beads
    description: >
      Dolt-powered issue tracker for multi-session work with dependencies and persistent
      memory across conversation compaction. Use when work spans sessions, has blockers,
      or needs context recovery after compaction. Trigger with "create task", "what's
      ready", "track this work", "resume after compaction". Make sure to use this skill
      whenever managing multi-session work, tracking dependencies, or recovering context.
    allowed-tools: "Read,Bash(bd:*)"
    version: "0.60.0"
    author: "Steve Yegge <steve.yegge@gmail.com>"
    license: "MIT"
    compatible-with: [claude-code, codex]
    tags: [issue-tracking, task-management, multi-session, dependencies]
    ---
    
    # Beads - Persistent Task Memory for AI Agents
    
    Graph-based issue tracker that survives conversation compaction. Provides persistent memory for multi-session work with complex dependencies.
    
    ## bd vs TodoWrite
    
    **Decision test**: "Will I need this context in 2 weeks?" YES = bd, NO = TodoWrite.
    
    | bd (persistent) | TodoWrite (ephemeral) |
    |-----------------|----------------------|
    | Multi-session, dependencies, compaction survival | Single-session linear tasks |
    | Dolt-backed team sync | Conversation-scoped |
    
    See [BOUNDARIES.md](resources/BOUNDARIES.md) for detailed comparison.
    
    ## Prerequisites
    
    ```bash
    bd --version  # Requires v0.60.0+
    ```
    
    - **bd CLI** installed and in PATH
    - **Git repository** (optional — use `BEADS_DIR` + `--stealth` for git-free operation)
    - **Initialization**: `bd init` run once (humans do this, not agents)
    
    ## CLI Reference
    
    **Run `bd prime`** for AI-optimized workflow context (auto-loaded by hooks).
    **Run `bd <command> --help`** for specific command usage.
    
    Essential commands: `bd ready`, `bd create`, `bd show`, `bd update`, `bd close`, `bd dolt push`
    
    ## Session Protocol
    
    1. `bd ready` — Find unblocked work
    2. `bd show <id>` — Get full context
    3. `bd update <id> --claim` — Claim and start work atomically
    4. Add notes as you work (critical for compaction survival)
    5. `bd close <id> --reason "..."` — Complete task
    6. `bd dolt push` — Push to Dolt remote (if configured)
    
    ## Output
    
    Append `--json` to any command for structured output. Use `bd show <id> --long` for extended metadata. Status icons: `○` open `◐` in_progress `●` blocked `✓` closed `❄` deferred.
    
    ## Error Handling
    
    | Error | Fix |
    |-------|-----|
    | `database not found` | `bd init <prefix>` in project root |
    | `not in a git repository` | `git init` first |
    | `disk I/O error (522)` | Move `.beads/` off cloud-synced filesystem |
    | Status updates lag | Use server mode: `bd dolt start` |
    
    See [TROUBLESHOOTING.md](resources/TROUBLESHOOTING.md) for full details.
    
    ## Examples
    
    **Track a multi-session feature:**
    ```bash
    bd create "OAuth integration" -t epic -p 1 --json
    bd create "Token storage" -t task --deps blocks:oauth-id --json
    bd ready --json                    # Shows unblocked work
    bd update <id> --claim --json      # Claim and start
    bd close <id> --reason "Implemented with refresh tokens" --json
    ```
    
    **Recover after compaction:** `bd list --status in_progress --json` then `bd show <id> --long`
    
    **Discover work mid-task:** `bd create "Found bug" -t bug -p 1 --deps discovered-from:<current-id> --json`
    
    ## Advanced Features
    
    | Feature | CLI | Resource |
    |---------|-----|----------|
    | Molecules (templates) | `bd mol --help` | [MOLECULES.md](resources/MOLECULES.md) |
    | Chemistry (pour/wisp) | `bd pour`, `bd wisp` | [CHEMISTRY_PATTERNS.md](resources/CHEMISTRY_PATTERNS.md) |
    | Agent beads | `bd agent --help` | [AGENTS.md](resources/AGENTS.md) |
    | Async gates | `bd gate --help` | [ASYNC_GATES.md](resources/ASYNC_GATES.md) |
    | Worktrees | `bd worktree --help` | [WORKTREES.md](resources/WORKTREES.md) |
    
    ## Resources
    
    | Category | Files |
    |----------|-------|
    | **Getting Started** | [BOUNDARIES.md](resources/BOUNDARIES.md), [CLI_REFERENCE.md](resources/CLI_REFERENCE.md), [WORKFLOWS.md](resources/WORKFLOWS.md) |
    | **Core Concepts** | [DEPENDENCIES.md](resources/DEPENDENCIES.md), [ISSUE_CREATION.md](resources/ISSUE_CREATION.md), [PATTERNS.md](resources/PATTERNS.md) |
    | **Resilience** | [RESUMABILITY.md](resources/RESUMABILITY.md), [TROUBLESHOOTING.md](resources/TROUBLESHOOTING.md) |
    | **Advanced** | [MOLECULES.md](resources/MOLECULES.md), [CHEMISTRY_PATTERNS.md](resources/CHEMISTRY_PATTERNS.md), [AGENTS.md](resources/AGENTS.md), [ASYNC_GATES.md](resources/ASYNC_GATES.md), [WORKTREES.md](resources/WORKTREES.md) |
    | **Reference** | [STATIC_DATA.md](resources/STATIC_DATA.md), [INTEGRATION_PATTERNS.md](resources/INTEGRATION_PATTERNS.md) |
    
    ## Validation
    
    If `bd --version` reports newer than `0.60.0`, this skill may be stale. Run `bd prime` for current CLI guidance — it auto-updates with each bd release and is the canonical source of truth ([ADR-0001](adr/0001-bd-prime-as-source-of-truth.md)).
    
  • .claude/hooks/block-interactive-cmds.shhook
    Show content (1373 bytes)
    #!/bin/bash
    # Block cp/mv/rm without -f flag to prevent interactive prompt hangs.
    #
    # Problem: macOS shell profiles often alias cp/mv/rm with -i (interactive),
    # causing AI agents to hang indefinitely waiting for y/n input they can't
    # provide. Observed in multiple polecats during swarm operations.
    #
    # Solution: Block these commands unless -f flag or alias-bypass is present.
    # The agent can easily retry with -f added.
    
    COMMAND=$(jq -r '.tool_input.command' < /dev/stdin)
    
    for cmd in cp mv rm; do
      # Match: cmd at word boundary, followed by space and arguments
      # Skip if: -f flag present, or using 'command' builtin / absolute path / backslash
      if echo "$COMMAND" | grep -qE "(^|[;&|] *)${cmd} " && \
         ! echo "$COMMAND" | grep -qE "(^|[;&|] *)${cmd} +-[a-eg-zA-Z]*f" && \
         ! echo "$COMMAND" | grep -qE "(command +${cmd}|/bin/${cmd}|/usr/bin/${cmd})" && \
         ! echo "$COMMAND" | grep -qE "(^|[;&|] *)\\\\${cmd} "; then
        jq -n --arg cmd "$cmd" '{
          hookSpecificOutput: {
            hookEventName: "PreToolUse",
            permissionDecision: "deny",
            permissionDecisionReason: ("BLOCKED: `" + $cmd + "` without `-f` flag may hang on interactive prompts (macOS often aliases `" + $cmd + "` to `" + $cmd + " -i`). Use `" + $cmd + " -f ...` instead, or prefix with `command " + $cmd + "` to bypass aliases.")
          }
        }'
        exit 0
      fi
    done
    
    exit 0
    
  • .claude/hooks/block-gh-watch.shhook
    Show content (792 bytes)
    #!/bin/bash
    # Block commands that burn through GitHub API rate limits or violate workflow.
    # The GitHub API allows 5000 requests/hour. `gh run watch` polls every 3
    # seconds (1200 req/hr), and has repeatedly exhausted the quota during
    # releases, blocking all crew members for up to an hour.
    
    COMMAND=$(jq -r '.tool_input.command' < /dev/stdin)
    
    if echo "$COMMAND" | grep -qE 'gh run watch|gh run list.*--watch'; then
      jq -n '{
        hookSpecificOutput: {
          hookEventName: "PreToolUse",
          permissionDecision: "deny",
          permissionDecisionReason: "BLOCKED: gh run watch polls every 3s and burns through the 5000/hr GitHub API rate limit. Use `gh run view <run-id>` for a single status check, or `sleep 600 && gh run view <id>` to wait and check once."
        }
      }'
      exit 0
    fi
    
    exit 0
    
  • .claude-plugin/marketplace.jsonmarketplace
    Show content (333 bytes)
    {
      "name": "beads-marketplace",
      "description": "Local marketplace for beads plugin development",
      "owner": {
        "name": "Steve Yegge"
      },
      "plugins": [
        {
          "name": "beads",
          "source": "./plugins/beads",
          "description": "AI-supervised issue tracker for coding workflows",
          "version": "1.0.3"
        }
      ]
    }
    

README

bd - Beads

Distributed graph issue tracker for AI agents, powered by Dolt.

Platforms: macOS, Linux, Windows, FreeBSD

License Go Report Card Release npm version PyPI

Docs: https://gastownhall.github.io/beads/

Beads provides a persistent, structured memory for coding agents. It replaces messy markdown plans with a dependency-aware graph, allowing agents to handle long-horizon tasks without losing context.

⚡ Quick Start

# Install beads CLI (system-wide - don't clone this repo into your project)
curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash

# Initialize in YOUR project
cd your-project
bd init

# Optional: install richer instructions for your agent
bd setup codex    # Codex CLI - creates/updates AGENTS.md
bd setup claude   # Claude Code - installs hooks/settings
bd setup factory  # Factory.ai Droid - creates/updates AGENTS.md

Note: Beads is a CLI tool you install once and use everywhere. You don't need to clone this repository into your project.

bd init creates or updates AGENTS.md by default so agents can discover the beads workflow. It skips agent files only when you pass --skip-agents or --stealth, or when you configure a custom agent file. Use bd setup --list to see supported integrations, including bd setup codex, bd setup factory, bd setup claude, bd setup mux, bd setup cursor, and more. See Agent and IDE setup.

Manual copy-paste is only for unsupported agents, existing projects where you cannot rerun bd init/bd setup, or custom instruction files. In those cases, run bd onboard and paste the printed snippet into the file your agent reads.

If your agent is not covered by bd setup, add this minimal AGENTS.md section:

This project uses bd (beads) for issue tracking.

- Run `bd prime` for workflow context and command guidance.
- Use `bd ready`, `bd show <id>`, `bd update <id> --claim`, and `bd close <id>`.
- Use `bd remember "insight"` for persistent project memory; do not create MEMORY.md files.
- Do not use markdown TODO lists for task tracking.

🛠 Features

  • Dolt-Powered: Version-controlled SQL database with cell-level merge, native branching, and built-in sync via Dolt remotes.
  • Agent-Optimized: JSON output, dependency tracking, and auto-ready task detection.
  • Zero Conflict: Hash-based IDs (bd-a1b2) prevent merge collisions in multi-agent/multi-branch workflows.
  • Compaction: Semantic "memory decay" summarizes old closed tasks to save context window.
  • Messaging: Message issue type with threading (--thread), ephemeral lifecycle, and mail delegation.
  • Graph Links: relates_to, duplicates, supersedes, and replies_to for knowledge graphs.

📖 Essential Commands

CommandAction
bd readyList tasks with no open blockers.
bd create "Title" -p 0Create a P0 task.
bd update <id> --claimAtomically claim a task (sets assignee + in_progress).
bd dep add <child> <parent>Link tasks (blocks, related, parent-child).
bd show <id>View task details and audit trail.
bd primePrint agent workflow context and persistent memories.
bd remember "insight"Store project memory that bd prime injects later.

🔗 Hierarchy & Workflow

Beads supports hierarchical IDs for epics:

  • bd-a3f8 (Epic)
  • bd-a3f8.1 (Task)
  • bd-a3f8.1.1 (Sub-task)

Stealth Mode: Run bd init --stealth to use Beads locally without committing files to the main repo. Perfect for personal use on shared projects. See Git-Free Usage below.

Contributor vs Maintainer: When working on open-source projects:

  • Contributors (forked repos): Run bd init --contributor to route planning issues to a separate repo (e.g., ~/.beads-planning). Keeps experimental work out of PRs.
  • Maintainers (write access): Beads auto-detects maintainer role via SSH URLs or HTTPS with credentials. Only need git config beads.role maintainer if using GitHub HTTPS without credentials but you have write access.

📦 Installation

brew install beads           # macOS / Linux (recommended)
npm install -g @beads/bd     # Node.js users

Other methods: install script | go install | from source | Windows | Arch AUR

Requirements: macOS, Linux, Windows, or FreeBSD. See docs/INSTALLING.md for complete installation guide.

Security And Verification

Before trusting any downloaded binary, verify its checksum against the release checksums.txt.

The install scripts verify release checksums before install. For manual installs, do this verification yourself before first run.

On macOS, scripts/install.sh preserves the downloaded signature by default. Local ad-hoc re-signing is explicit opt-in via BEADS_INSTALL_RESIGN_MACOS=1.

See docs/ANTIVIRUS.md for Windows AV false-positive guidance and verification workflow.

💾 Storage Modes

Beads uses Dolt as its database. Two modes are available:

Embedded Mode (default)

bd init

Dolt runs in-process — no external server needed. Data lives in .beads/embeddeddolt/. Single-writer only (file locking enforced). This is the recommended mode for most users.

Server Mode

bd init --server

Connects to an external dolt sql-server. Data lives in .beads/dolt/. Supports multiple concurrent writers. Configure the connection with flags or environment variables:

FlagEnv VarDefault
--server-hostBEADS_DOLT_SERVER_HOST127.0.0.1
--server-portBEADS_DOLT_SERVER_PORT3307
--server-socketBEADS_DOLT_SERVER_SOCKET(none; uses TCP)
--server-userBEADS_DOLT_SERVER_USERroot
BEADS_DOLT_PASSWORD(none)
BEADS_DOLT_CLI_DIRlocal Dolt database path for CLI push/pull

Unix domain sockets: Use --server-socket to connect via a Unix socket instead of TCP. This avoids port conflicts between concurrent projects and is useful in sandboxed environments (e.g., Claude Code) where file-level access control is simpler than network allowlists. The Dolt server must be started with dolt sql-server --socket <path>. Auto-start is not supported in socket mode.

When BEADS_DOLT_SERVER_MODE=1 points at a Dolt server managed outside Beads, set BEADS_DOLT_CLI_DIR if bd dolt push / bd dolt pull must use the local dolt CLI (for example git-protocol remotes or credentials that only exist in the current shell). Use the actual Dolt database directory, not the server root.

Backup & Migration

Back up your database and migrate between modes using bd backup:

# Set up a backup destination and push
bd backup init /path/to/backup
bd backup sync

# Restore into a new project (any mode)
bd init           # or bd init --server
bd backup restore --force /path/to/backup

See docs/DOLT.md for full migration instructions.

🌐 Community Tools

See docs/COMMUNITY_TOOLS.md for a curated list of community-built UIs, extensions, and integrations—including terminal interfaces, web UIs, editor extensions, and native apps.

🚀 Git-Free Usage

Beads works without git. The Dolt database is the storage backend — git integration (hooks, repo discovery, identity) is optional.

# Initialize without git
export BEADS_DIR=/path/to/your/project/.beads
bd init --quiet --stealth

# All core commands work with zero git calls
bd create "Fix auth bug" -p 1 -t bug
bd ready --json
bd update bd-a1b2 --claim
bd prime
bd close bd-a1b2 "Fixed"

BEADS_DIR tells bd where to put the .beads/ database directory, bypassing git repo discovery. --stealth sets no-git-ops: true in config, disabling all git hook installation and git operations.

This is useful for:

  • Non-git VCS (Sapling, Jujutsu, Piper) — no .git/ directory needed
  • Monorepos — point BEADS_DIR at a specific subdirectory
  • CI/CD — isolated task tracking without repo-level side effects
  • Evaluation/testing — ephemeral databases in /tmp

For daemon mode without git, use bd daemon start --local (see PR #433).

📝 Documentation