HeyBinyang
← 返回开源
·Skills·AISkill

matt-pocock-skills

为真正工程师设计的技能,直接来自作者的 .claude 目录。

真正工程师的技能

我每天使用的代理技能,用于做真正的工程——而不是随性编码。

开发真实应用程序很困难。像GSD、BMAD和Spec-Kit这样的方法试图通过掌控过程来提供帮助。但这样做时,它们剥夺了你的控制权,并使过程中的错误难以解决。

这些技能被设计为小巧、易于适应和可组合。它们适用于任何模型。它们基于数十年的工程经验。随意摆弄它们,让它们成为你自己的。享受。

如果你想跟上这些技能的变更以及我创建的任何新技能,你可以加入我的时事通讯,与其他约6万名开发者一起:

注册时事通讯

为什么存在这些技能

我构建这些技能是为了修复我在Claude Code、Codex和其他编码代理中看到的常见故障模式。

#1:代理没有做我想做的事情

“没有人确切知道他们想要什么”

David Thomas 和 Andrew Hunt,《程序员修炼之道》

问题。软件开发中最常见的故障模式是误解。你认为开发人员知道你想要什么。然后你看到他们构建的东西——意识到他们根本没有理解你。

这在人工智能时代也是如此。你和代理之间存在沟通鸿沟。解决方案是进行一场拷问环节——让代理就你正在构建的内容向你提出详细问题。

解决方案是使用:

  • /grill-me — 用于非代码用途

  • /grill-with-docs — 与/grill-me相同,但增加了更多好东西(见下文)

这些是我最受欢迎的技能。它们帮助你在开始之前与代理对齐,并深入思考你正在进行的更改。每次想要做出更改时都每一次使用它们。

#2:代理过于啰嗦

使用统一语言,开发者之间的对话和代码的表达都源自同一个领域模型。

Eric Evans,《领域驱动设计》

问题:在项目开始时,开发人员和他们的软件服务对象(领域专家)通常说着不同的语言。

我与我的代理也有同样的紧张感。代理通常被扔进一个项目,并被要求随着进展搞懂行话。所以他们用一个词就能说清楚的地方用了二十个词。

解决方案是共享语言。它是一个帮助代理解码项目中使用的行话的文档。

示例

以下是一个来自我的course-video-manager仓库的CONTEXT.md示例。哪个更容易阅读?

  • 之前:“当课程某一节中的一堂课被‘实体化’(即在文件系统中分配了一个位置)时会出现问题”

  • 之后:“物化级联出现问题”

这种简洁性在每次会话中都得到回报。

这内置于/grill-with-docs中。它是一个拷问环节,但有助于你与AI建立共享语言,并记录难以解释的决策到ADR中。

很难解释这有多强大。它可能是这个仓库中最酷的技巧。试试看吧。

提示

共享语言除了减少啰嗦外,还有许多其他好处:

  • 变量、函数和文件使用共享语言进行一致命名

  • 因此,代理更容易导航代码库

  • 代理在思考上花费的令牌也更少,因为它可以使用更简洁的语言

#3:代码不工作

“始终采取小而有意的步骤。反馈的速度就是你的速度限制。永远不要承担太大的任务。”

David Thomas 和 Andrew Hunt,《程序员修炼之道》

问题:假设你和代理在构建内容上达成一致。当代理仍然产生糟糕的结果时会发生什么?

是时候审视你的反馈循环了。如果没有关于代码实际运行方式的反馈,代理将盲目飞行。

解决方案:你需要常见的反馈循环组:静态类型、浏览器访问和自动化测试。

对于自动化测试,红-绿-重构循环至关重要。这是代理先编写一个失败的测试,然后修复测试的地方。这有助于给代理一致的反馈水平,从而产生更好的代码。

我构建了一个/tdd技能,你可以插入任何项目。它鼓励红-绿-重构,并为代理提供了关于什么构成好测试和坏测试的充分指导。

对于调试,我还构建了一个/diagnosing-bugs技能,它将最佳调试实践封装成一个简单的循环。

#4:我们构建了一个泥球

“每天投资于系统的设计。”

Kent Beck,《解析极限编程》

“最好的模块是深层的。它们允许通过一个简单的接口访问大量功能。”

John Ousterhout,《软件设计哲学》

