2597 字
13 分钟
Matt Pocock Skills v1.1 完全用法指南
2026-07-14

核心理念#

Matt 的这套 Skills 本质上是把软件工程的最佳实践(DDD、TDD、模块化设计、Code Review)封装成了可组合的 AI Agent 指令。核心思想是:

AI 不是不够聪明,而是没有记忆。 解法不是写更长的 prompt,而是把经过验证的指令沉淀为可重复的流程。

仓库目前 16.9 万星,包含二十多个 Skills,分为 Engineering(工程)Productivity(生产力) 两大目录。

安装与初始化#

  1. 安装
Terminal window
npx skills@latest add mattpocock/skills

或者在 Claude Code 中作为插件安装:

Terminal window
/plugin marketplace add mattpocock/skills
/plugin install mattpocock-skills@mattpocock
  1. 初始化(每个仓库一次)
Terminal window
/setup-matt-pocock-skills

这个 Skill 会引导你配置三件事:

配置项说明
Issue Tracker选 GitHub / GitLab / Linear / Jira / 本地 Markdown
Triage Labels默认五个状态标签:needs-triageneeds-infoready-for-agentready-for-humanwontfix
Domain DocsCONTEXT.md(领域词汇表)和 ADR(架构决策记录)的存放位置

配置完成后会在 docs/agents/ 下生成配置文件,并在 CLAUDE.mdAGENTS.md 中添加 ## Agent skills 段落。

完整工作流#

以下是 Matt 推荐的从想法到交付的完整链路:

flowchart TD
    A["有想法/需求"] --> B{有代码库?}
    B -->|是| C["/grill-with-docs"]
    B -->|否| D["/grill-me"]
    
    C --> E{项目规模?}
    D --> E
    
    E -->|"小功能<br/>(单会话)"| F["直接 /implement"]
    E -->|"多功能<br/>(多会话)"| G["/to-spec 生成规范"]
    E -->|"巨大/模糊<br/>(超上下文)"| H["/wayfinder 清除迷雾"]
    
    G --> I["/to-tickets 拆任务"]
    H --> I
    H --> G
    
    I --> J["/implement<br/>(每个 Ticket 新会话)"]
    J --> K["/tdd<br/>(Red-Green 循环)"]
    K --> L["/code-review<br/>(双轴审查)"]
    L --> M["提交代码"]
    
    style H fill:#f96,stroke:#333
    style C fill:#6cf,stroke:#333
    style D fill:#6cf,stroke:#333

各 Skill 详解#

1. /grill-me(无代码库)与 /grill-with-docs(有代码库)#

用途: 在动手之前与 AI 达成共识,防止 AI 用默认假设替你做了你不想要的决定。

底层驱动: 两个 Skill 都调用共享的 /grilling 原语。

核心规则(来自 /grilling SKILL.md):

  • 一次只问一个问题,等待你回答后再继续
  • AI 会无情地采访你关于计划的每个细节
  • 遍历决策树的每个分支,逐个解决依赖关系
  • 每个问题 AI 都会提供推荐的答案
  • 如果事实可以从环境(文件系统、工具)中获取,AI 会自己查,不问你
  • 决策权留给你,AI 只负责提问

/grill-with-docs 的额外能力: 在采访过程中同时运行 /domain-modeling,帮你构建项目的统一语言(Ubiquitous Language),实时更新 CONTEXT.md 和 ADR。

实际体验: Matt 说他曾被 AI 连续问了 16 个问题,复杂特性甚至被拷问半小时、回答了三五十个问题。


2. /domain-modeling(领域建模)#

用途: 建立和维护项目的领域词汇表,让 AI 用 1 个词而不是 20 个词来表达。

核心行为:

行为说明
挑战词汇你说的术语和 CONTEXT.md 里定义的不一致时,立即指出
模糊语言精确化你说 “account”,它会追问是 Customer 还是 User
场景压力测试用具体边界场景测试领域关系是否经得起推敲
交叉验证代码你说的和代码实际行为矛盾时,立即指出
实时更新 CONTEXT.md术语一确定就写进去,不积攒

