尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Claude Skills 官方指南发布:用 SKILL.md 与 MCP 搭建可复用 AI Agent 能力模块

Claude Skills 官方指南发布:用 SKILL.md 与 MCP 搭建可复用 AI Agent 能力模块 1. 从 Prompt 堆叠到能力模块我为什么开始认真对待 SKILL.mdClaude Skills 是 Anthropic 在 Claude 体系里推出的一套能力封装机制核心是用一个SKILL.md文件把某类任务的执行流程、触发条件、脚本和参考资料打包成可复用模块再通过 MCP 连接外部工具让 AI Agent 真正具备“按流程干活”的能力。它适合正在做 AI Agent、自动化工作流、企业 AI 应用或者被一堆重复 Prompt 折磨到想摔键盘的开发者。过去我们写 AI 应用基本是“用户 → Prompt → LLM → 输出”每次任务都要重新描述背景、约束、步骤经验沉淀不下来。现在越来越多系统变成“用户 → Agent → Skills → 工具 → 结果”Prompt 在减少能力模块在增加。我试过把同一个周报生成任务写成三段不同的 Prompt结果每次格式和口径都有偏差后来改成 Skill 封装触发词、步骤、输出模板全部固定稳定性立刻不一样。这篇就按官方指南的落地思路把 SKILL.md 骨架、MCP 配置片段、本地验证步骤以及如何通过 TaoToken 统一 Key/API 通道接入完整走一遍。2. TaoToken 前置统一 Key 与 API 通道别让接入拖慢验证在动手写 Skill 之前先把模型调用通道理顺。Claude Skills 本身是能力描述文件但真正执行时仍然要调用模型如果你同时用 Claude Code、API、Agent 框架Key 和 Base URL 分散管理会非常痛苦。TaoToken 在这里的角色是统一入口官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 不额外加 UTM。你需要先拿到 API Key入口在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 模型对话调试在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。如果你长期做编码类 Agent可以看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。控制台在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。Claude Code 相关接入参考 https://taotoken.net/claudecode?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite 。建议把 Key 放到环境变量里不要硬编码进 SKILL.md 或脚本后面所有验证都基于这个通道。3. SKILL.md 骨架与 MCP 配置可复制的工程结构3.1 目录结构官方推荐的 Skill 工程结构很清晰我按这个来sprint-planning/ ├── SKILL.md ├── scripts/ │ └── fetch_project_status.py ├── references/ │ └── team_capacity.md └── assets/ └── task_template.jsonSKILL.md是核心scripts放可执行脚本references放知识文档assets放模板资源。渐进式加载的设计让 Skill 不会一次性把所有内容塞进上下文而是先读 YAML 元信息再按需加载正文和引用节省 token 也降低上下文污染。3.2 SKILL.md 骨架下面是一个可直接改用的骨架注意 YAML 元信息里的name和description决定触发行为--- name: sprint-planning description: 自动规划项目冲刺任务。当用户说“规划冲刺”“创建任务”“安排迭代”时使用。 --- # Sprint Planning Skill ## 执行流程 1. 调用 MCP 工具获取项目当前状态 2. 读取 references/team_capacity.md 分析团队容量 3. 根据优先级规则建议任务排序 4. 调用 MCP 工具创建任务 5. 输出规划摘要 ## 错误处理 - 如果项目状态获取失败提示用户检查 MCP 连接 - 如果团队容量缺失使用默认值并在输出中标注 ## 示例 用户帮我规划下个冲刺 输出任务列表 优先级 容量说明3.3 MCP 配置片段MCP 是连接层负责让 Agent 能调用外部工具。以本地配置文件为例把项目管理系统接进来{ mcpServers: { project-tools: { command: python, args: [-m, project_mcp_server], env: { PROJECT_API_KEY: ${PROJECT_API_KEY}, TAOTOKEN_API_KEY: ${TAOTOKEN_API_KEY}, TAOTOKEN_BASE_URL: https://taotoken.net/api } } } }这里把 TaoToken 的 Key 和 Base URL 通过环境变量注入MCP Server 内部调用模型时统一走这个通道。注意不要把 Key 写死在 JSON 里用${}引用环境变量。3.4 脚本示例scripts/fetch_project_status.py负责拉取项目状态供 Skill 流程调用import os import requests def fetch_status(project_id: str) - dict: base os.environ.get(TAOTOKEN_BASE_URL, https://taotoken.net/api) key os.environ[TAOTOKEN_API_KEY] resp requests.get( f{base}/project/{project_id}/status, headers{Authorization: fBearer {key}}, timeout15, ) resp.raise_for_status() return resp.json() if __name__ __main__: print(fetch_status(demo-project))4. 本地验证从触发测试到成功结果4.1 触发测试先验证 Skill 是否在正确场景被触发。应该触发的输入帮我规划冲刺 创建任务 安排下个迭代不应该触发的输入今天天气怎么样 写个 Python 排序脚本如果“写个 Python 排序脚本”也触发了 sprint-planning说明description写得太宽泛需要收紧触发词。4.2 功能测试触发之后检查任务是否真正执行成功。重点看三件事任务是否创建、参数是否正确、MCP 调用是否成功。可以在脚本里加日志import logging logging.basicConfig(levellogging.INFO) logging.info(MCP call: create_task, payload%s, payload)4.3 对比测试官方给过一组对比数据无 Skill 和有 Skill 的差异很明显指标无技能有技能消息数152API 错误30token 消耗120006000我自己实测下来封装成 Skill 后同一个任务的交互轮次从十几轮降到两三轮token 消耗也明显下降。验证请求可以用 curl 直接打 TaoToken 通道curl -X POST https://taotoken.net/api/v1/messages \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-sonnet, messages: [{role: user, content: 帮我规划下个冲刺}] }返回结果里如果能看到任务列表和优先级建议说明 Skill MCP TaoToken 这条链路已经通了。5. 本篇常见错排查5.1 Skill 不触发最常见的原因是description太模糊。比如只写“项目管理”Claude 无法判断什么时候该用。改成“当用户说‘规划冲刺’‘创建任务’时使用”触发准确率会高很多。另外检查 YAML 格式name和description之间不能有语法错误。5.2 MCP 连接失败先确认 MCP Server 进程能独立启动再检查环境变量是否注入成功。如果报TAOTOKEN_API_KEY not found说明环境变量没传到子进程。可以在启动命令前加env | grep TAOTOKEN确认。Base URL 必须是https://taotoken.net/api不要多加路径。5.3 脚本执行超时fetch_project_status.py里设置了 15 秒超时如果项目系统响应慢可以适当调大但不要无限等待。建议加重试逻辑from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry session requests.Session() retry Retry(total3, backoff_factor0.5) session.mount(https://, HTTPAdapter(max_retriesretry))5.4 上下文污染如果 Skill 加载后模型开始答非所问检查references目录是不是塞了太多无关文档。渐进式加载的意义就是按需读取不要把整个知识库都塞进 SKILL.md 正文。5.5 多 Skill 冲突一个 Agent 同时加载多个 Skill 时不要假设自己是唯一技能。比如 design-skill 和 coding-skill 同时存在触发词要尽量不重叠。可以在description里加限定词比如“仅用于冲刺规划场景”。6. 接入与排障入口如果你在配置 SKILL.md 或 MCP 时遇到接入问题先去 API Keys 页面确认 Key 状态 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 再对照接入文档检查 Base URL 和请求格式 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。想先验证模型返回是否符合预期可以直接在模型对话页测试 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。如果你在做长期编码类 Agent需要稳定的调用通道可以看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。Claude Code 用户参考 https://taotoken.net/claudecode?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite 。控制台统一管理 Key 和用量 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。官网入口 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。
返回列表