别让AI“自由发挥”了:mattpocock-skills 体验——用 Agent Skills 给 AI Coding Agent 装上 TDD 护栏 1. 为什么你的 AI Coding Agent 总在“自由发挥”如果你用 Claude Code 或类似的 AI Coding Agent 写过稍复杂的模块大概率遇到过这种场景你说“帮我加个权限控制”它很快吐出一大段代码结构看着挺像回事。结果一跑权限边界理解错了再看 diff它还顺手改了两个无关文件你让它修它开始在错误方向上打补丁越修越乱。问题不在模型智商而在流程。Agent 从第一步就没有被放进“需求澄清 → 规格 → 测试 → 实现 → 评审”的反馈环里它只能靠猜。猜对了是运气猜错了就是技术债。mattpocock-skills 这套 Agent Skills 解决的就是这件事。它不是又一个“帮我写代码”的提示词包而是一组面向真实工程开发的 skill 集合可以通过 skills.sh 安装到兼容 Agent Skills 标准的工具也可以作为 Claude Code plugin 使用。核心思路一句话不是教 Agent 更会猜而是逼 Agent 少猜。这篇聚焦它在 Claude Code plugin 场景下的落地交付可复制的 skills 目录骨架、settings.json 配置片段、一次完整 TDD 循环的验证动作以及 TaoToken 统一 Key/API 通道的接入位置。适合已经在用 Claude Code、想让 Agent 按测试先行执行的开发者。2. TaoToken 前置把 Key 和 API 通道先理顺在配置 skills 之前建议先把模型调用通道固定下来。原因很实际Agent Skills 会频繁触发模型请求TDD 循环里一次/implement可能连续调用十几次如果 Key 散落在多个环境变量、多个 provider 配置里排障时你根本分不清是 skill 逻辑问题还是通道问题。TaoToken 在这里的角色是统一 Key 和 API 通道。你可以在官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 了解整体能力API 入口是 https://taotoken.net/api不加 UTM。实际接入时把 Claude Code 的模型请求指向这个统一通道Key 只维护一份。具体操作路径先到 API Keys 页面生成一个 Key地址是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。生成后不要直接写进项目仓库而是放进 shell 的环境变量或 Claude Code 的 settings 文件里。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有各客户端的配置示例。注意Key 只放本地环境变量或用户级 settings不要提交到 git。团队协作时用各自的 Key不要共用。如果你还没决定用哪个模型跑 TDD 循环可以先去模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 试一下同一段需求在不同模型下的追问质量。TDD 场景对模型的指令遵循要求高先试再定比配好了再换省事。3. 可复制配置skills 目录骨架与 settings.json3.1 安装 mattpocock-skills官方推荐的安装方式是通过 skills.shnpx skillslatest add mattpocock/skills安装过程中会让你选择目标 agent务必勾选/setup-matt-pocock-skills。这个 setup skill 是后续所有流程的入口漏了它后面命令会找不到。如果你用的是 Claude Code plugin 方式安装后 skills 会落在项目的.claude/skills/目录下。一个典型的目录骨架长这样.claude/ ├── settings.json └── skills/ ├── setup-matt-pocock-skills/ │ └── SKILL.md ├── grill-with-docs/ │ └── SKILL.md ├── to-spec/ │ └── SKILL.md ├── to-tickets/ │ └── SKILL.md ├── implement/ │ └── SKILL.md ├── tdd/ │ └── SKILL.md ├── code-review/ │ └── SKILL.md └── ask-matt/ └── SKILL.md每个SKILL.md里定义了这个 skill 的触发条件、执行步骤和约束。/implement会驱动/tdd/code-review会分标准和规格两条线这些关系都写在各自的 SKILL.md 里。3.2 settings.json 配置片段Claude Code 的 settings.json 需要配置模型通道和 skill 加载路径。下面是一个可复制的片段把模型请求指向 TaoToken 统一通道{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-your-taotoken-key }, skills: { enabled: true, paths: [.claude/skills] }, permissions: { allow: [ Bash(npm test:*), Bash(npx vitest:*), Read, Edit ] } }几个关键点。ANTHROPIC_BASE_URL指向 TaoToken 的 API 入口这样 Claude Code 的所有模型请求都走统一通道。ANTHROPIC_API_KEY填你在 API Keys 页面生成的 Key。permissions.allow里放测试命令TDD 循环需要频繁跑测试提前放行能减少中断。提示如果你在多个项目里用同一套 skills可以把 settings.json 放到用户级目录~/.claude/settings.json项目级只覆盖差异部分。3.3 初始化项目配置装好之后在项目根目录跑一次/setup-matt-pocock-skills它会问你三件事Issue tracker 存在哪比如 GitHub Issues 或本地 markdown、Triage labels 哪些标签代表待处理和阻塞中、Domain documents 领域文档放哪个目录。回答完它会在项目里生成对应的配置文件和初始的CONTEXT.md。这一步别跳过。后面/to-tickets拆工单、/code-review按规格线评审都依赖这里定义的 tracker 和文档路径。4. 验证请求跑一次完整的 TDD 循环配置就绪后用一个真实小需求验证整条链路。假设要给一个已有的用户模块加“邮箱格式校验”需求边界清楚适合走完整流程。4.1 需求拷问/grill-with-docs 我要给用户注册加邮箱格式校验Agent 会开始追问校验在客户端还是服务端空邮箱怎么处理国际化域名要不要支持错误信息返回什么结构每个问题都逼你把模糊点提前暴露。追问结束后它会把术语和规则写进CONTEXT.md把设计决定写进 ADR。4.2 规格与工单/to-spec /to-tickets/to-spec把刚才的讨论整理成规格文档/to-tickets按规格拆成边界清楚的小工单并标清阻塞关系。你会看到类似这样的输出TICKET-001 [ready] 定义邮箱校验的公开接口签名 TICKET-002 [blocked by 001] 实现基础格式校验 TICKET-003 [blocked by 002] 补充边界用例测试 TICKET-004 [blocked by 003] 接入注册流程4.3 TDD 实现/implement TICKET-002/implement会驱动/tdd按红灯、绿灯、小步推进。第一步先确认测试边界然后写一个会失败的测试// email.test.ts import { validateEmail } from ./email; describe(validateEmail, () { it(rejects email without , () { expect(validateEmail(userexample.com)).toBe(false); }); });跑测试红灯npx vitest run email.test.ts # FAIL: validateEmail is not a function然后写最小实现让测试通过// email.ts export function validateEmail(input: string): boolean { return input.includes(); }再跑绿灯。接着补下一个边界用例重复红灯绿灯。整个过程 Agent 不会一次性生成一大坨代码而是小步走每步都有测试兜底。4.4 双轴评审/code-review评审分两条线。Standards review 看代码质量、风格、安全Spec review 看需求实现是否正确、边界是否覆盖。两条线分开出结论避免“代码漂亮但需求做错”或“需求对了但质量透支”这类混淆。5. 本篇常见错排查5.1/setup-matt-pocock-skills找不到安装时没勾选这个 skill。重新跑npx skillslatest add mattpocock/skills在选择列表里确认勾上。或者手动检查.claude/skills/下有没有setup-matt-pocock-skills目录。5.2 模型请求 401 或超时先确认 settings.json 里的ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY是否正确。Key 去 API Keys 页面重新生成一个对比。如果用的是项目级 settings检查有没有被用户级配置覆盖。接入文档里有各客户端的完整配置示例对照排查。5.3/tdd不按红灯绿灯走检查/implement是否真的驱动了/tdd。有时候 Agent 会跳过测试直接写实现这时候在会话里明确说“先写失败测试跑给我看”。另外确认permissions.allow里放行了测试命令否则 Agent 跑测试会被中断它可能就绕过测试了。5.4/to-tickets拆出来的工单还是太大规格文档写得太粗。回到/to-spec把验收标准写具体每个工单应该能在一次 TDD 循环里完成。如果工单超过半天工作量说明拆得不够细。5.5 CONTEXT.md 没生成/grill-with-docs的追问还没结束就中断了。这个 skill 需要你把所有分支问题回答完才会沉淀文档。如果中途退出重新跑一次它会接着问。5.6 评审结论和预期不符/code-review依赖规格文档和代码标准两份输入。如果规格文档缺失或太简略Spec review 就没法判断。先确认/to-spec的输出存在且完整。6. 把 Agent 放进工程纪律里这套 skills 用下来最大的感受不是提示词多高级而是它很清楚软件工程难在哪。难点从来不是让 AI 多写几行代码而是需求怎么对齐、边界怎么切、反馈怎么变快、代码怎么在几轮迭代后还站得住。如果你打算长期在项目里用 Claude Code 跑编码任务建议把 Coding Plan 也配上地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。它和 Agent Skills 配合能把模型调用和工程流程一起固定下来减少每次开新会话重新配环境的摩擦。先从一个小需求走完整流程跑通一次 TDD 循环再逐步把/grill-with-docs、/to-spec、/to-tickets加进日常。别一上来全量铺开流程本身也需要你适应。Agent 越强越要给它轨道不然它跑得越快偏得也越快。