信号二是本栏自己的测量史。体重学那期量过从一行到全家桶的体重谱系,结论是体重与职责同步膨胀;但量了重量没量分工——19 个文件各自干什么活、文件之间靠什么协作,从未入档。信号三是最实际的一条:用户装完一个 Skill,看到的第一眼不是描述——描述只在路由瞬间常驻,装完之后常驻的是目录。ls 敲下去,文件树就是这个 Skill 的第二门面。描述管唤起,树管信任——这两层的设计纪律是两套学问,后一套至今没人系统讲过。
本机 /home/gprshome/skills/skill-creator/ 的一手 Glob 清点,19 个条目原样呈现:
skill-creator/
├── SKILL.md # 根上唯一的 .md
├── LICENSE.txt
├── agents/
│ ├── analyzer.md # 分析角色
│ ├── comparator.md # 对照角色
│ └── grader.md # 评分角色
├── references/
│ └── schemas.md # 契约集中地
├── assets/
│ └── eval_review.html # 人审界面模板
├── eval-viewer/
│ └── generate_review.py # 评审页生成器
└── scripts/
├── __init__.py
├── utils.py # 共享库
├── init_skill.py # 脚手架
├── quick_validate.py # 体检
├── run_eval.py # 评测
├── aggregate_benchmark.py # 汇总
├── improve_description.py # 优化
├── run_loop.py # 闭环
├── package_skill.py # 打包
└── __pycache__/ # 一手物证
├── quick_validate.cpython-313.pyc
└── quick_validate.cpython-39.pyc
两个先手事实值得钉在墙上。其一:根上没有 README。官方母文 19 个文件里,唯一的根级文档就是 SKILL.md——它没把 README 和 SKILL.md 写成两份,SKILL.md 即门面。给读者的判据:你的 Skill 若要写 README,先回答「为什么这句话不写进 SKILL.md」。其二:__pycache__ 里恰好只有 quick_validate 一个模块的两个版本编译产物——.pyc 只在模块被导入时生成,两个版本并存说明它在 CPython 3.13 与 3.9 下都真实执行过※;而 scripts 下其余七个入口脚本没有一个留下编译痕迹,符合「入口脚本以 __main__ 直跑、被导入的模块才留 pyc」的解释器行为※。文件树会作证,这是本期全部七式的元命题。
权重沿用本栏固定口径:功能 25%、设计 25%、实战 20%、上手 15%(越高越容易)、社区 15%。分数全部沿用已读存档的印刷值,本期不重复估分;无存档总分的两座头部仓库列观察位。
| 标本 | 文件树形态 | 功能 | 设计 | 实战 | 上手 | 社区 | 加权 |
|---|---|---|---|---|---|---|---|
| skill-creator(官方母文,09-01 存档) | 全家桶·19 文件五目录 | ★★★★★ | ★★★★★ | ★★★★ | ★★★ | ★★★★ | 4.60 |
| affaan-m/ECC(09-06 存档) | 框架仓库·树未核验※ | ★★★★★ | ★★★★ | ★★★★ | ★★ | ★★★★★ | 4.10 |
| cbrock84/headcount(09-06 存档) | 组织仓库·15+ 部门 | ★★★★ | ★★★★ | ★★★ | ★★★ | ★★★★ | 3.70 |
| pcap-analyzer(09-03 存档) | 垂直三件套族 | ★★★★ | ★★★ | ★★★★ | ★★ | ★★★ | 3.38 |
| mattpocock/skills(53 件套,altitude 期侧写) | 全家桶·树未核验※ | — | — | — | — | — | 观察位 |
| obra/superpowers(已有专篇存档) | 框架仓库 | — | — | — | — | — | 沿用专篇 |
评分说明:四行分数均为各存档期原文印刷值,本期不复议;两座未核验仓库不给数,是因为本期的全部论点恰恰是「树没看过就没有发言权」——不能一边主张树是设计单位、一边对没看过的树打分。
五个子目录,五个单一职责:scripts 执、references 查、assets 产、agents 演、eval-viewer 审。没有一个目录名需要解释,树本身就是 API 文档。对照官方 SKILL.md 存档里给的三分法(scripts 管确定性任务、references 管按需载入、assets 管输出资产),真实安装多出来的两个目录(agents、eval-viewer)没有挤进老三类,而是各自立户——职责长出来就新增目录,不往旧目录里塞。社区件的常见病正相反:一个 scripts/ 里塞着生成器、校验器、打包器,目录名退化为「杂物间」。
agents/ 下三份 .md,analyzer、comparator、grader——分析、对照、评分三种劳动,一角色一文件(内容未读,角色分工按文件名合约与 09-01 存档记载的评测流程推断※)。这一式在人设件集群(约两百件,普查期已档)里有反面印证:人设件用文件名装一个人,母文用文件名装一个工种。当 SKILL.md 需要以不同身份说话时,正确的反应不是在正文里写「你现在扮演」,而是加一份角色文件——身份是资产,资产进目录。
契约有两头。数据契约:references/schemas.md 把 schema 集中成一份引用,而 09-01 存档逐字记下了那个著名警告——grading.json 的字段名钉死为 text / passed / evidence,原文特意说「the viewer depends on these exact field names」,不许用 name/met/details 之类的变体。代码契约:utils.py 把共享逻辑收敛一处,七个入口脚本不互相 import 对方※。两头合起来是一句话:目录里的文件靠约定协作,约定的每一段都要有唯一权威出处——schema 改一处,生成器和打分器跟着走。
quick_validate.py 是全树唯一留下执行痕迹的模块——造 Skill 的件自带体检脚本,而且在两代解释器下真跑过。这一式的可复制版本:你发布的每个 Skill 都该配一个能一键自检的验证器,哪怕只是「SKILL.md 存在、frontmatter 可解析、引用的文件都在」。它同时是本期评测表的评分伦理来源:对一棵没看过的树打分是自相矛盾,验证器的存在让「先验货再打分」从美德变成一行命令。
scripts/ 七个文件按生命周期排开:init(脚手架)→ run_eval(评测)→ aggregate_benchmark(汇总)→ improve_description(优化)→ run_loop(闭环)→ package_skill(打包)。目录按动词命名、按序号站队,用户读目录就是读教程——这不是巧合,09-01 存档里 SKILL.md 开篇那句流程鸟瞰(写草稿→跑测试→看反馈→重写)与 scripts/ 的文件清单一一对应。文档说一遍,目录再说一遍,两遍对得上,树就是可信的。
assets/eval_review.html 加 eval-viewer/generate_review.py——这个 Skill 连「给人看的界面」都当成资产随件分发。09-01 存档记下了全文唯一一处全大写咆哮就留给这里:评审页必须在模型自己评估之前交到用户手里。中间结果不该躺在 JSON 里等人来问,要有专门的生成器把它变成人能看的东西——这是「人是最早的质量关口」在文件树层的落点。
回到根目录:唯一 .md 是 SKILL.md,其余文档全部下沉 references/,连超 300 行要加目录的细则都写进了存档。反模式是社区常见的 README、SKILL.md、USAGE.md 三头并立——三份文档三份真相,防腐学讲过的版本腐烂在文档层最先发生。一个 Skill 只许一个门面文件,其余都是它的附录。
flowchart TD
R["skill-creator 19文件树<br/>一手Glob清点"] --> D1["SKILL.md<br/>根上唯一文档"]
R --> G1["scripts 八个py<br/>生命周期六段加共享库"]
R --> G2["agents 三份md<br/>分析 对照 评分"]
R --> G3["references schemas.md<br/>契约集中地"]
R --> G4["assets eval_review.html<br/>人审界面模板"]
R --> G5["eval-viewer<br/>评审页生成器"]
G1 --> F1["quick_validate<br/>pycache双版本作证"]
把七式翻译成写自己第一个 Skill 的下半篇——09-01 期教过 10 行起步,本表回答「第二个文件什么时候加、加到哪」:
| 触发信号 | 动作 | 出处 |
|---|---|---|
| 同一操作 transcript 里第三次出现 | 沉淀进 scripts/ | 09-01 §Improving 存档 |
| 正文逼近 500 行 | 按领域拆 references/,超 300 行加目录 | 09-01 存档 |
| 下游脚本要读你的 JSON | 字段名钉死,契约进 schemas.md | 式三 |
| 需要以不同身份说话 | 一角色一文件进 agents/ | 式二 |
| 用户需要看中间结果 | 配评审页生成器,先给人看再自评 | 式六 |
| 准备发布 | 写个 quick_validate 式体检脚本 | 式四 |
| 想写 README | 先回答为什么不写进 SKILL.md | 式七 |
flowchart TD
A["SKILL.md 写完能跑"] --> B{"同一操作<br/>重复了几次?"}
B -->|"三次以上"| C["进 scripts 沉淀为脚本"]
B -->|"未到三次"| D{"正文超过500行?"}
D -->|"是"| E["按领域拆 references"]
D -->|"否"| F{"下游脚本<br/>要读你的数据?"}
F -->|"是"| G["字段名钉死<br/>契约集中一份"]
F -->|"否"| H{"需要换角色<br/>或分环节?"}
H -->|"是"| I["一角色一文件"]
H -->|"否"| J{"用户要看<br/>中间结果?"}
J -->|"是"| K["配人审页生成器"]
J -->|"否"| L["保持单文件<br/>发布前写体检脚本"]
C --> L
E --> L
G --> L
I --> L
K --> L
# 官方母文(本机已在册,19 文件树已一手核验)
npx skills find skill-creator
git clone --depth 1 https://github.com/anthropics/skills
# 框架三巨头(树未核验,装前先数文件——本期方法论即如此)
npx skills add obra/superpowers
npx skills add mattpocock/skills
npx skills add affaan-m/ECC
# 装完第一件事:把它的第二门面读一遍
find ~/.claude/skills/<名字> -type f | sort
# 再看执行痕迹:有 __pycache__ 的模块,才是真被跑过的模块
[!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 等场景全覆盖。
