第8轮,按系列规划做「设计模式提炼」:不讲某一个 Skill 的功能,而是回答一个问题——一份合格的 SKILL.md 到底是怎么被设计出来的。本期做一个此前七轮都没人做过的动作:放弃榜单视角,把标本库换成一台真实工作机上实装的技能快照——本会话可见的技能清单约四百条,含官方出厂件、内置 harness 技能、双命名空间插件和大量社区件,这是一份任何聚合站都爬不到的「真实安装横截面」。从这份快照和内置技能的描述原文出发,本文提炼出八条可复用的 SKILL.md 写作模式,最后手把手带读者写出并验证第一个自己的 Skill。
榜单看的是热度,快照看的是留存。一个技能被真正装进日常工作机并留下,本身就是比 Star 更硬的信号。先清点这份快照的构成:
| 族群 | 数量级 | 代表样本 |
|---|---|---|
角色模仿系(*-skill 后缀) |
粗数超过 150 个 | libai、luxun、zhouxingchi、conan |
官方出厂件(example-skills: 命名空间) |
16 件 | skill-creator、pdf、pptx、webapp-testing、mcp-builder |
| 内置 harness 技能 | 约 15 个 | code-review、verify、loop、deep-research、claude-api |
| obsidian 命名空间插件 | 4 件 | obsidian-markdown、obsidian-bases、skill-creator |
| 变体繁衍系 | 多族 | course-video-maker 四连后缀、pptx 五件、部署四件 |
| 垂直纵深(电信/笔记/内容产线) | 各 5-10 件 | 3gpp-5g-specs、pcap 三件套、notion 五件 |
这张表本身就是生态的第一课:命名即分类。作者群体不约而同用后缀表达「我是哪一族」,而撞名与变体泛滥则是无治理的代价——这两点后文都会变成模式。
mindmap
root((本机实装技能快照))
角色模仿系
历史人物 libai luxun
影视角色 conan zhouxingchi
名人风格 leijun wangfeng
官方出厂件
example-skills 命名空间十六件
内置 harness 技能
内容产线
采集 youtube-transcript
转制 book-to-short-videos
发布 twitter-publisher
开发闭环
审查 code-review
验证 verify
部署四件
垂直纵深
电信 3gpp与pcap
笔记 obsidian与notion
课程 course-video-maker族
把 SKILL.md 和 API 设计对照,几乎每一层都能对上:
| API 世界 | SKILL.md 世界 | 谁决定 |
|---|---|---|
| 接口签名 | frontmatter 的 name |
作者 |
| 路由匹配规则 | description 的触发描述 |
作者 |
| 实现文档 | 正文 Markdown | 作者 |
| SDK / 依赖库 | scripts/ 目录 |
作者 |
| 详细规格书 | references/ 目录 |
作者 |
| 返回类型约定 | 产物形态说明 | 作者 |
| 灰度与版本并存 | 命名空间双轨 | 生态 |
这个视角不是比喻游戏——内置技能的 description 原文就是最好的实证。以下引文全部来自本会话可见的内置技能描述:
例一:claude-api,路由正反例双清单。 它的描述里明确写着 TRIGGER when(用户代码 import 了 anthropic SDK、询问 prompt caching 等场景)和 SKIP when(代码 import 的是 openai 或其他厂商 SDK、厂商中立代码)。这就是 API 文档里的「适用输入」与「应拒绝的输入」,写在签名旁边,让路由器第一毫秒就能分流。
例二:code-review,参数语义写进签名。 「Review the current diff for correctness bugs... at the given effort level (low/medium: fewer, high-confidence findings; high→max: broader coverage...)」——一个 effort level 参数的三档语义直接写进描述,还附带 --comment、--fix 两个类 CLI 旗标的副作用说明。用户不需要读正文就知道调这个技能「要花多少上下文、会动不动工作区」。
例三:deep-research,调用前置条件。 描述开头写着 BEFORE invoking 就应检查问题是否足够具体,不够就先问 2-3 个澄清问题。这是 API 设计里的 precondition:与其让调用失败后再补救,不如把检查写进接口约定。
例四:fewer-permission-prompts,句子化命名。 name 本身就是一个完整的动宾句(「减少权限弹窗」),用户看到名字即知功能。对比快照里大量的 xxx-skill 人名后缀,这是两个时代的命名法。
以下每条按「问题 → 模式 → 实证 → 要点」展开。
P1 签名前置:description 是路由表,不是广告词。 问题:多数技能不被触发,是因为 description 只写了「我能做什么」,没写「何时该调我」。模式:把触发场景、输入特征、明确的不适用情形压进 description。实证:claude-api 与 update-config 都带 TRIGGER/SKIP 双清单;update-config 甚至把用户可能说出的原话(「from now on when X」「whenever X」)直接枚举进描述——这是在给路由器喂正则样本。要点:写完 description 自问一句「用户随手说哪句话时应该命中我」,把那句话写进去。
P2 薄入口厚附件:正文是决策路径,不是知识库。 问题:正文越长,每次加载的上下文税越重,且大半内容对本次任务无用。模式:SKILL.md 只留「遇到什么情况→走哪条路」,细节下沉到 references/ 按需加载,可执行逻辑下沉到 scripts/。(官方 pdf 件的分层结构此前已被本系列单独拆过,此处只收为模式族成员,不再重复其内部结构。)要点:经验判断式——单文件超过一屏就该问自己「这一段是不是 references 的一节」。
P3 确定性外置:能写成脚本的不写散文。 问题:让模型用自然语言描述如何格式转换、如何校验,等于把确定性任务交给概率引擎。模式:固定流程固化为脚本,SKILL.md 只负责指挥何时调用、如何解读输出。实证:官方 webapp-testing 用脚本驱动浏览器而非让模型「想象」页面行为;快照里 pcap 三件套(analyzer/generator/modifier)整个族都是围绕二进制格式解析的工具化封装。要点:散文负责「判断」,脚本负责「执行」。
P4 句子化命名:name 从标签进化为动作。
问题:data-tools 这类名词标签让用户和路由器都要猜功能。模式:name 直接写成动宾短语。实证:fewer-permission-prompts、planning-with-files、remembering-conversations、security-ownership-map——快照里官方系命名几乎清一色动作句,而社区系仍是 xxx-skill 人名后缀的海洋。要点:名字里带动词,是判断一个技能「为任务而生」还是「为角色而生」的速测法。
P5 命名空间隔离:plugin:skill 是撞名的官方解。
问题:快照里 pdf、skill-creator、json-canvas 同时存在裸名版与 example-skills:、obsidian: 前缀版——全局命名是稀缺资源。模式:以命名空间前缀发布,把名字的归属权显式化。实证:example-skills:(16 件)、obsidian:(4 件)、glm-plan-usage:(2 件)。要点:给自己的技能起名前,先在快照思维里搜一遍是否撞名。
P6 同名分身:双轨并存是演进的中间态,也是使用者的坑。 问题:skill-creator 在本机以三种形态并存(裸名、example-skills 版、obsidian 版),调用哪个取决于解析优先级,用户未必清楚。模式:对作者而言,迁移期保留双轨可平滑过渡;对使用者而言,安装前要确认会覆盖哪一个。要点:见到同名技能,先查来源再装,别假设「后装覆盖先装」。
P7 前置检查:把 precondition 写进接口。 问题:模糊输入导致技能跑偏,浪费一整轮。模式:在 description 或正文第一步写「调用前先确认什么」。实证:deep-research 的「先问 2-3 个澄清问题」;update-config 用举例枚举兜住模糊表述。要点:宁可 description 多两行,不要运行时多一轮返工。
P8 变体繁衍:一个骨架繁衍一族,是效率也是债。
问题:细分场景(中文版、带链接版、简化版)催生变体,但无治理的变体让用户选择成本暴涨。实证:course-video-maker 衍生 -link、-zh、-zh-link 四件;ericsson-ppt-writer 衍生 -sc、-v2;pptx 裸名系有 generator/manipulation/test/official 五件,外加 example-skills 版,同场竞技六者。要点:变体命名要编码「差异维度」(如 -zh 表语言),避免编码「版本时间」(v2 迟早有 v3)。
说明:本期不采信任何热度数字,评测基于本机可观察的设计证据;「生态可见度」维度以「是否被多命名空间收录/是否繁衍变体/是否内置」作为真实代理信号。
| 技能 | 功能完整度 | 设计质量 | 实战效果 | 上手难度 | 生态可见度 |
|---|---|---|---|---|---|
| code-review(内置) | ★★★★★ | ★★★★★ | ★★★★ | ★★★★★ | ★★★★★ |
| claude-api(内置) | ★★★★★ | ★★★★★ | ★★★★ | ★★★★ | ★★★★★ |
| verify(内置) | ★★★★ | ★★★★★ | ★★★★ | ★★★★★ | ★★★★ |
| skill-creator(官方三形态) | ★★★★ | ★★★★ | ★★★★ | ★★★★ | ★★★★★ |
| obsidian 插件四件 | ★★★★ | ★★★★ | ★★★★ | ★★★★ | ★★★★ |
| pptx 六件同场 | ★★★★ | ★★★ | ★★★★ | ★★★ | ★★★★ |
| course-video-maker 四连后缀 | ★★★ | ★★★ | ★★★ | ★★★ | ★★★ |
分维度排行: - 描述设计典范榜:code-review > claude-api > update-config > deep-research - 第一个 Skill 学习模板榜:手工最小模板 > skill-creator 生成 > 仿抄官方出厂件源码 - 命名治理观察榜(反面教材):pptx 六件同场 > course-video-maker 四连后缀 > 裸名/命名空间双轨并存
第一步:先写 description,再写正文。 填三问——用户会说哪句话触发我?输入的前提条件是什么?什么情况明确不适用?
第二步:落盘。 官方技能放在用户级目录即可全局生效:
mkdir -p ~/.claude/skills/commit-message-zh
cat > ~/.claude/skills/commit-message-zh/SKILL.md <<'EOF'
---
name: commit-message-zh
description: 把暂存区的 git diff 写成一条中文 Conventional Commit。当用户说「帮我写提交信息」「commit 一下」且仓库已有已暂存改动时使用。暂存区为空时不适用,禁止自行执行 git add。
---
# 中文提交信息生成
## 步骤
1. 运行 git diff --cached --stat 确认暂存非空
2. 运行 git diff --cached 阅读改动
3. 输出一行 type(scope): 中文描述,重大改动附正文要点
## 边界
- 暂存区为空:提示先 git add,绝不代劳
- 多主题混合:拆成多条建议,不强行合并
EOF
第三步:验证触发。 新开会话,故意说「帮我写个提交信息」看是否命中;再说「帮我把所有文件都提交了」看是否按描述里的不适用条款止步。触发命中与边界拒绝,两条都要测——这正是在给自己的「API」做集成测试。
第四步(可选):交给元技能。 直接对 Claude 说「用 skill-creator 帮我做一个 XX 技能」,官方元技能会替你走完骨架搭建;想搜索市场上已有的同类避免重复造轮子,用 npx skills find 关键词 定位后再决定是安装还是自写。
新手四个高频错误(对应四条模式): 1. description 写成宣传语,没有一个可触发的场景句 —— 违反 P1,技能永远休眠 2. 正文塞满背景知识 —— 违反 P2,每轮交上下文税 3. 全散文无脚本 —— 违反 P3,同类任务每次结果漂移 4. 起名撞上已有技能 —— 违反 P5/P6,装完发现行为不对
flowchart TB
A["用户输入一句话"] --> B{"签名匹配"}
B -->|"命中 name 与 description"| C["加载 SKILL.md 正文"]
B -->|"不命中"| D["技能保持休眠"]
C --> E{"正文是否指向附件"}
E -->|"需要细节"| F["按需读取 references"]
E -->|"需要执行"| G["运行 scripts 脚本"]
F --> H["产出结果"]
G --> H
P1 决定能否进入第二层,P2/P3 决定第三层加载多少内容,P7 守住第一层的输入质量。八个模式各管一段,合起来才是一条低损耗链路。
npx skills CLI 所依托的站点(入口索引)透明度说明:本期线上榜单类数据未纳入正文,凡涉及 Star 数、下载量、热度排名的信息一律未引用;所有引文均来自标本快照内可见的原文。
[!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 等场景全覆盖。
