.PHONY: help install check-deps install-claude install-mcp-deps \ mcp-context7 mcp-github mcp-firecrawl mcp-supabase mcp-memory \ mcp-sequential-thinking mcp-magic mcp-filesystem mcp-railway \ install-go-tools install-python-tools install-pm2 clean help: @echo "" @echo "Claude Code 工具箱 — 安裝指令" @echo "==============================" @echo "" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \ awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-28s\033[0m %s\n", $$1, $$2}' @echo "" install: check-deps install-mcp-deps ## 一鍵安裝所有依賴 @echo "" @echo "✅ 全部安裝完成!" @echo "" @echo "下一步:" @echo " 1. 將需要的 MCP server 設定複製到 ~/.claude.json" @echo " 2. 需要 API Key 的 server 請先設定環境變數" @echo " 3. 執行 claude 開始使用" @echo "" check-deps: ## 檢查前置工具是否已安裝 @echo "🔍 檢查前置工具..." @command -v node >/dev/null 2>&1 || { echo "❌ 需要 Node.js >= 18"; exit 1; } @command -v npm >/dev/null 2>&1 || { echo "❌ 需要 npm"; exit 1; } @command -v git >/dev/null 2>&1 || { echo "❌ 需要 Git"; exit 1; } @echo " ✓ Node.js $$(node -v)" @echo " ✓ npm $$(npm -v)" @echo " ✓ Git $$(git --version | cut -d' ' -f3)" @command -v claude >/dev/null 2>&1 \ && echo " ✓ Claude Code CLI" \ || echo " ⚠️ Claude Code CLI 未安裝(執行 make install-claude)" @echo "" install-claude: ## 安裝 Claude Code CLI npm install -g @anthropic-ai/claude-code install-mcp-deps: ## 安裝所有免費 MCP server 依賴 @echo "📦 預先安裝 MCP server npm 套件..." @$(MAKE) --no-print-directory mcp-context7 @$(MAKE) --no-print-directory mcp-github @$(MAKE) --no-print-directory mcp-memory @$(MAKE) --no-print-directory mcp-sequential-thinking @$(MAKE) --no-print-directory mcp-magic @$(MAKE) --no-print-directory mcp-filesystem @echo "" @echo "📋 需要 API Key 的 MCP(請自行安裝):" @echo " make mcp-firecrawl — FIRECRAWL_API_KEY" @echo " make mcp-supabase — project-ref" @echo " make mcp-railway — Railway 登入" @echo "" @echo "📋 HTTP 類型不需安裝:vercel, cloudflare-*, clickhouse" mcp-context7: ## Context7(即時技術文件查詢) @printf " 📦 context7... " && npx --yes @context7/mcp-server --help >/dev/null 2>&1; echo "✓" mcp-github: ## GitHub MCP(需要 GITHUB_PERSONAL_ACCESS_TOKEN) @printf " 📦 github... " && npx --yes @modelcontextprotocol/server-github --help >/dev/null 2>&1; echo "✓" mcp-firecrawl: ## Firecrawl MCP(需要 FIRECRAWL_API_KEY) @printf " 📦 firecrawl... " && npx --yes firecrawl-mcp --help >/dev/null 2>&1; echo "✓" mcp-supabase: ## Supabase MCP(需要 project-ref) @printf " 📦 supabase... " && npx --yes @supabase/mcp-server-supabase@latest --help >/dev/null 2>&1; echo "✓" mcp-memory: ## Memory MCP(跨 session 記憶) @printf " 📦 memory... " && npx --yes @modelcontextprotocol/server-memory --help >/dev/null 2>&1; echo "✓" mcp-sequential-thinking: ## Sequential Thinking MCP(鏈式推理) @printf " 📦 sequential-thinking... " && npx --yes @modelcontextprotocol/server-sequential-thinking --help >/dev/null 2>&1; echo "✓" mcp-magic: ## Magic UI MCP(UI 元件) @printf " 📦 magic... " && npx --yes @magicuidesign/mcp@latest --help >/dev/null 2>&1; echo "✓" mcp-filesystem: ## Filesystem MCP(檔案系統操作) @printf " 📦 filesystem... " && npx --yes @modelcontextprotocol/server-filesystem --help >/dev/null 2>&1; echo "✓" mcp-railway: ## Railway MCP(部署管理) @printf " 📦 railway... " && npx --yes @railway/mcp-server --help >/dev/null 2>&1; echo "✓" install-go-tools: ## Go 輔助工具(golangci-lint, deadcode) @command -v go >/dev/null 2>&1 || { echo "❌ 需要先安裝 Go"; exit 1; } go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest go install golang.org/x/tools/cmd/deadcode@latest @echo "✅ Go 工具安裝完成" install-python-tools: ## Python 輔助工具(ruff, mypy, bandit, black) @command -v python3 >/dev/null 2>&1 || { echo "❌ 需要先安裝 Python 3"; exit 1; } pip3 install ruff mypy bandit black isort @echo "✅ Python 工具安裝完成" install-pm2: ## PM2 程序管理器 npm install -g pm2 @echo "✅ PM2 安裝完成" clean: ## 清理 npx 快取 npm cache clean --force 2>/dev/null || true @echo "✅ 清理完成"