mattpocock skills
定义与身份
mattpocock skills 是 Matt Pocock 开源在 GitHub 上的仓库 mattpocock/skills。
它也被明确命名为“Skills for Real Engineers”,定位是一套给真实工程协作使用的 .claude Skills。
该项目不是若干互不关联的 prompt 文档集合,而是一整套围绕 Agent 参与软件工程流程而设计的方法论与操作规程。
按文中描述,仓库内包含 21 个 Skill,用来约束 Agent 在不同阶段的行为,使其从“有一个模糊想法”一路走到“代码可合并进主干”。
项目要解决的四类问题
项目把自己要解决的问题概括为四类,而且都直接对应 Agent 在真实开发中的高频失效模式。
1. 需求失配:Agent 自作主张
最常见的问题是,开发者以为 Agent 已经理解需求,但实际产出的是另一回事。 因此这套 Skills 把“先把要什么审清楚”放在最前面,避免在理解尚未对齐时直接生成实现。
2. 缺少共同语言:Agent 每次都重新猜项目黑话
当项目内部没有稳定术语时,Agent 会不断重新解释、重新猜测上下文,结果通常是表达冗长且不精确。 项目给出的药方是建立项目内部共同语言,让团队和 Agent 共享同一套词汇。 文中举了一个很具体的例子:原本一段冗长描述,大意是“某节课在某个章节里被落到文件系统上生成实体文件时会出问题”;在统一术语后,这句话可以直接缩成“物化级联出问题了”。 这个例子说明,Skill 的作用不是单纯润色表达,而是把重复解释压缩成可复用的工程语言。
3. 没有测试反馈:代码写出来但跑不起来
如果没有测试反馈闭环,Agent 写代码就像“盲人摸象”,即使看起来完成了实现,也无法保证能运行。 因此仓库把测试驱动开发放进主流程,用红灯、绿灯、重构的循环来约束实现过程。
4. 代码库快速腐化:Agent 越快,烂代码也越快积累
项目认为,Agent 提高了产出速度,也会同步提高代码库腐化速度。 如果缺少持续审查与架构体检,几周内代码库就可能变成谁都不敢动的烂摊子。 所以这套 Skill 不只关心“能否生成功能”,也关心代码坏味道、偏题实现和长期可维护性。
核心角色:把软件工程流程做成 Agent 可执行纪律
mattpocock skills 的核心职责,是把软件工程中的关键动作拆成可重复执行的 Skill。 它覆盖的不是单一步骤,而是一条完整主线:
- 需求澄清
- 原型验证
- 规格文档整理
- 工单切分
- 实现
- 测试驱动开发
- 代码审查
- 问题分诊
- 疑难问题定位
- 大型规划
换言之,它并不试图把 Agent 变成“自动写代码机器”,而是试图让 Agent 在每个阶段遵守特定纪律。
主线工作流:idea → ship
仓库的核心工作流被描述为 idea → ship,即从一个想法走到可交付、可合并。
/grill-with-docs:先把需求审清楚
主线从 /grill-with-docs 开始。
这个 Skill 的作用不是立即写实现,而是像审问一样逐条追问决策点。
它会优先自己从代码库中查找可以确认的事实;只有查不到的部分,才继续向人提问。
目标是把双方对需求、约束和现状的理解对齐,而不是靠聊天中的模糊默契推进。
/prototype:用一次性原型验证不确定问题
如果中间存在靠讨论无法定论的问题,例如某个交互是否顺手,就从主线临时分岔到 /prototype。
这个 Skill 用来快速扔出一段一次性代码,以最小成本验证答案。
其边界也很明确:原型是“验完就扔”的,不是默认直接进入正式实现。
/to-spec:把对话整理成规格
当想法被澄清后,下一步是 /to-spec。
它负责把前面的对话结果整理为规格文档,使决策从对话上下文转为明确可引用的文档。
/to-tickets:把规格切成工单
规格确定后,再由 /to-tickets 把它拆成一张张工单。
这些工单之间会声明彼此的“卡点关系”,也就是依赖、阻塞或前后顺序关系。
工单既可以落在本地文件中,也可以接入 Linear 或 GitHub Issues。
/implement:按工单实施
每张工单接下来交给 /implement。
它不是无约束地直接生成代码,而是会在内部驱动其他纪律型 Skill。
/tdd:通过红绿重构循环保证代码可运行
/implement 内部会驱动 /tdd。
文中明确指出这里采用的是测试驱动开发循环,也就是先红灯、再绿灯、再重构。
它的意义在于,让 Agent 的实现始终带着可验证反馈,而不是凭空猜测代码是否有效。
/code-review:实现后自动审查
实现完成后,流程还会自动运行一次 /code-review 才算收工。
这一步不是单一维度检查,而是两条线并行:
- 一条检查代码坏味道
- 一条检查实现是否跑题
文中提到,代码坏味道检查内置了 12 条经典问题,其中明确举出的例子包括命名混乱、重复代码等。 两条审查线互不干扰,意味着项目同时把“代码质量”与“是否实现了正确目标”视为独立问题。
主线之外的额外入口
除了 idea → ship 主线,仓库还提供若干独立入口,用来处理不适合从头走主线的场景。
/triage:把外部粗糙反馈整理成可执行工单
对于别人扔过来的 bug 报告或需求,入口是 /triage。
它的职责是把原始、粗糙、信息不足的反馈,整理成 Agent 能直接接手的工单。
也就是说,它面向的是“输入质量差”的场景,而不是正式规格已经齐全的场景。
/diagnosing-bugs:先稳定复现,再修问题
对于莫名其妙、原因不明的疑难 bug,入口是 /diagnosing-bugs。
这个 Skill 明确拒绝瞎猜。
它要求先找到一个能够稳定复现问题的命令,然后才开始修复。
这条边界很重要:没有复现步骤,就不进入修复阶段。
/wayfinder:处理一次对话装不下的大规划
/wayfinder 用于“雾很大”的大型工程规划,尤其是那种复杂到一次对话根本装不下的问题。
它把整个规划过程比作在迷雾中认路。
具体做法是先把“已知”和“未知”分成两栏挂到工单系统上,然后一次次解决迷雾中的问题,直到路径足够清晰。
它在规划期间只产出决定,不产出代码。
因此它更像是大型探索型项目的导航 Skill,而不是实现 Skill。
/wayfinder 的更名背景与项目透明度
/wayfinder 还有一个很能体现项目风格的细节:它原来叫 decision-mapping。
根据公开更新日志,之所以改名,是因为作者后来认为旧名字“jargon 化且不准确”。
这说明项目并不把命名视为无关紧要的包装,而是把名称是否贴近实践、是否便于理解,当作工程质量的一部分。
更重要的是,项目把这类改名的心路过程直接写进公开更新日志。
这种做法体现出较强的透明度:不仅公开成果,也公开自己发现命名不当、再修正的过程。