<!-- title: 91万安装的grill-me：SKILL.md逐行拆解 -->

# 91万安装的 grill-me：把 SKILL.md 拆到每一行

## 概述

本期换一个打法：不做横向海选，而是锁定当前 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 家族正好是这套架构的最小样本：

```mermaid
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
```

### 二、grill-me：147 字节的冠军 SKILL.md

全站第 2 名的完整源文件，一字不差：

```markdown
---
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 占用几乎为零。

### 三、grilling：真正的引擎，逐段拆

`skills/productivity/grilling/SKILL.md`（约 1.9KB）才是 911K 安装背后的机器。

**第 1 段：frontmatter 的触发词设计**

```yaml
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.

两句话堵住两个经典漏洞：树没走完不许收工（防浅尝辄止）；用户确认共识之前**不许动手写任何东西**（防模型访谈一半就开始改代码）。终止条件 + 行为闸门都写成了可判定的条件句，而不是“要深入沟通”这种祝祷式措辞。

### 四、grill-with-docs：245 字节看懂组合式扩展

```markdown
---
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 在用户心智里的全部差异点，一句话讲清，不贪多。

### 五、domain-modeling：被组合进来的第二引擎

`skills/engineering/domain-modeling/SKILL.md`（3.4KB）是 grill-with-docs 的增量来源，它的几个设计决定值得单列：

- **文件结构写死**：单上下文仓库是根目录 `CONTEXT.md` + `docs/adr/`；检测到根目录 `CONTEXT-MAP.md` 则切换到多上下文布局（每个子域各有一套）。模型不需要猜文档放哪。
- **懒创建原则**："Create files lazily — only when you have something to write." 第一条术语敲定时才建 CONTEXT.md，第一条决策出现才建 adr/ 目录。避免 Skill 一激活就倾倒模板文件。
- **四种会话中行为**，每种都给了示例话术：术语与词汇表冲突时当场叫停（"Your glossary defines 'cancellation' as X, but you seem to mean Y"）；模糊词当场锐化（"'account' — do you mean the Customer or the User?"）；用具体场景压测概念边界；用户陈述与代码矛盾时交叉质证。
- **CONTEXT.md 纯度约束**："It is a glossary and nothing else." 明确禁止把它当 spec、草稿纸或实现决策仓库——防线一旦松动，词汇表三个月内必然腐化成垃圾场。
- **ADR 三条件门槛**：只有同时满足「难以逆转 + 缺上下文会令人费解 + 真实权衡的产物」三条才建 ADR，缺一即弃。这是对“文档过度生产”的显式抑制。

作者给出的效果例证：有了共享语言后，"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，收益逐会话复利。

### 六、能直接抄走的 6 个 SKILL.md 写法模式

1. **薄壳模式**：把“用户命令”和“可复用引擎”拆成两个文件，外壳一行 `Call the Skill tool with "..."`，收益是单点维护 + 近零 token。
2. **触发的开关哲学**：会接管对话节奏的 Skill 一律加 `disable-model-invocation: true`，description 写人话；后台纪律型 Skill 保持可自动触发，description 里写语义族触发词。
3. **对话状态显式化**：别写“反复追问直到清楚”，先要求模型把状态建模成结构（这里是 design tree），机制才有立足点。
4. **frontier 批量提问 + 附带推荐答案**：一轮抛全部“前置已定”的问题，每个问题配推荐项，把开放题降维成选择题。
5. **事实/决策所有权切分**：能查的派 sub-agent 查且不阻塞，用户只答决策。
6. **显式终止条件 + 行为闸门**：用可判定条件（frontier 为空）结束会话，用禁止性语句（确认前不得动手）锁住模型的手。

### 七、适用与不适用

**适合**：新功能立项、方案评审、任何“你以为说清楚了但其实没有”的场景；grill-with-docs 额外适合长期演进的仓库（CONTEXT.md/ADR 资产随访谈自然累积）。**不适合**：改个 typo、跑个命令这类零歧义任务——为它们启动一棵设计树纯属仪式感；另外它强依赖你愿意回答问题，如果你的使用习惯是“扔下需求就走”，911K 人验证的这套流程会变成打断。

## 工作流程全景图

```mermaid
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）"]
```

## 安装与使用

```bash
# 方式一：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 出现两份”。

## 推荐排行榜

- **设计教科书奖**：grilling —— frontier 机制 + 事实/决策切分，目前公开 Skill 里对话控制工程的最高水准
- **最小可行产品奖**：grill-me —— 147 字节登顶全站第 2，证明 SKILL.md 的价值密度与字数无关
- **组合式扩展奖**：grill-with-docs —— 245 字节，一次组合声明吃下两个引擎的能力
- **长期资产奖**：domain-modeling —— 唯一在仓库里留下可累积文档（词汇表 + ADR）的成员
- **上手最快奖**：setup-matt-pocock-skills —— 三问配置，新手 30 秒进整套工作流
- **生态入口奖**（非本仓库，本周观察）：find-skills（vercel-labs/skills，300 万安装）—— Skill 时代的"npm install"入口

## 参考来源

1. [mattpocock/skills — Skills for Real Engineers](https://github.com/mattpocock/skills) — 仓库 README：双层架构、四大失败模式、安装方式与 user/model-invoked 划分
2. [grilling SKILL.md 原文](https://github.com/mattpocock/skills/blob/main/skills/productivity/grilling/SKILL.md) — 访谈引擎全文：design tree、frontier、事实/决策切分、终止条件
3. [grill-me SKILL.md 原文](https://github.com/mattpocock/skills/blob/main/skills/productivity/grill-me/SKILL.md) — 147 字节薄壳完整源文件
4. [grill-with-docs SKILL.md 原文](https://github.com/mattpocock/skills/blob/main/skills/engineering/grill-with-docs/SKILL.md) — 245 字节组合声明完整源文件
5. [domain-modeling SKILL.md 原文](https://github.com/mattpocock/skills/blob/main/skills/engineering/domain-modeling/SKILL.md) — CONTEXT.md/ADR 文件结构、懒创建、ADR 三条件
6. [skills.sh — The Agent Skills Directory](https://skills.sh) — 全时段安装排行榜数据（grill-me 911.2K、find-skills 3.0M、飞书/微软厂商包聚合安装量等）
7. [JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman) — 本周关注对象：token 压缩 Skill 的“诚实数字警告”文档范式
8. [mcpservers.org — Claude Skills & Agent Skills Library](https://mcpservers.org/agent-skills) — 官方与社区 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 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
