前 12 名里 8 个 Skill 来自同一个仓库(mattpocock/skills),此前各轮已把 grill-me、tdd、handoff、triage、架构审查等头部成员轮番拆过,本期补上这块阵营里最晚被深拆的拼图:总榜第 12 名 prototype(612.2K 安装,skills.sh 2026-08-30 抓取)。它的特别之处在于反直觉——绝大多数 Skill 在教模型「把代码写好、写对、留下来」,而 prototype 教模型「写一段注定要删掉的代码」。核心发现三条:一是它把「原型」定义成回答设计问题的工具,问题决定形态,用一个二分法决策树覆盖逻辑/UI 两大场景;二是它的六条军规全是反完美主义纪律(不测试、不抽象、不持久化);三是它的收尾设计——「答案才是原型里唯一值得保留的东西」——把知识沉淀和代码清理写成了同一个动作。另附同阵营两块未深拆拼图:teach(489.7K)与 domain-modeling(449.0K)的副拆解。
先看 skills.sh All Time 榜头部(2026-08-30 抓取):
| 排名 | Skill | 来源 | 安装量 | 本系列覆盖状态 |
|---|---|---|---|---|
| 1 | find-skills | vercel-labs/skills | 3.0M | 已拆 |
| 2 | grill-me | mattpocock/skills | 911.2K | 已拆 |
| 3 | frontend-design | anthropics/skills | 796.7K | 已拆 |
| 4 | grill-with-docs | mattpocock/skills | 775.3K | 已拆(随 grill-me 覆盖) |
| 5 | improve-codebase-architecture | mattpocock/skills | 747.2K | 已拆 |
| 6 | tdd | mattpocock/skills | 722.0K | 已拆 |
| 7 | agent-browser | vercel-labs/agent-browser | 702.8K | 已拆 |
| 8 | setup-matt-pocock-skills | mattpocock/skills | 663.0K | 已提及 |
| 9 | vercel-react-best-practices | vercel-labs/agent-skills | 647.0K | 已拆 |
| 10 | handoff | mattpocock/skills | 628.2K | 已拆 |
| 11 | triage | mattpocock/skills | 624.4K | 已拆 |
| 12 | prototype | mattpocock/skills | 612.2K | 本期主角 |
一个套件在前 12 名里占 8 席,这在 2026 年 8 月底的 Skills 生态里是独一份的统治力。但拆解密度并不均匀:流量都给了 grill 家族和工程纪律类,prototype 作为第 12 名反而成了头部阵营里最少被单独拿出来讲的那个——尽管它的设计完成度丝毫不逊色。
以下逐段分析基于仓库 main 分支的 skills/engineering/prototype/SKILL.md 原文(2026-08-30 抓取)。
name: prototype
description: Build a throwaway prototype to answer a design question.
Use when the user wants to sanity-check whether a state model or
logic feels right, or explore what a UI should look like.
三句话,信息密度极高。第一句给定义(一次性代码回答设计问题),第二句给两个触发场景——对状态模型/逻辑的合理性存疑、想探索 UI 该长什么样。注意它的触发词写的不是「用户要求做原型」,而是用户的认知状态(wants to sanity-check / explore)。这是自动触发型 Skill 的高阶写法:匹配意图而非匹配名词。用户说「我不确定这个状态机对不对」时,模型能凭这句话联想到 prototype,而不需要用户念出咒语。
正文第一句就是全文的锚:
A prototype is throwaway code that answers a question. The question decides the shape.
「原型是一次性的、用来回答一个问题的代码。问题决定形态。」这半句话是整个 SKILL.md 的设计哲学:原型不是半成品产品,而是一个测量仪器——仪器的外形由它要测的量决定。后面所有规则都从这一句推导出来。
SKILL.md 把所有设计问题劈成两半:
LOGIC.md 分支:写一个微型交互式终端程序,把状态机推过那些在纸面上难以推演的 case;UI.md 分支:在单一路由上生成几套截然不同的 UI 变体,用 URL 参数和一条浮动底栏切换。紧接着是一句大实话:The two branches produce very different artifacts — getting this wrong wastes the whole prototype(两个分支产物天差地别,选错分支整个白做)。然后给出兜底规则:如果问题 genuinely ambiguous 且用户不在线,按周边代码猜——后端模块走逻辑分支,页面/组件走 UI 分支——并在原型顶部标注这个假设。
这一段值得抄的设计有两处。第一,分支逻辑没有内联写在 SKILL.md 里,而是引用了 LOGIC.md 和 UI.md 两个附属文件——主文件保持 60 行以内的「路由器」角色,分支细节按需加载,这是官方 skill-creator 教科书里「渐进式披露」的社区实践样板。第二,「用户不在线怎么办」被显式写进了决策树——大多数 Skill 假设用户全程在场,prototype 替异步场景写了兜底。
两条分支共享六条规则,每一条都在对抗工程本能:
六条军规的本质是给模型已有的过度工程本能装刹车。LLM 写代码的默认倾向是补测试、加抽象、做防御式处理——这对生产代码是美德,对原型是纯浪费。这份 SKILL.md 用极短的篇幅完成了「换挡」:告诉模型你现在在另一个评价体系里,快和清楚比全和稳更重要。
收尾段的第一句是全文的点睛之笔:
The answer is the only thing worth keeping from a prototype.
把答案捕获到持久位置(commit message、ADR、issue、或原型旁边的 NOTES.md),并且必须连着它回答的那个原始问题一起写。用户在线就当面确认一句;不在就留个占位符,下一轮再补结论再删原型。
这个设计补上了「抛弃式开发」最容易断的一环:原型删了,但决策记录下来了。它和第 4 条军规形成闭环——代码是易耗品,结论是资产。这也是它和 domain-modeling、ADR 体系能咬合的接口(见下文副拆解二)。
仓库 README 对 prototype 的描述是「单份可分享 HTML 文件回答状态/逻辑问题」(a single shareable HTML file for state/logic questions),而 SKILL.md 的 LOGIC 分支实际写的是终端小程序。两处已出现轻微漂移——大概率是 SKILL.md 迭代快于 README。给你的启示:评估一个 Skill 永远以 SKILL.md 原文为准,README 只是橱窗。
teach 在 README 里被归入 Productivity 分类的 user-invoked 组,它的 SKILL.md 开头一行 frontmatter 就值得注意:
disable-model-invocation: true
argument-hint: "What would you like to learn about?"
disable-model-invocation: true 意味着它只能由用户敲 /teach 触发——教学是要用户主动开始的多会话承诺,不该由模型自作主张启动。这个开关在全套件里极少使用,用在这里恰好体现了「编排权归用户」的分层原则。
它的核心设计是用文件系统当持久状态层:当前目录被约定为一个教学工作区,MISSION.md 记录学习动机(一切教学的锚点)、RESOURCES.md 记高信任资源、learning-records/0001-.md 记学习档案(作者明说类比 ADR)、lessons/0001-.html 是编号递增的课程、assets/ 放跨课程复用的组件(第一个组件永远是共享样式表)。模型每次被唤起,先读这些文件恢复「教学状态」——一个 Skill 没有数据库,却实现了跨会话记忆。
教学法层面它塞进了真正的学习科学:区分 Fluency strength(当场提取的流利度)与 Storage strength(长期存储强度),警告流利度会制造掌握的错觉,用检索练习、间隔、交错来制造 desirable difficulty;课时设计遵守工作记忆限制,每课只给一个 tangible win。两个细节尤其见功力:一是 Never trust your parametric knowledge(绝不信任参数化知识)被写成硬规则,教学材料必须来自 RESOURCES.md 里验证过的资源;二是测验题要求每个选项字数完全相同,防止用户靠排版线索猜答案。
短板也明显:它要求用户持续投入多个会话才见价值,且对「教学目录」和项目代码混放的场景没有约束——适合自学舱,不适合即插即用。
domain-modeling 最值得学的是它开篇的自我边界声明:
(Merely reading
CONTEXT.mdfor vocabulary is not this skill — that's a one-line habit any skill can do. This skill is for when you're changing the model, not just consuming it.)
一句话把自己和「读一下词汇表」这个通用习惯划清界限——消费模型是习惯,修改模型才是这个 Skill 的职责。这种「声明自己不是什么」的写法,是解决 Skill 之间触发冲突的低成本方案。
正文给出了单 context 与多 context(根目录 CONTEXT-MAP.md 指向 ordering/、billing/ 各自的 CONTEXT.md)两种文件布局,并强调 Create files lazily——文件只在有东西可写时才创建,不搞空架子初始化。会话中的四个动作构成「主动纪律」:术语与词汇表冲突时当场指出("Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?");模糊措辞当场磨尖("You're saying 'account' — do you mean the Customer or the User?");用具体场景压测概念边界;说法与代码矛盾时摊开来对质。术语一旦敲定立即写回 CONTEXT.md,不许攒批。
而对 ADR 它设计了三重门槛:难以逆转、缺少上下文会令未来读者费解、是真实权衡的结果——If any of the three is missing, skip the ADR。还有一条容易被忽略的铁律:CONTEXT.md 完全不准出现实现细节,It is a glossary and nothing else(它只是词汇表,仅此而已)。这条约束保住了词汇表作为「共享语言」的纯粹性,防止它退化成第二份需求文档。
prototype 从提问到清理的完整生命周期:
flowchart TD
A["用户表达设计疑虑<br/>(自动触发 prototype)"] --> B{"问题属于哪一类?"}
B -->|"逻辑/状态模型对不对"| C["LOGIC.md 分支<br/>微型终端程序<br/>推进难推演的状态 case"]
B -->|"UI 该长什么样"| D["UI.md 分支<br/>单路由多套 UI 变体<br/>URL 参数 + 浮动底栏切换"]
B -->|"说不清且用户不在线"| E["按周边代码猜分支<br/>后端模块→逻辑 / 页面组件→UI<br/>原型顶部标注假设"]
C --> F["六条军规全程生效<br/>①就近放置+抛弃式命名 ②一条命令能跑<br/>③默认不持久化 ④不测试不抽象<br/>⑤每步暴露状态 ⑥完事即删/吸收"]
D --> F
E --> F
F --> G{"设计问题<br/>已回答?"}
G -->|"否"| F
G -->|"是"| H["捕获答案+原始问题<br/>写入 ADR / commit / NOTES.md"]
H --> I["删除原型<br/>或把验证过的决定折进正式代码"]
套件拆解覆盖地图(本系列视角):
mindmap
root(("mattpocock/skills<br/>前12名占8席"))
此前已拆
grill-me 911.2K
grill-with-docs 775.3K
improve-codebase-architecture 747.2K
tdd 722.0K
handoff 628.2K
triage 624.4K
本期新拆
prototype 612.2K
teach 489.7K
domain-modeling 449.0K
尚未上榜/未深拆
wizard
writing-for-agents
ask-matt
评分维度与权重:功能完整度 25%、设计质量 25%、实战效果 20%、上手难度 15%(高星=易上手)、社区活跃度 15%,按权重加总。
| 评测对象 | 安装量 | 功能完整度 | 设计质量 | 实战效果 | 上手难度 | 社区活跃度 | 加权总分 |
|---|---|---|---|---|---|---|---|
| prototype | 612.2K(#12) | ★★★★ | ★★★★★ | ★★★★½ | ★★★★½ | ★★★★★ | 4.58 |
| teach | 489.7K(#55) | ★★★★½ | ★★★★½ | ★★★★ | ★★★½ | ★★★★ | 4.18 |
| domain-modeling | 449.0K(#61) | ★★★★ | ★★★★½ | ★★★★ | ★★★½ | ★★★★ | 4.05 |
prototype 的功能分只给四星是刻意的:它管「回答一个问题」,不管原型的规模化验证,边界收得很紧;但正因边界清晰,设计质量给满星。teach 的实战分受制于多会话投入门槛——它的价值密度高,但见效率低。domain-modeling 上手难度偏高,因为它要求团队真的维护 CONTEXT.md,没有词汇表习惯的仓库里它会空转。
三个 Skill 都来自 mattpocock/skills,二选一安装(官方提醒两种方式混用会导致每个 Skill 装两份):
# 方式一:Claude Code 官方插件市场(托管、自动更新)
claude plugins install mattpocock-skills
# 方式二:skills.sh 安装器(文件落进你的仓库,可自由改造)
npx skills@latest add mattpocock/skills
装完在会话里跑一次 /setup-matt-pocock-skills(每个仓库一次),它会问你三件事:用哪个 issue 跟踪器(GitHub / Linear / 本地文件)、triage 用什么标签、生成的文档放哪。之后 prototype 和 domain-modeling 属于 model-invoked,任务匹配时自动触发,无需记命令;teach 需要显式敲 /teach <主题>。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
