# AI Tools Doctor Implementation Report **Date**: 2025-12-01 **Status**: MVP Complete **RFC**: docs/rfc-ai-tools-doctor.md ## Summary Implemented `ai-tools-doctor` CLI with `check` and `sync` commands per RFC. MVP scope - no `bump` command yet. ## What Was Built ### dotfiles repo **`config/ai-tools/tools.json`** - Updated manifest - Added `source` field (npm/nix) to each tool - Pinned versions (was "latest") - Added nix tools (opencode, beads) **`bin/ai-tools-doctor`** - New CLI (212 lines bash) - `check` - Compare installed vs declared versions - `check --json` - Machine-readable output - `check --quiet` - Exit code only - `sync` - Install/update npm tools to declared versions ### skills repo **`skills/ai-tools-doctor/`** - Skill for Claude Code / OpenCode - SKILL.md - Agent instructions - README.md - Human documentation ## Deviations from RFC | RFC | Implementation | Reason | |-----|----------------|--------| | Exit code 1 for "updates available" | Exit 0 for success, 1 for errors only | Non-zero confuses many tools | | `expected_version` for nix | `version` for all | Consistency | | opencode version 0.2.1 | 1.0.119 | RFC had wrong version | ## Current Tool Versions ``` claude-code 2.0.55 (npm) openai-codex 0.63.0 (npm) opencode 1.0.119 (nix) beads 0.26.0 (nix) ``` ## Still TODO 1. **Delete old script** - `bin/ai-tools-sync.sh` still exists, can be removed 2. **Home Manager integration** - Symlink manifest to `~/.config/ai-tools/` 3. **Session hook** - Optional: run check on agent session start 4. **Delete obsolete skill** - `.claude/skills/update-claude/` per RFC ## Testing ```bash # All pass ai-tools-doctor check # Human output ai-tools-doctor check --json # JSON output ai-tools-doctor check --quiet # Exit code only ai-tools-doctor sync # Syncs npm tools ``` ## Files Changed ``` dotfiles/ ├── config/ai-tools/tools.json (modified) └── bin/ai-tools-doctor (new) skills/ └── skills/ai-tools-doctor/ ├── SKILL.md (new) └── README.md (new) ``` ## Next Steps 1. Review and commit dotfiles changes 2. Add to Home Manager if needed 3. Consider `bump` command for future (fetches latest from npm registry)