Agent Instructions
May 13, 2026 ยท View on GitHub
See AGENT_INSTRUCTIONS.md for full instructions.
This file exists for compatibility with tools that look for AGENTS.md.
The marker above tells bd doctor that the intentional divergence between
this file and CLAUDE.md (different audiences, different reading orders) is
expected and should not be flagged.
Key Sections
- Issue Tracking - How to use bd for work management
- Development Guidelines - Code standards and testing
- Project Scope - Read docs/PROJECT_CHARTER.md before adding new feature surface area
- Visual Design System - Status icons, colors, and semantic styling for CLI output
- Contributor Protection - Read CONTRIBUTING.md before handling external PRs
- Maintainer PR Guidelines - Read PR_MAINTAINER_GUIDELINES.md before triaging, landing, or closing PRs
Project Scope
Before adding new feature surface area, read docs/PROJECT_CHARTER.md. Beads owns issue tracking primitives and should not encode orchestration-layer policy, become a storage engine, or casually expand the database schema when metadata would work.
PR Safety for Agents
Before triaging, reviewing, landing, closing, or otherwise maintaining PRs, read PR_MAINTAINER_GUIDELINES.md. The maintainer policy is to maximize community throughput: find useful contributor value, absorb or transform it locally when practical, preserve attribution, and use request-changes only as a last resort.
Before implementing work, opening a PR, or merging/closing a PR, run the PR preflight:
scripts/pr-preflight.sh --search "<topic keywords>" --repo gastownhall/beads
scripts/pr-preflight.sh <pr-number> --repo gastownhall/beads
External contributor PRs have priority. Review and build on their branch when possible, preserve their tests and attribution, and never close or supersede their PR silently. If a rewrite is unavoidable, explain why on the original PR and credit their design/tests.
Visual Design Anti-Patterns
NEVER use emoji-style icons (๐ด๐ ๐ก๐ตโช) in CLI output. They cause cognitive overload.
ALWAYS use small Unicode symbols with semantic colors:
- Status:
โ โ โ โ โ - Priority:
โ P0(filled circle with color)
See AGENT_INSTRUCTIONS.md for full development guidelines.
Storage Boundary
The canonical storage boundary is in
docs/PROJECT_CHARTER.md. In short:
Beads talks to storage through a driver interface (dolthub/driver for Dolt).
Do not add beads-side flocks, engine introspection, storage-specific retry or
crash-recovery logic, or public SDK return types that leak driver internals.
If the boundary is too narrow, widen the interface or route the issue to the
driver instead of patching around it in beads.
Agent Warning: Interactive Commands
DO NOT use bd edit - it opens an interactive editor ($EDITOR) which AI agents cannot use.
Use bd update with flags instead:
bd update <id> --description "new description"
bd update <id> --title "new title"
bd update <id> --design "design notes"
bd update <id> --notes "additional notes"
bd update <id> --acceptance "acceptance criteria"
# Use stdin for descriptions with special characters (backticks, !, nested quotes)
echo 'Description with `backticks` and "quotes"' | bd create "Title" --description=-
echo 'Updated text' | bd update <id> --description=-
Testing Commands (No Ambiguity)
- Default local test command:
make test(or./scripts/test.sh). - Opt-in ICU regex path:
make test-icu-path(or./scripts/test-icu-path.sh ./...). - This ICU path is maintainer-only and not part of normal validation;
make test-full-cgoand./scripts/test-cgo.share deprecated aliases. - For package- or test-scoped shipped-config CGO runs, prefer:
CGO_ENABLED=1 go test -tags gms_pure_go ./cmd/bd/...
CGO_ENABLED=1 go test -tags gms_pure_go -run '^TestName$' ./cmd/bd/...
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:
# 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=yesfor non-interactivessh- use-o BatchMode=yesto fail instead of promptingapt-get- use-yflagbrew- useHOMEBREW_NO_AUTO_UPDATE=1env var
Landing the Plane (Session Completion)
When ending a work session, you MUST complete ALL steps below. Work is NOT complete until git push succeeds.
MANDATORY WORKFLOW:
- File issues for remaining work - Create issues for anything that needs follow-up
- Run quality gates (if code changed) - Tests, linters, builds
- Update issue status - Close finished work, update in-progress items
- PUSH TO REMOTE - This is MANDATORY:
git pull --rebase git push git status # MUST show "up to date with origin" - Clean up - Clear stashes, prune remote branches
- Verify - All changes committed AND pushed
- Hand off - Provide context for next session
CRITICAL RULES:
- Work is NOT complete until
git pushsucceeds - NEVER stop before pushing - that leaves work stranded locally
- NEVER say "ready to push when you are" - YOU must push
- If push fails, resolve and retry until it succeeds
Issue Tracking with bd (beads)
IMPORTANT: This project uses bd (beads) for ALL issue tracking. Do NOT use markdown TODOs, task lists, or other tracking methods.
Why bd?
- Dependency-aware: Track blockers and relationships between issues
- Git-friendly: Dolt-powered version control with native sync
- Agent-optimized: JSON output, ready work detection, discovered-from links
- Prevents duplicate tracking systems and confusion
Quick Start
Check for ready work:
bd ready --json
Create new issues:
bd create "Issue title" --description="Detailed context" -t bug|feature|task -p 0-4 --json
bd create "Issue title" --description="What this issue is about" -p 1 --deps discovered-from:bd-123 --json
# Use stdin for descriptions with special characters (backticks, !, nested quotes)
echo 'Description with `backticks` and "quotes"' | bd create "Title" --description=- --json
Claim and update:
bd update <id> --claim --json
bd update bd-42 --priority 1 --json
Complete work:
bd close bd-42 --reason "Completed" --json
Issue Types
bug- Something brokenfeature- New functionalitytask- Work item (tests, docs, refactoring)epic- Large feature with subtaskschore- Maintenance (dependencies, tooling)
Priorities
0- Critical (security, data loss, broken builds)1- High (major features, important bugs)2- Medium (default, nice-to-have)3- Low (polish, optimization)4- Backlog (future ideas)
Workflow for AI Agents
- Check ready work:
bd readyshows unblocked issues - Read execution metadata first: before deciding local vs delegated work, model, or reasoning level, inspect structured metadata:
The execution metadata keysbd show <id> --json | jq '.[0] | {id,title,metadata,description,notes}'execution_agent_type,execution_suggested_model,execution_reasoning_effort,execution_mode, andexecution_parallel_groupare authoritative hints when present. Use description and notes as fallback context. - Claim your task atomically:
bd update <id> --claim - Work on it: Implement, test, document
- Discover new work? Create linked issue:
bd create "Found bug" --description="Details about what was found" -p 1 --deps discovered-from:<parent-id>
- Complete:
bd close <id> --reason "Done"
Auto-Sync
bd automatically syncs via Dolt:
- Each write auto-commits to Dolt history
- Use
bd dolt push/bd dolt pullfor remote sync - No manual export/import needed!
Important Rules
- โ Use bd for ALL task tracking
- โ
Always use
--jsonflag for programmatic use - โ
Link discovered work with
discovered-fromdependencies - โ
Check
bd readybefore asking "what should I work on?" - โ Do NOT create markdown TODO lists
- โ Do NOT use external issue trackers
- โ Do NOT duplicate tracking systems
For more details, see README.md and docs/QUICKSTART.md.