W
AI-Wiki
SOURCE

Matt Pocock开源了自己的.claude目录21个Skill,专治Agent 想当然 - 今日头条 摘要

文档概览

  • 文中先给出一个反常识背景:这个仓库星标超过 15 万、fork 超过 1.3 万。
  • 文章认为,这个数字之所以罕见,是因为仓库内容虽然主要是说明书性质的 Markdown,但真正被开源的是一整套工程纪律。
  • 文中同时补充 Matt Pocock 的背景:写过 Total TypeScript,当过 Vercel 的开发者布道师,也在 Stately 做过 XState 核心团队成员,现在专职教开发者做 AI 工程。
  • 文章将整套 Skills 总结为 21 个 Skill,覆盖从“有个模糊的想法”到“代码合并进主干”的完整工作流。

关键事实

这套 Skills 试图解决的四类典型问题

  • 第一类问题是 Agent 自作主张。
  • 具体表现是:用户以为 Agent 理解了需求,但最后产出的东西其实偏题,是最常见的人机失配。
  • 第二类问题是 Agent 话太多,而且缺少项目内部的共同语言。
  • 具体表现是:项目中的黑话、约定术语、上下文压缩词汇没有沉淀下来,Agent 每次都要重新猜,因此它宁可啰嗦解释,也无法精确表达。
  • 第三类问题是代码跑不起来。
  • 文中指出,没有测试反馈时,Agent 写代码基本等于“盲人摸象”,因为它缺少可执行的真假判断机制。
  • 第四类问题是代码库快速腐化。
  • 文章的判断是:Agent 写代码越快,如果没有约束,项目腐化也会越快,几周内就可能变成“谁都不敢动的烂摊子”。

四类对应药方

  • 对应 Agent 自作主张,药方是先把需求澄清清楚,而不是直接开写。
  • 对应缺少共同语言,药方是显式建立一套 项目共同语言,让团队与 Agent 用同一套术语压缩复杂上下文。
  • 对应代码跑不起来,药方是使用红绿重构的测试循环,先有失败测试,再实现,再重构,以保证代码可运行。
  • 对应代码库腐化,药方是定期做架构体检和代码审查,防止结构持续恶化。
  • 文章的核心观点是:21 个 Skill,本质上就是把这四件事拆解成可重复执行的动作。

项目共同语言的例子

  • 文中专门给了一个例子来说明为什么共同语言重要。
  • 原本一段复杂描述是:“某节课在某个章节里被落到文件系统上生成实体文件时会出问题”。
  • 在建立统一黑话后,这句话被压缩成“物化级联出问题了”。
  • 文章借此说明,统一术语后,不仅团队成员沟通成本下降,Agent 也不需要每次重新翻译整段业务语义。
  • 这不是单纯缩短句子,而是把上下文打包成一个共享概念,从而提升沟通精度。

重要细节

主线工作流:idea → ship

  • 文章把整套系统的核心主线称为 idea → ship
  • 它描述的是:如何把一个模糊想法,逐步推进成最终可合并的代码。

第一步:/grill-with-docs 澄清需求

  • 起点是 /grill-with-docs
  • 文中把它形容成“像审问一样”逐条追问用户的决定。
  • 它有一个关键约束:能从代码库中查到的事实,它会自己查;只有查不到的内容,才会反过来问用户。
  • 这个过程会持续到双方对齐为止,而不是草率地在信息不完整时直接生成实现。
  • 因而它承担的职责不是写代码,而是先消除“想当然”。

第二步:必要时走 /prototype 做一次性验证

  • 如果某些问题靠讨论无法得出答案,例如某个交互到底顺不顺手,就会从主线分岔到 /prototype
  • /prototype 的目标不是产出正式实现,而是快速写一段一次性代码把问题跑出来。
  • 文中强调“验完就扔”,说明这个步骤的价值在于验证,而不是沉淀可维护代码。
  • 这也是一个边界条件:只有在聊不出答案、必须通过实际运行验证时,才使用这个 Skill。

第三步:/to-spec 生成规格

  • 想清楚之后,下一步是 /to-spec
  • 它负责把前面的对话整理成规格文档。
  • 文章将其放在澄清与切分之间,说明其作用是把口头理解转成可引用、可审查的中间产物。

第四步:/to-tickets 切成工单

  • 有了规格文档后,再用 /to-tickets 把工作拆成一张张工单。
  • 文中特别提到,这些工单之间会声明彼此的“卡点关系”。
  • 也就是说,它不只是线性拆任务,还会表达依赖、阻塞或前置关系。
  • 工单既可以落在本地文件中,也可以接入 Linear 或 GitHub Issues。
  • 这说明该工作流同时支持轻量本地使用和接入外部任务系统。

第五步:/implement 执行工单

  • 每张工单之后交给 /implement
  • 文章指出,/implement 内部会驱动 /tdd
  • 这意味着真正的实现不是“直接生成代码”,而是被纳入测试驱动的纪律流程里。

第六步:/tdd 通过红绿重构循环完成实现

  • /tdd 对应的就是文中前面提到的红绿重构测试循环。
  • 其目的不是形式化地“写几个测试”,而是让功能在持续验证中从红灯走到绿灯。
  • 文章把它视为“代码能跑起来”的关键保障。

