Files
beads/.github/copilot-instructions.md
Steve Yegge bf74160f05 Fix GH#366: Encourage descriptions when creating issues
Addresses GitHub Discussion #366 where users reported Claude Code
creating issues with titles but no descriptions.

Two-pronged solution:

1. Documentation improvements (bd-na8r):
   - Updated AGENTS.md with prominent guidance section
   - Added good/bad examples showing why/what/how to include
   - Updated all bd create examples to include --description
   - Enhanced MCP tool docstring with importance note
   - Updated .github/copilot-instructions.md

2. Code validation (bd-bcrt):
   - Added friendly yellow warning when description is empty
   - Warning skips test issues (title contains "test")
   - Works in both CLI and daemon modes
   - Non-blocking to preserve quick workflows

Evidence from our own projects showed significant empty description
rates:
- ~/src/beads: 110/630 (17.5%)
- ~/wyvern: 8/119 (6.7%)
- ~/src/vc: 3/170 (1.8%)

Fixes bd-0tr0, bd-na8r, bd-bcrt

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-23 14:14:40 -08:00

4.5 KiB

GitHub Copilot Instructions for Beads

Project Overview

beads (command: bd) is a Git-backed issue tracker designed for AI-supervised coding workflows. We dogfood our own tool for all task tracking.

Key Features:

  • Dependency-aware issue tracking
  • Auto-sync with Git via JSONL
  • AI-optimized CLI with JSON output
  • Built-in daemon for background operations
  • MCP server integration for Claude and other AI assistants

Tech Stack

  • Language: Go 1.21+
  • Storage: SQLite (internal/storage/sqlite/)
  • CLI Framework: Cobra
  • Testing: Go standard testing + table-driven tests
  • CI/CD: GitHub Actions
  • MCP Server: Python (integrations/beads-mcp/)

Coding Guidelines

Testing

  • Always write tests for new features
  • Use BEADS_DB=/tmp/test.db to avoid polluting production database
  • Run go test -short ./... before committing
  • Never create test issues in production DB (use temporary DB)

Code Style

  • Run golangci-lint run ./... before committing
  • Follow existing patterns in cmd/bd/ for new commands
  • Add --json flag to all commands for programmatic use
  • Update docs when changing behavior

Git Workflow

  • Always commit .beads/issues.jsonl with code changes
  • Run bd sync at end of work sessions
  • Install git hooks: bd hooks install (ensures DB ↔ JSONL consistency)

Issue Tracking with bd

CRITICAL: This project uses bd for ALL task tracking. Do NOT create markdown TODO lists.

Essential Commands

# Find work
bd ready --json                    # Unblocked issues
bd stale --days 30 --json          # Forgotten issues

# Create and manage (ALWAYS include --description)
bd create "Title" --description="Detailed context" -t bug|feature|task -p 0-4 --json
bd update <id> --status in_progress --json
bd close <id> --reason "Done" --json

# Search
bd list --status open --priority 1 --json
bd show <id> --json

# Sync (CRITICAL at end of session!)
bd sync  # Force immediate export/commit/push

Workflow

  1. Check ready work: bd ready --json
  2. Claim task: bd update <id> --status in_progress
  3. Work on it: Implement, test, document
  4. Discover new work? bd create "Found bug" --description="What was found and why" -p 1 --deps discovered-from:<parent-id> --json
  5. Complete: bd close <id> --reason "Done" --json
  6. Sync: bd sync (flushes changes to git immediately)

IMPORTANT: Always include --description when creating issues. Issues without descriptions lack context for future work.

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)

Project Structure

beads/
├── cmd/bd/              # CLI commands (add new commands here)
├── internal/
│   ├── types/           # Core data types
│   └── storage/         # Storage layer
│       └── sqlite/      # SQLite implementation
├── integrations/
│   └── beads-mcp/       # MCP server (Python)
├── examples/            # Integration examples
├── docs/                # Documentation
└── .beads/
    ├── beads.db         # SQLite database (DO NOT COMMIT)
    └── issues.jsonl     # Git-synced issue storage

Available Resources

Use the beads MCP server for native function calls instead of shell commands:

  • Install: pip install beads-mcp
  • Functions: mcp__beads__ready(), mcp__beads__create(), etc.
  • See integrations/beads-mcp/README.md

Scripts

  • ./scripts/bump-version.sh <version> --commit - Update all version files atomically
  • ./scripts/release.sh <version> - Complete release workflow
  • ./scripts/update-homebrew.sh <version> - Update Homebrew formula

Key Documentation

  • AGENTS.md - Comprehensive AI agent guide (detailed workflows, advanced features)
  • AGENT_INSTRUCTIONS.md - Development procedures, testing, releases
  • README.md - User-facing documentation
  • docs/CLI_REFERENCE.md - Complete command reference

Important Rules

  • Use bd for ALL task tracking
  • Always use --json flag for programmatic use
  • Run bd sync at end of sessions
  • Test with BEADS_DB=/tmp/test.db
  • Do NOT create markdown TODO lists
  • Do NOT create test issues in production DB
  • Do NOT commit .beads/beads.db (JSONL only)

For detailed workflows and advanced features, see AGENTS.md