1. 先搞清楚:Skills 到底解决了什么麻烦
如果你最近刷 GitHub,会发现一个叫 Skills 的东西突然到处都是。有个收集了 50 多个 Claude 技能的仓库已经 18K star,另一个叫 superpowers 的项目,把各种 Skills 包装成开发工作流,同样 18K。热度几乎不亚于当年 Prompt 模板满天飞的阶段。
但很多人点进去看完还是一头雾水:这不就是写个 Markdown 吗?跟 Prompt 有啥区别?MCP 又是干嘛的?
我用一句话先给你定性:Skills 是给 Agent 用的技能包,它把你的流程性知识变成可复用、按需加载的能力文件夹。Prompt 是你当场口头交代任务,MCP 是给 AI 开门的门禁卡,而 Skills 是你递给它的一本公司 SOP 手册——它自己会翻,翻到哪页用哪页。
这篇文章不聊概念空转。我会把 Skills 在 Claude Code、OpenCode 这类工具里的落地形态拆开,讲清 Prompt、MCP、Agent 三者的协作关系,然后给你两份可直接复制的配置骨架(settings.json 和 config.toml),最后用 TaoToken 统一 Key/API 通道跑一次验证请求,让你能自己判断:我装的这个 Skill,到底生效了没有。
适合谁看:正在用 Claude Code 或类似工具、想让 AI 稳定执行固定流程的人;被 Prompt 越写越长、Token 越烧越多困扰的人;以及想搞明白 Agent 架构里各部件分工的开发者。
2. 把 Prompt、MCP、Agent、Skills 四者关系摆正
2.1 用带新人的比喻一次讲透
把 Agent 想成一个刚入职的实习生。聪明、理解力强、啥都能聊,但你真让他干活,最大的问题不是智商,是不熟你家规矩。
Prompt 就是你站在他旁边当场口头交代:今天写个公众号开头,明天把语气改克制点。它适合一次性的、临场的指令,缺点也明显——对话一关,说过的话就没了。Prompt 是对话里当下给的自然语言指令,临时、反应式、只在这轮生效。
Skills 是你给他一本内部 SOP 手册。而且这手册不是一张长到让人窒息的 Word,它更像一个知识库文件夹,里面放规范、脚本、模板、参考资料。Agent 会在需要时自己去翻。
MCP 则完全不负责教新人干活,它只负责给新人开门禁卡。AI 再强,进不去你们公司的仓库、连不上外部系统,也是白搭。MCP 就是让 AI 应用安全连接外部系统、调用外部能力的那个通道。
2.2 渐进式披露:Skills 省 Token 的关键设计
这里有个核心设计叫 progressive disclosure,渐进式披露。你每天用的菜单栏就是它:点头像进菜单,再点设置,最后进复杂设置界面。目的不是一上来就给你一堆选项让认知负荷爆炸,而是分解成几部分,引导你从易到难处理。
放到 Skills 上就是:先放目录,再放章节,最后放附录。Skill 的元信息先加载一小段,让模型知道"有这么个手册,适用范围是啥"。当它判断这次任务真用得上,再把完整的 SKILL.md 读进上下文;还不够,再按需读文件夹里附带的其他文件。
这样既保证 Agent 准确执行,又在长轮对话里省下大量 Token。对话越长模型越笨几乎是共识,Token 在 Agent 架构设计上寸土寸金。
2.3 一张表看清四者分工
| 部件 | 角色 | 生效范围 | 典型载体 |
|---|---|---|---|
| Prompt | 当场口头指令 | 单轮对话 | 自然语言文本 |
| Skills | 可复用能力包 | 按需加载,跨会话 | 文件夹 + SKILL.md |
| MCP | 外部系统门禁卡 | 连接层,常驻 | 服务配置 |
| Agent | 总控中枢 | 编排调度 | 主循环 + 工具调用 |
看懂这张表,你就明白为什么说"几乎所有能用 workflow 完成的 AI 任务,都可以用 Agent + Skills 实现"。Agent 负责编排,Skills 负责具体能力,MCP 负责打通外部,Prompt 负责临场微调。
3. TaoToken 前置:统一 Key 与 API 通道
3.1 为什么接入前要先统一通道
Skills 生效与否,最终要落到"模型能不能被正确调用"上。如果你本地同时装了 Claude Code、OpenCode、Codex 好几个工具,每个工具一套 Key、一套 Base URL,排查问题时你根本分不清是 Skill 没加载,还是 Key 失效,还是通道不通。
我的做法是先用 TaoToken 把 Key 和 API 通道统一起来。它提供一个兼容的 API 入口,你拿一个 Key 就能在多个工具里复用,验证 Skills 时变量就少了一个。
官网入口在这里:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
API 基础地址(注意这个不带 UTM):https://taotoken.net/api
3.2 拿 Key 的正确姿势
进入控制台创建 API Key,建议按用途分 Key,比如一个给 Claude Code 用,一个给 OpenCode 用,方便单独吊销。
- 控制台:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
- API Keys 管理:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
注意:Key 只显示一次,创建后立刻复制到本地环境变量或配置文件,别贴在会提交到 Git 的文件里。
3.3 环境变量先铺好
不管你用哪个工具,先把环境变量设好,后面配置文件直接引用,避免明文散落各处。
# macOS / Linux,写入 ~/.zshrc 或 ~/.bashrc export TAOTOKEN_API_KEY="sk-你的key" export TAOTOKEN_BASE_URL="https://taotoken.net/api" # Windows PowerShell,写入用户环境变量 [Environment]::SetEnvironmentVariable("TAOTOKEN_API_KEY","sk-你的key","User") [Environment]::SetEnvironmentVariable("TAOTOKEN_BASE_URL","https://taotoken.net/api","User")设完重开终端,用echo $TAOTOKEN_API_KEY确认能打印出来。这一步别偷懒,后面配置报错十有八九是环境变量没生效。
4. 可复制配置骨架:settings.json 与 config.toml
4.1 Claude Code 的 settings.json
Claude Code 的配置放在~/.claude/settings.json。Skills 的全局目录是~/.claude/skills,配置里主要管模型通道和环境变量注入。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的key" }, "permissions": { "allow": [ "Read", "Write", "Bash(git:*)" ] }, "skills": { "directory": "~/.claude/skills", "hotReload": true } }几个关键点说明:
env块把通道指向 TaoToken 的 API 地址,Key 用你创建的那把。skills.directory指定全局 Skill 目录,所有项目共享。hotReload设为 true 后,2.1.0 版本以上支持 Skills 热重载,改完 SKILL.md 不用重启。
注意:如果你之前配过别的 Base URL,记得清掉旧的,否则可能被覆盖导致请求打到错误地址。
4.2 OpenCode 的 config.toml
OpenCode 的配置在~/.config/opencode/config.toml,Skill 目录是~/.config/opencode/skill(注意是单数 skill)。
[provider] name = "taotoken" base_url = "https://taotoken.net/api" api_key = "sk-你的key" [model] default = "claude-sonnet-4-5" [skills] directory = "~/.config/opencode/skill" enabled = trueOpenCode 装完 Skill 后需要退出重进一次才能识别,这点和 Claude Code 的热重载不同,别搞混。
4.3 一个最小可用的 SKILL.md 骨架
Skill 文件夹名必须是小写字母加连字符,比如hotspot-collector,不能有空格和大写。SKILL.md 是唯一必需文件,结构固定分两部分。
--- name: hotspot-collector description: 从多个平台采集最新热点并输出结构化列表,当用户需要每日选题或热点汇总时使用。 --- # 热点采集器 ## 指令 (Instructions) 1. 依次访问配置的平台列表,抓取最新条目。 2. 按热度与时效性排序,去重。 3. 输出格式:事件描述 + 来源 + 时间。 ## 示例 (Examples) 输入:开始今日选题生成 输出:TOP10 热点列表,每条含事件描述与核心角度。description 字段是灵魂,它决定 Agent 何时调用你。务必用第三人称,别把 Prompt 的坏习惯带过来。
- 优秀:
处理 Excel 文件并生成报告 - 不行:
我可以帮助你处理 Excel 文件 - 不行:
你可以使用这个来处理 Excel 文件
因为描述会被注入系统提示,视角不一致会导致识别问题。另外 SKILL.md 正文尽量控制在 500 行以内,效果最好。
5. 验证请求:确认 Skills 真的生效
5.1 先验证通道通不通
配置完别急着测 Skill,先用一条最简请求确认通道没问题。
curl https://taotoken.net/api/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: $TAOTOKEN_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-5", "max_tokens": 64, "messages": [{"role": "user", "content": "只回复两个字:通了"}] }'返回里能看到content字段有正常文本,说明 Key 和通道都 OK。如果这里就报 401,先回去检查 Key;报连接错误,检查 Base URL 有没有写错。
5.2 再验证 Skill 是否被加载
通道通了之后,在 Claude Code 或 OpenCode 里直接问它:
列出你当前可用的 skills,并说明每个的触发条件如果配置正确,它会把你~/.claude/skills或~/.config/opencode/skill下的 Skill 名称和 description 列出来。这一步能列出,说明目录扫描和元信息加载都正常。
5.3 最后跑一次真实触发
用你 Skill 里定义的触发关键词发一条指令,比如:
开始今日选题生成观察它的行为:是否按 SKILL.md 里的步骤走,输出格式是否符合你定义的规范。如果它只是普通聊天式回复,没有按流程执行,说明 Skill 没被真正加载,回到第 6 节排查。
想单独验证模型对话能力,可以直接用模型对话入口测:https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
6. 本篇常见错排查
6.1 Skill 不生效的四个高频原因
目录名不合规。文件夹名带了大写或空格,比如HotSpot Collector,工具直接忽略。改成hotspot-collector。
放错目录。Claude Code 是~/.claude/skills,OpenCode 是~/.config/opencode/skill,两者不通用。而且初始没有这个文件夹,要手动创建。
没重启。OpenCode 装完必须退出重进;Claude Code 2.1.0 以上支持热重载,但如果你版本低,也得重启。
description 写得太模糊。比如只写"处理数据",Agent 判断不出何时该用,自然不调用。把触发场景和关键词写进去。
6.2 通道类报错对照
| 报错 | 可能原因 | 处理 |
|---|---|---|
| 401 Unauthorized | Key 错误或未生效 | 重设环境变量,重开终端 |
| 404 Not Found | Base URL 路径写错 | 确认为 https://taotoken.net/api |
| 连接超时 | 网络或地址不可达 | 检查地址拼写,确认服务可用 |
| 模型不存在 | model 名写错 | 换成配置里支持的模型名 |
6.3 长对话变笨、Token 暴涨
这通常不是 Skill 的问题,而是你把太多内容塞进了 SKILL.md 正文。记住渐进式披露:元信息先加载,正文按需读,附录最后读。把大段参考资料拆成独立文件,在 SKILL.md 里用相对路径引用,而不是全塞进主文件。
提示:如果你在排查接入层问题,优先看 API Keys 和接入文档,别一上来就怀疑 Skill 写错了。
- API Keys:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
- 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
6.4 长期跑编码和 Agent 任务
如果你打算把 Skills 用在长期的编码流程或自动化 Agent 上,单次调用成本会累积,建议用 Coding Plan 把额度管起来,比零散调用更可控。
- Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
7. 把第一个 Skill 固化下来
Skills 这波热度不是圈内人又发明新词。带新人最爽的状态,从来不是他能说会道,而是你给他一套手册,他自己能翻、能执行、能自检、能迭代。
今天你就可以动手:把官方那个 skill-creator 装上,然后把你最常用的一个动作固化下来。安装很简单,在 Claude Code 或 OpenCode 里直接发一句:
安装这个 skill,项目地址为 https://github.com/anthropics/skills/tree/main/skills/skill-creator或者把 Skills 文件夹直接拖进你的全局目录。装完用第 5 节的方法验证一遍,确认它真的被加载、真的按流程执行。
做完这一个,当它跑起来的那一瞬间,你就懂了:Skills 的价值在于复用。明天你会想做第二个,后天你会想把所有流程都搬进去。
如果你在 Claude Code 里深度使用,配合 Anthropic 兼容通道会更顺:https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
先把通道跑通,再把 Skill 写对,最后用真实触发验证。这三步走完,你手里的 Skills 才算真正生效,而不是躺在文件夹里吃灰。