Lesson 0001 · 总览 · 对齐 Mission

22 个已发布 skill 的系统地图

这套插件一共发布了 22 个 skill。这节课先不敲任何命令,而是给你一张全景地图: 每个 skill 负责什么、谁能启动它、跑完会在你的仓库里留下什么、干完下一步通常接谁。 地图有了,从 0002 开始每节课拆开一个 skill 细讲,你都知道它站在地图的哪个格子里。

1. 这节课要帮你达到什么状态

你的目标(写在 MISSION.md 里)不是「会敲 / 命令」,而是像这个仓库的作者一样思考:

这节课建立的是全局索引。索引不用硬背——后面每节深课都会回链到这里,用多了自然记住。

你的学习动机:MISSION.md · 课程安排与偏好:NOTES.md

2. 两个基本概念:什么算「已发布」、谁能启动谁

2.1 「已发布」只有一个权威

这个仓库的 skills/ 目录下躺着很多文件夹,但文件夹存在 ≠ 已经发布。 唯一说了算的清单是 .claude-plugin/plugin.json 里的 skills 数组:被它点名的 22 条路径才算发布,全部在 engineering/productivity/ 两个目录里。 misc/personal/in-progress/deprecated/ 里不管有什么,都不算数,本课程也不讲。

规则原文:CLAUDE.md; 为什么用「逐条列路径」这种笨办法:ADR 0002

2.2 两种启动方式

每个 skill 都归两类之一。区别只有一个:谁能启动它