ADR 只有同时满足三个条件才创建: ①难以逆转 ②缺少上下文会让人困惑 ③真正做了权衡取舍。


3. /to-spec(生成规范,v1.1 由 /to_prd 重命名)#

用途: 将当前对话中达成的共识综合成一份规范文档,发布到 Issue Tracker。

关键点: 不再访谈——只综合你已经讨论过的内容。生成的文档已超出传统 PRD 的范围。

Spec 模板包含:

  • Problem Statement — 用户视角的问题陈述
  • Solution — 用户视角的解决方案
  • User Stories — 长长的编号列表(要求极其详尽)
  • Implementation Decisions — 模块、接口、架构决策、Schema 变更、API 契约
  • Testing Decisions — 测试策略、测试接缝(Seam)、参照先例
  • Out of Scope — 明确排除的内容
  • Further Notes — 补充说明

4. /to-tickets(拆解任务,v1.1 由 /to_plan + /to_issues 合并)#

用途: 将 Spec 拆解为一组 曳光弹式(Tracer Bullet)垂直切片 Ticket。

**核心规则:

graph LR
    subgraph 垂直切片
        A["Schema 层"] --> B["API 层"] --> C["UI 层"] --> D["测试"]
    end
  • 垂直切片,不是水平切片: 每个 Ticket 贯穿所有相关层,形成可独立验证的最小功能
  • 阻塞边(Blocking Edges): 每个 Ticket 必须声明自己被哪些 Ticket 阻塞
  • 前置条件满足后即可并行: 不相互阻塞的 Ticket 可以同时拉起多个 Agent 并行执行
  • 发布到 Tracker 时按依赖顺序(先发不被阻塞的),如果平台支持原生依赖关系就用原生的

示例: 做用户注册功能时:

  • Ticket 01:邮箱密码注册 + 返回成功状态(不被阻塞,可立即开始)
  • Ticket 02:邮箱验证(阻塞于 01)
  • Ticket 03:密码重置(阻塞于 01)

而不是:

  • ❌ Ticket 01:建所有数据库表
  • ❌ Ticket 02:写所有 API 路由
  • ❌ Ticket 03:做所有 UI 页面

5. /implement(实现阶段)#

用途: 基于 Spec 或 Ticket 实现代码。

流程:

  1. 使用 /tdd 在预先确认的接缝(Seam)上驱动开发
  2. 定期运行类型检查和相关测试
  3. 实现完成后运行 /code-review
  4. 提交到当前分支

6. /tdd(测试驱动开发)#

用途: 执行 Red → Green 循环,v1.1 将 Refactor 移出此循环。

三步循环:

  1. Red — 先写一个失败的测试
  2. Green — 只写刚好让测试通过的代码(不过度设计)
  3. 下一个切片 — 一次一个接缝、一个测试、一个最小实现

注意: v1.1 中 Refactor(重构)不再属于 TDD 循环,而是在 /code-review 阶段被识别为重构建议。目的是减少实现阶段同时承担的关注点,避免立即重构改坏刚跑通的逻辑。

什么是好的测试:

  • 通过公共接口验证行为,不触及实现细节
  • 读起来像规格说明书(如 “用户可以用有效购物车结账”)
  • 预期值必须来自独立的事实来源,不能是代码自己算出来的

反模式:

  • 与实现耦合的测试
  • 同义反复的测试(断言和代码用同样的方式计算期望值)
  • 水平切片测试(先写所有测试再写所有实现)

7. /code-review(代码审查)#

用途: 双轴并行审查,防止一个维度掩盖另一个。

flowchart LR
    A["git diff"] --> B["Spec 轴子代理"]
    A --> C["Standards 轴子代理"]
    B --> D["汇总报告"]
    C --> D
检查什么失败意味着
Spec 轴是否忠实实现了需求?是否有遗漏?是否有范围蔓延?功能做错了
Standards 轴是否遵守项目编码规范?是否有代码异味?代码写坏了

