1. 从一次“它自己动了”的瞬间说起
先说结论:Claude Code 的 Skill 机制,能把/prd、/goal、/after-goal三个自定义命令串成一条从需求拆解到代码合入的自动化流水线。这篇会给出 Skill 的目录结构、命令触发配置、settings.json骨架,以及从需求到验收的完整跑通步骤,你复制后可以直接验证。
我试过在卡片实现完成后,还没来得及手动敲/after-goal,Claude Code 自己判断出“代码写完了,下一步该提交合入”,主动把提交、推送、打分、合入、更新卡片描述、关闭卡片全跑完了。没人叫它,它自己判断下一步该干什么,就干了。
这件事让我意识到,Skill 的价值不只是“帮你记住命令”,而是让 AI 能识别何时应该触发某个流程。下面把整套东西拆开讲清楚,包括目录怎么放、配置怎么写、命令怎么触发、跑起来会遇到什么坑。
2. 为什么需要把研发流程固化成 Skill
一个功能从需求到上线,通常要过这几道关:写 PRD → 拆卡片 → 写代码 → 提 CR → 合入 → 关卡片。每一步都要手动操作,工具还分散在需求系统、代码平台、Review 工具里,稍不注意就遗漏步骤,比如忘了关卡片、忘了在卡片里补实现总结。
效率低主要低在两处:重复性操作多,上下文切换成本高。更麻烦的是,这些流程知识只活在人的脑子里,新人接手要重新学一遍,AI 也帮不上忙,因为它不知道你的团队是怎么走的。
把流程固化成 Skill,本质是把“只活在你脑子里的流程知识”外化成 AI 可执行的步骤。一个好的 Skill 应该包含四样东西:触发条件、执行步骤(含具体命令和参数)、错误处理方式、关键注意事项。写 Skill 的过程,本身就是在梳理和沉淀团队流程。
三个阶段的分工是这样的:
| 阶段 | 命令 | 主导方 | 产出 |
|---|---|---|---|
| 需求拆解 | /prd | 人类定方向,AI 辅助结构化 | PRD 文档 + 任务卡片 |
| 逐卡实现 | /goal | AI 主导实现,人类验收 | 代码 + 测试 + 验证结果 |
| 提交收尾 | /after-goal | AI 全自动执行 | 合入 + 卡片闭环 |
3. TaoToken 前置:把模型接入配好
Skill 要跑起来,前提是 Claude Code 能稳定调用模型。这里用 TaoToken 做接入层,它提供兼容 Anthropic 的 API 端点,配置方式很直接。
官网地址:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
API 端点:https://taotoken.net/api
先在控制台创建一个 API Key,然后配置到 Claude Code 的环境变量里。Claude Code 读取的是ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY这两个变量:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的key"如果你用的是 Claude Code 的配置文件方式,可以在~/.claude/settings.json里写:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的key" } }配好之后先验证一下能不能通,别急着写 Skill。用一条最简单的请求测试:
curl https://taotoken.net/api/v1/messages \ -H "x-api-key: sk-你的key" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "max_tokens": 64, "messages": [{"role": "user", "content": "回复 ok"}] }'返回里有正常的content字段就说明通了。如果报 401,检查 Key 有没有多余空格;报 404,检查 base url 是不是写成了带/v1的完整路径,这里只需要写到/api。
注意:环境变量和 settings.json 两种方式选一种就行,同时配可能互相覆盖。建议用 settings.json,换项目时不用重新 export。
4. Skill 目录结构与命令触发配置
Claude Code 的 Skill 放在项目根目录的.claude/skills/下,每个 Skill 一个文件夹,文件夹名就是命令名。三个命令对应三个目录:
项目根/ ├── .claude/ │ ├── settings.json │ └── skills/ │ ├── prd/ │ │ └── SKILL.md │ ├── goal/ │ │ └── SKILL.md │ └── after-goal/ │ └── SKILL.md ├── CLAUDE.md └── tasks/每个SKILL.md用 frontmatter 定义元信息,正文写执行步骤。以/goal为例:
--- name: goal description: 根据卡片 ID 实现代码,包含测试与验证。当用户输入 /goal 或提到"实现卡片"时触发。 --- # /goal 卡片实现流程 ## 触发条件 用户输入 `/goal <卡片ID>`,或说"实现卡片 xxx"。 ## 执行步骤 1. 拉取卡片描述与验收标准 2. 读 CLAUDE.md 和现有类型定义,理解项目结构 3. 实现代码,最小侵入 4. 写单元测试,覆盖正常与边界场景 5. 跑 go vet / go build / go test,全绿才算完成 ## 注意事项 - 严格按卡片依赖顺序实现 - 发现遗留 bug 立即修复,不要留到后面/prd的 frontmatter 里 description 要写清楚“当用户描述一个新需求时触发”,/after-goal写“当卡片实现完成、需要提交合入时触发”。description 写得越具体,Claude Code 判断触发时机的准确率越高。
settings.json的骨架除了环境变量,还可以加权限白名单,避免每次执行命令都弹确认:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的key" }, "permissions": { "allow": [ "Bash(git add:*)", "Bash(git commit:*)", "Bash(git push:*)", "Bash(go test:*)", "Bash(go build:*)" ] } }注意:权限白名单只放你信任的命令。像
git push这种会改远端状态的,建议先手动跑通一遍再放进白名单。
5. 完整跑通:从需求到验收
5.1 第一阶段 /prd:先把需求想清楚
直接输入你的需求描述,比如“给诊断平台增加案例记录与反馈闭环功能”。AI 会先问几个澄清问题。这里有个小经验:不要去做选择题,用自己的话直接描述,AI 理解得更准确。
跑完之后会得到两样东西:一份结构化 PRD 存到tasks/prd-xxx.md,以及拆解出的任务卡片,每张包含任务描述、验收标准、依赖关系。卡片质量直接决定/goal的效果,好的卡片满足四点:任务明确可操作、有验收标准、有依赖关系、粒度足够小。
5.2 第二阶段 /goal:AI 拿到卡片自己干
输入/goal 实现卡片 xx-46,Claude Code 的执行链路是这样的:
第一步拉取卡片信息,第二步读CLAUDE.md和现有类型定义理解项目结构,第三步实现代码,第四步写测试,第五步跑go vet、go build、go test验证。整个过程不需要你介入,AI 自己规划执行路径。
跨包集成的卡片也一样能处理。关键改动包括导出原本未导出的函数、新增配置字段(保持向后兼容)、在 defer 块里处理写入逻辑、修复已有函数的边界 bug。/goal在这里体现出的能力是:它不只是写代码,而是真的在理解现有代码结构,以最小侵入的方式做集成。
5.3 第三阶段 /after-goal:最后一公里
代码写完,还剩提交、推送、打分、合入、更新卡片、关闭卡片。这五步在SKILL.md里写成固定流程:
# Step 1 提交,commit message 必须以卡片 ID 开头 git add <相关文件> git commit -m "卡片ID 功能描述..." # Step 2 推送,走 refs/for/ 路径,输出里会有 CR 编号 git push origin HEAD:refs/for/master # Step 3 打分并合入 Code-cli api get_review_info -n <CR编号> -o table Code-cli api set_review_score -r <仓库> -n <CR编号> -s 2 Code-cli api submit_review -r <仓库> -n <CR编号> # Step 4 更新卡片描述,--detail 会覆盖整个字段,先保留原内容再追加 CICD-cli card update --space <空间> --sequence <卡片号> \ --detail "<原有描述> 实现总结:核心改动、测试覆盖、验证结果、Commit 链接" # Step 5 关闭卡片,状态名必须先查 CICD-cli card next-statuses --space <空间> --sequence <卡片号> CICD-cli card update --space <空间> --sequence <卡片号> --status 已完成状态名一定要先查,不同项目空间可能不一样,有的是“已完成”,有的是“Done”,写死会失败。
6. 本篇常见错排查
Skill 不触发:先检查目录名和 frontmatter 的name是否一致,再看 description 有没有写清楚触发场景。description 太笼统(比如只写“实现代码”)会导致 AI 判断不准。
命令执行报权限错误:settings.json的 permissions 白名单没覆盖到,或者命令带了管道、重定向导致匹配失败。把完整命令前缀加进 allow 列表。
API 调用 401/404:回到第 3 节的 curl 测试。401 多半是 Key 问题,404 多半是 base url 写错,确认只写到/api。
commit 后代码平台没绑定卡片:commit message 没以卡片 ID 开头。这个格式要求写进SKILL.md的注意事项里,让 AI 每次都遵守。
卡片描述被覆盖丢失:--detail是覆盖不是追加。Skill 里要先读原描述,拼接后再写回。
依赖顺序错乱导致报错:/goal严格按卡片依赖顺序执行,别同时开多张有依赖关系的卡片。
7. 把流程跑顺之后
这套三阶段模式不只适用于某一个功能,任何需要从需求到上线的开发任务都能复用。/prd人类主导方向,/goalAI 主导实现、人类验收,/after-goal全自动收尾。
如果你想要更轻量、快速的全自动开发流程,/prd → /goal → /after-goal是务实的选择。三条命令走完从需求拆解到代码合入的全流程。
接入配置和 API Key 在控制台管理:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite
想先验证模型对话效果,可以直接在对话页试:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite
长期做编码和 Agent 任务的话,Coding Plan 更划算:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite
接入文档在这里:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite
最后留一个我踩过的坑:Skill 写完后别急着全自动,先手动把每个命令跑通一遍,确认参数和状态名都对,再交给 AI 自动触发。早期修正成本最低,这条在 AI 辅助开发里尤其重要。