文章信息
- 日期
- 分类
- Ai
- 阅读时长
- 9 分钟读完
- 编号
- 0012
- 阅读
- 0
真正工程师的技能
我每天都用我的代理技能来进行真正的工程,而不是氛围编码。
开发真正的应用程序很困难。 GSD、BMAD 和 Spec-Kit 等方法试图通过拥有流程来提供帮助。但这样做时,它们会夺走您的控制权,并使流程中的错误难以解决。
这些技能被设计得很小、易于适应且可组合。它们适用于任何模型。它们基于数十年的工程经验。和他们一起玩。让它们成为你自己的。享受。
如果您想跟上这些技能的变化以及我创建的任何新技能,您可以加入我的时事通讯中的约 60,000 名其他开发人员:
订阅时事通讯
安装(30 秒设置)
插件会自行更新。 skills.sh 将可编辑文件复制到您的项目中,然后您手动更新它们。每个代理选择一个,因为安装两者都会让你的每项技能都获得两次。
1. 获得技能
克劳德代码
claude plugin install mattpocock-skills@claude-plugins-official
默认情况下会自行更新。
法典
codex plugin marketplace add mattpocock/skills
codex plugin add mattpocock-skills@mattpocock
启动时自行更新。
GitHub Copilot(__TERM_ 和 VS Code)
copilot plugin marketplace add mattpocock/skills
copilot plugin install mattpocock-skills@mattpocock
然后,添加一次到~/.copilot/settings.json:
{
"extraKnownMarketplaces": {
"mattpocock": { "source": { "source": "github", "repo": "mattpocock/skills" }, "autoUpdate": true }
}
}
在 VS Code 中,运行 Chat: Install Plugin From Source 并输入 https://github.com/mattpocock/skills。它每天更新。
Gemini __TERM_(手动更新)
gemini skills install https://github.com/mattpocock/skills.git --path skills/engineering
gemini skills install https://github.com/mattpocock/skills.git --path skills/productivity
重新运行这两个命令以进行更新。
任何其他代理或可编辑文件(手动更新)
npx skills@latest add mattpocock/skills -a <agent> # cursor, opencode, devin, windsurf, amp, pi; omit -a to choose
当安装程序询问要采用哪些技能时,请包含“setup-matt-pocock-skills”。要更新,请运行“npx Skills@latest update”,然后重新运行“add”以获取新技能。
2. 运行 /setup-matt-pocock-skills
在您的代理中,每个存储库运行一次。它将:
- 询问您想要使用哪个问题跟踪器(GitHub、GitLab、本地文件或您描述的任何其他内容)
- 询问您在对工单进行分类时应用什么标签(“/triage”使用标签)
- 询问您要将我们创建的任何文档保存在哪里
3. Bam - 你准备好__学期_了。
为什么存在这些技能
我构建这些技能是为了解决我在 Claude Code、Codex 和其他编码代理中看到的常见故障模式。
#1:特工没有做我想做的事
“没有人确切知道自己想要什么”
David Thomas 和 Andrew Hunt,务实的程序员
问题。软件开发中最常见的故障模式是未对准。你认为开发人员知道你想要什么。然后你看到他们建造的东西 - 你意识到它根本不理解你。
这在人工智能时代也是如此。您和代理之间存在沟通障碍。解决此问题的方法是进行烧烤会议 - 让代理向您询问有关您正在构建的内容的详细问题。
修复是使用:
/grill-me- 用于非代码用途/grill-with-docs- 与/grill-me相同,但添加了更多好处(见下文)
这些是我最受欢迎的技能。他们帮助您在开始之前与代理保持一致,并深入思考您正在做出的改变。每当您想要做出改变时,请使用它们。
#2:代理太冗长了
使用无处不在的语言,开发人员之间的对话和代码的表达都源自同一个领域模型。
Eric Evans,领域驱动设计
问题:在项目开始时,开发人员和他们为其构建软件的人员(领域专家)通常使用不同的语言。
我和我的经纪人也感受到了同样的紧张。座席通常会被投入到一个项目中,并被要求弄清楚他们的术语。所以他们用 20 个单词,而 1 个单词就够了。
修复这个问题是一种共享语言。这是一份帮助代理解读项目中使用的术语的文档。
<摘要> 示例 </摘要>
这是一个示例 glossary(在该固定提交中仍名为“CONTEXT.md”,在技能重命名惯例之前),来自我的“course-video-manager”存储库。哪一篇更容易阅读?
- 之前:“当课程的某个部分中的课程变得‘真实’时(即在文件系统中给出一个位置),就会出现问题”
- 之后:“物化级联存在问题”
这一决定在一次又一次的训练中得到了回报。
这是内置于 /grill-with-docs 中。这是一场拷问会议,但可以帮助您与人工智能建立共享语言,并在 ADR 中记录难以解释的决策。
很难解释它的威力有多大。这可能是这个仓库中最酷的技术。尝试一下,然后看看。
[!提示] 共享语言除了减少冗长之外还有许多其他好处:
- 变量、函数和文件的命名一致,使用共享语言
- 因此,代理的代码库更容易导航
- 代理还在思考上花费更少的代币,因为它可以使用更简洁的语言
#3:代码不起作用
“始终采取小而深思熟虑的步骤。反馈率就是你的速度限制。永远不要承担太大的任务。”
David Thomas 和 Andrew Hunt,务实的程序员
问题:假设您和代理在构建内容上达成了一致。当代理_still_产生垃圾时会发生什么?
是时候看看你的反馈循环了。如果没有对其生成的代码实际运行方式的反馈,代理将盲目飞行。
修复:您需要通常的反馈循环部分:静态类型、浏览器访问和自动化测试。
对于自动化测试,红绿重构循环至关重要。这是代理首先编写失败的测试,然后修复测试的地方。这有助于为代理提供一致的反馈水平,从而产生更好的代码。
我已经构建了一个 /tdd 技能,您可以将其插入到任何项目中。它鼓励红绿重构,并为代理提供关于什么是好的测试和坏的测试的大量指导。
为了进行调试,我还构建了一个 /diagnosing-bugs 技能,将最佳调试实践包装到一个严格的循环中,并逐步进行门控。
#4:我们建造了一个泥球
“_每天_都投资于系统的设计。”
Kent Beck,极限编程解释
“最好的模块是深入的。它们允许通过简单的界面访问许多功能。”
John Ousterhout,软件设计哲学
问题:大多数使用代理构建的应用程序都很复杂且难以更改。由于代理可以从根本上加快编码速度,因此它们还可以加速软件熵。代码库以前所未有的速度变得更加复杂。
解决这个问题的是一种全新的人工智能驱动开发方法:关心代码的设计。
这是内置于这些技能的每一层中的:
/to-spec在创建规范之前询问您正在接触哪些模块
至关重要的是,/improve-codebase-architecture 调查代码库以寻找深化机会,并向您提供候选人。我建议每隔几天在您的代码库上运行一次。这是一项调查,而不是救援:在真正古老的代码库上,它会找到真正的候选者,但它不会为你解开泥沼。
总结
软件工程基础知识比以往任何时候都更加重要。这些技能是我将这些基础知识浓缩为可重复实践的最大努力,以帮助您交付职业生涯中最好的应用程序。享受。
## 参考
它们在一个轴上分开:谁可以调用它们。 用户调用的技能只有在您键入时才可以访问(例如“/grill-me”);他们的工作是协调。 模型调用技能可以由您调用_或_在任务适合时由代理自动获取;他们遵守可重复使用的纪律。用户调用的技能可以调用模型调用的技能,但绝不能调用其他用户调用的技能。
工程
我每天用于代码工作的技能。
用户调用
- ask-matt:询问哪种技能或流程适合您的情况。在此存储库中用户调用的技能的路由器。
- grill-with-docs:烧烤会议还构建项目的域模型,锐化术语并内联更新
GLOSSARY.md和 ADR。 - triage:通过分类角色的状态机移动问题。
- improve-codebase-architecture:扫描代码库以寻找深化机会,将其呈现为可视化 HTML 报告,然后浏览您选择的任何一个。
- setup-matt-pocock-skills:配置此存储库以获取工程技能(问题跟踪器、分类标签、域文档布局)。在使用其他工程技能之前,每个存储库运行一次。
- to-spec:将当前对话转换为规范并将其发布到问题跟踪器。没有采访,只是综合你已经讨论过的内容。
- to-tickets:将任何计划、规范或对话分解为一组跟踪子弹票,每个跟踪票都声明其阻塞边缘,以文本形式写入本地文件,或作为真实跟踪器上的本机阻塞链接。
- implement:构建由规范或一组票据描述的工作,在预先商定的接缝处驱动“/tdd”,并在提交之前以“/code-review”结束。
- implement-spec:在一个集成分支上实现整个规范。将工单作为任务图工作,跨就绪边界运行实施者子代理以获得最大并发性,然后以“/code-review”结束。
- wayfinder:计划一大块工作,可以容纳多个代理会话,作为问题跟踪器上决策票的共享地图,并一次解决一个问题,直到通往目的地的道路清晰为止。
- retro:在会话后建议改进编码代理的环境(导航、自动检查、编码标准、指导文件、工具),首先是最严重的。
模型调用
- prototype:构建一个一次性原型来回答设计问题,可以是用于状态/逻辑问题的单个可共享 HTML 文件,也可以是可从一条路径切换的几个完全不同的 UI 变体。
- diagnosing-bugs:硬错误和性能回归的严格诊断循环:构建一个反馈循环,在此错误上变红→最小化→假设→工具→修复→回归测试。
- research:根据高信任度主要来源调查问题,并将结果捕获为存储库中引用的 Markdown 文件,作为后台代理运行。
- tdd:使用红绿重构循环的测试驱动开发。一次构建一个垂直切片的功能或修复错误。
- 领域建模:积极构建和完善项目的领域模型:根据术语表挑战术语,使用边缘案例场景进行压力测试,并内联更新“GLOSSARY.md”和 ADR。
- codebase-design:用于设计深层模块的共享规则和词汇:小界面背后的大量行为,放置在干净的接缝处,可通过该界面进行测试。
- code-review:自固定点以来对差异进行两轴审查:标准(它是否遵循存储库的编码标准,加上 Fowler 气味基线?)和 规范(它是否忠实地实现了原始问题/规范?),作为并行子代理运行,因此两者都不会污染对方。
- pr:拉取请求主体应采用的形状:摘要作为使更改清晰可见的最小视觉效果,在其有效的证据之前/之后,以及合并危险呼叫(单向或双向门,加上爆炸半径)。
- wizard:生成一个交互式 bash 向导,引导人们完成只有他们才能执行的步骤:配置基础设施、设置凭据或 CI 机密、运行不熟悉的第三方仪表板或运行一次性迁移或切换。
生产力
通用工作流程工具,不是特定于代码的。
用户调用
- grill-me:不断接受有关计划或设计的采访,直到设计树的每个分支都得到解决。
- handoff:将当前对话压缩到移交文档中,以便其他代理可以继续工作。
- teach:使用当前目录作为有状态的教学工作区,通过多个会话教授用户新技能或概念。
- to-questionnaire:将您无法单独回答的决定转变为 Markdown 调查问卷,供可以异步填写或在会议上一起填写的人使用。它会盘问你发送的内容(发送给谁,你需要返回什么),而不是主题。
- wait-what:消息未到达时触发此命令。代理会使用您的“GLOSSARY.md”词汇,用简单的英语,根据您缺少的上下文重新进行推介。
模型调用
- grilling:不断地采访用户有关计划、决定或想法,直到设计树的每个分支都得到解决。 “grill-me”、“grill-with-docs”、“triage”、“wayfinder”和“improve-codebase-architecture”背后的可重用采访原语。
- writing-for-agents:为代理编写文档:技能、AGENTS.md/CLAUDE.md 以及代理通过指针到达的任何文档。