User-invoked(只能人启动) Model-invoked(人和 AI 都行)
文件里怎么认 frontmatter 里有 disable-model-invocation: true(Codex 侧还有 policy.allow_implicit_invocation: false 没有上面那个字段;description 里写着 “Use when…” 描述使用场景
谁能启动 只有你,亲手输入名字。AI 永远不会自己碰它 你可以输名字;AI 碰到合适场景也会自己加载
别的 skill 能调用它吗 不能 能——在正文里写一句「Run the /xxx skill」就行(这叫 prose 调用:用自然语言声明调用,不是代码层面的 import)
代价是什么 你得记得它存在——它不会自己出现 它的 description 常驻 AI 的上下文,占地方
通常是些什么 skill 完整流程的入口(面试 → 写需求 → 拆票 → 实现 这种一整条) 可复用的基本功和词汇(怎么面试、怎么写测试、怎么建模……)
这条规则塑造了整套设计 User-invoked 可以在正文里调用 model-invoked,但绝不能调用另一个 user-invoked。 所以 grill-with-docs 的正文只能写「跑 /grilling,再跑 /domain-modeling」, 不能写「跑 /grill-me」。0003 会讲:「入口薄、纪律厚」的拆法,就是这条规则逼出来的。

契约全文:.agents/invocation.md · 设计词汇:writing-great-skills/GLOSSARY.md

3. 用三层来记这 22 个

22 个工具平铺着记是记不住的。作者其实是按三层组织的,像一家餐厅: 开店前先装修一次(配置层);店长接待顾客的固定流程(编排层); 厨师的基本功(纪律层)。

干什么 成员 跑完主要留下什么
配置层 在你的每个目标仓库里跑一次,把「工单系统在哪、标签叫什么、领域文档放哪」写成配置文件;其它 skill 干活前先来读这些文件 setup-matt-pocock-skills(全系统就它一个) docs/agents/ 下的配置文件;CLAUDE.mdAGENTS.md 里加的一段说明
编排层
User
由你手动启动的完整流程,内部会拼装纪律层的基本功 ask-matt、grill-me、grill-with-docs、to-spec、to-tickets、implement、triage、wayfinder、improve-codebase-architecture、handoff、teach 工单系统里的 issue、本地 .scratch/ 目录里的票、架构报告、handoff 文件
纪律层
Model
可复用的基本功和词汇,一般不独立交付什么,而是被编排层调用 grilling、domain-modeling、codebase-design、tdd、code-review、diagnosing-bugs、prototype、research、resolving-merge-conflicts 代码和测试、CONTEXT.md / ADR、研究笔记、合并冲突的解决结果
将来想微调某个行为,先判断问题出在哪一层 嫌 grill 问问题太碎 → 改纪律层的 grilling(面试纪律的全文在那里),不是改 grill-me 那一行入口。
issue 被发到了错误的地方 → 先查配置层生成的 docs/agents/issue-tracker.md,通常不用动 to-spec / to-tickets 本身。
implement 没跑 review → 编排层的 implement 正文只有几行,直接看它怎么写的,并确认 agent 当时真的加载了这个 skill。

4. 主流程:一个想法从进门到交付

流程图的权威原文是 ask-matt/SKILL.md。 先用大白话把默认路线讲一遍:

  1. 你有个想法,还很模糊 → 用 /grill-with-docs 让 AI 追着你面试,把想法问清楚;有代码库的话,顺手把讨论出的术语和决策写进 CONTEXT.mddocs/adr/
  2. 聊完发现有个问题光靠嘴说不清(状态机的手感、UI 长什么样)→ 岔出去用 /prototype 做个一次性原型,拿到答案就回来,原型代码不进正式交付。
  3. 想法清楚了 → /to-spec 把它写成正式需求文档,发到工单系统。
  4. 需求大到一会话做不完 → /to-tickets 拆成一张张可独立交付的工作票。
  5. 每张票 → 新开一个干净会话 /implement(里面用 /tdd 写,收尾跑 /code-review,然后提交)。

改动很小的话,跳过中间所有步骤,直接 /implement 就行。

想法 │ ▼ /grill-with-docs ──(有代码库:顺手写 CONTEXT/ADR)──┐ │ │ │ 没代码库?改走 /grill-me(不留文件) │ │ │ ├─ 嘴上说不清? ─ /handoff ─ /prototype ─ /handoff ─┤ │ │ ▼ │ 一个会话能做完? │ ├─ 否 ─ /to-spec ─ /to-tickets ─(新开会话)─ /implement×N │ │ │ │ │ │ │ ├─ 内用 /tdd │ │ │ └─ 收尾 /code-review + commit └─ 是 ─ 直接 /implement ──────────────────────────────┘

4.1 半路入口(on-ramps)

不是每个任务都从「我有个想法」开始。有三个从半路并入主流程的入口:

主流程之外还有三类常驻角色:

4.2 上下文卫生(context hygiene)

「上下文」就是 AI 在一个会话里能看到的全部内容。窗口是有限的,塞得太满,推理质量就下降。 作者因此定了几条硬规矩,叫 context hygiene

smart zone 词条(ask-matt 外链): aihero.dev/ai-coding-dictionary/smart-zone

5. 全表:22 个 skill 逐个看

这是全课程信息量最大的一节。reference/ 里有对应的速查表,值得打印。 「会改什么」= 按各 skill 的 SKILL.md 承诺会留下的痕迹(文件、工单、git 提交、临时目录); 只在对话里推理、不写任何文件的,标「不留痕迹」。

5.1 Engineering · 只能人启动

Skill 什么时候用 会改什么 干完接什么
ask-matt 不确定该走哪条流程,或两个 skill 分不清该用谁 什么都不改,只在对话里指路 按它点名的 skill 真正开工;已经知道答案就别绕路问它
setup-matt-pocock-skills 一个仓库第一次用这套工程流之前,跑一次 docs/agents/issue-tracker.mddomain.md、可选 triage-labels.mdCLAUDE.mdAGENTS.md 里加一段 ## Agent skills 之后才能正常跑 grill / to-spec / triage / wayfinder 这些依赖配置的 skill
grill-with-docs 有代码库,要把模糊想法问清楚,并留下术语和决策记录 通过 domain-modeling 写 CONTEXT.md(大仓库可能有多个分册)和 docs/adr/ 下的决策记录 说不清的点 → prototype 岔路;清楚了 → to-spec;小改动直接 implement
to-spec 想法已经在对话里对齐,要落成正式需求文档(这一步不再面试你 在配置好的工单系统发一条 spec issue,打上 ready-for-agent 标签,措辞用项目术语表 /to-tickets
to-tickets 把需求或计划拆成可并行、标清依赖关系的工作票(每张票都是端到端的垂直切片) 本地 tracker:.scratch/<feature>/issues/ 下每票一个文件;远程 tracker:多条 issue + blocking 关系,打 ready-for-agent 对没被别人挡住的票,逐张 /implement(票与票之间开新会话)
implement 手里有票或 spec,要写代码交付 业务代码、测试;过程中跑类型检查和测试;收尾 review 之后产生 git commit 拿下一张没被挡住的票继续 implement;或人工合并、发 PR
triage 别人提的 bug / 需求 /(可选)外部 PR 需要分拣 工单系统上的标签、评论(评论开头必须有 AI 声明)、处理意见(brief);被拒绝的增强建议可归档到 .out-of-scope/;过程中可能更新 CONTEXT/ADR 标了 ready-for-agent → implement;架构债 → improve-codebase-architecture
wayfinder 任务超大或雾太大,一个会话装不下;要的是一张决策地图,不是立刻交付 工单系统:一个 wayfinder:map 父 issue + 若干「决策票」子 issue、blocking 关系、解决后的结论评论;研究类问题可旁路走 research 雾散后 /to-spec 再拆票实现(默认不直接 implement)
improve-codebase-architecture 想改进代码库的可测性 / AI 可导航性;或修 bug 时发现没有好的测试接缝 临时目录里的一份 HTML 报告(不进仓库);讨论后可更新 CONTEXT/ADR;不直接大改业务代码 选定一个改进想法 → grill-with-docs / to-spec 进主流程

5.2 Engineering · 人和 AI 都能启动

Skill 什么时候用 会改什么 干完接什么
grilling 需要对计划或决策做无情的决策树面试(一次只问一题) 不留痕迹(纯对话纪律) 达成「互相理解」后再行动;常被 grill-me、grill-with-docs、triage、wayfinder 调用
domain-modeling 要主动维护项目的领域语言;或被别的 skill 要求更新术语 CONTEXT.md(及分册);满足三个条件时写 docs/adr/ 决策记录 回到当前流程;之后的 skill 都应该用术语表里的词说话
codebase-design 设计或加深模块、找测试接缝、统一「深模块」词汇 主要是词汇和设计讨论,不直接改代码;被 improve-codebase-architecture 拿去做双重设计 落地时进 to-spec / to-tickets;或由 tdd 在约定好的接缝上写测试
tdd 先写测试再写实现(red-green);implement 内部应尽量用它 测试文件 + 最小实现代码;会读 CONTEXT/ADR 对齐命名 一个切片一个切片循环;大重构留给 review 阶段,别塞进红绿循环
code-review 相对某个固定起点(commit / 分支 / tag)做「规范 + 需求」双轴审查;implement 收尾必跑 默认不改代码,只产报告 按报告修;修完通过后 commit(implement 流程内)
diagnosing-bugs 难缠、间歇、回归类 bug;需要先造出「必现失败」的反馈环 可能有:失败测试、临时调试脚本、带标记的调试日志(用完删掉)、最终修复和回归测试 找不到合适的测试接缝 → improve-codebase-architecture;否则清理临时产物、说明根因
prototype 纸上说不清的问题:状态机手感、UI 形态 明确标记为一次性的临时代码(放在接近真实位置的地方);得到的答案应回写到 issue / 决策里;原型代码本身应丢弃或隔离 用 handoff 把答案带回主线程;决策进入 spec / tickets
research 需要对着一手资料(官方文档 / 源码 / 规格)做调查,且可以后台跑 仓库里一篇带引用的 Markdown 研究报告 把报告带进 grill-with-docs / wayfinder 做决策;它不替你思考
resolving-merge-conflicts merge 或 rebase 已经冲突、进行到一半 冲突文件内容、stage 状态、完成合并的 commit;会跑项目检查并修坏掉的东西 继续原分支的工作;禁止把 abort 当默认出路

5.3 Productivity

Skill 启动 什么时候用 会改什么 干完接什么
grill-me U 没有代码库、或不想留文档时,做无情面试 什么都不改(只是调用 grilling) 互相理解之后,你自己去实现或写文档
grilling M 同一套面试纪律,也被工程流程复用 不留痕迹 见上
handoff U 要换新会话但保留当前讨论;或进出 prototype 岔路 在操作系统的临时目录(不是仓库里)写一份 handoff 文档,里面列出建议接手的 skill;引用已有产物而不是复制 新开一个 agent 会话,引用那份文件继续
teach U 跨多个会话学一门主题(你现在就在用) 教学工作区:MISSION、RESOURCES、lessons、reference、learning-records、assets、NOTES 做完练习 → 下一课;更新 learning-records
writing-great-skills U 读或改某个 skill 时,需要「可预测性」词汇和失败模式清单 什么都不改(纯参考文档) 编辑具体 SKILL.md 时当检查单用

给人看的叙事版文档(不是 agent 的行为真源): https://aihero.dev/skills-<name>,仓库内镜像在 docs/engineering/docs/productivity/

6. 反着查:仓库里多了个东西,是谁干的

遇到「仓库里怎么突然多了个文件 / 评论」时,从产物反查作者,比按 skill 名单逐个扫更快。

产物 主要写入方 备注
docs/agents/issue-tracker.md 等配置 setup-matt-pocock-skills 工程类 skill 的行为配置真源;可以手改,不必每次重跑 setup
CONTEXT.md / docs/adr/* domain-modeling(被 grill-with-docs、triage、wayfinder、架构讨论等调用时写) CONTEXT 是术语表,不是需求文档;ADR 要同时满足三个条件才写(0004 讲)
工单系统里的 spec issue to-spec 模板章节在 SKILL.md 里;发出来就打 ready-for-agent
工单系统 / .scratch/**/issues 里的票 to-tickets 垂直切片 + Blocked by 依赖;不要再去 triage 它们
wayfinder 地图 + 决策子票 wayfinder 产出的是「已决定的决策」,不是交付物;术语见 CONTEXT.md 的 Decision ticket
issue 评论 / 标签 / 处理意见 triage 评论必须以 AI 声明开头
.out-of-scope/* triage(被拒绝的增强建议) 已经实现后又 wontfix 的不放这里
业务代码 + 测试 + commit implement(内部用 tdd);diagnosing-bugs 的修复路径 code-review 默认只出报告不改代码
临时 HTML 架构报告 improve-codebase-architecture $TMPDIR/architecture-review-*.html,不进仓库
临时 handoff 文件 handoff 明确写在 OS 临时目录,不在当前工作区
研究 Markdown research 一手资料 + 引用;存放路径随仓库习惯
一次性原型代码 prototype 答案留下,代码扔掉或隔离
教学工作区文件 teach(本课程) MISSION / lessons / reference / learning-records…

术语:CONTEXT.md(Issue tracker / Decision ticket / Triage role)

7. skill 之间怎么互相调用(五条规则)

  1. 依赖用「一句话」表达:正文里写 Run the /grilling skill 这种自然语言调用;禁止用 ../other/SKILL.md 这种跨目录深链来共享逻辑(invocation.md 的 Dependencies 规则)。
  2. 共享词汇集中放:domain-modeling、codebase-design、grilling 是「地板」——任何上层 skill 需要时就调用它们,而不是把同样的规则抄进自己的正文。
  3. 入口薄、纪律厚grill-me / grill-with-docs / implement 故意写得极短。想改行为时,先打开被它们调用的那个厚文件。
  4. 配置先于工单写入:to-spec / to-tickets / triage / wayfinder / code-review 都假定 setup 跑过;没跑过,它们会让你先去 setup。
  5. 路由器不替你干活:ask-matt 只负责指向某个 user-invoked skill;真正启动,仍需你亲手输入那个名字。
grill-me            → grilling
grill-with-docs     → grilling + domain-modeling
implement           → tdd … 然后 code-review … 然后 commit
triage(需要时)     → grilling + domain-modeling
wayfinder 画图       → grilling + domain-modeling;研究票 → research
wayfinder 做票       → 按票的类型走(research | prototype | grilling | task)
improve-arch        → codebase-design;选定后 grilling + domain-modeling
diagnosing-bugs     → (可选)improve-codebase-architecture

8. 什么时候可以故意跳步

地图给的是默认路线,不是宗教仪式。所谓灵活运用 = 知道每条默认规则为什么存在,然后有意识地偏离它。

情境 可以怎么走 代价 / 不能省的部分
改动极小、已经对齐 跳过 grill 和 spec,直接 implement 或 tdd 仍要有一个可验证的完成条件;做大了随时退回 grill
只有模糊想法、没有代码库 用 grill-me 而不是 grill-with-docs 没有术语表留下来,换台机器讨论就丢了
刚 grill 完、上下文还在 直接 to-spec——这一步禁止再面试,只做综合 如果其实没对齐,硬写 spec 会写出「假共识」
需求一张票装得下 to-spec 之后甚至可以跳过 to-tickets,让 implement 直接对着 spec 干 跨会话、有依赖关系时,不能省 tickets 的 blocking 图
外来 issue 本身写得很清楚 triage 时快速贴标签,少面试 标 ready-for-agent 之前仍建议写处理意见(brief)
wayfinder 画图时发现其实没雾 停下来,改走主流程 skill 正文要求此时先问你一声再决定怎么继续
设计问题纸上扯不清 主流程中插一段 prototype 岔路,前后用 handoff 夹住 原型的答案要回写进 issue / 决策;原型代码别当正式交付

9. 检索练习

先别往回翻表,凭记忆答。选项字数刻意对齐,不会从长度泄题。

自测(立即反馈)

1. 外来 GitHub issue 堆着,你该优先开哪个 user-invoked skill?
2. 默认谁会把文件写到 OS 临时目录而不是仓库里?
3. wayfinder 地图上的雾散了,作者默认推荐的下一步是?
4. 下列哪项是 user-invoked 编排层「故意写得很薄」的例子?
5. to-tickets 在本地 tracker 下,票文件默认落在哪里?
额外提取练习(无选项) 合上本页,在纸上写出主流程的 5 个节点,并标出:哪一步会写工单系统、哪一步必须开新会话、哪一步之后禁止再 triage。 写完对照第 4–5 节。写错的那格,就是把对应 skill 的深课往前排的信号。

10. 下一课与一手材料

本课主一手材料(请打开原文读,不要只背本页摘要):

建议下一课(0002): setup-matt-pocock-skills——配置层唯一的 skill。没有它, to-spec / to-tickets / triage / wayfinder 的「会改什么」全都落在一个没定义过的工单系统上。 深课会逐段对照它的「探索 → 提问 → 确认 → 写入」流程,以及它生成的 docs/agents/* 模板里每个字段的含义。

老师就在会话里。 对本课任何一行有疑问——某个 skill 是不是真的会写某个路径、某种跳步算不算「作者允许的灵活」——直接在对话里问。 回答会回到对应 SKILL.md 的原文,而不是临场编造。 做完检索练习后,回复「练习结果 / 哪里卡住 / 开 0002」,我们进下一课。