# Startup Hooks for AI Agents This directory contains startup hook scripts that help AI agents automatically detect and adapt to changes in their environment. ## bd-version-check.sh **Purpose:** Automatically detect bd (beads) upgrades and show what changed **Features:** - ✅ Detects when bd version changes between sessions - ✅ Shows `bd info --whats-new` output automatically - ✅ Auto-updates outdated git hooks - ✅ Persists version tracking in `.beads/metadata.json` - ✅ Works today - no bd code changes required! **Usage:** ```bash # Source the script at session start (recommended) source examples/startup-hooks/bd-version-check.sh # Or execute it directly bash examples/startup-hooks/bd-version-check.sh ``` ### Integration Examples #### Claude Code If Claude Code supports startup hooks: ```bash # Add to .claude/hooks/session-start source examples/startup-hooks/bd-version-check.sh ``` Alternatively, manually run at the start of each coding session. #### GitHub Copilot Add to your shell initialization file: ```bash # ~/.bashrc or ~/.zshrc # Run bd version check when entering a beads project if [ -d ".beads" ]; then source /path/to/beads/examples/startup-hooks/bd-version-check.sh fi ``` #### Cursor Add to workspace settings or your shell init file following the same pattern as GitHub Copilot. #### Generic Integration Any AI coding environment that allows custom startup scripts can source this file. ### Requirements - **bd (beads)**: Must be installed and in PATH - **jq**: Required for JSON manipulation (`brew install jq` on macOS, `apt-get install jq` on Ubuntu) - **.beads directory**: Must exist in current project ### How It Works 1. **Version Detection**: Reads current bd version and compares to `.beads/metadata.json` 2. **Change Notification**: If version changed, displays upgrade banner with what's new 3. **Hook Updates**: Checks for outdated git hooks and auto-updates them 4. **Persistence**: Updates `metadata.json` with current version for next session ### Example Output ``` 🔄 bd upgraded: 0.23.0 → 0.24.2 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🆕 What's New in bd (Current: v0.24.2) ============================================================= ## v0.24.2 (2025-11-23) • New feature X • Bug fix Y • Performance improvement Z [... rest of what's new output ...] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 💡 Review changes above and adapt your workflow accordingly 🔧 Git hooks outdated. Updating to match bd v0.24.2... ✓ Git hooks updated successfully ``` ### Edge Cases Handled - **Not in a beads project**: Silently exits (safe to include in global shell init) - **bd not installed**: Silently exits - **jq not installed**: Shows warning but doesn't break - **metadata.json missing**: Auto-creates it - **First run**: Sets version without showing upgrade message - **bd command fails**: Silently exits ### Troubleshooting **Q: Script doesn't detect version change** A: Check that `.beads/metadata.json` exists and contains `last_bd_version` field **Q: "jq not found" warning** A: Install jq: `brew install jq` (macOS) or `apt-get install jq` (Ubuntu) **Q: Git hooks not auto-updating** A: Ensure you have write permissions to `.git/hooks/` directory ### Related - **GitHub Discussion #239**: "Upgrading beads: how to let the Agent know" - **Parent Epic**: bd-nxgk - Agent upgrade awareness system - **AGENTS.md**: See "After Upgrading bd" section for manual workflow