@mattpocockuk: 已将我的 /retro 技能更新为进行中状态。您可以在任何会话(或批量会话)之后运行它,以尝试修复其……
摘要
文章宣布为编码代理将 '/retro' 技能更新为进行中状态,旨在改进代理导航、编码标准和工具经济性。
查看缓存全文
缓存时间: 2026/08/25 06:02
已将我的 /retro 技能转为“进行中”状态。你可以在任何会话后运行它(或对多个会话批量运行),以尝试修复其下次可能出现的错误。该技能试图改进以下方面:
- 代理导航(以实现更好的探索)
CODING_STANDARDS(以实现更好的评审)- 工具效率
- 信息访问
试试看:
mattpocock/skills
来源:https://github.com/mattpocock/skills
面向真实工程师的技能
skills.sh (https://skills.sh/mattpocock/skills)
我日常使用的真实工程技能——非“凭感觉编码”。开发真实应用软件是困难的。GSD、BMAD 和 Spec-Kit 等方法试图通过接管流程来提供帮助,但在此过程中,它们剥夺了你的控制权,并使流程中的 Bug 难以解决。这些技能被设计为小巧、易于适配且可组合。它们适用于任何模型,基于数十年的工程经验。尽情探索,根据自己的需求改造它们。享受其中吧。
如果你想跟踪这些技能的任何变更以及我创建的新技能,可以加入约 6 万名开发者所在的通讯列表: 注册通讯列表
安装(30 秒完成)
两种方式,两种理念。
Claude Code 插件 (https://code.claude.com/docs/en/plugins) 将整个技能集作为托管的、只读的捆绑包安装。当我发布更新时,它会自动更新,因此你采用订阅而非 fork 的方式。
skills.sh (https://skills.sh/mattpocock/skills) 会将可编辑的技能文件复制到你的项目中,这样你就可以修改它们,并使其完全符合你的需求。
二选一:同时安装两者会导致每个技能都出现两次。
1. 获取技能
Claude Code
claude plugins install mattpocock-skills
或者在会话内:
/plugin install mattpocock-skills
它已在 Claude Code 的官方市场中,因此无需提前添加任何内容,更新会自动推送。
Codex 及其他代理
npx skills@latest add mattpocock/skills
选择你需要的技能以及要安装的编程代理。安装程序允许你选择要安装的技能,因此请确保 setup-matt-pocock-skills 是其中之一。 原生 Codex 插件已在路线图上(参见 .agents/adr/0002-ship-as-a-claude-code-plugin.md)。
对于爱折腾的用户 使用相同的安装程序,在任何代理上安装,包括 Claude Code:
npx skills@latest add mattpocock/skills
它会将技能作为你拥有的普通文件写入你的仓库,你可以进行编辑。不会在你不知情的情况下进行任何更新;当你需要时,可以使用 npx skills update 拉取我的最新更改。
2. 运行 /setup-matt-pocock-skills
在你的代理中,每个仓库只需运行一次。它将:
- 询问你想使用哪个问题跟踪器(GitHub、Linear 或本地文件)
- 询问你在对工单进行分类时应用的标签(
/triage使用标签) - 询问你想将创建的文档保存在哪里
3. 搞定——你已准备就绪。
为什么需要这些技能
我创建这些技能是为了修复我在 Claude Code、Codex 及其他编程代理中常见的故障模式。
#1:代理没有完成我想要的事情
“没有人确切知道自己想要什么” —— David Thomas 与 Andrew Hunt,《程序员修炼之道》(https://www.amazon.co.uk/Pragmatic-Programmer-Anniversary-Journey-Mastery/dp/B0833F1T3V)
问题。软件开发中最常见的故障模式是不对齐。你以为开发者知道你想要什么,然后看到他们构建的东西——才意识到他们完全没理解你。在 AI 时代,情况也是如此。你和代理之间存在沟通鸿沟。解决方法是进行一次详尽质询——让代理就你正在构建的内容向你提出详细问题。
解决方案是使用:
/grill-me- 用于非代码场景/grill-with-docs- 与/grill-me类似,但增加了更多功能(见下文)
这是我最受欢迎的技能。它们帮助你与代理在开始工作前达成一致,并深入思考你将要进行的更改。在你想要进行任何更改时,每次都使用它们。
#2:代理过于啰嗦
“通过通用语言,开发者之间的对话和代码表达都源自相同的领域模型。” —— Eric Evans,《领域驱动设计》(https://www.amazon.co.uk/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215)
问题:在项目初期,开发者和构建软件的人(领域专家)通常说着不同的语言。我对我的代理也感受到了同样的张力。代理通常被直接放入项目中,被要求自行摸索术语。因此,它们会用 20 个词来表达只需 1 个词就能说明的内容。
解决方案是共享语言。这是一份帮助代理解读项目中行话的文档。
示例
这是我 course-video-manager 仓库中的一个 CONTEXT.md (https://github.com/mattpocock/course-video-manager/blob/076a5a7a182db0fe1e62971dd7a68bcadf010f1c/CONTEXT.md) 示例。
哪一个更容易阅读?
- 修改前:“当课程中某个章节内的课程被‘实体化’(即在文件系统中获得位置)时,会出现一个问题。”
- 修改后:“实体化级联存在问题。”
这种简洁性在每次会话中都能带来回报。这内置于 /grill-with-docs 中。这是一个详尽质询会话,但有助于你与 AI 共建共享语言,并通过 ADR(架构决策记录)记录难以解释的决策。很难解释这有多强大。它可能是本仓库中最酷的技术。试一试,亲自体验。
共享语言除了减少冗长之外,还有许多其他好处:
- 变量、函数和文件使用共享语言进行一致命名。
- 因此,代理更容易导航代码库。
- 代理也减少了思考所需的 token 消耗,因为它能使用更简洁的语言。
#3:代码无法工作
“始终保持小而审慎的步伐。反馈速率就是你的速度限制。永远不要承担过大的任务。” —— David Thomas 与 Andrew Hunt,《程序员修炼之道》(https://www.amazon.co.uk/Pragmatic-Programmer-Anniversary-Journey-Mastery/dp/B0833F1T3V)
问题:假设你和代理已就构建内容达成一致。当代理仍然产出糟糕代码时怎么办?是时候审视你的反馈循环了。如果没有关于生成代码实际运行情况的反馈,代理将是在盲目飞行。
解决方案:你需要常规的反馈循环:静态类型、浏览器访问和自动化测试。对于自动化测试,红-绿-重构循环至关重要。即代理首先编写一个失败的测试,然后修复测试。这有助于为代理提供一致的反馈水平,从而产出更好的代码。
我创建了一个可以嵌入任何项目的 /tdd 技能。它鼓励红-绿-重构,并为代理提供了关于何为良好测试和不良测试的大量指导。
对于调试,我还创建了一个 /diagnosing-bugs 技能,它将最佳调试实践封装在一个严格的、按阶段门控的循环中。
#4:我们构建了一团乱麻
“每天都投资于系统设计。” —— Kent Beck,《解析极限编程》(https://www.amazon.co.uk/Extreme-Programming-Explained-Embrace-Change/dp/0321278658)
“最好的模块是深层的。它们允许通过简单的接口访问大量功能。” —— John Ousterhout,《软件设计哲学》(https://www.amazon.co.uk/Philosophy-Software-Design-2nd/dp/173210221X)
问题:大多数使用代理构建的应用都复杂且难以更改。因为代理能极大加速编码,它们也加速了软件熵。代码库以前所未有的速度变得复杂。
解决方案是一种全新的 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:构建一个一次性原型以回答设计问题,可以是一个用于状态/逻辑问题的可共享 HTML 文件,或者多个根本不同的 UI 变体,可通过一个路由切换。
- diagnosing-bugs:针对疑难 Bug 和性能回退的严格诊断循环:构建一个反馈循环:在此 Bug 上变红 → 最小化 → 假设 → 排查 → 修复 → 回归测试。
- research:针对高可信度的主要来源调查问题,并将发现以引用的 Markdown 文件形式捕获到仓库中,作为后台代理运行。
- tdd:采用红-绿-重构循环的测试驱动开发。一次一个垂直切片地构建功能或修复 Bug。
- domain-modeling:积极构建和精炼项目的领域模型:根据术语表挑战术语,用边界场景进行压力测试,并内联更新
CONTEXT.md和 ADR。 - codebase-design:用于设计深层模块的共享规范和词汇:在小接口后提供大量行为,放置在清晰的接缝处,可通过该接口进行测试。
- code-review:自固定点以来对差异的双轴评审:规范(是否遵循仓库编码标准,加上 Fowler 味道基线?)和规格(是否忠实地实现了原始问题/规范?),作为并行子代理运行,因此两者互不干扰。
- resolving-merge-conflicts:逐个代码块处理进行中的 git merge 或 rebase 冲突,根据追溯到各方主要来源的意图进行解决,然后完成操作(永远不要
--abort)。 - wizard:生成一个交互式 bash 向导,引导人类完成只有他们才能执行的步骤:配置基础设施、设置凭证或 CI 密钥、浏览陌生的第三方仪表板、或运行一次性迁移或切换。
生效力
通用工作流工具,非特定于代码。
用户调用的技能
- grill-me:对计划或设计进行无情的追问,直到设计树的每个分支都得到解决。
- handoff:将当前对话压缩成交接文档,以便另一个代理可以继续工作。
- teach:在多个会话中教授用户新技能或概念,使用当前目录作为有状态的教学工作区。
- to-questionnaire:将你无法独自回答的决策转化为 Markdown 问卷,交给唯一能回答的人异步填写,或在会议中共同完成。它追问的是发送对象(给谁、需要什么回复),而非主题。
- wait-what:当消息未被理解时立即触发。代理会使用你缺失的上下文,用你的
CONTEXT.md词汇,以清晰的中文重新表述。
模型调用的技能
- grilling:就计划、决策或想法无情地追问用户,直到设计树的每个分支都得到解决。这是
grill-me、grill-with-docs、triage、wayfinder和improve-codebase-architecture背后的可重用追问原语。 - writing-for-agents:为代理撰写文档:技能、AGENTS.md/CLAUDE.md,以及代理通过指针访问的任何文档。
相似文章
@mattpocockuk: 应广大用户要求,我今天发布我的 skills v1.3 版本。/retro 的热度这么高,不发布实在说不过去。祝你们翻看旧对话愉快……
Matt Pocock 宣布发布其 mattpocock/skills 仓库的 v1.3 版本,这是一套可组合的代理技能,适用于 Claude Code 和 Codex 等编码助手,其中新增了用于回顾历史对话记录的 /retro 技能,并附带 Claude Code 插件和 skills.sh 安装器,便于分发。
@mattpocockuk:这可能是史上最强的 issue 报告 有人写了一篇论文,评估我的 /retro skill 的效果…
一项实证 arXiv 研究考察了 /retro——一个让编码 agent 回顾已完成会话并提出 harness 修改建议的 skill,发现虽然能生成大量修改建议,但只有一部分能减少后续任务中的重复工作——这表明 harness 自我进化需要相应的机制来验证和修订这些修改。
@jamonholmgren:好吧,这个 `retro` 技能对我来说真是帮了大忙。它迄今发现了大约 15 个问题,据我所知,这些都绝…
Jamon Holmgren 分享说,一个来自 Matt Pocock 的 `retro` 技能帮助他在 AI 代理运行框架(harness)中发现了约 15 个真实存在的问题,这些问题导致了不必要的 token 消耗,例如 linter 的错误提示误导代理跳过检查,以及构建符号不完整的问题。
@mattpocockuk: mattpocock/skills v1.3 发布了!- /pr(新增)编写易读的 PR 描述,展示能证明改动有效的有力证据,并评估合并风险……
Matt Pocock 发布了 mattpocock/skills 的 v1.3 版本,新增了几个 Claude Code skills:/pr 用于编写基于证据、附带合并风险评估的 PR 描述,/implement-spec 通过 subagents 实现规格说明和工单,/retro 用于复盘编码 agent 会话并提出仓库改进建议,同时将 CONTEXT.md 更名为 GLOSSARY.md。
@mattpocockuk:今日提示词:/retro 阅读我最近 10 次编码智能体会话,找出让我的仓库更易于导航的方法。找出……
Matt Pocock 分享了一条"每日提示词",通过回顾近期的编码智能体会话,找出智能体在查找信息时耗时过长、或依赖过时文档的地方,他认为提高仓库的可导航性是一种被严重低估的节省 token 的方式。