)
1. 为什么你装了 Claude Skills 却总觉得没生效很多人第一次接触 Claude Skills会把它当成“更长的提示词”或者“更聪明的 Custom Instructions”。结果配置完发现该自动调用的没调用该按模板输出的还是自由发挥最后怀疑是不是自己装错了。问题往往不在安装动作而在于没搞清楚 Skills、Projects、MCP、Custom Instructions 这四者到底各自管什么。我先把结论摆出来Skills 教 Claude“怎么做”Projects 给它“背景知识”MCP 给它“外部工具”Custom Instructions 定“通用风格”。这四句话如果你能背下来后面 90% 的配置困惑都能自己判断。Skills 是一个包含SKILL.md、脚本和资源文件的文件夹Claude 在识别到任务匹配时才会动态加载属于“按需激活的程序性知识”。Projects 是静态上下文进了这个项目就一直带着。MCP 是连接外部 API 和实时数据的桥。Custom Instructions 是全局偏好影响你所有对话。这篇面向已经在用 Claude 的开发者重点不是科普而是给你能直接复制的settings.json、config.toml骨架一个可跑的 Skill 案例以及用 TaoToken 统一 Key 接入的完整步骤。看完你应该能判断手上这个需求到底该写 Skill、建 Project还是接 MCP。2. 四者能力边界与配置差异对照在动手之前先把边界理清楚。很多人把 MCP 和 Skills 混着用结果一个简单格式化任务也去起个 MCP server纯属浪费。维度SkillsProjectsMCPCustom Instructions加载方式任务匹配时动态加载项目内始终加载按需调用工具全局始终生效核心作用程序性知识/工作流静态背景知识外部服务与数据通用风格与角色上下文占用渐进式披露初始仅元数据持续占用调用时占用持续占用典型场景生成固定格式报告一个长期开发项目连 JIRA/数据库“始终用简洁语气”配置位置~/.claude/skills或上传 ZIP项目设置config.toml/settings.json账户设置关键差异在“加载时机”。Skills 采用渐进式披露初始只读每个技能的元数据几十个 token确定需要才加载完整内容。这意味着你装几十个 Skill 也不会把上下文撑爆。而 Projects 的内容是一直挂着的塞太多文件反而拖慢响应。注意Skills 依赖代码执行沙盒环境必须在设置里开启“代码执行和文件创建”否则脚本类 Skill 会直接失败。3. TaoToken 统一 Key 前置准备如果你同时用 Claude Code、Messages API 和网页版Key 管理会很乱。我的做法是用 TaoToken 做统一入口一个 Key 走通对话、编码和 API 调用省得每个平台单独配。先去官网注册并拿到 Keyhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content拿到 Key 后在控制台创建 API Keyhttps://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteAPI 基础地址统一用https://taotoken.net/api这一步别跳过后面settings.json和config.toml里的 base_url 都指向它。Key 建议用环境变量存别硬编码进配置文件尤其是要提交到 Git 的仓库。export TAOTOKEN_API_KEYsk-你的key4. 可复制配置settings.json 与 config.toml 骨架Claude Code 和 API 侧的配置格式不一样这里给两份骨架直接改字段就能用。4.1 settings.json 骨架Claude Code 侧{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的key }, skills: { directory: ~/.claude/skills, autoLoad: true }, permissions: { allow: [Bash(python:*), Read, Write] } }skills.directory指向你手动放置技能文件夹的位置。autoLoad打开后Claude Code 启动时会扫描该目录下的所有 Skill 元数据。4.2 config.toml 骨架MCP 侧[mcp_servers.filesystem] command npx args [-y, modelcontextprotocol/server-filesystem, /path/to/workspace] [mcp_servers.taotoken_bridge] command python args [bridge.py] env { TAOTOKEN_API_KEY ${TAOTOKEN_API_KEY} }MCP 的配置核心是commandargs每个 server 独立一段。注意别把 MCP 直连生产库测试环境跑通再上。4.3 一个最小 Skill 的目录结构my_report_skill/ ├── SKILL.md ├── scripts/ │ └── build_report.py └── resources/ └── template.mdSKILL.md的头部必须有 YAML frontmatterdescription写得好不好直接决定 Claude 会不会在正确时机调用它。--- name: weekly-report-builder description: 当用户要求生成周报、整理本周工作或输出固定格式汇报时使用。基于输入的任务列表生成结构化 Markdown 周报。 --- # 周报生成技能 ## 执行步骤 1. 读取用户提供的任务列表 2. 按“已完成/进行中/风险”三类归并 3. 套用 resources/template.md 的格式输出 ## Guidelines - 每条任务不超过两行 - 风险项必须标注负责人5. 案例实战安装、调用与验证一个 Skill下面用一个真实可跑的 Skill 走完整流程。目标让 Claude 把一段杂乱的待办列表转成固定格式的周报。5.1 安装手动放置方式最直接把文件夹丢进~/.claude/skillsmkdir -p ~/.claude/skills/weekly-report-builder/scripts cp SKILL.md ~/.claude/skills/weekly-report-builder/如果你在 Claude Code 里用插件市场也可以走命令/plugin marketplace add anthropics/skills /plugin install example-skillsanthropic-agent-skills5.2 调用在对话里直接提任务不要显式说“请调用某 Skill”让 Claude 自己匹配帮我把这些待办整理成周报 - 完成登录模块联调 - 支付接口还在等第三方回调 - 文档没写完有延期风险5.3 验证验证分两层。第一层看输出格式是否符合template.md第二层看调用链路是否真的走了 Skill。可以在 Claude Code 里查看日志确认 Skill 被加载。如果输出格式完全自由发挥说明description没匹配上回去改描述里的触发词。用 API 侧验证时请求体里带上代码执行工具curl https://taotoken.net/api/v1/messages \ -H x-api-key: $TAOTOKEN_API_KEY \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-sonnet-4-5, max_tokens: 1024, messages: [{role: user, content: 整理本周待办为周报}] }返回结果里如果出现结构化的三段式输出说明 Skill 生效了。想直接在网页端对比模型行为可以用模型对话入口https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite6. 本篇常见错排查Skill 不触发九成是description写得太泛比如只写“处理文档”。要写清楚“当用户要求 X 时使用”把触发场景写具体。脚本执行报错先确认“代码执行和文件创建”已开启。再检查脚本依赖是否在沙盒里可用沙盒不会自动装你的第三方包。MCP 连不上看command路径是否正确npx类命令首次运行需要联网拉包。环境变量没传进去也会静默失败用env字段显式声明。上下文被撑爆多半是把大文件塞进了 Projects而不是用 Skills。Skills 的渐进式披露就是为省上下文设计的重内容放 Skill别放 Project。Key 鉴权失败检查 base_url 是否写成https://taotoken.net/api注意不要多加路径。Key 用环境变量注入别写死在配置里。长期做编码和 Agent 任务的建议直接上 Coding Plan省得每次单独配 Keyhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite接入细节和参数说明都在文档里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite如果你用 Claude Code 的 Anthropic 兼容模式Key 管理页在这里https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite最后说个我踩过的坑一开始我把所有工作流都写成 Skill结果发现有些任务其实更适合放 Custom Instructions因为它是全局的不用每次匹配。判断标准很简单——需要“按需触发、带步骤、可能带脚本”的写 Skill需要“每次都生效的风格偏好”写 Custom Instructions需要“持续背景”建 Project需要“连外部系统”上 MCP。四者不是替代关系是分工关系。