作者公开了日常工程中使用的轻量 Agent 技能,强调模型无关、可组合和可按项目修改。支持以 Claude Code 插件订阅更新,或复制技能文件后自行定制。

这是我每天用于真正工程开发的 Agent skills——不是 vibe coding。
开发真正的应用很难。GSD、BMAD 和 Spec-Kit 等方法试图通过接管整个流程来提供帮助。但与此同时,它们也剥夺了你的控制权,并让流程中出现的 bug 变得难以解决。
这些 skills 的设计目标是小巧、易于调整,并且能够自由组合。它们适用于任何模型,凝聚了数十年的工程经验。尽管动手折腾,把它们改造成适合自己的样子。祝你用得开心。
如果你想持续关注这些 skills 的变化,以及我创建的任何新 skill,可以和大约 60,000 名其他开发者一起订阅我的 newsletter:
订阅 Newsletter
有两种安装方式,代表两种不同的理念。Claude Code plugin 会将完整的 skill 集合安装为一个受管理的只读 bundle,并在我发布更新时自动升级——你是在订阅它,而不是 fork 它。skills.sh 则会把可编辑的 skill 文件复制到你的项目中,让你可以随意修改,真正把它们变成自己的东西。两者选一个即可——如果都安装,每个 skill 都会出现两份。
claude plugins install mattpocock-skills
或者,在 session 中执行:
/plugin install mattpocock-skills
它已经进入 Claude Code 的官方 marketplace,因此不需要事先添加任何来源,而且更新会自动送达。
npx skills@latest add mattpocock/skills
选择你想要的 skills,以及要把它们安装到哪些 coding agents 上。安装程序允许你挑选需要的 skills——请确保其中包含 setup-matt-pocock-skills。
原生 Codex plugin 已列入 roadmap——参见 .agents/adr/0002-ship-as-a-claude-code-plugin.md。
你也可以在任何 Agent 中使用同一个安装程序——包括 Claude Code:
npx skills@latest add mattpocock/skills
它会把 skills 作为普通文件写入你的 repo,这些文件归你所有,也可以由你编辑。它不会在你不知情的情况下更新;当你想获取我的最新修改时,运行 npx skills update 即可。
在你的 Agent 中,每个 repo 运行一次。它会:
/triage 会使用 labels)我创建这些 skills,是为了修复自己在 Claude Code、Codex 和其他 coding agents 中经常遇到的典型失败模式。
“没有人确切知道自己想要什么。”
David Thomas 与 Andrew Hunt,《The Pragmatic Programmer》
问题:软件开发中最常见的失败模式是目标不一致。你以为开发者知道你想要什么,直到你看到他做出来的东西——这时你才意识到,他根本没有理解你的意思。
在 AI 时代也是如此。你和 Agent 之间存在沟通鸿沟。解决方法是进行一场 grilling session——让 Agent 针对你正在构建的东西提出细致的问题。
/grill-me——用于非代码场景/grill-with-docs——和 /grill-me 相同,但增加了更多好东西(见下文)这是我最受欢迎的两个 skills。它们能帮助你在动手之前与 Agent 对齐,并深入思考自己将要进行的改动。每次想做出修改时,都应该使用它们。
“有了通用语言,开发者之间的对话以及代码中的表达,都会源自同一个领域模型。”
Eric Evans,《Domain-Driven Design》
问题:在项目开始时,开发者和软件所服务的人(领域专家)通常说着不同的语言。
我在使用 Agents 时也感受到了同样的张力。Agents 通常会被直接丢进一个项目,并被要求边做边理解其中的术语。因此,原本一个词就能说明的事,它们却要用 20 个词。
解决方法是建立一套 shared language。它是一份帮助 Agents 理解项目术语的文档。
下面是我的 course-video-manager repo 中的一个 CONTEXT.md 示例。哪一个更容易理解?
改进前:“当课程某个 section 中的一节 lesson 被变成‘真实的’(也就是在文件系统中获得一个位置)时,会出现问题。”
改进后:“materialization cascade 出现了问题。”
这种简洁性会在一次又一次 session 中持续产生回报。
这项能力已经内置在 /grill-with-docs 中。它既是一场 grilling session,也能帮助你和 AI 建立 shared language,并把难以解释的决策记录到 ADR 中。
它的强大之处很难用语言形容。这可能是整个 repo 中最酷的一项技术。试试看,你自然就会明白。
除了减少冗长表达,shared language 还有许多其他好处:
“始终采取小而审慎的步骤。反馈速度就是你的速度上限。永远不要接手规模过大的任务。”
David Thomas 与 Andrew Hunt,《The Pragmatic Programmer》
问题:假设你和 Agent 已经就构建目标达成一致,但 Agent 产出的东西仍然一团糟,该怎么办?
这时就该检查你的反馈循环了。如果无法获得代码实际运行情况的反馈,Agent 就只能摸黑前进。
解决方法:你需要常见的整套反馈循环,包括静态类型、浏览器访问能力和自动化测试。
对于自动化测试而言,red-green-refactor 循环至关重要。Agent 要先编写一个失败的测试,然后再修复它。这样可以为 Agent 提供稳定一致的反馈,从而产出质量高得多的代码。
我构建了一个可以接入任何项目的 /tdd skill。它鼓励采用 red-green-refactor,并为 Agent 提供大量指导,帮助其辨别什么是好测试,什么是坏测试。
对于调试,我还构建了一个 /diagnosing-bugs skill。它把最佳调试实践封装进一个严谨的循环,并为每个阶段设置关卡。
“每天都要为系统设计投入精力。”
Kent Beck,《Extreme Programming Explained》
“最好的模块是深模块。它们通过简单的接口提供大量功能。”
John Ousterhout,《A Philosophy of Software Design》
问题:大多数用 Agents 构建的应用都非常复杂,而且难以修改。Agents 可以大幅提升编码速度,但也会加速软件熵增。Codebase 的复杂度正在以前所未有的速度上升。
解决方法是一种全新的 AI 驱动开发方式:真正重视代码设计。
这一理念已经融入这些 skills 的每一层:
/to-spec 会在创建 spec 之前,询问你将会改动哪些 modules/improve-codebase-architecture 会检查 codebase 中有哪些可以深化模块设计的机会,并把候选项交给你。我建议每隔几天就在 codebase 上运行一次。它是一项调查工具,而不是救援工具:面对真正陈旧的 codebase,它会找到真实存在的候选项,但不会替你解开那团乱麻软件工程基础比以往任何时候都更加重要。这些 skills 是我将这些基础知识浓缩成可重复实践的最大努力,希望能帮助你交付职业生涯中最出色的应用。祝你用得开心。
这些 skills 按照一个维度进行划分——谁能够调用它们。用户调用型 skills 只有在你亲自输入命令时才可触达(例如 /grill-me),它们的职责是编排流程。模型调用型 skills 既可以由你调用,也可以在任务适合时由 Agent 自动选用;它们承载的是可复用的工程纪律。用户调用型 skill 可以调用模型调用型 skills,但绝不会调用另一个用户调用型 skill。
ask-matt——询问哪种 skill 或工作流适合你当前的情况。它是这个 repo 中所有用户调用型 skills 的路由器。
grill-with-docs——一场 grilling session,同时还会构建项目的领域模型、优化术语,并直接更新 CONTEXT.md 和 ADR。
triage——通过由不同 triage 角色组成的状态机推进 issues。
improve-codebase-architecture——扫描 codebase,寻找深化模块设计的机会,以可视化 HTML 报告展示结果,然后针对你选中的候选项进行深入提问。
setup-matt-pocock-skills——为这些工程 skills 配置当前 repo,包括 issue tracker、triage labels 和领域文档布局。每个 repo 应先运行一次,再使用其他工程 skills。
to-spec——把当前对话转换成 spec,并发布到 issue tracker。不进行访谈——只负责综合你们已经讨论过的内容。
to-tickets——把任何计划、spec 或对话拆分成一组 tracer-bullet tickets,每张 ticket 都会声明自己的阻塞依赖关系——既可以作为文本写入本地文件,也可以在真正的 tracker 上创建原生阻塞链接。
implement——构建 spec 或一组 tickets 所描述的工作,在预先约定的接缝处驱动 /tdd,并在 commit 前通过 /code-review 完成收尾。
wayfinder——为一项庞大到单次 Agent session 无法容纳的工作制定计划,将其组织为 issue tracker 上由决策 tickets 构成的共享地图——逐一解决它们,直到通往目标的路径变得清晰。
prototype——构建一次性 prototype 来回答设计问题——对于状态或逻辑问题,生成单个可共享的 HTML 文件;对于 UI 问题,则创建多个差异显著、可从同一路由切换的方案。
diagnosing-bugs——用于疑难 bug 和性能回退的严谨诊断循环:建立一个能在该 bug 出现时变红的反馈循环 → 最小化问题 → 提出假设 → 添加检测手段 → 修复 → 编写回归测试。
research——基于高度可信的一手来源调查问题,并将研究结果整理成一份包含引用的 Markdown 文件,保存到 repo 中;它会作为后台 Agent 运行。
tdd——采用 red-green-refactor 循环的测试驱动开发。每次处理一个垂直切片,用于构建功能或修复 bug。
domain-modeling——主动构建并完善项目的领域模型——对照 glossary 质疑术语,通过边界场景进行压力测试,并直接更新 CONTEXT.md 和 ADR。
codebase-design——用于设计深模块的共享工程纪律与词汇:通过一个小型接口提供大量行为,将模块放置在清晰的接缝处,并能够通过该接口进行测试。
code-review——从固定起点开始,沿两个维度审查 diff:标准维度(是否遵循 repo 的编码规范以及 Fowler 的基础代码异味准则)和 spec 维度(是否忠实实现了原始 issue/spec)。两个维度由并行 sub-agents 分别执行,避免彼此干扰。
resolving-merge-conflicts——逐个 hunk 处理正在进行的 git merge 或 rebase 冲突,根据双方的一手来源追溯各自意图并完成解决,最后结束相应操作——绝不使用 --abort。
wizard——生成一个交互式 bash wizard,引导用户完成人类才能执行的步骤,例如配置基础设施、设置凭证或 CI secrets、操作不熟悉的第三方 dashboard,或者执行一次性 migration 或 cutover。
grill-me——围绕计划或设计对用户进行毫不留情的访谈,直到设计树上的每个分支都得到解决。
handoff——把当前对话压缩成一份 handoff 文档,让另一个 Agent 能够继续这项工作。
teach——跨多个 session 向用户教授一项新技能或概念,并把当前目录用作具有状态的教学工作区。
to-questionnaire——把一个你无法独自回答的决策转换成 Markdown 问卷,交给唯一能够回答它的人——可以异步填写,也可以在会议中共同完成。它会围绕问卷的发送方式进行深入提问(发给谁、需要对方提供什么),而不是追问问题本身。
wait-what——当某条消息让你无法理解时,立刻调用它。Agent 会补充你缺少的上下文,使用 CONTEXT.md 中的词汇,以直白易懂的语言重新说明。
grilling——围绕计划、决策或想法持续访谈用户,直到设计树上的每个分支都得到解决。它是 grill-me、grill-with-docs、triage、wayfinder 和 improve-codebase-architecture 背后可复用的访谈原语。
writing-for-agents——为 Agents 编写文档,包括 skills、AGENTS.md、CLAUDE.md,以及任何由 Agent 通过指针访问的文档。