这是我每天用于进行真实工程开发(而非随意编码)的代理技能集。
开发真实的应用程序很难。GSD、BMAD 和 Spec-Kit 等方法试图通过掌控流程来提供帮助。但在此过程中,它们剥夺了你的控制权,使得流程中的错误难以解决。
这些技能设计得小巧、易于调整且可组合。它们适用于任何模型。它们基于数十年的工程经验。随意修改它们,让它们成为你自己的工具。享受使用吧。
如果你想及时了解这些技能的更新以及我创建的任何新技能,可以加入我的通讯订阅,与约 60,000 名开发者一起:
- 运行 skills.sh 安装器:
npx skills@latest add mattpocock/skills-
选择你想要的技能,以及要安装它们的编码代理。确保选择
/setup-matt-pocock-skills。 -
在你的代理中运行
/setup-matt-pocock-skills。它将:- 询问你想使用哪个问题跟踪器(GitHub、Linear 或本地文件)
- 询问你在分类工单时应用的标签(
/triage使用标签) - 询问你想将创建的文档保存在哪里
-
完成 - 你已准备就绪。
我构建这些技能是为了解决我在 Claude Code、Codex 和其他编码代理中常见的失败模式。
"没有人确切知道他们想要什么"
David Thomas & Andrew Hunt,《程序员修炼之道》
问题。软件开发中最常见的失败模式是错位。你认为开发人员知道你想要什么。然后你看到他们构建的东西——你意识到他们根本没有理解你。
这在 AI 时代也是如此。你和代理之间存在沟通鸿沟。解决方法是进行深度问答会话——让代理向你提出关于你正在构建内容的详细问题。
解决方案是使用:
/grill-me- 用于非代码用途/grill-with-docs- 与/grill-me相同,但添加了更多功能(见下文)
这是我最受欢迎的技能。它们帮助你在开始之前与代理对齐,并深入思考你正在进行的变更。每次想要进行变更时都要使用它们。
使用通用语言时,开发人员之间的对话和代码表达都源自同一个领域模型。
Eric Evans,《领域驱动设计》
问题:在项目开始时,开发人员和为他们构建软件的人(领域专家)通常使用不同的语言。
我在代理中也感受到了同样的紧张关系。代理通常被放入项目中,并要求在使用过程中弄明白术语。所以它们会用 20 个词来表达只需 1 个词就能表达的内容。
解决方案是建立共享语言。它是一个帮助代理解码项目中使用的术语的文档。
示例
这里有一个来自我的 course-video-manager 仓库的 CONTEXT.md 示例。哪一个更易读?
- 之前:"当课程章节中的课程被设为'真实'(即在文件系统中获得位置)时存在问题"
- 之后:"物化级联存在问题"
这种简洁性在每次会话中都会带来回报。
这已内置于 /grill-with-docs 中。它是一个问答会话,但帮助你与 AI 建立共享语言,并在 ADR 中记录难以解释的决策。
很难解释这有多强大。它可能是这个仓库中最酷的技术。试试看吧。
Tip
共享语言除了减少冗长之外还有许多其他好处:
- 变量、函数和文件使用共享语言一致命名
- 因此,代码库对代理来说更易于导航
- 代理还在思考上花费更少的 token,因为它可以使用更简洁的语言
"始终采取小而谨慎的步骤。反馈率是你的速度限制。永远不要承担太大的任务。"
David Thomas & Andrew Hunt,《程序员修炼之道》
问题:假设你和代理就对构建什么达成了一致。当代理仍然产生糟糕的代码时会发生什么?
是时候看看你的反馈循环了。如果没有关于它生成的代码实际如何运行的反馈,代理将会盲目飞行。
解决方案:你需要常规的反馈循环:静态类型、浏览器访问和自动化测试。
对于自动化测试,红绿重构循环至关重要。这是代理先编写失败的测试,然后修复测试的地方。这有助于为代理提供一致的反馈级别,从而产生更好的代码。
我构建了一个 /tdd 技能,你可以将其插入任何项目。它鼓励红绿重构,并为代理提供大量关于什么是好测试和坏测试的指导。
对于调试,我还构建了一个 /diagnose 技能,将最佳调试实践封装在一个简单的循环中。
"每天都要投资于系统的设计。"
Kent Beck,《极限编程解析》
"最好的模块是深层的。它们允许通过简单的接口访问大量功能。"
John Ousterhout,《软件设计的哲学》
问题:大多数用代理构建的应用都很复杂且难以更改。因为代理可以极大地加速编码,它们也加速了软件熵的增加。代码库以前所未有的速度变得更加复杂。
解决方案是对 AI 驱动的开发采用一种全新的方法:关心代码的设计。
这已内置于这些技能的每一层:
至关重要的是,/improve-codebase-architecture 帮助你拯救已成为泥球的代码库。我建议每隔几天就在你的代码库上运行一次。
软件工程基础比以往任何时候都更重要。这些技能是我将这些基础浓缩为可重复实践的最佳尝试,帮助你交付职业生涯中最好的应用程序。享受吧。
我每天用于代码工作的技能。
- diagnose — 针对严重错误和性能回归的严格诊断循环:重现 → 最小化 → 假设 → 检测 → 修复 → 回归测试。
- grill-with-docs — 问答会话,根据现有领域模型挑战你的计划,完善术语,并内联更新
CONTEXT.md和 ADR。 - triage — 通过分类角色的状态机对问题进行分类。
- improve-codebase-architecture — 在代码库中寻找深化机会,参考
CONTEXT.md中的领域语言和docs/adr/中的决策。 - setup-matt-pocock-skills — 搭建每个仓库的配置(问题跟踪器、分类标签词汇、领域文档布局),其他工程技能会使用这些配置。在使用
to-issues、to-prd、triage、diagnose、tdd、improve-codebase-architecture或zoom-out之前,每个仓库运行一次。 - tdd — 使用红绿重构循环进行测试驱动开发。一次构建一个垂直切片的特性或修复错误。
- to-issues — 使用垂直切片将任何计划、规范或 PRD 分解为可独立获取的 GitHub 问题。
- to-prd — 将当前对话上下文转换为 PRD 并将其作为 GitHub 问题提交。无需访谈——只是综合你已经讨论过的内容。
- zoom-out — 告诉代理放大视野,对不熟悉的代码部分提供更广泛的背景或更高层次的视角。
- prototype — 构建一次性原型以充实设计——可以是用于状态/业务逻辑问题的可运行终端应用程序,或者是可以从一个路由切换的几个截然不同的 UI 变体。
通用工作流工具,不特定于代码。
- caveman — 超压缩通信模式。通过删除填充内容同时保持完整的技术准确性,将 token 使用量减少约 75%。
- grill-me — 就计划或设计接受严格的面试,直到决策树的每个分支都得到解决。
- handoff — 将当前对话压缩成交接文档,以便另一个代理可以继续工作。
- write-a-skill — 创建具有适当结构、渐进式披露和捆绑资源的新技能。
我保留但很少使用的工具。
- git-guardrails-claude-code — 设置 Claude Code 钩子以在执行之前阻止危险的 git 命令(push、reset --hard、clean 等)。
- migrate-to-shoehorn — 将测试文件从
as类型断言迁移到 @total-typescript/shoehorn。 - scaffold-exercises — 创建包含部分、问题、解决方案和解释的练习目录结构。
- setup-pre-commit — 设置 Husky pre-commit 钩子,包含 lint-staged、Prettier、类型检查和测试。