拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Claude Code 完整使用说明:从 CLAUDE.md 到 MCP、Skills、Hooks 的配置骨架

Claude Code 完整使用说明:从 CLAUDE.md 到 MCP、Skills、Hooks 的配置骨架 1. 为什么你的 Claude Code 总是“用不起来”很多人第一次打开 Claude Code敲两行提示词觉得它就是个能改文件的聊天窗口。真正卡住的地方不在模型能力而在项目级配置CLAUDE.md 没写清楚MCP 服务加载失败Skills 不触发Hooks 静默不执行。结果就是每次会话都要重复交代背景工具调用时好时坏团队里每个人的体验还不一样。这篇把 Claude Code 的项目级落地拆成一条主线以 CLAUDE.md 为入口串起 MCP、Skills、Hooks 三类扩展点给出可以直接复制的 settings.json 与 config.toml 骨架并说明如何用统一 Key/API 通道 TaoToken 接入。目标不是让你背命令而是搭出一套可维护、可验证、可交接的工作流。适合谁已经在终端里跑过claude、但配置散落在各处的开发者想把 Claude Code 引入团队、需要统一入口的人以及被 MCP 加载、Skills 触发、Hooks 日志折腾过一轮的人。下面每一步都配了验证动作做完能立刻看到结果。2. TaoToken 前置统一 Key 与 API 通道Claude Code 默认走 Anthropic 官方通道但项目里往往还要接别的模型或工具。TaoToken 的作用是提供一个统一的 Key/API 通道把模型调用收敛到一处方便在 settings.json 里集中管理而不是每个工具各配一套密钥。你需要先拿到一个 API Key。打开控制台创建https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaude-code-setup创建后在 API Keys 页面复制https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaude-code-setup接入地址用https://taotoken.net/api注意这个地址不带 UTM 参数直接写进配置即可。模型对话入口在https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaude-code-setup如果你打算长期用 Claude Code 做编码和 Agent 任务Coding Plan 更划算入口https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaude-code-setup接入文档在这里配置字段对不上时查它https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaude-code-setup注意Key 只放在本地 settings.local.json 或环境变量里不要提交到 git。团队共享的 settings.json 里只写占位符。3. 可复制配置CLAUDE.md settings.json config.toml3.1 CLAUDE.md项目入口控制在 200 行内CLAUDE.md 是每次会话自动加载的指令文件放在项目根目录。它决定 Claude 一进来就知道什么。写得太长会淹没重点建议 200 行以内用标题和列表组织。# 项目说明 ## 构建与测试 - 安装依赖pnpm install - 本地开发pnpm dev - 运行测试pnpm test - 类型检查pnpm typecheck ## 代码规范 - 使用 2 空格缩进 - 组件文件用 PascalCase工具函数用 camelCase - 提交前必须通过 pnpm lint ## 架构决策 - 状态管理统一用 zustand不引入 redux - 网络请求封装在 src/api/组件内不直接 fetch ## 常见注意事项 - 修改 src/api/ 下文件后必须跑 pnpm test:api - 不要改动 .env.example 的键名生成初始版本可以直接在会话里运行/init它会扫描项目结构自动生成一版再手动精简。大型项目可以把规则拆到.claude/rules/目录用 YAML 前置元数据限定路径范围--- paths: - src/api/**/*.ts --- # API 层规则 - 所有请求必须带超时 - 错误统一走 handleApiError3.2 settings.json权限、环境变量、Hooks 骨架项目级配置放.claude/settings.json提交到 git 供团队共享个人覆盖放.claude/settings.local.json加进 .gitignore。下面是一份可直接改的骨架{ permissions: { allow: [ Bash(pnpm test *), Bash(pnpm lint *), Bash(git commit *), Read(./src/**) ], deny: [ Bash(git push *), Bash(rm -rf *) ], defaultMode: acceptEdits }, env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-your-key-here }, hooks: { PostToolUse: [ { matcher: Edit, hooks: [ { type: command, command: .claude/hooks/after-edit.sh } ] } ], PreToolUse: [ { matcher: Bash, hooks: [ { type: command, if: Bash(rm *), command: .claude/hooks/block-rm.sh } ] } ] } }权限规则按deny ask allow顺序评估首个匹配生效。数组设置跨范围合并去重所以本地文件可以只写增量。3.3 config.tomlMCP 服务声明MCP 服务器用claude mcp add添加也可以直接写配置文件。项目级 MCP 配置放在.mcp.json或者用--mcp-config指定# .claude/config.toml [mcp_servers.filesystem] command npx args [-y, modelcontextprotocol/server-filesystem, ./src] [mcp_servers.github] transport http url https://api.githubcopilot.com/mcp/MCP 工具命名遵循mcp__server__tool格式权限规则支持正则比如mcp__filesystem__.*。工具定义默认延迟加载运行/mcp可以查看各服务器的加载成本。3.4 Skills可复用工作流Skills 通过SKILL.md扩展能力项目级放在.claude/skills/name/SKILL.md。前置元数据决定触发方式--- name: pr-summary description: 汇总当前 PR 的改动和评论生成审查摘要 allowed-tools: Bash(gh *) --- ## PR diff !gh pr diff ## PR comments !gh pr view --comments 请基于以上内容生成一份审查摘要列出风险点和建议。反引号命令语法会在发送给模型前执行 shell把结果注入上下文。disable-model-invocation: true表示只能用户手动调用user-invocable: false表示只允许模型自动调用。3.5 Hooks确定性自动化Hooks 在生命周期节点执行配置在 settings.json 的hooks字段。退出码 0 表示成功2 表示阻塞错误并把 stderr 反馈给模型其他码为非阻塞错误。#!/usr/bin/env bash # .claude/hooks/after-edit.sh # 编辑后自动跑类型检查失败则反馈给 Claude set -e if ! pnpm typecheck /tmp/typecheck.log 21; then echo 类型检查失败 2 cat /tmp/typecheck.log 2 exit 2 fi exit 0记得给脚本加执行权限chmod x .claude/hooks/*.sh。4. 验证请求确认 MCP 加载、Skills 触发、Hooks 执行配置写完不算完要逐项验证。启动 Claude Codecd your-project claude4.1 确认 MCP 服务加载在会话里运行/mcp输出会列出每个 MCP 服务器的状态、工具数量和加载成本。如果某个服务器显示未连接检查.mcp.json路径和命令是否可执行。用--strict-mcp-config可以强制只用指定配置排除全局干扰claude --strict-mcp-config --mcp-config ./.mcp.json4.2 确认 Skills 触发运行/help或直接输入/查看技能列表。手动触发/pr-summary如果技能没出现在列表里检查文件路径是否为.claude/skills/pr-summary/SKILL.md以及前置元数据的name字段是否和目录名一致。带paths限定的技能只在匹配文件被引用时激活。4.3 确认 Hooks 执行Hooks 默认静默用/hooks查看已配置的钩子。要看到执行日志在脚本里加输出或者启动时开调试claude --debug调试日志会打印每个 Hook 的触发事件、匹配器和退出码。改一个文件触发 PostToolUse观察终端是否出现脚本输出。如果没反应先确认 matcher 写的是工具名如Edit、Bash大小写敏感。4.4 确认 API 通道生效运行/status查看当前设置来源和模型。发一条测试请求claude -p 用一句话说明当前项目用什么包管理器 --output-format json返回 JSON 里能看到模型响应。如果报鉴权错误检查ANTHROPIC_BASE_URL是否为https://taotoken.net/api以及 Key 是否有效。模型对话入口可以在这里验证https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaude-code-setup5. 本篇常见错排查MCP 服务显示未连接最常见是命令路径问题。npx在非交互 shell 里可能找不到改用绝对路径或在 args 里加--yes。HTTP 传输的服务器检查 url 是否可达别把 UTM 参数带进 API 地址。Skills 不触发三种原因——目录层级不对必须是.claude/skills/name/SKILL.md、前置元数据缺description、或者disable-model-invocation设成了 true 导致模型不能自动调用。手动输入/技能名能触发说明文件没问题是自动调用条件不满足。Hooks 静默不执行先确认脚本有执行权限再确认 matcher 匹配的工具名正确。PreToolUse 的if字段用的是工具调用表达式写错会直接跳过。退出码 2 会阻塞操作如果发现命令被莫名拦截检查是不是某个 Hook 返回了 2。settings.json 不生效优先级从高到低是托管设置、命令行参数、本地项目设置、共享项目设置、用户设置。用/status看实际加载了哪些源。JSON 语法错误会导致整个文件被忽略用jq . .claude/settings.json验证格式。API 报 401 或 404401 是 Key 问题404 通常是 base url 写错。确认写的是https://taotoken.net/api结尾不要多加斜杠或路径。环境变量和 settings.json 里都配了的话环境变量优先。上下文被撑爆不相关任务之间运行/clear调查性任务用子代理隔离上下文需要时用/compact focus on X压缩。CLAUDE.md 超过 200 行也会挤占上下文果断精简。6. 把工作流固定下来配置搭好之后日常使用其实就几件事新项目跑/init生成 CLAUDE.md 再精简把团队规范写进.claude/rules/常用操作封装成 Skills确定性检查交给 Hooks外部工具通过 MCP 接入。每次改完配置用/mcp、/hooks、/status三个命令过一遍比事后排查省事得多。长期做编码和 Agent 任务的话Coding Plan 能覆盖更多调用量https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaude-code-setup配置字段对不上时接入文档是最快的参考https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaude-code-setup我自己的习惯是把.claude/目录整个提交到 git只有settings.local.json和 Key 留在本地。这样换机器或新人加入clone 下来就能跑不用再问“你那边怎么配的”。
返回列表