本期换一个打法:不做横向海选,而是锁定当前 Agent Skills 生态里最火的单一作品——mattpocock/skills 仓库中的「grill 家族」。在 skills.sh 全站安装榜上,grill-me 以 91.1 万次安装高居第 2,grill-with-docs 以 77.5 万排第 4,作者亲口承认“这是我最受欢迎的 skills”。更反常识的是:全站第 2 名的 SKILL.md 正文只有一行英文。本文把它逐字节拆开,讲清楚这个家族“薄壳 + 引擎”的双层设计为什么能赢,以及你写自己的 Skill 时能直接抄走的 6 个模式。
在进入拆解前,先记录本周榜单里三个值得注意的结构性现象(数据来自 skills.sh 全时段排行榜):
| 信号 | 证据 | 解读 |
|---|---|---|
| 入口型 Skill 登顶 | find-skills(vercel-labs/skills)300 万次安装,断层第一 |
生态已进入“需要导航找导航”的阶段,分发层本身成了最大赢家 |
| 厂商打包压制个体 | open.feishu.cn 一家 24 个 Skill 合计 1420 万安装;microsoft/azure-skills 14 个合计 750 万;larksuite/cli 合计 790 万 | 单个 Skill 的 star 战绩好看,但真正的大流量来自厂商整包预装 |
| 访谈式工作流成为默认 | 榜单前 12 名里 mattpocock 家族占 7 席(grill-me、grill-with-docs、improve-codebase-architecture、tdd、setup、handoff、triage) | “先拷问需求再动手”已经从个人方法论沉淀为公共基础设施 |
同期值得关注的非头部新面孔:caveman(juliusbrussee/caveman,44.6 万安装)用“原始人语体”压缩输出 token,其 README 里那份“诚实数字警告”(skill 只省输出、每轮反增 1-1.5k 输入 token)是近期少见的坦诚文档范本。
按功能完整度 25%、设计质量 25%、实战效果 20%、上手难度 15%、社区活跃度 15% 加权(满分 5):
| Skill | 功能完整度 | 设计质量 | 实战效果 | 上手难度 | 社区活跃度 | 加权总分 |
|---|---|---|---|---|---|---|
| grilling(引擎) | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★★ | 5.00 |
| grill-with-docs | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★ | ★★★★★ | 4.85 |
| grill-me | ★★★★ | ★★★★★ | ★★★★ | ★★★★★ | ★★★★★ | 4.55 |
| setup-matt-pocock-skills | ★★★★ | ★★★★ | ★★★★ | ★★★★★ | ★★★★ | 4.15 |
| domain-modeling | ★★★★ | ★★★★★ | ★★★★ | ★★★ | ★★★★ | 4.10 |
评分依据:安装量与榜单排名(活跃度);SKILL.md 原文的工程密度(设计质量);作者仓库 README 中的失败模式对应关系(实战效果);安装配置步骤(上手难度)。
仓库 skills/ 目录分 productivity/ 和 engineering/ 两组,每组内部再按“谁能调用”切一刀。作者在 README 里写得很直白:
User-invoked skills are reachable only when you type them (e.g.
/grill-me); their job is to orchestrate. Model-invoked skills can be invoked by you or reached for automatically by the agent when the task fits; they hold the reusable discipline. A user-invoked skill may invoke model-invoked skills, but never another user-invoked one.
翻译成设计语言:外壳层负责编排,引擎层沉淀纪律;外壳可以调引擎,外壳之间互不调用。 grill 家族正好是这套架构的最小样本:
flowchart LR
subgraph Shell["外壳层(仅用户可触发)"]
A["/grill-me(147 字节)"]
B["/grill-with-docs(245 字节)"]
end
subgraph Engine["引擎层(模型可自动触发)"]
C["grilling:访谈引擎"]
D["domain-modeling:领域建模纪律"]
end
A -->|"Call the Skill tool"| C
B -->|"Run a /grilling session"| C
B -->|"using the /domain-modeling skill"| D
C -.->|"讨论涉及术语时"| D
全站第 2 名的完整源文件,一字不差:
---
name: grill-me
description: A relentless interview to sharpen a plan or design.
disable-model-invocation: true
---
Call the Skill tool with "grilling".
逐行看:
description: A relentless interview... —— 描述只写“是什么”,不写触发词。因为下一行的开关决定了它永远不会被模型自动选中,描述写得再华丽也是浪费上下文。对比同仓库 model-invoked 的 tdd(description 里塞了 "Use when... mentions 'red-green-refactor'"),你能看到作者对两种 Skill 的 description 采取了完全不同的写法:自动触发的写触发词,手动触发的写人话。disable-model-invocation: true —— 全文件最关键的一行。它把 Skill 锁死为“只有你敲 /grill-me 才生效”。为什么必须锁?因为 grilling 的效果是接管整个对话节奏——如果模型在你不设防时自动发起一场“无情访谈”,体验是灾难。这行开关本质是在买确定性。Call the Skill tool with "grilling". —— 薄壳的全部逻辑。它不是重复实现访谈,而是声明“去调那个叫 grilling 的 Skill”。这一行带来三个工程收益:访谈逻辑只有一份(改一处全员生效);两个外壳(grill-me / grill-with-docs)共享同一引擎;每个外壳的 token 占用几乎为零。skills/productivity/grilling/SKILL.md(约 1.9KB)才是 911K 安装背后的机器。
第 1 段:frontmatter 的触发词设计
name: grilling
description: Grill the user relentlessly about a plan, decision, or idea.
Use when the user wants to stress-test their thinking, or uses any
'grill' trigger phrases.
和 grill-me 相反,这里没有 disable-model-invocation,所以 description 肩负双重任务:给模型判断“该不该自动介入”,同时枚举用户可能说的口语("any 'grill' trigger phrases")。注意它没有列死具体短语,而是给了模型一个语义族——这是比罗列关键词更鲁棒的触发词写法。
第 2 段:把模糊的“多问几句”变成数据结构
Interview the user relentlessly until you reach a shared understanding. Map this as a design tree: every decision branches into the decisions that hang off it.
第一句是所有访谈类提示词都会写的废话,第二句是分水岭:要求模型把对话状态显式建模成一棵树。有了树,才有后面所有可操作的机制。
第 3 段:frontier 轮次机制(全文的心脏)
The frontier is every decision whose prerequisites are already settled: the questions you can ask now without guessing at answers you haven't heard yet. Ask the whole frontier in one round: number each question and give your recommended answer. Then wait for the user's answers before the next round.
三个精妙之处:① frontier 的定义排除了“需要猜前置答案”的问题,从机制上消灭了模型最爱犯的“基于未确认假设连环发问”;② 强制一轮抛出整个 frontier,而不是一次一问——把 N 轮往返压缩成 ⌈深度⌉ 轮;③ 每个问题必须附带推荐答案,把“开放问答”降维成“批改选择题”,用户成本骤降。
第 4 段:输出格式模板
Each question should be formatted like so:
❓ **Q1** - **标题**:/➡️ 推荐答案
直接在 SKILL.md 里内嵌渲染模板。很多 Skill 失败在“逻辑对但输出丑”,这里用两个 emoji 锚点(❓ 问题 / ➡️ 推荐)保证每轮输出肉眼可扫。
第 5 段:事实与决策的所有权切分
Finding facts is your job, never the user's. When a frontier question needs a fact from the environment (filesystem, tools, etc.), dispatch a sub-agent to find it; don't ask the user for anything you could look up yourself. Don't block on it: ... ask the rest of the frontier now.
这一段把访谈从“一问一答的串行协议”升级成“人机流水线”:凡是能查到的(文件系统、工具)派 sub-agent 去查,且查证不阻塞其余提问——只有挂在事实下游的问题等待回报。用户的时间只花在只有用户能回答的事情上(决策)。这是整份文件里含金量最高的一段提示词工程。
第 6 段:显式终止条件
The session is done when the frontier is empty: every branch of the design tree visited, nothing left silently assumed. Do not act on it until the user confirms you have reached a shared understanding.
两句话堵住两个经典漏洞:树没走完不许收工(防浅尝辄止);用户确认共识之前不许动手写任何东西(防模型访谈一半就开始改代码)。终止条件 + 行为闸门都写成了可判定的条件句,而不是“要深入沟通”这种祝祷式措辞。
---
name: grill-with-docs
description: A relentless interview to sharpen a plan or design, which also
creates docs (ADR's and glossary) as we go.
disable-model-invocation: true
---
Run a `/grilling` session, using the `/domain-modeling` skill.
和 grill-me 唯一的区别是正文多挂了一个引擎。安装榜第 4 名(77.5 万)的全部实现就是这一句组合声明。它的爆款证明了一件事:用户买的不是代码量,是“访谈 + 沉淀文档”这个组合语义。 description 里那个 "which also creates docs (ADR's and glossary) as we go" 是它与 grill-me 在用户心智里的全部差异点,一句话讲清,不贪多。
skills/engineering/domain-modeling/SKILL.md(3.4KB)是 grill-with-docs 的增量来源,它的几个设计决定值得单列:
CONTEXT.md + docs/adr/;检测到根目录 CONTEXT-MAP.md 则切换到多上下文布局(每个子域各有一套)。模型不需要猜文档放哪。作者给出的效果例证:有了共享语言后,"There's a problem when a lesson inside a section of a course is made 'real' (i.e. given a spot in the file system)" 可以缩成 "There's a problem with the materialization cascade"——更短的表达、更一致的命名、更少的思考 token,收益逐会话复利。
Call the Skill tool with "...",收益是单点维护 + 近零 token。disable-model-invocation: true,description 写人话;后台纪律型 Skill 保持可自动触发,description 里写语义族触发词。适合:新功能立项、方案评审、任何“你以为说清楚了但其实没有”的场景;grill-with-docs 额外适合长期演进的仓库(CONTEXT.md/ADR 资产随访谈自然累积)。不适合:改个 typo、跑个命令这类零歧义任务——为它们启动一棵设计树纯属仪式感;另外它强依赖你愿意回答问题,如果你的使用习惯是“扔下需求就走”,911K 人验证的这套流程会变成打断。
flowchart TD
S["用户敲 /grill-me 或 /grill-with-docs"] --> T["外壳声明调用引擎"]
T --> T2{"带 docs?"}
T2 -->|是| T3["同时装载 domain-modeling"]
T2 -->|否| U
T3 --> U["把计划建模为设计树"]
U --> V["计算 frontier:前置已定的全部待决问题"]
V --> W["一轮抛出全部问题\n编号 ❓ + 推荐答案 ➡️"]
W --> X{"问题需要查证事实?"}
X -->|是| Y["派 sub-agent 查环境\n不阻塞其余提问"]
X -->|否| Z
Y --> Z["用户回答重塑树\nfrontier 外推"]
Z --> V
V --> E{"frontier 为空?"}
E -->|否| V
E -->|是| F["请求用户确认共识"]
F --> G["确认后才允许动手实现\n(可衔接 /to-spec、/implement)"]
# 方式一:Claude Code 官方插件市场(托管整包,自动更新)
claude plugins install mattpocock-skills
# 或会话内:
/plugin install mattpocock-skills
# 方式二:skills CLI(拷贝为可编辑文件,自己魔改,手动 npx skills update 拉新版)
npx skills@latest add mattpocock/skills
装完在仓库里跑一次 /setup-matt-pocock-skills(选 issue 跟踪器:GitHub / Linear / 本地文件,配 triage 标签和文档目录),然后随时 /grill-me 或 /grill-with-docs。注意两种方式二选一,作者明说“都装会导致每个 Skill 出现两份”。
[!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 等场景全覆盖。
