不期而至🎁 惊喜礼盒
🎁 Surprise · 不定期 · 随缘更新


🎁 Surprise · 不定期 · 随缘更新
🎁 SURPRISE
谢谢你停在这里。愿你被温柔以待,也愿你带着一点勇气继续往前——这是我留给访客的小小礼物 🎀✨。
— threetwoa
(=;ェ;=) 客来不妨坐下,落叶声里续一壶茶;猫会自己找你。
走进数字花园
TypeScript 圈博主 Matt Pocock 开源了自己的 agent 技能库,star 涨得飞快。表面是 40 个 SKILL.md,拆开看其实是同一套工程方法论。这篇基于技能原文,把它的骨架和关键设计讲透。
整个库不是平铺的技能堆,而是三层结构加一堆独立件。ask-matt(官方路由器)把它画得很清楚:

主流程是「想法→交付」,三条 on-ramp(入口)从不同起点汇入,两个词汇技能在所有流程下面提供公共语言,剩下的是独立件。
整库最强的引擎不是写代码的,而是「问问题」的。
grilling 把任何计划当一棵决策树:每个决定下面挂着依赖它的下一批决定。按「轮」问,每轮只问当前能答的那批(frontier,即前置已定的决策),每个问题编号并附上 agent 自己的推荐答案。
分工很明确:能从代码库或文件查到的事实,agent 派子代理查,不麻烦你;真正要拍的决策才抛给你,等你回答进下一轮。frontier 空了(树走完、没有默默假设)才算完,且在确认共识前不动手。
两个技能不直接干活,但所有技能都踩在它们上面。
domain-modeling(领域建模)管「词」。三条硬纪律:
CONTEXT.md 是纯术语表,零实现细节,不兼当 spec 或草稿codebase-design(深模块)管「形状」。核心是 deep module:小接口后面藏大量行为。几个一眼能带走的原则:
grill-with-docs(有代码库)/ grill-me(无代码库):同一个 grilling 引擎,前者把结论写进 CONTEXT.md 和 ADR,后者不落任何东西。选哪个看有没有代码库,不看心情。
to-spec:把聊定的事合成规范,明确「不访谈,纯合成」。模板有两处反直觉的设计:
to-tickets:把规范拆成 tracer-bullet 垂直切片。每张票切一条贯穿 schema→API→UI→测试的完整窄路,自己可演示可验证,尺寸塞得进一个全新上下文窗口。每张票声明 blocking edges(依赖谁、被谁阻塞),无阻塞的立即可开工。
特殊场景:大范围重构(改一个符号炸全库)不硬塞垂直切片,改用 expand-contract:先加新形态不破坏旧的 → 按爆炸半径分批迁移(每批一张票,CI 保持绿)→ 无调用者后删旧形态。
implement:按票实现,内部驱动 tdd(红→绿,一次一切片)。每张票自包含,上一张的上下文可丢,新票开新窗口。
code-review:双轴,两个并行子代理互不污染上下文。一个查「符不符合仓库规范」(Standards),一个查「实现对不对得上原需求」(Spec)。
triage(issue 管理):只处理「你没创造的 issue」,也就是外部 bug 报告、feature 请求。走状态机分类、验证、写成 agent 能直接领走的任务。注意 to-tickets 产生的票已是 agent-ready,不要再过 triage。
diagnosing-bugs(硬 bug):只接「一眼看不出来」的,比如间歇性 flake、两个已知良好状态之间爬进来的回归。铁律:先建紧反馈环(一条已经对这个 bug 红的命令),再谈理论;修完带回归测试。事后若发现真问题是「没有好 seam 锁住这个 bug」,就转给 improve-codebase-architecture。
wayfinder(超大工程):主流程里认知负荷最高的一环。当「从这到目的地」的路还看不见时,它把工作做成 issue tracker 上的一张决策地图:一个 map issue 挂一批决策 ticket。两处设计很妙:
wayfinder 默认「只规划不执行」:地图清空时交棒到主流程的 to-spec,而不是直接 implement。
ask-matt 里最实用的一段是 phase boundaries。两个阶段之间怎么处理上下文,五选一,官方给了决策顺序:Continue(不花钱)→ clear(什么都不留)→ handoff(跨 harness/目录/同事才用)→ subagent(紧任务单独窗口)→ compact(压缩,树底部的默认)。
核心主张:grilling→spec→tickets 保持一个未断的上下文窗口(约 150k token 的「清醒区」内),别中途 compact;每张 implement 才开新窗口。跨阶段或跨目录用 handoff 搭桥,prototype 进出主流程就靠它。
这套东西最有价值的地方,不是某个技能,而是它把**「有经验的工程师怎么把事做成」**拆成了可组合的流程,并且对 skill 本身用了同一套纪律:薄壳委派(grill-me 正文只剩一句)、旧能力吸收合并、核心小可组合。
三点要认清:
最核心的一点:Matt Pocock 的整个技能库,本质是在教 agent 一件事,动手之前先把每个假设都问一遍。 其他全是这条主线的配套。
这篇发出之后,官方从 v1.1.0 一路发到 v1.2.3(两天三个版本)。技能数量不再是 40 个——现在全仓 35 个,官方正式分发的 promoted 是 25 个。
v1.2.0 一口气废弃了 4 个:design-an-interface、ubiquitous-language、request-refactor-plan、qa。前三个分别被 codebase-design、domain-modeling、improve-codebase-architecture 吸收——正好印证了上文的「旧能力吸收合并」:词汇层和架构层越做越全,原先独立的单点技能就没了存在必要。
| 技能 | 它干嘛的 | 特别之处 |
|---|---|---|
| wait-what | 消息没看懂就让 agent 重新讲一遍 | 全库最短,正文 3 行;用「听者状态」命名而不是输出(不叫 /tldr),逼它重讲 + 简化 + 带上缺的上下文 |
| to-questionnaire | 把「你一个人答不了的决定」变成问卷 | grill 的对象不是主题而是「发给谁、要什么」,从 in-progress 毕业 |
| wizard | 生成交互式 bash 脚本带你走手动流程 | 从 in-progress 毕业,改成 model-invoked(agent 遇到只有人能做的步骤会自动调它) |
另外 writing-great-skills 改名为 writing-for-agents,无别名,旧名直接失效。重构动作:GLOSSARY 并入 SKILL.md、skill 专属机制拆到新的 SKILL-MECHANICS.md、pruning 加了「cache」概念(文档别复述环境里能查到的东西)。
v1.2.0 最大的结构性动作是加了 Codex 兼容:每个 SKILL.md 旁多一个 agents/openai.yaml(Codex 的扩展元数据),仓库根 AGENTS.md 是 CLAUDE.md 的符号链接。背后是 OpenAI 推的 Agent Skills 开放标准(agentskills.io):目录约定 .agents/skills/
各工具对这套标准的读取路径并不完全一样,铺到多工具链时最容易踩:
| 工具 | 读哪些 skills 目录 |
|---|---|
| Codex | ~/.agents/skills(主路径)+ 项目级 .agents/skills |
| Cursor | ~/.cursor/skills + 兼容 .agents/skills |
| OpenCode | ~/.config/opencode/skills + 兼容 .agents/skills |
| Claude Code | ~/.claude/skills,不读 .agents/skills,要靠 junction/符号链接 |
把技能放进 /.agents/skills 真源,Codex 直接读,Cursor/OpenCode 双路径兜底,只有 Claude Code 需要一条 junction(/.claude/skills 指向真源)。
官方从 v1.2.0 起同时提供两种装法:插件版(claude plugins install mattpocock-skills,订阅制自动更新,但只活在 Claude Code 的插件沙盒里)和复制版(npx skills@latest add mattpocock/skills,可编辑文件副本)。官方明说装两个会重复。工具链不止 Claude Code 的话,插件版其他工具读不到,只能复制版 + 真源 + 镜像。
是 wait-what 的命名哲学:修「模型话痨」这类毛病,技能越写越长越没用,不如用一个命名精确的短触发词,让 agent 一次做对「重讲、简化、补齐上下文」三件事。名字描述「听者的状态」而不是「想要的输出」,是这套技能库一贯思路的极端化。
复制链接或生成海报,发给感兴趣的人。

14 周 6 个项目,从零搭一个可部署、可监控、可灰度、可回滚的 Agent 工程平台。七章大纲逐层拆解,附完整技术栈清单。
2026-08-06部分内容可能已过时
分享你的想法,与大家交流讨论
像发消息一样写就好:点工具栏插入表情 / 图片,表情会直接显示。插图 ≤5MB。

🎁 Surprise · 不定期 · 随缘更新
🎁 SURPRISE
谢谢你停在这里。愿你被温柔以待,也愿你带着一点勇气继续往前——这是我留给访客的小小礼物 🎀✨。
— threetwoa
有什么想了解的?
我基于博客内容回答