路由器。你描述处境,它告诉你该用哪个技能、哪条流。有一条硬规矩:在陈述某技能做什么之前,必须先读那个 SKILL.md 全文,不能靠摘要回答。
你已有 14 个项目技能,再加一个路由器只会让"该用哪个"更难判断。等你装完 10 个以上时再说。全量读完了 mattpocock/skills 的每一个 SKILL.md,并对照 FF-AIO 的 7 个仓库、10 份项目规则和实际 CI 配置逐条比对。结论是:你已经有一套高度同构的流程, 缺的是语言层和护栏层。
理解下面三个结构特征,否则很容易用错。它刻意不做成 GSD / BMAD / Spec-Kit 那类"框架吃掉流程"的东西。
用户触发(disable-model-invocation: true)只能人打 /name,职责是编排;模型触发模型能自己够到,装的是可复用纪律。用户技能可以调用模型技能,但永远不能调用另一个用户技能。
setup-matt-pocock-skills 每个仓库跑一次,写三份配置:issue tracker、triage 标签词表、领域文档布局。没有它,to-spec / to-tickets / triage 会输出错误结果,而不只是不够精准。
grilling(访谈原语)、domain-modeling(领域语言)、codebase-design(深模块词汇)不是流程,是别的技能反复调用的底座。单独跑它们只在"问题出在词上"时才有意义。
ask-matt 是路由器,它把整个库组织成下面的形状。注意它自己反复强调的一件事:流程 1 到 3 步要保持在一个不中断的上下文窗口里,别在中途 compact。
triage汇入 implement
diagnosing-bugs汇入 retro
wayfinder出决策,交棒给 to-spec
grilling访谈原语:按轮问完前沿,每题附推荐答案
domain-modeling挑战术语,写 GLOSSARY.md 和 ADR
codebase-design深模块:module / interface / depth / seam
要点wayfinder 路清了之后是交棒给 to-spec,不是直接进 implement。绕过这一步会把地图里那些互相引用的决策细节全丢掉。
适配度是本报告的核心判断,不是作者的分级。图例见下方筛选器。
路由器。你描述处境,它告诉你该用哪个技能、哪条流。有一条硬规矩:在陈述某技能做什么之前,必须先读那个 SKILL.md 全文,不能靠摘要回答。
你已有 14 个项目技能,再加一个路由器只会让"该用哪个"更难判断。等你装完 10 个以上时再说。一次性配置。探查仓库 → 确认 issue tracker(GitHub / GitLab / 本地 markdown / 自定义)→ 确认 triage 五个标签字符串 → 确认 GLOSSARY.md 单上下文还是多上下文 → 把摘要写进 AGENTS.md 或 CLAUDE.md 的 ## Agent skills 块。
关键细节:两个文件都已存在时只改已有的那个,绝不新建另一个;triage 标签只在装了 triage 技能时才问。
/code-review 需要它。
全文只有一句:调用 grilling 和 domain-modeling。它是"访谈 + 边聊边写 GLOSSARY.md 和 ADR"的组合入口。作者本人说这是整个库最酷的技术。
不访谈,只把已有对话综合成 spec 发到 tracker。模板含问题陈述、解决方案、超长用户故事清单、实现决策、测试决策、范围外、备注。硬性要求:先画出准备在哪几个 seam 上测,确认后再写,理想数量是 1 个。
你已经有了:docs/agents/workflow.md 的"定规格"一步,产出 spec 文件。它的模板可以借(尤其是用户故事清单的密度),但用它的流程反而更啰嗦。
把 spec 拆成追踪弹垂直切片,每张票声明阻塞边。核心纪律三条:一张票切穿所有层(不是后端票 / 前端票 / 测试票)、一张票一个上下文、一张票能独立演示。
最有价值的是那段例外:宽范围机械改动禁止切片(改字段名、批量换接口),因为任何一张票都无法独立转绿,要走"先并存 → 分批迁移 → 最后删旧形态"。拆完必须向用户确认粒度才能发布。
你的 docs/tickets 现在还是空的。它的阻塞边 + 前沿 + 宽改动例外,几乎可以原样搬进 workflow.md。按 spec 或票实现。指定票时先报出票标题;逐处调用 tdd;经常跑类型检查和单文件测试,最后跑全量;收尾调用 code-review;提交到当前分支。总共不到十行,是个薄包装。
整份 spec 一次性落地到一个集成分支。把票当任务图读,按前沿并发铺实现子代理,每个子代理独占 worktree 和分支;完成一个就用 merger 子代理合回集成分支,前沿变化后立刻补发新子代理。全部完成后对整个集成分支跑一次 code-review。通信靠上下文指针,不复制信息。
后端多模块 Maven 天然适合 worktree 并行,但它依赖两件事:docs/tickets 真的被用起来、票之间的阻塞边是对的。先手动跑顺 2~3 轮再说。处理"比一个会话大得多、且还没看清路"的工作。在 tracker 上画一张共享地图,子票是决策票(research / prototype / grilling / task 四型),一次只解一张。核心概念是战争迷雾:地图故意不完整,"Not yet specified" 记录你感觉到但还说不清的决策,能说清才开票。它只产出决策不产出交付物,路清了就交棒给 to-spec。
只在"说不清路"时用,比如 AI 教练要不要从 H5 迁到独立端这种横跨后端、两个前端、数据口径的大改造。作者明说它又慢又密,别对已想清楚的功能用。issue 状态机:两个分类角色(bug / enhancement)+ 五个状态角色(needs-triage / needs-info / ready-for-agent / ready-for-human / wontfix)。动作序列是收集上下文 → 查重(按领域概念搜现有实现,不按请求字面)→ 查历史拒绝记录 .out-of-scope/ → 先验证再访谈(bug 要复现,PR 要跑)→ 需要时 grilling → 出 ready-for-agent 简报。所有评论必须以 AI 生成免责声明开头。
架构体检。先用 git log 找热点(YAGNI:只深挖近期改动多的区域,不搞全量扫描)→ 派子代理有机走查,找浅模块 → 生成自包含 HTML 报告写到操作系统临时目录(不进 repo),每个候选含前后对比图和建议强度徽章(Strong / Worth exploring / Speculative)→ 你挑一个,进入 grilling。会主动检查是否与已有 ADR 冲突。
回顾会,但改进对象是代理的环境而不是代码。七类候选:导航指针、自动化检查、编码标准、全局 AGENTS.md 瘦身、工具经济性、无效指令、信息获取。
两个核心论点值得直接采纳:① 机械性错误做成确定性检查,判断性错误才写进标准;② review 代理该背标准,实现代理不该,因为实现代理的上下文压力最大。
你 1451 行规则靠@ 引入常驻上下文,正是它说的"该瘦身"。这是最能立刻产生结构性收益的一个。
主动打磨领域模型。术语与 GLOSSARY.md 冲突时当场指出;模糊词提出精确规范词("你说的 account 是 Customer 还是 User?");用构造的边界场景压测概念;与代码对照,发现矛盾就摊开。术语一敲定立刻写进去,不攒批。
ADR 只在三条同时满足时才提议:难以回退、脱离上下文会让人困惑、是真实权衡的结果。任何一条不满足就跳过。
你的 admin-edu / mall-order / admin-hr 之间"课程 / 培训单 / 测评"的边界从来没被写下来过。这是它最高价值的落点。深模块词汇表,且明确禁止你说 component / service / API / boundary,只准用 module / interface / depth / seam / adapter / leverage / locality。核心判据三条:删除测试(删掉这个模块,复杂度是消失了还是转移了?消失就是直通层)、接口即测试面、一个 adapter 是假 seam,两个才是真 seam。
附 DEEPENING.md(按依赖类型深挖)和 DESIGN-IT-TWICE.md(并行派子代理用几种截然不同的方式设计同一接口再比较)。
红绿循环参考手册。三个反模式写得很准:实现耦合(重构就挂说明测错了)、同义反复(expect(add(a,b)).toBe(a+b),断言用代码的方式重算期望值,构造上就不可能失败)、横向切片(先写一堆测试再写实现,等于在理解实现之前就锁死测试结构)。改走垂直切片。它还明确说:重构不属于这个循环,归 review。
硬 bug 的诊断纪律,六阶段严格闸门。Phase 1 就是全部:必须造出一个"已经在这个 bug 上变红"的紧致反馈环,列出 10 种造法(失败测试 / curl / CLI / 无头浏览器 / 回放抓包 / 一次性 harness / 模糊测试 / 二分 harness / 差分对比 / 人工脚本兜底),并要求继续收紧:更快、信号更尖、更确定。
完成判据是四条勾选:红能力、确定性、秒级、可无人值守。建不出环就停下来说,绝不允许"先读代码猜原因",那正是它要防的失败模式。后面才是复现 → 最小化 → 3~5 个可证伪假设 → 插桩(日志必须带 [DEBUG-xxxx] 前缀,收尾一次 grep 清干净)→ 修 + 回归。
一次性原型回答设计问题。先分叉:问"逻辑 / 状态模型对不对"→ 单文件 HTML(按钮 + 标签页引导,非程序员也能开);问"该长什么样"→ 同一路由下几套截然不同的 UI,URL 参数切换。
铁律:明确标记一次性、一条命令能跑、默认不持久化、跳过打磨、每次操作后把状态全打出来、做完把结论折回真代码、原型本身留到 prototype/<name> 分支当一手来源。
tests/ai-coach/*.test.mjs 这种 harness 思路,和它的逻辑分支很接近。做成两类分支都跑过一次再判断是否常驻。
派后台代理去查,你继续干活。只信一手来源(官方文档、源码、规范、一方 API),每条论断追到拥有它的源头,产出带引用的 Markdown 落到 repo 已有的笔记位置,没有约定就放个合理位置并说明。
短小无机制,一句话就能抄走:"查证只认一手来源,产出带引用。"不值得为它建一套基建。双轴审查,从固定基点(commit / branch / tag / merge-base)取 diff:Standards 轴看是否遵守本仓文档化标准 + 一套 Fowler 坏味道基线;Spec 轴看是否忠实实现原始 issue / spec。两轴并行子代理跑,绝不合并、绝不跨轴排名。
这个设计理由很实在:只过一轴是常态("完全合规但做错了事" / "做对了事但破坏了约定"),合并会互相掩盖。坏味道基线里"仓库已文档化的标准永远覆盖基线"这条很关键。
你的 review.md 已经在两轴上分开了,但缺并行子代理这个机制。同一个上下文审两轴会互相污染,这是唯一必须补的一环。PR 正文模板三段:Summary(选最小的可视化:伪代码 / 调用树 / 组件树 / 文件树 / Mermaid / diff)、Evidence(before + after)、Merge Danger(单向门还是双向门 + 爆炸半径一个词)。
你全部在自建 GitLab 上,模板可以直接落成.gitlab/merge_request_templates/。对你们特别有用,因为爆炸半径是真的:proda / prodb 灰度、切流量,一次合错就是资损。
生成交互式 bash 脚本,带人走只有人能做的事:开基础设施、配凭据 / CI secret、点不熟悉的第三方后台、跑一次性迁移或割接。模板 template.sh 已经把进度、确认闸门、跨平台开 URL、隐藏输入密钥、幂等写 .env、gh secret 写入、收尾汇总做好了,你只负责划阶段,绝不手改模板库。
gh secret 那部分要换成 GitLab 变量。
访谈原语。把设计当成决策树,按轮推进:每一轮问完当前前沿(所有前置已定的问题),每题编号并附上推荐答案,然后等回答再算下一轮。铁律是找事实是代理的活,不是用户的:需要环境事实就派子代理去查,别问用户;决策才是用户的。
这是全库复用率最高的一块,grill-me / grill-with-docs / triage / wayfinder / improve-codebase-architecture 全都在内部调它。全文一句:调用 grilling。无状态,不落任何文件。给"没有工作目录"的场景用:打磨方案、设计、一篇文稿。
把当前对话压成交接文档存到操作系统临时目录(不是工作区)。三条要求:不重复其他产物已有的内容(spec / 计划 / ADR / issue / commit / diff 用路径或 URL 引用)、脱敏、末尾附建议调用的技能清单。
你跨 7 个仓库、会话切换频繁,存到$TMPDIR 而不是工作区这点正好合适。不依赖任何配置,可以随手用。
把当前目录变成有状态的私人课堂。产物结构:MISSION.md(为什么想学)、RESOURCES.md、lessons/0001-*.html(每课一个自包含 HTML)、reference/*.html(速查表,可打印)、learning-records/(类似 ADR 的学习记录)、assets/(可复用组件)。
理论内核是区分流畅度强度(当场想起来)和存储强度(长期留存),靠"合意困难"(提取练习、间隔、交错)来造后者。它还强调"绝不相信自己的参数化知识",一切以一手资源为准。
非工程用途。但它的课程结构(MISSION + learning-records + 可复用 assets)如果你要给团队做培训,是很好的参考。把"你一个人答不了的决定"变成给别人的问卷。关键反直觉点:只访谈"发送"这件事,不访谈主题:问清对方是谁、你要拿回什么,然后问题瞄准两者之间的缺口。
偶尔有用。比如要问业务方"培训单和课程的边界到底是什么",用它比直接在群里问要好。全文一段话,纯纠正机制:"刚才那条我没听懂,重讲一遍:给点上下文,用 ASD-STE100 简化技术英语,用 GLOSSARY.md 的词汇。"
机制极轻(就是一句 prompt),但它依赖 GLOSSARY.md 存在才有威力。你先建字典,这个才有意义。写给代理读的文档的方法论,全库理论密度最高的一篇。要点:上下文指针(一行 AGENTS.md 引用的措辞而非目标,决定代理会不会去读;必须前置引导词、每个分支一个触发词);两种负载(上下文负载 = 常驻 token;认知负载 = 人要知道有哪些文档);信息层级(文件内步骤 > 文件内参考 > 披露式参考)。
反直觉的两条:否定式指令是反模式("别想大象",禁令把被禁行为拉进上下文反而更可得,要正面描述目标行为);逐句猎杀 no-ops(模型默认就会照做的指令,付了负载却没改变行为)。
你的 AGENTS.md + 1451 行规则正是它的靶子。不用装,读一遍就能立刻改进你的规则文件结构。这是本报告建议你最快完成的一项。用子代理在单会话内推进长期目标。双轨思维:战术(怎么完成眼前任务)+ 战略(怎么改造环境让下一个任务更好)。核心是 wiki:互相链接的 markdown 页面文件夹,跨会话存活。三条铁律是"写历史不写现在":每条断言带日期,涉及代码的必须引用 commit,变化时新增带日期的断言并把旧的标为 superseded,不要改写旧的。
跟你的多仓库工作区模型不匹配,收益小于成本。但"写历史不写现在"这条,你写决策记录时可以直接用。handoff 的加强版:写完摘要直接用 claude --bg --name "<名字>" 拉起一个后台代理接着干,参数用文件传入(避免 shell 解释反引号和 $)。
只产出工作流 spec 的有状态 grilling。用"人生是环环相扣的循环"这个透镜找值得委托的重复模式,词表是 trigger / checkpoint / push right(把人介入点尽量推后,一次问、晚点问、带齐东西问)/ brief(人读的是决策级摘要,不是草稿)。完成判据:实现代理拿到能不问任何问题就开工。
个人生活工作流,非工程。给 TS 仓库装 dependency-cruiser,把每个 package 变成深模块:package 根目录文件是入口点(公开),任何子目录都是私有。四条 error 级规则(入口点边界 / 包内自由 / 测试只穿入口点 / 无环)。
最值得抄的是它的验收方式:要求证明规则真的会咬人,先通过 → 故意加一个深层 import 必须失败 → 回滚必须再通过,三步全部观察到才算完成。
绑 dependency-cruiser + TS monorepo,你后端是 Maven。但那个"证明规则会咬人"的三步验收,可以搬到maven-enforcer-plugin 上。
写作"探索"阶段:只挖碎片不做结构。碎片用 --- 分隔,不写小标题不打标签。最值钱的碎片类型是引导词:一个能承担整篇文章的紧凑隐喻。
把素材堆成一段段节拍,选自己的冒险式推进。每次只写当前这一拍,写完停下来给 2~3 个下一拍候选。核心约束是接地:每个概念要么是读者自带的前置,要么已被前面某一拍接住,否则读者会掉线。
写作专用。把素材整理成文章,逐段进行,每一段都要论证格式选择(散文还是列表?引用还是转述?表格还是重复结构?)。对弱过渡句很强硬:"删掉这段会坏什么?"
写作专用。但它"论证格式选择"的思路,写技术文档时同样成立。装 PreToolUse hook,在 Claude 执行前拦截危险 git 命令:git push(含 --force)、reset --hard、clean -f/-fd、branch -D、checkout . / restore .。被拦时告诉 Claude 它没有权限。会问清装本仓库还是全局,合并进已有 settings 不覆盖。
reset --hard 或 branch -D 一次性破坏的。做成机械拦截,正是 retro 说的"机械性错误做成确定性检查"。
装 Husky + lint-staged(Prettier)+ 在 pre-commit 里跑 typecheck 和 test。先探测包管理器(看 lock 文件),没有 typecheck / test 脚本就省略并告知。
前端 operation 已经有 husky + lint-staged 了,h5 用 Biome。真正缺的是pre-commit 里跑测试,这才是补护栏的动作。把测试里的 as 断言迁到 @total-typescript/shoehorn:fromPartial() 传部分数据、fromAny() 故意传错类型、fromExact() 强制全量。只在测试代码用。
造课程练习目录(XX-section/XX.YY-exercise/{problem,solution,explainer}),靠 pnpm ai-hero-cli internal lint 校验。
下面每个数字都是在本机实际跑命令得到的,不是推测。
*Test.java 文件-Dmaven.test.skip=true@ 引入常驻上下文最关键的一点:docs/agents/workflow.md 的四步跟它的主流程几乎就是同一件事,所以不需要换框架。
| 你现在有的 | 对应的技能 | 差距 / 该补什么 |
|---|---|---|
| workflow.md 四步 | to-spec to-tickets implement code-review |
缺两样:阻塞边 + 前沿(谁可以先开工)、宽范围机械改动禁止切片的例外。expand–contract 那段可以原样搬进去。 |
| review.md | code-review 双轴 |
你已经在两轴上分开了,但缺并行子代理机制。同一上下文审两轴会互相污染。只借这一点即可。 |
| verification.md | tdd + diagnosing-bugs |
你的文档回答"怎么证明做完了",这两个技能回答"过程中怎么持续拿到反馈"。互补,不替代。 |
| .claude/rules 1451 行 | writing-for-agents 负载理论 |
1451 行常驻是实打实的上下文负载。该留的只有导航指针,标准交给 review 代理去读。 |
| 14 个项目技能 | wizard + retro |
branch-naming、prod-deploy 里"必须人亲自点"的环节正是 wizard 的靶心。 |
P0 是三件成本低、收益直接的事。做完再谈 P1。
拿一个你最近真在改的业务跑一次 grill-with-docs。推荐 AI 教练 coach:你前端已经有 tests/ai-coach/、scripts/verify/coach-state.verify.mjs、src/views/coach/ 一整套,上下文最完整。
产出会直接改善三件事:变量和函数命名一致、代理导航更快、代理思考更省 token。
后端:把 CI 的 -Dmaven.test.skip=true 拿掉,或者至少分层跑(先只跑改动的模块)。前端 h5:package.json 里连 test 脚本都没有,但 tests/ai-coach/*.test.mjs 是存在的。
这不是"用某个技能",而是 retro 的核心论点:仓库里没有护栏,本身就是一条发现,不是中性默认。
装 git-guardrails-claude-code,装到项目级 .claude/settings.json。你 AGENTS.md 里写着的「禁止反向合并」这条,从"代理记住了"变成"代理做不到"。
block-dangerous-git.sh 的匹配规则抄过来。把你的工具明确列为"造环工具箱":mp-api-test 造 curl 环、mp-db-test / adb-prod-query 造数据态环和差分环、bruno-test 造可重复回归、agent-browser 造无头浏览器环、alibabacloud-sls-query 回放真实日志。
然后立一条规矩:没有一条已经在这个 bug 上变红的命令,不许开始猜原因。
improve-codebase-architecture 会先用 git log 找热点,只挖近期真在动的区域。根据你项目结构,最可能撞上的是三类:
把 pr 的三段模板写进 .gitlab/merge_request_templates/。重点保留 Merge Danger 那一段:单向门还是双向门 + 爆炸半径。你们的 proda / prodb 灰度和切流量,一次合错就是资损。
$TMPDIR 正好合适。会把你现有的 14 个项目技能冲乱,而且 in-progress 那 7 个根本不该装。
issue tracker 选 GitLab(你 glab 已装、remote 指向 git.fastfish.com),triage 标签保留默认五个,领域文档用单上下文。
mp-service 是独立 git 仓库,而工作区根 AGENTS.md 不是。setup 会改"已存在的那个文件",所以两个位置是两套配置。建议先只配 mp-service。docs/adr/ 会落在 mp-service/ 下,跟现有的 wiki/、doc/、work-log/ 并存,先看一眼会不会打架。
tdd、code-review、diagnosing-bugs、domain-modeling、codebase-design、prototype、research、wizard、pr、grilling、writing-for-agents。
这一批是纪律,装了就一直有用。
wayfinder 和 implement-spec 最后再说。
装的时候走你已有的 manage-skills 技能,比手工 copy 好:能保留来源元数据、支持按 agent 部署和下线、以后好统一升级。