问题:大多数使用代理构建的应用程序都复杂且难以更改。因为代理可以极大地加快编码速度,它们也加速了软件熵。代码库以空前的速度变得复杂。

解决方案是一种激进的新方法,用于AI驱动的发展:关心代码的设计。

这内置于这些技能的每一层:

  • /to-spec 在创建规格之前询问你正在接触哪些模块

而且关键是,/improve-codebase-architecture 帮助拯救一个已经变成泥球的代码库。我建议每几天在你的代码库上运行一次。

总结

软件工程基础比以往任何时候都更重要。这些技能是我将基础知识浓缩成可重复实践的最佳努力,帮助你交付职业生涯中最好的应用程序。享受。

参考

这些技能在一个轴线上划分——谁可以调用它们。用户调用的技能只有在你输入它们时才可到达(例如/grill-me);它们的工作是编排。模型调用的技能可以由你调用,在任务适合时由代理自动调用;它们持有可重用的纪律。用户调用的技能可以调用模型调用的技能,但绝不能调用另一个用户调用的技能。

工程

我每天用于编码工作的技能。

用户调用

  • ask-matt — 询问哪种技能或流程适合你的情况。一个针对此仓库中用户调用技能的路由器。

  • grill-with-docs — 拷问环节,同时构建项目的领域模型,锐化术语,并内联更新CONTEXT.md和ADR。

  • triage — 通过分类角色的状态机移动问题。

  • improve-codebase-architecture — 扫描代码库中可深入的机会,将其呈现为可视化的HTML报告,然后对你选择的任何一个进行拷问。

  • setup-matt-pocock-skills — 为此仓库配置工程技能(问题跟踪器、分类标签、领域文档布局)。在使用其他工程技能之前,每个仓库运行一次。

  • to-spec — 将当前对话转换为规格并发布到问题跟踪器。无需面试——只是综合你已经讨论过的内容。

  • to-tickets — 将任何计划、规格或对话分解为一组追踪子弹任务,每个任务声明其阻塞边缘——以文本形式写入本地文件,或作为真实跟踪器上的本地阻塞链接。

  • implement — 构建规格或一组任务所描述的工作,在预先约定的接缝处驱动/tdd,并在提交前以/code-review结束。

  • wayfinder — 规划一大块工作,超过一个代理会话可以容纳的工作量,作为问题跟踪器上的调查任务共享地图——一次解决一个,直到通往目的地的道路清晰。

模型调用

  • prototype — 构建一次性原型来回答设计问题——一个可运行的终端应用程序用于状态/逻辑问题,或者几个可以从一个路由切换的截然不同的UI变体。

  • diagnosing-bugs — 针对难以处理的错误和性能回归的有纪律的诊断循环:重现 → 最小化 → 假设 → 检测 → 修复 → 回归测试。

  • research — 针对高信任度的原始来源调查一个问题,并将发现捕获为仓库中的引用Markdown文件,作为后台代理运行。

  • tdd — 具有红-绿-重构循环的测试驱动开发。一次一个垂直切片构建功能或修复错误。

  • domain-modeling — 积极构建和锐化项目的领域模型——将术语与词汇表进行挑战,用边缘案例场景进行压力测试,并内联更新CONTEXT.md和ADR。

  • codebase-design — 用于设计深层模块的共享纪律和词汇:一个小接口背后的大量行为,放置在干净的接缝处,可通过该接口测试。

  • code-review — 自某个固定点以来的差异进行两轴审查:标准(是否遵循仓库的编码标准,加上Fowler的坏味道基线?)和规格(是否忠实实现了原始问题/PRD?),作为并行子代理运行,这样两者不会互相污染。

生产力

通用工作流程工具,非代码特定。

用户调用

  • grill-me — 对一个计划或设计进行无情的面试,直到决策树的每个分支都被解决。

  • handoff — 将当前对话压缩成一个交接待办文档,以便另一个代理可以继续工作。

  • teach — 在多个会话中向用户教授新技能或概念,使用当前目录作为有状态的教学工作空间。

  • writing-great-skills — 编写和编辑优秀技能的参考资料:使技能可预测的词汇和原则。

模型调用

  • grilling — 对一个计划或设计进行无情的面试,直到决策树的每个分支都被解决。grill-megrill-with-docs背后的可重用循环。

分享