# Git Hooks Configuration ## Overview Git hooks automatically send notifications to the `dev-alerts` coordination channel when feature specifications are created or significant commits are made to main branches. ## Installed Hooks ### post-commit (Main Repo) **Location:** `.git/hooks/post-commit` **Triggers:** - **Feature Spec Creation:** When a commit includes new `docs/specs/SPEC-NNN-*.md` files - **Build Events:** When commits with conventional commit prefixes (`spec:`, `feat:`, `fix:`, `build:`) are made to `main` branch **Actions:** - Extracts SPEC number, priority, effort, and overview from spec file - Sends coordination message to `dev-alerts` channel - Includes commit hash, author, branch, and affected files **Message Format (Feature Spec):** ``` Subject: [ProjectName] Feature Spec: SPEC-NNN [Feature Name] Body: - SPEC number and name - Priority and effort estimate - Overview excerpt - Commit hash and author - Link to spec file ``` **Message Format (Build Event):** ``` Subject: [ProjectName] Build: [commit type] on main Body: - Commit hash and type - Files changed count - Branch and author - Full commit message ``` ### post-commit (GuruConnect Submodule) **Location:** `.git/modules/projects/msp-tools/guru-connect/hooks/post-commit` **Triggers:** Same as main repo **Project Key:** `guruconnect` **Project Name:** GuruConnect ### post-commit (GuruRMM Submodule) **Location:** `.git/modules/projects/msp-tools/guru-rmm/hooks/post-commit` **Status:** To be created when submodule is initialized **Project Key:** `gururmm` **Project Name:** GuruRMM ## Setup ### Install Hooks Manually ```bash # Main repo cp .claude/hooks/post-commit.template .git/hooks/post-commit chmod +x .git/hooks/post-commit # GuruConnect submodule cp .claude/hooks/post-commit.template .git/modules/projects/msp-tools/guru-connect/hooks/post-commit chmod +x .git/modules/projects/msp-tools/guru-connect/hooks/post-commit # GuruRMM submodule (when initialized) cp .claude/hooks/post-commit.template .git/modules/projects/msp-tools/guru-rmm/hooks/post-commit chmod +x .git/modules/projects/msp-tools/guru-rmm/hooks/post-commit ``` ### Verify Hook Installation ```bash # Check if hook exists and is executable ls -l .git/hooks/post-commit ls -l .git/modules/projects/msp-tools/guru-connect/hooks/post-commit # Test manually (run from repo root after a commit) .git/hooks/post-commit ``` ## Coordination API Integration Hooks send messages to the coordination API at `http://172.16.3.30:8001/api/coord/messages` with: - **from_session:** `$(hostname)/claude-main` - **to_session:** `dev-alerts` - **project_key:** `guruconnect`, `gururmm`, or `claudetools` - **subject:** Auto-generated based on event type - **body:** Formatted notification with commit details ## Message Recipients Messages sent to `dev-alerts` can be queried by any session: ```bash # Check unread dev-alerts messages curl -s "http://172.16.3.30:8001/api/coord/messages?to_session=dev-alerts&unread_only=true" # Check all dev-alerts messages for a project curl -s "http://172.16.3.30:8001/api/coord/messages?to_session=dev-alerts&project_key=guruconnect" ``` ## Troubleshooting ### Hook Not Firing 1. **Check executable permission:** ```bash chmod +x .git/hooks/post-commit ``` 2. **Test manually:** ```bash .git/hooks/post-commit ``` 3. **Check coordination API:** ```bash curl -s http://172.16.3.30:8001/api/coord/status ``` ### Debug Hook Execution Temporarily add debug output to hook: ```bash #!/bin/bash set -x # Enable debug mode # ... rest of hook code ... ``` Then check git output after commit. ## Customization ### Add Custom Event Types Edit the hook and add new patterns to detect: ```bash # Example: Detect documentation commits if echo "$COMMIT_MSG" | grep -qE '^docs:.*API'; then # Send custom dev-alerts message fi ``` ### Change Alert Channel Replace `dev-alerts` with a different channel name: ```bash curl -s -X POST http://172.16.3.30:8001/api/coord/messages \ -H "Content-Type: application/json" \ -d "{ \"from_session\": \"$SESSION_ID\", \"to_session\": \"build-notifications\", # Changed from dev-alerts ... }" ``` ## Maintenance ### Disable Hooks Temporarily ```bash # Rename to disable mv .git/hooks/post-commit .git/hooks/post-commit.disabled # Re-enable mv .git/hooks/post-commit.disabled .git/hooks/post-commit ``` ### Update All Hooks When the hook logic changes, update all installations: ```bash # Update template vim .claude/hooks/post-commit.template # Reinstall to all repos cp .claude/hooks/post-commit.template .git/hooks/post-commit cp .claude/hooks/post-commit.template .git/modules/projects/msp-tools/guru-connect/hooks/post-commit cp .claude/hooks/post-commit.template .git/modules/projects/msp-tools/guru-rmm/hooks/post-commit ``` --- **Last Updated:** 2026-05-31