第七步:/code-review 收尾审查

  • 主线最后会自动跑一次 /code-review
  • 这一步不是单一维度检查,而是双线并行。
  • 第一条线检查代码坏味道和经典问题。
  • 文中明确给出,这条线内置了 12 条经典问题,例如命名混乱、重复代码等。
  • 第二条线检查实现是否跑题,也就是判断产物有没有偏离原始需求与规格。
  • 文章强调,两条线彼此独立、互不干扰。
  • 这种设计的含义是:代码质量问题与需求对齐问题被分开审查,避免一种视角掩盖另一种风险。

主线之外的三个入口

/triage:把外部粗糙反馈转成可执行工单

  • 当需求或 bug 不是从内部规格流程产生,而是从别人扔来的粗糙反馈开始时,入口不是主线最前面的澄清流程,而是 /triage
  • /triage 的职责是把原始、模糊、质量参差不齐的反馈,处理成 Agent 可以直接承接的工单。
  • 因而它更像一个输入预处理器,适合对接外部需求、客户反馈或零散 bug 报告。

/diagnosing-bugs:先稳定复现,再修 bug

  • 对于莫名其妙的疑难 bug,文章给出的入口是 /diagnosing-bugs
  • 这个 Skill 有一个很强的约束:拒绝瞎猜。
  • 它要求必须先找到一个能稳定复现问题的命令,然后才开始修复。
  • 这意味着“先复现、后修复”不是建议,而是前置条件。
  • 其核心价值在于避免 Agent 在不确定条件下乱改代码。

/wayfinder:高不确定性大型规划,只产出决定不产出代码

  • /wayfinder 是文中认为“最有意思”的入口。
  • 它专门处理那种“雾很大”的大工程,也就是高不确定性、范围大到一次对话装不下的问题。
  • 它的工作方式是:先把已知和未知分成两栏挂到工单系统上,然后一次次解决雾中的问题,逐步看清路径。
  • 重要边界是:这个过程中只产出决定,不产出代码。
  • 也就是说,它处理的是规划与决策,而非实现。
  • 这让它与 /implement/prototype 等执行型 Skill 明确区分开。

/wayfinder 命名调整的插曲

  • 文章还保留了一个来自更新日志的小细节。
  • 这个 Skill 最初叫 decision-mapping
  • 后来更新日志中明确写到,这个名字“jargon 化又不准确”,因此重新寻找更合适的隐喻,最终改成 wayfinder
  • 文中认为,这种把改名心路过程公开写进更新日志的做法,体现了项目愿意暴露自己的思考和修正,而不是只展示“千锤百炼”的完美成品。

Skill 的分层调用规则

  • 文章认为,这套系统真正巧妙的地方,不只是列出 21 个 Skill,而是明确区分了“谁能喊”和“谁自己会来”。
  • 第一类是用户唤起。
  • 只有用户手动输入类似 /grill-me 这样的命令,它们才会运行。
  • 这类 Skill 负责统筹全局。
  • 第二类是模型唤起。
  • Agent 会在判断场景合适时主动调用它们。
  • 这类 Skill 负责具体纪律动作,例如 /tdd/code-review
  • 文中总结出的分层规则很简单:统筹型可以调用纪律型,但两个统筹型之间不能互相调用。
  • 文章认为,这条规则解释了为什么用户不需要硬背 21 条命令。
  • 大多数情况下,用户只需要记住少数入口,剩下的具体动作由 Agent 根据上下文自己选择。
  • 这正是 Skill 分层调用规则 的核心:减少记忆负担,同时保留流程纪律。

关于写 Skill 的一条经验

  • 仓库中还包含一份关于如何编写 Skill 的说明。
  • 文章特别提炼出其中一条提醒:不要用“不要做什么”来约束模型。
  • 文中借用了“别想大象”的心理学式比喻:你越说“不要啰嗦”,其实越把“啰嗦”这个模式摆到模型眼前。
  • 更好的写法是直接描述目标行为。
  • 文章给出的例子是:与其说“不要啰嗦”,不如说“每句话只讲一件事”。
  • 与其反复强调“不要塞进三个从句”,不如直接规定你希望的句法和输出形式。
  • 文中认为,这类规则本身不算惊天秘密,但能把失败经验提炼成可复用纪律,正是这套系统最有价值的部分。

安装与初始化

  • 文中给出了一个三步式安装说明。
  • 第一步,在命令行执行 npx skills@latest add mattpocock/skills
  • 第二步,勾选想要安装的 Skill 和目标 Agent。
  • 文中明确提到支持 Claude Code 与 Codex。
  • 同时有一个强制提醒:一定要勾上 /setup-matt-pocock-skills
  • 第三步,安装完成后,要在 Agent 里再运行一次 /setup-matt-pocock-skills
  • 这个初始化过程会询问至少三件事:使用哪个 issue tracker、triage 时打什么标签、文档放在哪里。
  • 文中强调,只有问完并配置好这三项,其余 20 个 Skill 才算真正对上当前项目。

文章结论

  • 文章最后的判断是:一个人的 .claude 目录,能被十几万开发者几乎原样搬进自己的项目,并不是偶然。
  • 原因在于它把四类 Agent 常见问题想得足够具体,也把相应纪律拆成了可以执行的 Skill。
  • 同时,项目愿意把自己走过的弯路、改名过程和失败经验公开留在更新日志中,这种坦诚也是其说服力的重要来源。

相关条目