Standards 轴注入了 Martin Fowler 的代码异味清单(完整 12 种):** 神秘命名、重复代码、特性依恋、数据泥团、基本类型偏执、重复 Switch、霰弹式修改、发散式变化、投机式通用性、消息链、中间人、拒绝的遗赠。

重要原则: 代码异味是启发式判断,不是硬性违规。项目的编码规范优先级更高。


8. /wayfinder(寻路者)#

用途: 面对巨大而模糊、单个 AI 会话装不下的项目时使用。

核心概念 — 战争迷雾:

  • 不要试图一次性看清全貌
  • 只规划视距范围内的事物——那些明确、可在一个 Agent Session 中解决的问题
  • 在 Issue Tracker 上建立共享地图(一个标记为 wayfinder:map 的 Issue)

Ticket 类型(各有标签):

类型交互模式说明
ResearchAFK(后台)读取文档/API,Agent 自主研究并生成总结
PrototypeHITL(人在回路)创建廉价工件提高讨论保真度
GrillingHITL与人类对话,逐个问题深化理解
TaskHITL 或 AFK开通服务、迁移数据、配置权限等必要操作

Wayfinder 默认只规划,不实施。 最终产出的是通往目的地的路线,而不是最终交付物。


  1. /improve-codebase-architecture(改进架构)

用途: 扫描代码库中的架构摩擦,提出深化(Deepening)机会——把浅层模块重构成深层模块。

核心理念(来自 /codebase-design):

术语定义
模块(Module)任何有接口和实现的东西(函数、类、包)
接口(Interface)调用者需要知道的一切(类型签名 + 不变量 + 排序约束 + 错误模式)
深度(Depth)接口小而实现大 = 深模块(好);接口几乎和实现一样复杂 = 浅模块(坏)

流程:

  1. 根据 git 历史找到代码库的热点区域
  2. 生成一个 HTML 可视化报告,包含每个候选的 Before/After 对比图
  3. /grilling 深入探讨你选择的候选方案
  4. 边做边更新领域模型

10. /triage(分类)#

用途: 将 Issue 和 PR 按状态机流转。

needs-triage → needs-info / ready-for-agent / ready-for-human / wontfix
↑ │
└──────────────┘ (记者回复后)

11. 辅助 Skills#

Skill类型用途
/prototype模型调用构建可丢弃的原型(逻辑终端应用 或 可切换的 UI 变体)来回答设计问题
/research模型调用后台 Agent 研究问题,从一手来源生成带引用的 Markdown 摘要
/diagnosing-bugs模型调用六阶段诊断循环:反馈循环 → 复现 → 假设 → 检测 → 修复 → 清理
/resolving-merge-conflicts模型调用逐块解决合并冲突,追踪每一方的意图来源
/handoff用户调用将当前对话压缩为交接文档,让另一个 Agent 继续工作
/ask-matt用户调用帮你选择该用哪个 Skill

v1.1 的关键变化总结#

变化v1.0v1.1
共识确认无明确门槛确认达成共识前绝不实施
PRD 文档/to_prd/to_spec(超出传统 PRD 范围)
任务分解/to_plan + /to_issues/to_tickets(合并,统一为 ticket 概念)
TDD 循环Red-Green-RefactorRed-Green 循环,Refactor 移到 /code-review
Grilling无确认门槛加了确认门槛

实战建议#

  1. 每个功能都用 /grill-me/grill-with-docs 开始——这可能是整个仓库最重要的习惯
  2. 每几天跑一次 /improve-codebase-architecture——防止代码熵加速累积
  3. 保持 CONTEXT.md 活跃更新——这是 AI 的”记忆”,让它用精确的领域语言沟通
  4. 严格按 Ticket 边界切换会话——每个 Ticket 在一个全新的 /implement 会话中执行,避免上下文膨胀
  5. 遇到巨大模糊需求先用 /wayfinder——别硬冲,先绘制地图清除迷雾
Matt Pocock Skills v1.1 完全用法指南
https://ihsiao.com/posts/ai/matt-pocock-skills/
作者
Morse Hsiao
发布于
2026-07-14
许可协议
CC BY-NC-SA 4.0