A .agents/skills/beads/SKILL.md => .agents/skills/beads/SKILL.md +80 -0
@@ 0,0 1,80 @@
+---
+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.
A .agents/skills/beads/agents/openai.yaml => .agents/skills/beads/agents/openai.yaml +4 -0
@@ 0,0 1,4 @@
+interface:
+ display_name: "Beads"
+ short_description: "Project task tracking with bd"
+ default_prompt: "Use $beads to inspect ready work and manage durable project tasks."
A .beads/.gitignore => .beads/.gitignore +77 -0
@@ 0,0 1,77 @@
+# Dolt database (managed by Dolt, not git)
+dolt/
+embeddeddolt/
+proxieddb/
+
+# Runtime files
+bd.sock
+bd.sock.startlock
+sync-state.json
+last-touched
+.exclusive-lock
+
+# Daemon runtime (lock, log, pid)
+daemon.*
+
+# Push state (runtime, per-machine)
+push-state.json
+
+# Lock files (various runtime locks)
+*.lock
+
+# Credential key (encryption key for federation peer auth — never commit)
+.beads-credential-key
+
+# Local version tracking (prevents upgrade notification spam after git ops)
+.local_version
+
+proxied_server_client_info.json
+
+# Worktree redirect file (contains relative path to main repo's .beads/)
+# Must not be committed as paths would be wrong in other clones
+redirect
+
+# Sync state (local-only, per-machine)
+# These files are machine-specific and should not be shared across clones
+.sync.lock
+export-state/
+export-state.json
+last_pull
+
+# Ephemeral store (SQLite - wisps/molecules, intentionally not versioned)
+ephemeral.sqlite3
+ephemeral.sqlite3-journal
+ephemeral.sqlite3-wal
+ephemeral.sqlite3-shm
+
+# Dolt server management (auto-started by bd)
+dolt-server.pid
+dolt-server.log
+dolt-server.lock
+dolt-server.port
+dolt-server.activity
+
+# Debug-mode pprof artifacts (written when dolt.debug: true in config.yaml)
+dolt-pprof/
+
+# Corrupt backup directories (created by bd doctor --fix recovery)
+*.corrupt.backup/
+
+# Backup data (auto-exported JSONL, local-only)
+backup/
+
+# Per-project environment file (Dolt connection config, GH#2520)
+.env
+
+# Legacy files (from pre-Dolt versions)
+*.db
+*.db?*
+*.db-journal
+*.db-wal
+*.db-shm
+db.sqlite
+bd.db
+# NOTE: Do NOT add negation patterns here.
+# They would override fork protection in .git/info/exclude.
+# Config files (metadata.json, config.yaml) are tracked by git by default
+# since no pattern above ignores them.
A .beads/README.md => .beads/README.md +81 -0
@@ 0,0 1,81 @@
+# Beads - AI-Native Issue Tracking
+
+Welcome to Beads! This repository uses **Beads** for issue tracking - a modern, AI-native tool designed to live directly in your codebase alongside your code.
+
+## What is Beads?
+
+Beads is issue tracking that lives in your repo, making it perfect for AI coding agents and developers who want their issues close to their code. No web UI required - everything works through the CLI and integrates seamlessly with git.
+
+**Learn more:** [github.com/steveyegge/beads](https://github.com/steveyegge/beads)
+
+## Quick Start
+
+### Essential Commands
+
+```bash
+# Create new issues
+bd create "Add user authentication"
+
+# View all issues
+bd list
+
+# View issue details
+bd show <issue-id>
+
+# Update issue status
+bd update <issue-id> --claim
+bd update <issue-id> --status done
+
+# Sync with Dolt remote
+bd dolt push
+```
+
+### Working with Issues
+
+Issues in Beads are:
+- **Git-native**: Stored in Dolt database with version control and branching
+- **AI-friendly**: CLI-first design works perfectly with AI coding agents
+- **Branch-aware**: Issues can follow your branch workflow
+- **Sync-ready**: Uses Dolt remotes for backup and team sharing
+
+## Why Beads?
+
+✨ **AI-Native Design**
+- Built specifically for AI-assisted development workflows
+- CLI-first interface works seamlessly with AI coding agents
+- No context switching to web UIs
+
+🚀 **Developer Focused**
+- Issues live in your repo, right next to your code
+- Works offline, syncs when you push
+- Fast, lightweight, and stays out of your way
+
+🔧 **Git Integration**
+- Dolt-native sync via bd dolt push / bd dolt pull
+- Branch-aware issue tracking
+- Dolt-native three-way merge resolution
+
+## Get Started with Beads
+
+Try Beads in your own projects:
+
+```bash
+# Install Beads
+curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
+
+# Initialize in your repo
+bd init
+
+# Create your first issue
+bd create "Try out Beads"
+```
+
+## Learn More
+
+- **Documentation**: [github.com/steveyegge/beads/docs](https://github.com/steveyegge/beads/tree/main/docs)
+- **Quick Start Guide**: Run `bd quickstart`
+- **Examples**: [github.com/steveyegge/beads/examples](https://github.com/steveyegge/beads/tree/main/examples)
+
+---
+
+*Beads: Issue tracking that moves at the speed of thought* ⚡
A .beads/config.yaml => .beads/config.yaml +68 -0
@@ 0,0 1,68 @@
+# Beads Configuration File
+# This file configures default behavior for all bd commands in this repository
+# All settings can also be set via environment variables (BD_* prefix)
+# or overridden with command-line flags
+
+# Issue prefix for this repository (used by bd init)
+# If not set, bd init will auto-detect from directory name
+# Example: issue-prefix: "myproject" creates issues like "myproject-1", "myproject-2", etc.
+# issue-prefix: ""
+
+# Use no-db mode: JSONL-only, no Dolt database
+# When true, .beads/issues.jsonl is the only local store
+# no-db: false
+
+# Enable JSON output by default
+# json: false
+
+# Feedback title formatting for mutating commands (create/update/close/dep/edit)
+# 0 = hide titles, N > 0 = truncate to N characters
+# output:
+# title-length: 255
+
+# Default actor for audit trails (overridden by BEADS_ACTOR or --actor)
+# actor: ""
+
+# Export events (audit trail) to .beads/events.jsonl on each flush/sync
+# When enabled, new events are appended incrementally using a high-water mark.
+# Use 'bd export --events' to trigger manually regardless of this setting.
+# events-export: false
+
+# Multi-repo configuration (experimental - bd-307)
+# Allows hydrating from multiple repositories and routing writes to the correct database
+# repos:
+# primary: "." # Primary repo (where this database lives)
+# additional: # Additional repos to hydrate from (read-only)
+# - ~/beads-planning # Personal planning repo
+# - ~/work-planning # Work planning repo
+
+# Dolt-native backup (periodic backup for off-machine recovery)
+# This is full database backup only. Cross-machine sync uses Dolt remotes.
+# backup:
+# enabled: false # Disable auto-backup entirely
+# interval: 15m # Minimum time between auto-backups
+# git-push: false # Disable git push (backup locally only)
+# git-repo: "" # Separate git repo for backups (default: project repo)
+
+# Optional JSONL auto-export for viewers, interchange, and issue-level migration.
+# Disabled by default; enable only when an integration needs fresh .beads/issues.jsonl.
+# Use relative paths under .beads/ for JSONL import/export filenames.
+# export:
+# auto: false
+# path: issues.jsonl
+# interval: 60s
+# git-add: false
+# import:
+# path: issues.jsonl
+
+# Integration settings (access with 'bd config get/set')
+# Non-secret keys (stored in the database):
+# - jira.url, jira.project
+# - linear.team_id
+# - github.org, github.repo
+#
+# Secret keys (stored in this file but prefer env vars to avoid git exposure):
+# - linear.api_key → use LINEAR_API_KEY env var instead
+# - github.token → use GITHUB_TOKEN env var instead
+
+sync.remote: "git+ssh://ssh.sourcecraft.dev/bigbes/sr-ht-ecore.git"<
\ No newline at end of file
A .beads/hooks/post-checkout => .beads/hooks/post-checkout +33 -0
@@ 0,0 1,33 @@
+#!/usr/bin/env sh
+# --- BEGIN BEADS INTEGRATION v1.1.2 ---
+# This section is managed by beads. Do not remove these markers.
+if command -v bd >/dev/null 2>&1; then
+ export BD_GIT_HOOK=1
+ _bd_timeout=${BEADS_HOOK_TIMEOUT:-300}
+ _bd_used_perl=0
+ if command -v timeout >/dev/null 2>&1; then
+ timeout "$_bd_timeout" bd hooks run post-checkout "$@"
+ _bd_exit=$?
+ elif command -v gtimeout >/dev/null 2>&1; then
+ gtimeout "$_bd_timeout" bd hooks run post-checkout "$@"
+ _bd_exit=$?
+ elif command -v perl >/dev/null 2>&1; then
+ _bd_used_perl=1
+ perl -e 'alarm shift; exec @ARGV' "$_bd_timeout" bd hooks run post-checkout "$@"
+ _bd_exit=$?
+ else
+ echo >&2 "beads: hook 'post-checkout' running without timeout; install coreutils or perl to enable BEADS_HOOK_TIMEOUT"
+ bd hooks run post-checkout "$@"
+ _bd_exit=$?
+ fi
+ if [ $_bd_exit -eq 124 ] || { [ $_bd_used_perl -eq 1 ] && [ $_bd_exit -eq 142 ]; }; then
+ echo >&2 "beads: hook 'post-checkout' timed out after ${_bd_timeout}s — continuing without beads"
+ _bd_exit=0
+ fi
+ if [ $_bd_exit -eq 3 ]; then
+ echo >&2 "beads: database not initialized — skipping hook 'post-checkout'"
+ _bd_exit=0
+ fi
+ if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi
+fi
+# --- END BEADS INTEGRATION v1.1.2 ---
A .beads/hooks/post-merge => .beads/hooks/post-merge +33 -0
@@ 0,0 1,33 @@
+#!/usr/bin/env sh
+# --- BEGIN BEADS INTEGRATION v1.1.2 ---
+# This section is managed by beads. Do not remove these markers.
+if command -v bd >/dev/null 2>&1; then
+ export BD_GIT_HOOK=1
+ _bd_timeout=${BEADS_HOOK_TIMEOUT:-300}
+ _bd_used_perl=0
+ if command -v timeout >/dev/null 2>&1; then
+ timeout "$_bd_timeout" bd hooks run post-merge "$@"
+ _bd_exit=$?
+ elif command -v gtimeout >/dev/null 2>&1; then
+ gtimeout "$_bd_timeout" bd hooks run post-merge "$@"
+ _bd_exit=$?
+ elif command -v perl >/dev/null 2>&1; then
+ _bd_used_perl=1
+ perl -e 'alarm shift; exec @ARGV' "$_bd_timeout" bd hooks run post-merge "$@"
+ _bd_exit=$?
+ else
+ echo >&2 "beads: hook 'post-merge' running without timeout; install coreutils or perl to enable BEADS_HOOK_TIMEOUT"
+ bd hooks run post-merge "$@"
+ _bd_exit=$?
+ fi
+ if [ $_bd_exit -eq 124 ] || { [ $_bd_used_perl -eq 1 ] && [ $_bd_exit -eq 142 ]; }; then
+ echo >&2 "beads: hook 'post-merge' timed out after ${_bd_timeout}s — continuing without beads"
+ _bd_exit=0
+ fi
+ if [ $_bd_exit -eq 3 ]; then
+ echo >&2 "beads: database not initialized — skipping hook 'post-merge'"
+ _bd_exit=0
+ fi
+ if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi
+fi
+# --- END BEADS INTEGRATION v1.1.2 ---
A .beads/hooks/pre-commit => .beads/hooks/pre-commit +33 -0
@@ 0,0 1,33 @@
+#!/usr/bin/env sh
+# --- BEGIN BEADS INTEGRATION v1.1.2 ---
+# This section is managed by beads. Do not remove these markers.
+if command -v bd >/dev/null 2>&1; then
+ export BD_GIT_HOOK=1
+ _bd_timeout=${BEADS_HOOK_TIMEOUT:-300}
+ _bd_used_perl=0
+ if command -v timeout >/dev/null 2>&1; then
+ timeout "$_bd_timeout" bd hooks run pre-commit "$@"
+ _bd_exit=$?
+ elif command -v gtimeout >/dev/null 2>&1; then
+ gtimeout "$_bd_timeout" bd hooks run pre-commit "$@"
+ _bd_exit=$?
+ elif command -v perl >/dev/null 2>&1; then
+ _bd_used_perl=1
+ perl -e 'alarm shift; exec @ARGV' "$_bd_timeout" bd hooks run pre-commit "$@"
+ _bd_exit=$?
+ else
+ echo >&2 "beads: hook 'pre-commit' running without timeout; install coreutils or perl to enable BEADS_HOOK_TIMEOUT"
+ bd hooks run pre-commit "$@"
+ _bd_exit=$?
+ fi
+ if [ $_bd_exit -eq 124 ] || { [ $_bd_used_perl -eq 1 ] && [ $_bd_exit -eq 142 ]; }; then
+ echo >&2 "beads: hook 'pre-commit' timed out after ${_bd_timeout}s — continuing without beads"
+ _bd_exit=0
+ fi
+ if [ $_bd_exit -eq 3 ]; then
+ echo >&2 "beads: database not initialized — skipping hook 'pre-commit'"
+ _bd_exit=0
+ fi
+ if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi
+fi
+# --- END BEADS INTEGRATION v1.1.2 ---
A .beads/hooks/pre-push => .beads/hooks/pre-push +33 -0
@@ 0,0 1,33 @@
+#!/usr/bin/env sh
+# --- BEGIN BEADS INTEGRATION v1.1.2 ---
+# This section is managed by beads. Do not remove these markers.
+if command -v bd >/dev/null 2>&1; then
+ export BD_GIT_HOOK=1
+ _bd_timeout=${BEADS_HOOK_TIMEOUT:-300}
+ _bd_used_perl=0
+ if command -v timeout >/dev/null 2>&1; then
+ timeout "$_bd_timeout" bd hooks run pre-push "$@"
+ _bd_exit=$?
+ elif command -v gtimeout >/dev/null 2>&1; then
+ gtimeout "$_bd_timeout" bd hooks run pre-push "$@"
+ _bd_exit=$?
+ elif command -v perl >/dev/null 2>&1; then
+ _bd_used_perl=1
+ perl -e 'alarm shift; exec @ARGV' "$_bd_timeout" bd hooks run pre-push "$@"
+ _bd_exit=$?
+ else
+ echo >&2 "beads: hook 'pre-push' running without timeout; install coreutils or perl to enable BEADS_HOOK_TIMEOUT"
+ bd hooks run pre-push "$@"
+ _bd_exit=$?
+ fi
+ if [ $_bd_exit -eq 124 ] || { [ $_bd_used_perl -eq 1 ] && [ $_bd_exit -eq 142 ]; }; then
+ echo >&2 "beads: hook 'pre-push' timed out after ${_bd_timeout}s — continuing without beads"
+ _bd_exit=0
+ fi
+ if [ $_bd_exit -eq 3 ]; then
+ echo >&2 "beads: database not initialized — skipping hook 'pre-push'"
+ _bd_exit=0
+ fi
+ if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi
+fi
+# --- END BEADS INTEGRATION v1.1.2 ---
A .beads/hooks/prepare-commit-msg => .beads/hooks/prepare-commit-msg +33 -0
@@ 0,0 1,33 @@
+#!/usr/bin/env sh
+# --- BEGIN BEADS INTEGRATION v1.1.2 ---
+# This section is managed by beads. Do not remove these markers.
+if command -v bd >/dev/null 2>&1; then
+ export BD_GIT_HOOK=1
+ _bd_timeout=${BEADS_HOOK_TIMEOUT:-300}
+ _bd_used_perl=0
+ if command -v timeout >/dev/null 2>&1; then
+ timeout "$_bd_timeout" bd hooks run prepare-commit-msg "$@"
+ _bd_exit=$?
+ elif command -v gtimeout >/dev/null 2>&1; then
+ gtimeout "$_bd_timeout" bd hooks run prepare-commit-msg "$@"
+ _bd_exit=$?
+ elif command -v perl >/dev/null 2>&1; then
+ _bd_used_perl=1
+ perl -e 'alarm shift; exec @ARGV' "$_bd_timeout" bd hooks run prepare-commit-msg "$@"
+ _bd_exit=$?
+ else
+ echo >&2 "beads: hook 'prepare-commit-msg' running without timeout; install coreutils or perl to enable BEADS_HOOK_TIMEOUT"
+ bd hooks run prepare-commit-msg "$@"
+ _bd_exit=$?
+ fi
+ if [ $_bd_exit -eq 124 ] || { [ $_bd_used_perl -eq 1 ] && [ $_bd_exit -eq 142 ]; }; then
+ echo >&2 "beads: hook 'prepare-commit-msg' timed out after ${_bd_timeout}s — continuing without beads"
+ _bd_exit=0
+ fi
+ if [ $_bd_exit -eq 3 ]; then
+ echo >&2 "beads: database not initialized — skipping hook 'prepare-commit-msg'"
+ _bd_exit=0
+ fi
+ if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi
+fi
+# --- END BEADS INTEGRATION v1.1.2 ---
A .beads/interactions.jsonl => .beads/interactions.jsonl +0 -0
A .beads/metadata.json => .beads/metadata.json +7 -0
@@ 0,0 1,7 @@
+{
+ "database": "dolt",
+ "backend": "dolt",
+ "dolt_mode": "embedded",
+ "dolt_database": "sr_ht_ecore",
+ "project_id": "5071bcaf-0bb9-4816-9f3f-237753f4bd0e"
+}<
\ No newline at end of file
A .codex/config.toml => .codex/config.toml +2 -0
@@ 0,0 1,2 @@
+[features]
+hooks = true
A .codex/hooks.json => .codex/hooks.json +51 -0
@@ 0,0 1,51 @@
+{
+ "hooks": {
+ "PostCompact": [
+ {
+ "hooks": [
+ {
+ "command": "bd codex-hook PostCompact",
+ "statusMessage": "Scheduling Beads context refresh",
+ "type": "command"
+ }
+ ],
+ "matcher": "manual|auto"
+ }
+ ],
+ "PreCompact": [
+ {
+ "hooks": [
+ {
+ "command": "bd codex-hook PreCompact",
+ "statusMessage": "Checking Beads context",
+ "type": "command"
+ }
+ ],
+ "matcher": "manual|auto"
+ }
+ ],
+ "SessionStart": [
+ {
+ "hooks": [
+ {
+ "command": "bd codex-hook SessionStart",
+ "statusMessage": "Loading Beads context",
+ "type": "command"
+ }
+ ],
+ "matcher": "startup|resume|clear"
+ }
+ ],
+ "UserPromptSubmit": [
+ {
+ "hooks": [
+ {
+ "command": "bd codex-hook UserPromptSubmit",
+ "statusMessage": "Refreshing Beads context",
+ "type": "command"
+ }
+ ]
+ }
+ ]
+ }
+}
M .gitignore => .gitignore +6 -0
@@ 5,3 5,9 @@
# Both spellings are ignored so an agent worktree can never show up untracked.
/.worktrees/
/.claude/worktrees/
+
+# Beads / Dolt files (added by bd init)
+.dolt/
+*.db
+.beads-credential-key
+.beads/proxieddb/
A AGENTS.md => AGENTS.md +128 -0
@@ 0,0 1,128 @@
+# Agent Instructions
+
+This project uses **bd** (beads) for issue tracking. Run `bd prime` for full workflow context.
+
+> **Architecture in one line:** Issues live in a local Dolt database
+> (`.beads/dolt/`); cross-machine sync uses `bd dolt push/pull` (a
+> git-compatible protocol), stored under `refs/dolt/data` on your git
+> remote — separate from `refs/heads/*` where your code lives.
+> `.beads/issues.jsonl` is a passive export, not the wire protocol.
+>
+> See [SYNC_CONCEPTS.md](https://github.com/gastownhall/beads/blob/main/docs/SYNC_CONCEPTS.md)
+> for the one-screen overview and anti-patterns (don't treat JSONL as the
+> source of truth; don't `bd import` during normal operation; don't
+> reach for third-party Dolt hosting before trying the default).
+
+## Quick Reference
+
+```bash
+bd ready # Find available work
+bd show <id> # View issue details
+bd update <id> --claim # Claim work atomically
+bd close <id> # Complete work
+bd dolt push # Push beads data to remote
+```
+
+## Non-Interactive Shell Commands
+
+**ALWAYS use non-interactive flags** with file operations to avoid hanging on confirmation prompts.
+
+Shell commands like `cp`, `mv`, and `rm` may be aliased to include `-i` (interactive) mode on some systems, causing the agent to hang indefinitely waiting for y/n input.
+
+**Use these forms instead:**
+```bash
+# Force overwrite without prompting
+cp -f source dest # NOT: cp source dest
+mv -f source dest # NOT: mv source dest
+rm -f file # NOT: rm file
+
+# For recursive operations
+rm -rf directory # NOT: rm -r directory
+cp -rf source dest # NOT: cp -r source dest
+```
+
+**Other commands that may prompt:**
+- `scp` - use `-o BatchMode=yes` for non-interactive
+- `ssh` - use `-o BatchMode=yes` to fail instead of prompting
+- `apt-get` - use `-y` flag
+- `brew` - use `HOMEBREW_NO_AUTO_UPDATE=1` env var
+
+<!-- BEGIN BEADS INTEGRATION v:1 profile:minimal hash:970c3bf2 -->
+## Beads Issue Tracker
+
+This project uses **bd (beads)** for issue tracking. Run `bd prime` to see full workflow context and commands.
+
+### Quick Reference
+
+```bash
+bd ready # Find available work
+bd show <id> # View issue details
+bd update <id> --claim # Claim work
+bd close <id> # Complete work
+```
+
+### Rules
+
+- Use `bd` for ALL task tracking — do NOT use TodoWrite, TaskCreate, or markdown TODO lists
+- Run `bd prime` for detailed command reference and session close protocol
+- Use `bd remember` for persistent knowledge — do NOT use MEMORY.md files
+
+**Architecture in one line:** issues live in a local Dolt DB; sync uses `refs/dolt/data` on your git remote; `.beads/issues.jsonl` is a passive export. See https://github.com/gastownhall/beads/blob/main/docs/SYNC_CONCEPTS.md for details and anti-patterns.
+
+## Agent Context Profiles
+
+The managed Beads block is task-tracking guidance, not permission to override repository, user, or orchestrator instructions.
+
+- **Conservative (default)**: Use `bd` for task tracking. Do not run git commits, git pushes, or Dolt remote sync unless explicitly asked. At handoff, report changed files, validation, and suggested next commands.
+- **Minimal**: Keep tool instruction files as pointers to `bd prime`; use the same conservative git policy unless active instructions say otherwise.
+- **Team-maintainer**: Only when the repository explicitly opts in, agents may close beads, run quality gates, commit, and push as part of session close. A current "do not commit" or "do not push" instruction still wins.
+
+## Session Completion
+
+This protocol applies when ending a Beads implementation workflow. It is subordinate to explicit user, repository, and orchestrator instructions.
+
+1. **File issues for remaining work** - Create beads for anything that needs follow-up
+2. **Run quality gates** (if code changed) - Tests, linters, builds
+3. **Update issue status** - Close finished work, update in-progress items
+4. **Handle git/sync by active profile**:
+ ```bash
+ # Conservative/minimal/default: report status and proposed commands; wait for approval.
+ git status
+
+ # Team-maintainer opt-in only, unless current instructions forbid it:
+ git pull --rebase
+ bd dolt push
+ git push
+ git status
+ ```
+5. **Hand off** - Summarize changes, validation, issue status, and any blocked sync/commit/push step
+
+**Critical rules:**
+- Explicit user or orchestrator instructions override this Beads block.
+- Do not commit or push without clear authority from the active profile or the current user request.
+- If a required sync or push is blocked, stop and report the exact command and error.
+<!-- END BEADS INTEGRATION -->
+
+<!-- BEGIN BEADS CODEX SETUP: generated by bd setup codex -->
+## Beads Issue Tracker
+
+Use Beads (`bd`) for durable task tracking in repositories that include it. Use the `beads` skill at `.agents/skills/beads/SKILL.md` (project install) or `~/.agents/skills/beads/SKILL.md` (global install) for Beads workflow guidance, then use the `bd` CLI for issue operations.
+
+### Quick Reference
+
+```bash
+bd ready # Find available work
+bd show <id> # View issue details
+bd update <id> --claim # Claim work
+bd close <id> # Complete work
+bd prime # Refresh Beads context
+```
+
+### Rules
+
+- Use `bd` for all task tracking; do not create markdown TODO lists.
+- Run `bd prime` when Beads context is missing or stale. Codex 0.129.0+ can load Beads context automatically through native hooks; use `/hooks` to inspect or toggle them.
+- Keep persistent project memory in Beads via `bd remember`; do not create ad hoc memory files.
+
+**Architecture in one line:** issues live in a local Dolt DB; sync uses `refs/dolt/data` on your git remote; `.beads/issues.jsonl` is a passive export. See https://github.com/gastownhall/beads/blob/main/docs/SYNC_CONCEPTS.md for details and anti-patterns.
+<!-- END BEADS CODEX SETUP -->
A CLAUDE.md => CLAUDE.md +77 -0
@@ 0,0 1,77 @@
+# Project Instructions for AI Agents
+
+This file provides instructions and context for AI coding agents working on this project.
+
+<!-- BEGIN BEADS INTEGRATION v:1 profile:minimal hash:6cd5cc61 -->
+## Beads Issue Tracker
+
+This project uses **bd (beads)** for issue tracking. Run `bd prime` to see full workflow context and commands.
+
+### Quick Reference
+
+```bash
+bd ready # Find available work
+bd show <id> # View issue details
+bd update <id> --claim # Claim work
+bd close <id> # Complete work
+```
+
+### Rules
+
+- Use `bd` for ALL task tracking — do NOT use TodoWrite, TaskCreate, or markdown TODO lists
+- Run `bd prime` for detailed command reference and session close protocol
+- Use `bd remember` for persistent knowledge — do NOT use MEMORY.md files
+
+**Architecture in one line:** issues live in a local Dolt DB; sync uses `refs/dolt/data` on your git remote; `.beads/issues.jsonl` is a passive export. See https://github.com/gastownhall/beads/blob/main/docs/SYNC_CONCEPTS.md for details and anti-patterns.
+
+## Agent Context Profiles
+
+The managed Beads block is task-tracking guidance, not permission to override repository, user, or orchestrator instructions.
+
+- **Conservative (default)**: Use `bd` for task tracking. Do not run git commits, git pushes, or Dolt remote sync unless explicitly asked. At handoff, report changed files, validation, and suggested next commands.
+- **Minimal**: Keep tool instruction files as pointers to `bd prime`; use the same conservative git policy unless active instructions say otherwise.
+- **Team-maintainer**: Only when the repository explicitly opts in, agents may close beads, run quality gates, commit, and push as part of session close. A current "do not commit" or "do not push" instruction still wins.
+
+## Session Completion
+
+This protocol applies when ending a Beads implementation workflow. It is subordinate to explicit user, repository, and orchestrator instructions.
+
+1. **File issues for remaining work** - Create beads for anything that needs follow-up
+2. **Run quality gates** (if code changed) - Tests, linters, builds
+3. **Update issue status** - Close finished work, update in-progress items
+4. **Handle git/sync by active profile**:
+ ```bash
+ # Conservative/minimal/default: report status and proposed commands; wait for approval.
+ git status
+
+ # Team-maintainer opt-in only, unless current instructions forbid it:
+ git pull --rebase
+ git push
+ git status
+ ```
+5. **Hand off** - Summarize changes, validation, issue status, and any blocked sync/commit/push step
+
+**Critical rules:**
+- Explicit user or orchestrator instructions override this Beads block.
+- Do not commit or push without clear authority from the active profile or the current user request.
+- If a required sync or push is blocked, stop and report the exact command and error.
+<!-- END BEADS INTEGRATION -->
+
+
+## Build & Test
+
+_Add your build and test commands here_
+
+```bash
+# Example:
+# npm install
+# npm test
+```
+
+## Architecture Overview
+
+_Add a brief overview of your project architecture_
+
+## Conventions & Patterns
+
+_Add your project-specific conventions here_