diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..cc33a61 --- /dev/null +++ b/install.sh @@ -0,0 +1,81 @@ +#!/usr/bin/env bash +# install.sh — Install Developer Intelligence globally for Claude Code. +# Run once. Works in any repo after that. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +CLAUDE_DIR="$HOME/.claude" + +mkdir -p "$CLAUDE_DIR" + +# Install global MCP config +# Merge with existing if present +MCP_FILE="$CLAUDE_DIR/mcp.json" +if [ -f "$MCP_FILE" ]; then + echo "[install] Existing mcp.json found — merging..." + python3 -c " +import json, sys +existing = json.load(open('$MCP_FILE')) +existing.setdefault('mcpServers', {}) +existing['mcpServers']['dev-intel'] = { + 'command': 'uv', + 'args': ['run', 'python', 'mcp_server.py'], + 'cwd': '$SCRIPT_DIR' +} +json.dump(existing, open('$MCP_FILE', 'w'), indent=2) +print(' Added dev-intel to existing mcp.json') +" +else + cat > "$MCP_FILE" << EOF +{ + "mcpServers": { + "dev-intel": { + "command": "uv", + "args": ["run", "python", "mcp_server.py"], + "cwd": "$SCRIPT_DIR" + } + } +} +EOF + echo "[install] Created $MCP_FILE" +fi + +# Install global CLAUDE.md (append if exists) +CLAUDE_MD="$CLAUDE_DIR/CLAUDE.md" +MARKER="## Developer Intelligence Knowledge Graph" + +if [ -f "$CLAUDE_MD" ] && grep -q "$MARKER" "$CLAUDE_MD"; then + echo "[install] Developer Intelligence already in $CLAUDE_MD — skipping." +else + cat >> "$CLAUDE_MD" << 'EOF' + +## Developer Intelligence Knowledge Graph + +This environment has access to a knowledge graph of LLM-generated documentation for your codebase via MCP tools. + +**Always prefer the knowledge graph over reading raw files when answering questions about what code does or how files interact.** + +### Query patterns +- "What does X do?" → `get_file_doc("path/to/file.go")` +- "How do X and Y interact?" → `get_relationship("file_a.go", "file_b.go")` +- "What's this project about?" → `get_repo_overview()` +- "What depends on X?" / "What breaks if I change X?" → `get_dependents("path/to/file.go")` +- "What does X depend on?" → `get_dependencies("path/to/file.go")` +- "Find anything about routing" → `search_docs("routing")` +- "What's outdated?" → `get_stale_docs()` + +### Staleness +Docs flagged `[STALE]` mean the code changed but the doc hasn't been regenerated yet. Mention this to the user. + +### Tips +- Start broad (`get_repo_overview`) then drill into specifics. +- `get_dependents` is impact analysis — "what breaks if I change this?" +- File paths are relative to repo root (e.g., `echo.go`, `middleware/compress.go`). +EOF + echo "[install] Appended Developer Intelligence instructions to $CLAUDE_MD" +fi + +echo "" +echo "[install] Done. Developer Intelligence is now available in all Claude Code sessions." +echo "[install] Run 'claude' from any repo directory — the knowledge graph tools are global."