--- description: Comprehensive ACE installation and health diagnostic --- # ACE Doctor - Installation & Health Diagnostic Comprehensive diagnostic tool that checks your entire ACE setup and identifies issues. ## Instructions for Claude When the user runs `/ace:ace-doctor`, perform a complete health check of the ACE system. ### Diagnostic Flow Run all checks in parallel for speed, then present organized results. --- ## 🏥 Diagnostic Checks ### Check 1: Plugin Installation **What to Check**: ```bash # Verify plugin directory structure ls -la ~/.claude/plugins/marketplaces/ce-dot-net-marketplace/plugins/ace/ ``` **Expected Structure**: ``` ace/ ├── commands/ # Slash commands (/ace-search, /ace-patterns, etc.) ├── hooks/ │ └── hooks.json # Hook definitions ├── scripts/ # Hook wrapper scripts │ ├── ace_install_cli.sh │ ├── ace_before_task_wrapper.sh │ ├── ace_task_complete_wrapper.sh │ └── ace_after_task_wrapper.sh ├── plugin.json └── CLAUDE.md ``` **Report**: - ✅ Plugin installed correctly - ⚠️ Plugin directory missing components - ❌ Plugin not installed **If Failed**: ``` ❌ Plugin Installation: NOT FOUND Recommended Actions: 1. Install plugin via Claude Code marketplace 2. OR install via symlink: ln -s /path/to/ace ~/.claude/plugins/ace 3. Restart Claude Code after installation ``` --- ### Check 2: Global Configuration **What to Check**: ```bash # Check global config exists (XDG standard path) XDG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" CONFIG_PATH="$XDG_HOME/ace/config.json" test -f "$CONFIG_PATH" && echo "EXISTS" || echo "MISSING" # If exists, validate JSON and check required fields jq -e '.serverUrl, .apiToken, .cacheTtlMinutes, .autoUpdateEnabled' "$CONFIG_PATH" ``` **Expected**: ```json { "serverUrl": "https://ace-api.code-engine.app", "apiToken": "ace_xxxxx", "cacheTtlMinutes": 120, "autoUpdateEnabled": true } ``` **Report**: - ✅ Global config valid - ⚠️ Global config exists but incomplete - ❌ Global config missing **If Failed**: ``` ❌ Global Configuration: MISSING Recommended Actions: 1. Run: /ace:ace-configure --global 2. Provide: - Server URL (https://ace-api.code-engine.app) - API Token (starts with ace_) ``` **If Incomplete**: ``` ⚠️ Global Configuration: INCOMPLETE Missing fields: apiToken, cacheTtlMinutes Recommended Actions: 1. Run: /ace:ace-configure --global 2. This will preserve existing values and fill missing fields ``` --- ### Check 3: Project Configuration **What to Check**: ```bash # Get project root PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd) # Check project settings test -f "$PROJECT_ROOT/.claude/settings.json" && echo "EXISTS" || echo "MISSING" # If exists, validate ACE_PROJECT_ID env var jq -e '.projectId' "$PROJECT_ROOT/.claude/settings.json" ``` **Expected**: ```json { "env": { "ACE_PROJECT_ID": "prj_xxxxx" } } ``` **Report**: - ✅ Project config valid with ACE_PROJECT_ID set - ⚠️ Project config exists but ACE_PROJECT_ID missing - ❌ Project config missing **Note**: ce-ace CLI is used for all ACE operations. **If Failed**: ``` ❌ Project Configuration: MISSING Recommended Actions: 1. Run: /ace:ace-configure --project 2. Provide your project ID (starts with prj_) ``` **If Using @latest**: ``` ⚠️ Project Configuration: USING @latest Current: "@ce-dot-net/ace-client@latest" Recommended: "@ce-dot-net/ace-client@3.7.2" Issue: @latest causes npx caching - updates won't install automatically Recommended Actions: 1. Run: /ace:ace-configure --project 2. This will update to pinned version 3.7.0 ``` --- ### Check 4: CLI Availability **What to Check**: ```bash # Check if ce-ace is installed and working command -v ce-ace >/dev/null 2>&1 && echo "INSTALLED" || echo "NOT FOUND" # If installed, check version ce-ace --version ``` **Report**: - ✅ ce-ace CLI installed and accessible - ⚠️ ce-ace CLI installed but old version - ❌ ce-ace CLI not found **If Failed**: ``` ❌ CLI: NOT FOUND Possible Causes: 1. ce-ace CLI not installed globally 2. npm global bin path not in PATH Recommended Actions: 1. Install: npm install -g @ace-sdk/cli 2. Check version: ce-ace --version 3. Verify PATH includes npm global bin: npm bin -g ``` --- ### Check 5: ACE Server Connectivity **What to Check**: ```bash # Read serverUrl and apiToken from global config XDG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" SERVER_URL=$(jq -r '.serverUrl' "$XDG_HOME/ace/config.json") API_TOKEN=$(jq -r '.apiToken' "$XDG_HOME/ace/config.json") PROJECT_ID=$(jq -r '.projectId' .claude/settings.json) # Test connection to ACE server curl -s -X GET \ -H "Authorization: Bearer $API_TOKEN" \ "$SERVER_URL/api/projects/$PROJECT_ID/playbook" \ -w "\nHTTP: %{http_code}\n" \ -o /tmp/ace-doctor-response.json ``` **Report**: - ✅ ACE server reachable and authenticated (HTTP 200) - ⚠️ Server reachable but authentication failed (HTTP 401) - ⚠️ Project not found (HTTP 404) - ❌ Server unreachable (connection timeout/refused) **If Failed**: ``` ❌ ACE Server: UNREACHABLE Server URL: https://ace-api.code-engine.app HTTP Status: Connection refused Possible Causes: 1. Network connectivity issues 2. Firewall blocking HTTPS 3. Incorrect server URL Recommended Actions: 1. Test connection: curl https://ace-api.code-engine.app/api/health 2. Check firewall settings 3. Try different network (WiFi vs. Ethernet) 4. Verify serverUrl in ~/.config/ace/config.json ``` **If 401 Unauthorized**: ``` ⚠️ ACE Server: AUTHENTICATION FAILED Server URL: https://ace-api.code-engine.app HTTP Status: 401 Unauthorized Recommended Actions: 1. Verify API token is correct 2. Check token hasn't expired 3. Run: /ace:ace-configure --global 4. Get new token from ACE server admin ``` **If 404 Not Found**: ``` ⚠️ ACE Server: PROJECT NOT FOUND Project ID: prj_xxxxx HTTP Status: 404 Not Found Recommended Actions: 1. Verify project ID exists in ACE server 2. Check you have access to this project 3. Run: /ace:ace-configure --project 4. Create new project in ACE dashboard ``` --- ### Check 6: Hooks Registered **What to Check**: ```bash # Check if hook scripts exist PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd) PLUGIN_ROOT="$HOME/.claude/plugins/marketplaces/ce-dot-net-marketplace/plugins/ace" # Check hook wrappers in scripts/ test -f "$PLUGIN_ROOT/scripts/ace_before_task_wrapper.sh" && echo "before_task: EXISTS" test -f "$PLUGIN_ROOT/scripts/ace_task_complete_wrapper.sh" && echo "task_complete: EXISTS" test -f "$PLUGIN_ROOT/scripts/ace_after_task_wrapper.sh" && echo "after_task: EXISTS" test -f "$PLUGIN_ROOT/scripts/ace_install_cli.sh" && echo "install_cli: EXISTS" # Check hooks.json test -f "$PLUGIN_ROOT/hooks/hooks.json" && echo "hooks.json: EXISTS" ``` **Expected Hooks** (5 total): 1. `SessionStart` → `ace_install_cli.sh` 2. `UserPromptSubmit` → `ace_before_task_wrapper.sh` 3. `PostToolUse` → `ace_task_complete_wrapper.sh` 4. `PreCompact` → `ace_after_task_wrapper.sh` 5. `Stop` → `ace_after_task_wrapper.sh` **Report**: - ✅ All hooks registered (5/5) - ⚠️ Some hooks missing (e.g., 3/5) - ❌ No hooks registered (0/5) **If Failed**: ``` ❌ Hooks: NOT REGISTERED Expected Hook Scripts: - ace_before_task_wrapper.sh (retrieves patterns before tasks) - ace_task_complete_wrapper.sh (captures learning after tasks) - ace_after_task_wrapper.sh (backup learning at session end) - ace_install_cli.sh (ensures ce-ace CLI is available) Recommended Actions: 1. Verify plugin installation (Check 1) 2. Check scripts/ directory exists in plugin 3. Verify hooks.json exists in hooks/ directory 4. Run: /ace:ace-test to verify hook execution 5. Check Claude Code logs for hook errors ``` --- ### Check 7: CLAUDE.md Status **What to Check**: ```bash # Check if CLAUDE.md exists in project root PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd) test -f "$PROJECT_ROOT/CLAUDE.md" && echo "EXISTS" || echo "MISSING" # If exists, check for ACE section grep -q "ACE_SECTION_START" "$PROJECT_ROOT/CLAUDE.md" && echo "HAS_ACE" || echo "NO_ACE" # Extract version grep -oP 'ACE_SECTION_START v\K[\d.]+' "$PROJECT_ROOT/CLAUDE.md" ``` **Report**: - ✅ CLAUDE.md exists with ACE instructions (v5.x.x) - ⚠️ CLAUDE.md exists but no ACE section - ⚠️ CLAUDE.md exists but outdated version (< v5.0.0) - ❌ CLAUDE.md missing **If Missing**: ``` ❌ CLAUDE.md: NOT FOUND Recommended Actions: 1. Run: /ace:ace-claude-init 2. This will create CLAUDE.md with ACE instructions 3. Documents hook-based architecture and automatic learning 4. Commit CLAUDE.md to your repository ``` **If Outdated**: ``` ⚠️ CLAUDE.md: OUTDATED VERSION Current: v4.x.x (or earlier) Latest: v5.1.2 Breaking Change: v5.x uses hooks instead of skills/subagents Recommended Actions: 1. Run: /ace:ace-claude-init 2. This will update to hook-based architecture 3. Review CHANGELOG.md for migration details ``` --- ### Check 8: CLI Configuration **What to Check**: ```bash # Check ce-ace CLI config XDG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" test -f "$XDG_HOME/ace/config.json" && echo "CONFIG: EXISTS" # Check if multi-org format (ce-ace v1.x) jq -e '.organizations' "$XDG_HOME/ace/config.json" >/dev/null 2>&1 && echo "FORMAT: MULTI-ORG" # Check required fields jq -e '.organizations[0].apiKey' "$XDG_HOME/ace/config.json" >/dev/null 2>&1 && echo "API_KEY: SET" ``` **Expected** (ce-ace v1.x multi-org format): ```json { "organizations": [ { "name": "ce-dot-net", "apiKey": "ace_xxxxx" } ], "activeOrg": "ce-dot-net" } ``` **Report**: - ✅ CLI config valid (multi-org format) - ⚠️ CLI config exists but old format (single-org) - ❌ CLI config missing **If Old Format**: ``` ⚠️ CLI Configuration: OLD FORMAT Current: Single-org format (ce-ace v0.x) Expected: Multi-org format (ce-ace v1.x+) Recommended Actions: 1. Update ce-ace CLI: npm install -g @ace-sdk/cli@latest 2. Run: ce-ace configure 3. Or run: /ace:ace-configure ``` --- ### Check 9: Version Status **What to Check**: ```bash # Get plugin version PLUGIN_JSON="$HOME/.claude/plugins/marketplaces/ce-dot-net-marketplace/plugins/ace/plugin.json" if [ -f "$PLUGIN_JSON" ]; then jq -r '.version' "$PLUGIN_JSON" else echo "unknown" fi # Get ce-ace CLI version if command -v ce-ace >/dev/null 2>&1; then ce-ace --version 2>/dev/null || echo "unknown" else echo "not installed" fi # Check for Python hooks (shared-hooks/) if [ -d "shared-hooks" ]; then echo "Python hooks: present" else echo "Python hooks: missing (required for v5.x)" fi ``` **Expected Versions** (as of 2024-11): - Plugin: v5.1.2+ - ce-ace CLI: v1.0.9+ - CLAUDE.md: v5.0.3+ **Report**: - ✅ All components up to date - ⚠️ Plugin outdated (< v5.1.2) - ⚠️ CLI outdated (< v1.0.9) - ❌ Critical version mismatch **If Updates Available**: ``` ⚠️ Updates Recommended Plugin: v5.1.1 → v5.1.2 (latest) ce-ace CLI: v1.0.8 → v1.0.9 (latest) Changes in v5.1.2: - Context passing bug fix (subprocess environment variables) - Improved error handling in Python hooks Recommended Actions: 1. Update ce-ace CLI: npm install -g @ace-sdk/cli@latest 2. Update plugin from marketplace (if available) 3. Run: /ace:ace-claude-init to update CLAUDE.md 4. Restart Claude Code ``` --- ## 📊 Final Report Format After running all checks, present results in this format: ``` 🩺 ACE Doctor - Health Diagnostic Report ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [1] Plugin Installation................... ✅ PASS [2] Global Configuration................. ✅ PASS [3] Project Configuration................ ✅ PASS [4] CLI Availability..................... ✅ PASS (v1.0.9) [5] ACE Server Connectivity.............. ✅ PASS (HTTP 200) [6] Hooks Registered..................... ✅ PASS (5/5) [7] CLAUDE.md Status..................... ✅ PASS (v5.1.2) [8] CLI Configuration.................... ✅ PASS (multi-org) [9] Version Status....................... ✅ PASS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Overall Health: 🟢 HEALTHY ✅ All systems operational! ACE is properly configured and ready to use. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ System Information: Plugin Version: v5.1.2 CLI Version: v1.0.9 Architecture: Hook-based (v5.x) Project ID: prj_d3a244129d62c198 Organization: org_34fYIlitYk4nyFuTvtsAzA6uUJF Registered Hooks: • SessionStart → ace_install_cli.sh • UserPromptSubmit → ace_before_task_wrapper.sh • PostToolUse → ace_task_complete_wrapper.sh • PreCompact → ace_after_task_wrapper.sh • Stop → ace_after_task_wrapper.sh ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ For detailed troubleshooting, see: - README.md (section: 🐛 Troubleshooting) - /ace:ace-test (hook execution test) Report issues: https://github.com/ce-dot-net/ce-claude-marketplace/issues ``` ### Example with Warnings ``` 🩺 ACE Doctor - Health Diagnostic Report ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [1] Plugin Installation................... ✅ PASS [2] Global Configuration................. ✅ PASS [3] Project Configuration................ ⚠️ WARN [4] CLI Availability..................... ✅ PASS (v1.0.9) [5] ACE Server Connectivity.............. ✅ PASS (HTTP 200) [6] Hooks Registered..................... ⚠️ WARN (3/5) [7] CLAUDE.md Status..................... ⚠️ WARN (v4.2.0) [8] CLI Configuration.................... ✅ PASS [9] Version Status....................... ⚠️ WARN ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Overall Health: 🟡 NEEDS ATTENTION (4 warnings) ⚠️ Warnings Found: [3] Project Configuration Issue: projectId missing in .claude/settings.json Impact: Hooks cannot determine which project to use Fix: Run /ace:ace-configure [6] Hooks Registered Issue: Some hook scripts missing (3/5 found) Missing: ace_task_complete_wrapper.sh, ace_after_task_wrapper.sh Impact: Learning capture won't work after tasks Fix: Reinstall plugin or check scripts/ directory [7] CLAUDE.md Status Issue: Outdated version (v4.2.0, latest: v5.1.2) Impact: Using old skills-based architecture instead of hooks Fix: Run /ace:ace-claude-init [9] Version Status Issue: Updates available Plugin: v5.1.1 → v5.1.2 CLI: v1.0.8 → v1.0.9 Fix: See recommended actions below ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🎯 Quick Fix All Issues: Run these commands in order: 1. /ace:ace-configure 2. /ace:ace-claude-init 3. npm install -g @ace-sdk/cli@latest 4. Restart Claude Code ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ System Information: Plugin Version: v5.1.1 CLI Version: v1.0.8 Architecture: Hook-based (v5.x) Project ID: (not configured) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ For detailed troubleshooting, see: - README.md (section: 🐛 Troubleshooting) - /ace:ace-test (hook execution test) Report issues: https://github.com/ce-dot-net/ce-claude-marketplace/issues ``` ## Color Coding Legend Use these status indicators: - ✅ **PASS** - Everything working correctly - ⚠️ **WARN** - Non-critical issue, system still functional - ❌ **FAIL** - Critical issue, system may not work properly ## Performance Run all checks in **parallel** for speed (< 5 seconds total). Use Promise.all() or concurrent bash commands where possible. ## Error Handling If any check throws an error: 1. Catch the error gracefully 2. Report as ❌ FAIL with error message 3. Continue with remaining checks 4. Include error details in final report ## Exit Codes This is a diagnostic command - NEVER exit with error code. Always complete all checks and present full report. ## See Also - `/ace:ace-test` - Plugin-specific tests - `/ace:ace-status` - Playbook statistics - `/ace:ace-configure` - Configuration wizard - README.md - Full troubleshooting guide