Matt Pocock Skills最佳实践
mattpocock/skills 是由 TypeScript 专家 Matt Pocock 开源的一套面向 AI 编码助手(AI Coding Agents) 的标准化工程技能集(Agent Skills)。
该技能集旨在摒弃盲目代码生成的“Vibe Coding”模式,为 AI Agent 引入工程化约束与最佳实践,提供涵盖需求访谈、技术规格定义、测试驱动开发(TDD)、缺陷诊断及 GitHub Issue 自动化管理的全流程标准规范。
核心特性
- 知识库防污染沉淀:通过严格的领域字典(Glossary)与多上下文映射,实现跨需求的业务概念统一,同时隔离代码细节。
- Issue 跟踪集成:原生集成 GitHub Issues(依赖
ghCLI),实现自动创建与标签状态流转。 - 多 Agent 跨平台兼容:完美兼容 Claude Code、Codex CLI、Cursor、Cline 等支持 Agent Skills 规范的客户端。
2. 环境前置要求
在正式配置前,请确保本地开发环境满足以下依赖条件:
- Node.js 运行环境:建议版本 ≥ 18.0.0(用于通过
npx执行 Agent Skills 安装程序)。 - GitHub CLI 工具(可选,使用工单功能必选):安装 GitHub CLI (
gh) 并完成身份认证。
| |
3. 安装与配置步骤
用管理员权限打开 PowerShell 执行:
| |
在交互式选项中建议选择:
| |
安装后技能文件默认存储于用户家目录下的 .agents 路径
| |
技能更新与卸载
| |
项目初始化与知识库隔离架构【核心】
规则:每一个独立的代码仓库在引入该技能集时,仅需且必须执行一次 /setup-matt-pocock-skills
执行初始化后,AI Agent 会在项目根目录与 docs/agents/ 建立标准配置。
Before(裸仓库)→ After(跑完 /setup-matt-pocock-skills):
| |
防污染机制与 Multi-Context 实现路径
很多开发者担心:“连续开发多个需求后,CONTEXT.md 会不会变成充斥着乱七八糟代码细节的污染源?”
答案是:绝对不会。 框架通过以下三种机制保障知识库的高纯度:
###1. 懒加载(Lazy Creation)
初始化完成后不会强制生成空文件。只有当你第一次调用 /grill-with-docs 且真正收炼出明确的领域术语或业务约束时,Agent 才会创建 CONTEXT.md 或 docs/adr/。
具体示例: 假设你第一次跑 /grill-with-docs 澄清"K 线数据导入"需求,拷问过程中定义了「K 线」「日线」「预告开播」这些术语——AI 会自动生成:
| |
CONTEXT.md 样例:
| |
📌 关键: CONTEXT.md 只存业务词汇与规则约束,不存代码/接口/实现细节。ADR 只在"难以逆转、需要写下理由、有真实取舍"三个条件全部满足时才生成——不是每次都产。
2. 统一领域字典(Use the Glossary’s Vocabulary)
CONTEXT.md 存放的是跨需求共享的业务名词与不变量(例如定义什么叫“K 线”、什么叫“最大回撤算法”),而非特定需求的实现细节。AI 在后续任何开发中,都必须遵守该字典词汇,防止用词漂移(Vocabulary Drift)。
5. 核心命令清单 & 使用规范
🧭 万能导航:如果不确定当前场景该使用哪个技能,输入 /ask-matt 并描述你的诉求,Agent 会自动为你推荐最优的技能工作流。
| 命令 | 作用说明 | 推荐优先级 | 生成物 / 副作用 |
|---|---|---|---|
/grilling <描述> | 轻量版需求访谈,只拷问、不写文档 | ⭐⭐⭐⭐⭐ | 无文件产出——只在对话里问答 |
/grill-with-docs <描述> | 深度需求访谈,自动更新领域词典 | ⭐⭐⭐⭐⭐ | 📄 新增/更新 CONTEXT.md(有新术语时)📄 新增 docs/adr/NNNN-xxx.md(仅当出现难以逆转的架构决策) |
/to-spec | 将对话总结为技术规格并发布到 issue 追踪器 | ⭐⭐⭐⭐ | 🎫 GitHub Issue(远程模式) 📄 .scratch/<feature>/spec.md(本地模式) |
/implement | 按 spec/ticket 实现代码,自带完工纪律 | ⭐⭐⭐⭐ | 📝 修改源码文件(src/**)📝 新增/修改测试文件 🔀 一个 git commit |
/tdd | 严格 TDD:先写 failing test 再写实现 | ⭐⭐⭐⭐⭐ | 📝 交替新增测试文件与实现文件 🔀 通常配合多次小 commit |
/prototype | 快速原型验证 | ⭐⭐⭐ | 📝 新增原型代码文件(标注"prototype"字样) 🌿 建议提交到 throwaway 分支 |
/diagnosing-bugs | 标准化缺陷排查 | ⭐⭐⭐⭐⭐ | 主要为对话输出(假设+验证方案) 📝 可能新增回归测试文件 |
/code-review | 工程规范与安全性代码审查 | ⭐⭐⭐⭐ | 无文件产出——评审报告在对话里 |
/to-tickets | 将方案拆解为工单 | ⭐⭐⭐ | 🎫 多个 GitHub Issues(远程)或 📄 .scratch/<feature>/*.md 一 ticket 一文件(本地) |
/triage | 批量管理 Issue 状态 | ⭐⭐ | 🎫 修改远程 issue 的标签/评论 |
/handoff | 会话摘要,便于新窗口继续 | ⭐⭐⭐ | 📄 写入 OS 临时目录(不污染工作区),Windows 一般在 %TEMP%\claude-handoff-*.md |
/research | 技术调研 | ⭐⭐⭐ | 📄 在仓库既有的调研文档目录下新增 Markdown(带引用来源);无固定目录时会说明放哪 |
/resolving-merge-conflicts | 辅助解决合并冲突 | ⭐⭐ | 📝 修改冲突文件 🔀 完成 merge/rebase commit |
/improve-codebase-architecture | 架构审查与优化建议 | ⭐ | 📄 HTML 报告写入 OS 临时目录(不入库),自动打开浏览器 |
/ask-matt | 技能路由 | ⭐⭐⭐⭐⭐ | 无文件产出——只在对话里推荐 |
| 图例: 📄 = Markdown 文档 | 📝 = 源码 | 🎫 = 远程工单 | 🔀 = git commit |
💡 速记原则:
- 动代码的:
/implement、/tdd、/prototype、/resolving-merge-conflicts- 写文档到仓库的:
/grill-with-docs(领域词典)、/research(调研笔记)- 上传到工单系统的:
/to-spec、/to-tickets、/triage- 只在对话/临时目录的:
/grilling、/code-review、/diagnosing-bugs、/ask-matt、/handoff、/improve-codebase-architecture
📌 补充说明:关于命令表里的"远程 / 本地"
表格里 /to-spec、/to-tickets、/triage 三个命令都出现了 “远程” vs “本地” 两种产出形式。这是因为 skills 允许你选择"issue 存哪里"——跑 /setup-matt-pocock-skills 初始化时会问你:
“这个项目的工单(issue / spec / ticket)存到哪?”
- GitHub Issues(远程模式)—— 用
ghCLI 操作 GitHub Issues- GitLab Issues(远程模式)—— 用
glabCLI 操作 GitLab Issues- Local Markdown(本地模式)—— 每个 issue 就是仓库里的一个
.md文件,不依赖外部服务- Other(Jira / Linear 等)—— 自己描述工作流
你选的答案会写进 docs/agents/issue-tracker.md,后续所有 skills 都读这个配置来决定"发到哪"。
怎么选?
| 场景 | 推荐模式 |
|---|---|
| 团队协作、有 GitHub/GitLab 仓库、希望 issue 状态和讨论对所有人可见 | GitHub / GitLab 远程模式 |
| 个人项目 / 不想开外部账号 / 想让 issue 跟代码一起进 Git 版本控制 | 本地模式 |
| 公司统一用 Jira / Linear / 飞书等 | Other——初始化时详细描述工作流,skills 会尽力对齐 |
💡 补充: 无论选哪种模式,/handoff、/improve-codebase-architecture 生成的临时文件都始终放在 OS 临时目录,不受这里的模式选择影响——那是"会话性产出",不是"工单"。 |
6. 典型场景实战工作流
场景 1:普通业务功能开发(数据导入 / 后台接口)
推荐链路: /grill-with-docs → /to-spec → /implement → /code-review
每步的输入与产出对比:
| |
产出: 若过程中出现新术语,自动在根目录新增/更新:
| |
| |
产出: 一份 spec 发布到 issue tracker:
| |
产出: 拆分成多个可追踪的 ticket:
| |
| |
产出: 真正动源代码:
| |
| |
产出: 对话里输出评审报告(不写文件);发现的问题若需修复,会走另一个 commit。
场景 2:量化核心计算逻辑(指标 / 策略 / 回测)
⚠️ 强制规范: 涉及核心数值计算、资产结算等逻辑,必须强制走 /tdd 流程,先写 Failing Test 再写实现。
推荐链路: /grill-with-docs → /to-spec → /tdd
| |
产出: 若沉淀了"ATR"“真实波幅"等术语,更新 CONTEXT.md。
| |
产出: 一条 spec issue(含 seams 定义、user stories、testing decisions),用于指导后续 TDD 的测试点位。
| |
产出模式与 /implement 根本不同——是"红→绿"多轮交替:
| |
关键差异:
/implement:一次改到位、结束跑全量测试/tdd:先写红色测试 → 只写让它变绿的最少代码 → 再写下一个红色测试——每一步都必须先看到测试失败(避免"测试写完就绿"的假象)
📌 为什么核心业务红线要走 TDD: 数值计算的 bug 常常"看起来对但边界错”(如漏掉 0/负数/精度)。红→绿循环强迫你先想清楚该 pass 什么、该 fail 什么——这个思考本身就是最好的边界防护。
场景 3:算法验证与原型探索
推荐链路:/grill-with-docs → /prototype
| |
| |
场景 4:复杂缺陷定位与排查(Bug Fixing)
| |
场景 5:大型需求拆解与工单流转(团队协作)
| |
| |
| |
| |
场景 6:跨需求平滑交接与上下文清理(防止对话污染)
开发完一个需求准备换到下一个需求时:
- 在当前对话框输入
/handoff,导出当前需求的成果总结。- 产出位置: OS 临时目录(不污染工作区)。Windows 通常在
%TEMP%\下,macOS/Linux 在$TMPDIR/或/tmp/下。文件名类似handoff-<时间戳>.md - 产出内容: 已完成的部分、进行中的状态、下一步建议动作、推荐的 skills
- 产出位置: OS 临时目录(不污染工作区)。Windows 通常在
- 直接关闭当前对话窗口,新建一个干净的窗口。
- 新窗口第一句话把 handoff 文件路径丢给 AI(比如"读一下
C:\Users\<Your-Username>\AppData\Local\Temp\handoff-20260807-153000.md,继续上次的工作")。 - 新窗口中的 AI 会重新读取纯净的领域 Context + handoff 摘要,不会受到上一个需求繁杂调试对话的干扰。
9. 团队开发规范约定
- 一需求一窗口:每个需求开发完毕并 Commit 后,必须开启新的 AI 会话窗口,避免历史对话 Token 污染。
- 词汇统一原则:AI 产生的任何测试名、函数名与 Issue 标题,必须严格遵守
CONTEXT.md定义的领域术语。 - 核心业务红线:涉及核心数值计算、交易逻辑、资金安全的代码,必须采用
/tdd模式开发,不允许直接使用/implement跳过测试。 - 初始化规范:任何新项目或新拉取的仓库,在接入 AI 协同前必须运行一次
/setup-matt-pocock-skills。 - 冲突显性化:如果新的实现违反了已有的 ADR 决策,Agent 必须显式提示(如
Contradicts ADR-0007...),严禁静默覆盖。 - Plan Mode 优先(Claude Code 使用者):执行
/implement、/tdd等会改动代码的技能前,先按Shift+Tab切到 Plan Mode——AI 只读、不改,先给出改动计划,人工 review 通过再执行。这是防止"AI 改飞"的最关键护栏,尤其在生产代码/核心业务模块必须开启。