技术AI辅助编程CodexCursorClaude CodeAgentSkills工程效率

mattpocock/skills 技能库逐条整理:含义、用途与 LLM 对话用法

系统整理 Matt Pocock 的 Skills for Real Engineers:每个 Skill 解决什么问题、适合什么时候用,以及如何在 Codex、Cursor、Claude 与普通 LLM 对话中融入这些工程流程

上一篇文章我整理了 AIHero 的 Skills changelog: ubiquitous-language -> grill-with-docs。这篇继续往下走,专门整理 Matt Pocock 的 mattpocock/skills 技能库。

这套技能库的名字叫 Skills For Real Engineers。它不是“神奇提示词合集”,更像一组给 AI agent 使用的工程工作流:

  • 开工前追问需求;
  • 把业务术语写进上下文;
  • 把想法变成 PRD;
  • 把 PRD 拆成垂直切片 issue;
  • 用 TDD 小步实现;
  • 用诊断循环排查 bug;
  • 定期从架构层面审视代码库。

换句话说,它想解决的问题不是“让 AI 多写点代码”,而是“让 AI 按工程师认可的方式工作”。README 用四个常见翻车模式串起来:需求没对齐、术语太啰嗦、缺少测试反馈、架构熵增太快——上文列出的 skill 基本一一对应这些痛点。

