)
1. 为什么你的 Claude Code 需要 Skills从重复提示词到可复用能力用 Claude Code 写代码的人大概都经历过这个阶段每次开新会话都要把同一套要求重新打一遍。「审查代码时按这个规范来」「重构时保持函数不超过 50 行」「提交前检查有没有 console.log 残留」。说一次两次还行说上二十次就开始烦了。Claude Code Skills 就是来解决这件事的。你可以把它理解成给 AI 编程助手准备的「技能包」——把一段固定的指令、一套工作流程、一批参考文件打包成一个目录之后用一条斜杠命令就能调用。它和普通的提示词模板最大的区别在于Skill 是文件系统里的实体可以带脚本、带模板、带示例Claude Code 会在需要时自动读取这些资源而不是把所有内容都塞进一次对话里。这套机制适合谁三类人最明显。第一类是团队里负责代码规范的开发者把 lint 规则、审查清单写成 Skill全组共用第二类是经常做重复性重构的人比如把 CommonJS 批量迁到 ESM、统一日期格式化工具写一次 Skill 反复用第三类是想把 AI 编程助手真正嵌进日常 CLI 工作流的人用claude命令直接触发技能而不是每次手动描述任务。这篇指南会带你走完整条路径先搞清楚 Skill 的目录结构和SKILL.md怎么写再动手做一个「代码审查 批量重构」的实战 Skill然后用 CLI 命令触发它最后通过 TaoToken 统一 Key 接入验证整条链路是通的。全程给可复制的配置片段和命令你跟着敲就行。需要先说明一点Skills 本身是 Claude Code 的能力和用哪个 API 入口无关。但如果你手上有多个模型供应商的 Key管理起来会很乱所以后面我会用 TaoToken 做统一接入一个 Key 走通 Claude Code 的请求。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 不带多余参数。2. Claude Code Skills 目录结构与 SKILL.md 编写规范先把概念落地。一个 Skill 在磁盘上就是一个文件夹文件夹名就是技能名。Claude Code 会在几个固定位置扫描这些文件夹找到后把SKILL.md的元信息读进来作为可调用的技能注册。目录结构长这样.claude/ └── skills/ └── code-review/ ├── SKILL.md # 必需技能定义与指令 ├── checklist.md # 可选参考文件 ├── templates/ │ └── report.md # 可选输出模板 └── scripts/ └── scan.sh # 可选辅助脚本.claude/skills/是项目级位置只对当前项目生效。如果你想让某个 Skill 在所有项目里都能用放到用户级目录~/.claude/skills/下。两个位置同名时项目级优先。核心文件是SKILL.md。它由两部分组成开头的 YAML frontmatter 和下面的 Markdown 正文。frontmatter 至少要有name和descriptiondescription特别关键——Claude Code 靠它判断什么时候该自动加载这个技能。写得越具体触发越准。一个最小可用的SKILL.md--- name: code-review description: 审查指定目录下的代码检查命名规范、错误处理、潜在性能问题并输出结构化报告。当用户要求代码审查、review、检查代码质量时使用。 --- # 代码审查技能 ## 执行步骤 1. 用 Glob 找出目标目录下所有源码文件忽略 node_modules、dist、.git。 2. 逐个读取文件按下面的检查项分析。 3. 汇总问题按严重程度排序输出 Markdown 报告。 ## 检查项 - 命名变量用 camelCase常量用 UPPER_SNAKE_CASE类用 PascalCase。 - 错误处理异步调用是否有 try/catch 或 .catch边界条件是否处理。 - 性能循环内是否有重复计算、重复 IO是否有可提取的公共逻辑。 - 安全是否有硬编码密钥、未校验的用户输入拼接。 ## 输出格式 按 严重 / 警告 / 建议 三档分组每条给出文件路径、行号、问题描述、修改建议。这里有个容易踩的坑description不要写成「一个用于代码审查的技能」这种空话。Claude Code 是靠语义匹配来决定加载时机的你得把触发场景写进去比如「当用户要求代码审查、review、检查代码质量时使用」。我试过把 description 写得太泛结果该触发的时候不触发不该触发的时候乱触发。正文部分就是给模型的指令。写法上建议用编号步骤因为模型对有序列表的执行稳定性明显更好。如果技能需要读取额外文件直接在正文里写清楚路径比如「参考checklist.md中的完整检查清单」Claude Code 会在执行时去读。还有一点Skill 的正文不是越长越好。它每次被调用都会占用上下文把真正需要模型遵守的规则写进去就行参考资料放独立文件按需读取。这是 Skills 相比「把所有要求塞进系统提示词」的核心优势。3. 可复制配置用 TaoToken 统一 Key 接入 Claude Code在写实战 Skill 之前先把接入层配好。Claude Code 默认读ANTHROPIC_API_KEY和ANTHROPIC_BASE_URL两个环境变量。我们用 TaoToken 的 API 入口做 Base URL一个 Key 统一管理。先拿 Key。打开 https://taotoken.net/api-keys 登录后创建一个 API Key复制出来。注意这个 Key 只在创建时完整显示一次丢了就得重建。然后配置环境变量。Linux / macOS 写进~/.zshrc或~/.bashrcexport ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你的TaoToken密钥Windows PowerShell 用$env:ANTHROPIC_BASE_URL https://taotoken.net/api $env:ANTHROPIC_API_KEY sk-你的TaoToken密钥如果你用的是 Claude Code 的 settings 文件方式可以在项目根目录建.claude/settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }这里三件套要写全Base URL、Key、Model ID。少任何一个都可能出现请求发不出去或者模型找不到的情况。Model ID 按你实际要用的填上面只是个示例。如果你同时用 Codex 或 Cline 这类工具它们的配置文件里也是同样的三件套逻辑。Codex 的auth.json里填 API KeyBase URL 在配置项里指定Cline 的 MCP 配置里 Base URL 和 Key 分开填。核心就一句话Base URL 指向 https://taotoken.net/api Key 用 TaoToken 生成的Model ID 填你要调用的模型。配完验证一下环境变量有没有生效echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_API_KEY | head -c 8第一条应该输出https://taotoken.net/api第二条输出 Key 的前 8 位。如果第一条是空的说明 shell 配置没重新加载执行source ~/.zshrc再试。4. 实战写一个代码审查 批量重构 Skill 并用 CLI 触发现在做正事。我们要建一个 Skill干两件事审查代码质量以及批量重构比如统一函数命名、提取重复逻辑。放在项目级目录方便跟着项目走。先建目录mkdir -p .claude/skills/review-refactor然后写SKILL.md--- name: review-refactor description: 对指定目录执行代码审查并支持批量重构。当用户要求审查代码、批量重命名、提取公共函数、统一代码风格时使用。 --- # 代码审查与批量重构技能 ## 模式一审查 1. 用 Glob 匹配目标目录下的源码文件排除 node_modules、dist、build、.git。 2. 读取每个文件检查以下项目 - 函数是否超过 50 行 - 是否有重复代码块连续 5 行以上相似 - 异步调用是否缺少错误处理 - 是否有硬编码的配置值 3. 输出报告每条包含文件路径、行号、问题类型、建议。 ## 模式二批量重构 1. 先执行审查列出所有可重构点。 2. 生成重构计划逐条说明「改哪个文件、改成什么」。 3. 等待用户确认后再执行修改。 4. 每改完一个文件输出 diff 摘要。 ## 约束 - 不修改测试文件除非用户明确要求。 - 不改变公开 API 的函数签名。 - 重构后必须保证原有测试能通过。这个 Skill 的关键设计是「先计划后执行」。批量重构最怕模型一口气改一堆文件改错了很难回滚。所以我在指令里强制它先出计划、等确认。这是实战里踩过坑总结出来的——早期版本直接让它改结果一次动了十几个文件有个函数签名被改了调用方全挂。Skill 建好后用 CLI 触发。Claude Code 的 CLI 支持直接传任务描述它会自动匹配已注册的 Skillcd /path/to/your/project claude 用 review-refactor 技能审查 src/ 目录先只出报告不要改如果你装了斜杠命令支持也可以在交互模式里直接输入/review-refactor。CLI 一次性调用更适合脚本化比如挂到 CI 里。批量重构的触发claude 用 review-refactor 技能把 src/utils/ 下所有日期格式化逻辑提取到 src/utils/date.js先给计划模型会先扫描、列出重复的日期格式化代码位置给出提取方案。你确认后它才动手。整个过程你能看到每一步在干什么而不是黑盒。5. 常见报错排查401、local proxy failed、reading choices、OAuth接入和调用过程中几个报错出现频率最高逐个说清楚。401 Unauthorized。最常见的原因是 Key 没生效或写错了。先确认环境变量echo $ANTHROPIC_API_KEY如果输出为空说明没配。如果输出的是占位符或者带引号检查有没有多写空格。还有一种情况是 Key 被复制时带了换行用echo $ANTHROPIC_API_KEY | wc -c看长度对不对。确认 Key 没问题后检查 Base URL 是不是https://taotoken.net/api末尾不要多加斜杠。local proxy failed。这个报错通常出现在网络层意思是请求没能到达目标地址。先测连通性curl -I https://taotoken.net/api如果返回 4xx 或 5xx说明地址可达但请求有问题如果直接超时检查本机网络和 DNS。注意不要在任何配置里写代理相关的设置Claude Code 直连即可。reading choices 报错。这个一般出现在响应解析阶段提示读取choices字段失败。原因通常是返回体不是预期的 JSON 结构可能是 Base URL 配错了请求打到了不兼容的端点。核对ANTHROPIC_BASE_URL是否精确等于https://taotoken.net/api不要带/v1之类的后缀。OAuth 相关报错。如果你之前用 OAuth 方式登录过 Claude Code本地可能残留了认证状态和 API Key 方式冲突。清理一下rm -rf ~/.claude/credentials.json然后重新用环境变量方式启动。Claude Code 会优先读环境变量里的 Key。排查顺序建议固定下来先echo环境变量确认三件套齐全再curl测端点连通最后看 Claude Code 版本是不是太旧。版本问题用claude --version查低于当前稳定版就升级npm install -g anthropic-ai/claude-codelatest6. 把 Skill 用起来从单次调用到长期编码工作流Skill 建好、接入配通之后真正的价值在于把它变成日常习惯。几个实用技巧。第一把高频操作都 Skill 化。除了代码审查和重构像「生成 API 文档」「写单元测试」「检查依赖漏洞」都可以做成独立 Skill。每个 Skill 只干一件事description 写清楚触发场景用的时候不用记命令直接描述任务Claude Code 自己匹配。第二Skill 要跟着项目走。把.claude/skills/提交到 Git 仓库团队成员拉下来就能用同一套技能。这比在群里发「审查代码时记得检查这几点」靠谱得多——规范变成了可执行的代码。第三批量重构一定要保留确认环节。前面 Skill 里写的「先计划后执行」不是可选项是必须项。模型再聪明也可能误判让它先出计划你过一眼成本很低能避免大范围改错。第四如果你要长期跑编码任务或者搭 Agent 工作流用 Coding Plan 会更划算入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。单次验证模型效果的话用模型对话页面就行https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 遇到配置问题先翻文档大部分坑里面都有说明。最后说个实际感受Skills 这套机制最舒服的地方是它把「提示词工程」变成了「文件管理」。你不再需要每次精心组织语言而是像维护代码一样维护技能定义改一次处处生效。对于每天和 AI 编程助手打交道的开发者来说这个转变省下来的时间比任何单次提示词优化都多。