说明:本文按 2026-06-03 我核对到的 mattpocock/skills README、skills/*/SKILL.md 与 AIHero changelog 整理。仓库变化很快,使用前建议再看一次 README 的 Reference 小节。

先理解:Skill 到底是什么

在 Codex、Claude Code、Cursor 这类工具里,Skill 可以理解成一份可复用的任务说明书。

普通提示词通常是这样:

帮我修一下这个 bug。

Skill 化之后会变成:

使用 /diagnose。
先建立可重复运行的反馈回路,再复现,提出可证伪假设,用 instrument 验证,最后修复并补回归测试。
不要在没有证据的情况下直接改代码。

差别在于:前者只说“目标”,后者规定“过程”。而 AI 编程最容易翻车的地方,往往不是目标不知道,而是过程太随意。

我会把 Skill 分成三种用法:

用法 适合工具 例子
安装成 slash command Claude Code、Codex /tdd/diagnose/grill-with-docs
改写成项目规则 Cursor .cursor/rules/diagnose.mdc
当作对话流程手动提示 任意 LLM “请按 grill-me 的方式先追问我,不要直接给方案”

所以,即使你不用 Claude Code,也能学这套方法。关键不是斜杠命令,而是把这些流程融入你和 LLM 的对话。

快速安装方式

官方 README 推荐用 skills.sh 安装:

npx skills@latest add mattpocock/skills

安装器会让你勾选要装到哪些 agent 上的技能,务必勾选 /setup-matt-pocock-skills。第一次在目标仓库里使用时,再运行:

/setup-matt-pocock-skills

它会让 agent 帮你确认几件事:

  • issue tracker 用 GitHub、GitLab、本地 Markdown(.scratch/),还是其他系统(Jira、Linear 等,以自由文本描述工作流);
  • triage 的五个状态角色(needs-triageneeds-infoready-for-agentready-for-humanwontfix)如何映射到你仓库里的 label;
  • 领域文档是单上下文(根目录 CONTEXT.md + docs/adr/)还是多上下文(CONTEXT-MAP.md),并写入 docs/agents/ 下的说明文件。

这一步很重要,因为后面的 to-prdto-issuestriagediagnosetddzoom-out 等技能会读取这些配置。没有项目上下文,Skill 很容易变成泛泛而谈。

推荐学习顺序

不要一开始全装全用。更合理的顺序是:

setup-matt-pocock-skills
-> grill-with-docs
-> to-prd
-> to-issues
-> tdd
-> diagnose
-> zoom-out
-> improve-codebase-architecture

如果你只想先试两个,我建议:

grill-with-docs + diagnose

一个解决“开工前没想清楚”,一个解决“出问题后乱猜”。

Engineering Skills:主力工程技能

这一组是最值得认真学的,适合真实项目中的日常代码工作。

1. setup-matt-pocock-skills

含义:初始化当前仓库的 agent 技能配置。

用途:告诉其他 Skill 这个项目怎么管理 issue、有哪些 triage label、领域文档和 ADR 放在哪里。

适合什么时候用

  • 第一次在项目中安装这套 skills;
  • 换了 issue tracker;
  • 团队调整了 triage label;
  • agent 不知道 CONTEXT.md 或 ADR 在哪里。

对话中怎么说

使用 /setup-matt-pocock-skills 初始化这个仓库。
请先检查 AGENTS.md、CLAUDE.md、CONTEXT.md、docs/adr 和 docs/agents 是否存在,
然后告诉我你准备写入哪些配置,确认后再修改文件。

产出AGENTS.mdCLAUDE.md 里的 ## Agent skills 块,以及 docs/agents/issue-tracker.mdtriage-labels.mddomain.md

2. grill-with-docs

含义:带文档沉淀能力的需求追问和领域语言对齐。官方定位与 /grill-me 同源,额外会把术语和架构决策写进项目文档。

用途:在动手前,让 agent 先“拷问”你的方案,找出含糊概念、边界条件、命名不一致和架构决策,并把重要结论写进 CONTEXT.md 或 ADR。

适合什么时候用

  • 需求还没讲清楚;
  • 业务术语容易混乱;
  • 你准备改一个已有系统;
  • 这个改动会影响模块边界或长期维护。

对话中怎么说

使用 /grill-with-docs。
我想给博客增加一个 AI 文章专题页。
请先阅读现有内容结构和路由,再追问我需求边界。
不要马上写代码。需要沉淀的术语和架构决策,请建议写入 CONTEXT.md 或 ADR。

产出:明确的需求边界、统一术语、可能更新的 CONTEXT.md 和 ADR。

3. to-prd

含义:把当前已经讨论清楚的上下文整理成 PRD,并发布到项目配置的 issue tracker。

用途:综合口头讨论、聊天记录和代码库理解,写成 PRD。它不会再采访用户,但会先探索仓库、梳理测试切入点(优先用已有接缝、尽量高层),并与你确认这些接缝是否符合预期,再按模板写出 PRD。

适合什么时候用

  • 已经通过 grill-with-docs 把问题问清楚;
  • 需要把想法变成正式需求;
  • 后续要拆 issue、排期或交给别的 agent 继续做。

对话中怎么说

使用 /to-prd。
基于刚才已经确认的需求,生成一份 PRD。
请包括 Problem Statement、Solution、User Stories、Implementation/Testing Decisions、Out of Scope。
发布到 issue tracker 时打上 ready-for-agent 标签,不要再重新发散需求。

产出:PRD(发布为 issue 或本地 Markdown 任务),并标记为 agent 可领取。

4. to-issues

含义:把 PRD 或计划拆成可独立领取的垂直切片 issue。

用途:避免 agent 一次性吞下一个大需求。每个 issue 都应该尽量独立、有明确验收标准、能被测试验证。

适合什么时候用

  • PRD 太大;
  • 想让 agent 分多轮实现;
  • 团队需要任务拆分;
  • 你想控制每次改动的范围。

对话中怎么说

使用 /to-issues。
请把这份 PRD 拆成 5 个以内的垂直切片任务。
每个 issue 都要包含背景、实现范围、非范围、验收标准和建议测试。
不要按技术层拆成“先写数据库、再写接口、再写页面”,要按用户可验证的结果拆。

产出:一组 GitHub/Linear/local Markdown issue。

5. tdd

含义:让 agent 按 Red -> Green -> Refactor 的测试驱动开发节奏工作。

用途:先写失败测试,再写最小实现让测试通过,最后重构。它能减少“AI 写了很多代码但没验证”的问题。

适合什么时候用

  • 修 bug;
  • 加功能;
  • 改核心逻辑;
  • 项目已有测试体系;
  • 你希望 agent 小步前进。

对话中怎么说

使用 /tdd 实现这个 issue。
请先找现有测试风格,然后写一个失败测试。
测试失败后再写最小实现。
通过后只做必要重构,并说明跑了哪些测试。

产出:失败测试、实现代码、通过的测试结果、必要重构。

6. diagnose

含义:结构化诊断 bug 或性能问题。

用途:避免 agent 看到报错就乱改。官方循环是:建立反馈回路 → 复现 → 提出可证伪假设 → instrument 验证 → 修复并写回归测试 → 清理与复盘。其中「建立反馈回路」是核心——没有可重复、可自动化的 pass/fail 信号,后面几步都很难可靠。

适合什么时候用

  • bug 难复现;
  • 性能退化;
  • 测试偶发失败;
  • 线上接口偶发 500;
  • 你不确定根因在哪里。

对话中怎么说

使用 /diagnose。
这个接口偶发返回 500。
请先建立可重复运行的反馈回路(失败测试、curl 脚本、最小 harness 等),再复现。
提出 3–5 个可证伪假设,每次 instrument 只改一个变量。
修复前先写回归测试,最后清理调试日志并说明根因。

产出:反馈回路、复现证据、假设与 instrument 结果、修复、回归测试、必要时对架构改进的建议。

7. triage

含义:按固定状态机处理 issue tracker 上的工单。

用途:给 issue 打类别bug / enhancement)和状态(五个 canonical 角色,映射到你在 setup 里配置的 label),必要时复现 bug、跑 grill-with-docs 补全信息,并为 ready-for-agent 写 agent brief。它依赖 /setup-matt-pocock-skills 中的 triage 配置。

适合什么时候用

  • issue 多了以后需要分拣;
  • 需要把工单推进到 ready-for-agentready-for-human
  • 团队想让 agent 帮忙整理 issue 上下文,而不是直接写代码。

对话中怎么说

使用 /triage,列出需要我关注的未分拣和 needs-triage 工单。
对 #42 给出 bug/enhancement 分类和状态建议;若信息不足先 needs-info,不要直接实现。

产出:分类与状态 label、triage 备注或 agent brief、必要时写入 .out-of-scope/ 的拒绝记录。

8. zoom-out

含义:让 agent 从局部代码跳出来,用系统视角解释当前模块。

用途:当你或 agent 陷在某个文件里时,要求它解释这个文件在整个系统中的角色、依赖关系和设计意图。

适合什么时候用

  • 接手陌生代码;
  • 开始重构前;
  • agent 对局部代码理解太机械;
  • 你想知道某个模块为什么这样写。

对话中怎么说

使用 /zoom-out。
请从整个系统角度解释 src/lib/posts.ts 的作用。
说明它和内容目录、路由生成、Markdown 渲染之间的关系。
不要先给修改建议,先讲清楚上下文。

产出:系统级解释、模块关系图、潜在风险点。

9. improve-codebase-architecture

含义:从架构角度寻找代码库的“加深”机会。

用途:识别浅模块、重复概念、边界混乱、接口不清晰等问题,并提出小步可执行的改进建议。

适合什么时候用

  • 项目越来越难改;
  • agent 连续生成代码后结构变乱;
  • 模块职责开始重叠;
  • 想做架构体检,但不想大重构。

对话中怎么说

使用 /improve-codebase-architecture。
请阅读 CONTEXT.md、docs/adr 和主要模块。
找出 3 个最值得改进的架构问题。
每个问题都要说明症状、原因、风险、建议的小步改法和验证方式。
不要直接大规模重构。

产出:架构问题清单、优先级、重构建议、验证路径。

10. prototype

含义:做一次性原型,不以生产质量为目标。

用途:在正式实现前快速探索设计。可以是可运行的终端原型(验证状态机、业务规则),也可以是同一 route 下可切换的多种 UI 方案。强调“扔掉原型”,避免把探索代码直接合进生产系统。

适合什么时候用

  • 状态机还没想清楚;
  • UI 方向有多个版本;
  • 需要快速比较交互方案;
  • 想先验证想法,不想污染正式代码。

对话中怎么说

使用 /prototype。
我想探索博客首页的 AI 专题入口。
请做 3 个明显不同的 UI 方向,放在一个临时 route 中切换预览。
这不是生产代码,目标是帮助我比较设计方向。

产出:一次性原型、可运行 demo、方案比较。

Productivity Skills:通用效率技能

这一组不只服务写代码,也适合写作、开会、研究和任务交接。

11. grill-me

含义:纯追问,不绑定代码库。

用途:让 LLM 像一个严格的技术合伙人一样追问你的计划,直到关键分支都清楚。

适合什么时候用

  • 写文章前梳理观点;
  • 做产品方案;
  • 准备技术分享;
  • 还没有进入代码实现。

对话中怎么说

使用 grill-me 的方式。
我想写一篇关于 AI Skills 的博客。
请连续追问我关键决策:目标读者、文章边界、案例、结论、反例。
在我回答完之前,不要帮我写正文。

12. caveman

含义:极度压缩表达,只保留技术准确性。

用途:减少 agent 输出废话,官方说明大约可节省 ~75% token。适合你已经知道背景,只想要高密度信息。

适合什么时候用

  • review diff;
  • 长上下文快满了;
  • 只想看结论;
  • agent 输出太啰嗦。

对话中怎么说

进入 caveman 模式。
只给事实、结论和下一步。
不要解释背景,不要客套。

13. handoff

含义:把当前对话整理成可交接文档。

用途:当一个 agent 会话快结束,或者你要换 Codex/Cursor/Claude 继续做时,把当前状态、已做决策、未完成事项、风险和下一步整理出来。

适合什么时候用

  • 长任务中途暂停;
  • 换工具继续;
  • 让另一个 agent 接手;
  • 准备发给同事。

对话中怎么说

使用 /handoff。
请把当前任务整理成交接文档:
目标、已经完成的改动、关键决策、未完成事项、风险、建议下一步、相关文件。

14. write-a-skill

含义:帮助你把自己的经验写成 Skill。

用途:当你发现某类任务反复出现,就把流程写成 SKILL.md,让 agent 以后稳定复用。

适合什么时候用

  • 你有固定博客写作流程;
  • 团队有固定代码 review 规范;
  • 项目有固定发布流程;
  • 你想把“每次都要解释”的东西沉淀下来。

对话中怎么说

使用 /write-a-skill。
我想创建一个 blog-research-writeup skill。
用途是:阅读外部文章、整理观点、结合个人实践、写成我博客的 Markdown 格式。
请先问我触发场景、输入、输出、流程和验收标准,再生成 SKILL.md。

Misc Skills:偶尔使用的工具型技能

这一组不是每天都用,但在特定场景下很实用。

15. git-guardrails-claude-code

含义:给 Claude Code 配置 Git 安全护栏。

用途:阻止危险 git 命令,比如误 push、reset --hardclean 等。适合对 agent 自主执行命令有顾虑的项目。

对话中怎么说

使用 git-guardrails-claude-code。
请配置 Claude Code hooks,阻止危险 git 操作。
配置前先告诉我会拦截哪些命令。

16. setup-pre-commit

含义:配置 pre-commit 检查。

用途:安装 Husky、lint-staged、Prettier、类型检查和测试等提交前校验,具体取决于项目技术栈。

对话中怎么说

使用 /setup-pre-commit。
请先识别当前项目的包管理器、lint、format、test 命令。
然后提出 pre-commit 配置方案,确认后再修改。

17. scaffold-exercises

含义:生成练习题目录结构。

用途:适合教程、课程、代码练习项目。它可以创建 section、problem、solution、explainer 等结构。

对话中怎么说

使用 /scaffold-exercises。
请为 TypeScript 类型体操课程生成 5 个练习目录。
每个练习包含 problem、solution 和 explainer。

18. migrate-to-shoehorn

含义:把测试里的 as 类型断言迁移到 @total-typescript/shoehorn

用途:这是很具体的 TypeScript 测试迁移工具。只有你使用相关测试风格时才需要。

对话中怎么说

使用 /migrate-to-shoehorn。
请扫描测试文件,把不安全的 as 类型断言迁移到 @total-typescript/shoehorn。
先列出影响文件,再执行迁移。

仓库里还有哪些非主线 Skill

mattpocock/skills 除了 README 列出的 18 个活跃 skill,还在子目录里放了其他内容。安装器默认不会把它们装进插件:

目录 代表 Skill 状态 我的建议
skills/deprecated/ ubiquitous-languageqadesign-an-interfacerequest-refactor-plan 作者标明不再使用 ubiquitous-language 能力已由 grill-with-docs 吸收;其余优先用 tdddiagnoseimprove-codebase-architecture
skills/in-progress/ reviewteachwriting-beatswriting-fragmentswriting-shape 开发中,README 未收录 review 从 Standards + Spec 两轴看 diff;写作类适合借鉴结构,别当工程主线
skills/personal/ edit-articleobsidian-vault 作者个人环境 可以学习 SKILL 写法,不建议照搬

changelog 里还提到过、但当前仓库已找不到独立目录的 domain-model,理解成并入 grill-with-docs 的历史路线即可。

我的原则是:

主力工程流程用 README Reference 里的活跃 skills;
deprecated 用来理解演进;
in-progress / personal 用来借鉴思路;
团队规范最好自己改写成项目内 skill。

如何融入日常 LLM 对话

如果你没有安装这些 Skill,也可以直接把它们当作“对话动作”来用。

方式一:显式点名流程

请按 /diagnose 的方式处理这个问题:
1. 先建立可重复运行的反馈回路。
2. 再复现并确认症状与用户描述一致。
3. 提出 3–5 个可证伪假设。
4. 用 instrument 逐项验证(一次只改一个变量)。
5. 写回归测试 → 修复 → 清理调试痕迹。

适合普通 ChatGPT、Claude、Gemini、Cursor Chat。

方式二:先声明角色,再限制动作

你现在不是代码生成器,而是需求澄清助手。
请按 grill-me 的方式追问我。
在需求边界、目标用户、非目标、验收标准没有明确前,不要给实现方案。

适合需求早期。

方式三:把 Skill 写入项目规则

例如在 Cursor 里写一个 .cursor/rules/tdd.mdc

当用户要求实现功能或修复 bug,并且项目已有测试时:
1. 先阅读现有测试风格。
2. 先写失败测试。
3. 只写让测试通过的最小实现。
4. 测试通过后再重构。
5. 最终说明运行过哪些测试。

这样你不用每次复制提示词,Cursor 的 agent 会在合适场景看到这条规则。

方式四:把 Skill 串成完整工作流

真实项目不要让 agent 从想法直接跳到代码。可以这样串:

/grill-with-docs
-> /to-prd
-> /to-issues
-> /tdd
-> /diagnose
-> /handoff

对应到人话就是:

先问清楚 -> 写成需求 -> 拆小任务 -> 小步实现 -> 出问题就诊断 -> 最后交接

使用案例一:写一篇技术博客

目标:看完一篇英文技术文章,写成中文博客。

可以这样和 LLM 对话:

请按 grill-me 的方式先追问我,不要直接写文章。
主题是:mattpocock/skills 如何帮助工程师使用 AI agent。
请确认:
1. 目标读者是谁;
2. 文章要解决什么问题;
3. 哪些 skills 必须解释;
4. 是否需要 Codex/Cursor/Claude 的落地方式;
5. 最后要不要给使用案例。

等问题问清楚后:

请把刚才讨论的内容整理成 PRD 风格的文章大纲。
包括标题、核心观点、章节结构、案例和参考资料。

最后再说:

请按这个大纲写成 Markdown 博客。
保持浅显易懂,避免堆砌术语。
每个 skill 都要解释:含义、用途、适合场景、对话示例。

这个流程其实是 grill-me -> to-prd -> 写作执行

使用案例二:实现一个新功能

目标:给博客增加一个“AI 专题”页面。

推荐对话:

使用 /grill-with-docs。
我想给博客增加一个 AI 专题页。
请先阅读当前路由、内容目录和首页结构。
然后追问我页面目标、筛选规则、展示字段、移动端表现和 SEO 要求。
不要马上写代码。

确认后:

使用 /to-prd,把刚才确认的内容整理成 PRD。

再拆任务:

使用 /to-issues,把 PRD 拆成 3 个垂直切片:
1. 内容筛选和数据结构;
2. 页面路由和列表展示;
3. SEO、空状态和构建验证。

实现时:

使用 /tdd 实现第一个 issue。
先补数据筛选测试,再写实现。

这个流程能避免 agent 一口气改首页、路由、样式、SEO,最后很难 review。

使用案例三:排查线上 bug

目标:某个接口偶发 500。

推荐对话:

使用 /diagnose。
问题:/api/report 偶发 500。
请按以下顺序:
1. 先建立反馈回路(失败测试或 curl 脚本),不要先改代码;
2. 复现并确认症状;
3. 提出 3–5 个可证伪假设,列出预测;
4. 用 instrument 验证,一次只改一个变量;
5. 有正确测试接缝时,先写失败回归测试再修复;
6. 清理 [DEBUG-...] 日志,说明根因。

如果 agent 急着改代码,可以立刻打断:

停止实现。
你还没有证明根因。
请回到 diagnose 流程,先给出证据。

这句话很重要。Skill 不是装上就一定执行完美,你仍然要监督它是否遵守流程。

使用案例四:代码库越来越乱

目标:做一次小型架构体检。

推荐对话:

使用 /improve-codebase-architecture。
请阅读 CONTEXT.md、docs/adr 和 src/lib、src/app 的核心文件。
找出 3 个最影响长期维护的问题。
每个问题请按:
症状 -> 影响 -> 可能原因 -> 小步改进方案 -> 验证方式
来输出。
不要直接修改代码。

如果需要进一步理解某个模块:

使用 /zoom-out。
请解释 src/lib/posts.ts 在整个博客系统中的位置,
包括它和 Markdown、frontmatter、静态路由、SEO 文件生成之间的关系。

这个组合适合定期运行,不一定要马上重构。很多时候,先把架构问题说清楚,本身就已经很有价值。

我的使用建议

第一,不要把 Skill 当成万能插件。它本质上是流程说明,执行质量仍然取决于模型、上下文、工具权限和你的监督。

第二,优先学主流程,而不是收藏所有 Skill。对大多数工程师来说,先掌握:

grill-with-docs
to-prd
to-issues
tdd
diagnose
handoff

已经能覆盖大部分场景。

第三,把团队自己的经验写成 Skill。Matt Pocock 的仓库最好当模板,不要原样照搬所有流程。比如你的博客项目可以沉淀:

blog-research-writeup
markdown-frontmatter-check
nextjs-static-blog-build-verify

第四,对第三方 Skill 保持安全意识。安装前读一下 SKILL.md,看它是否会要求执行命令、修改 Git、访问外部服务或写入敏感文件。Skill 是给 agent 的指令,指令本身也需要 review。

总结

Matt Pocock 这套 skills 最值得学的地方,是它把 AI 编程重新拉回工程纪律:

  • 不清楚就先追问;
  • 有共识就写文档;
  • 任务太大就拆小;
  • 写代码要有测试;
  • 修 bug 要有证据;
  • 架构变差要定期回头看;
  • 会话结束要能交接。

我会把它总结成一句话:

Skill 不是让 LLM 更像魔法师,而是让 LLM 更像守流程的工程师。

当你和 LLM 对话时,不要只说“帮我做”。更好的说法是:

请按某个工程流程帮我做,并且在流程没完成前不要跳步。

这才是 mattpocock/skills 真正值得借鉴的地方。

参考资料