Skill Style
约束 SKILL.md 的写作质量:SKILL.md 是写给 agent 的执行指令,不是用户文档,只装触发条件、动作与验收标准,装不下的进 references/ 或 scripts/;用户视角话术(如供审阅、先给结论、一目了然)与解释性叙述一律删。
红线(违规必改)
| 编号 | 规则 | 判定方式 |
|---|---|---|
| R1 | frontmatter 含 name/description,name 与目录名一致 | 机检 |
| R2 | description 按「写作规范·description 设计」执行,≤300 字符,不写背景故事 | 机检+人工 |
| R3 | SKILL.md 全文 ≤60 行,硬上限 120 行 | 机检 |
| R4 | 不写哲学句:动机、理念、生态价值类叙述一律删;也不写元叙述(来源/动机/原理说明,如我们实战跑出来的 实测不生效,使用方不关心);不用性质/价值修饰词定位技能(如透明化、智能化、高效),定位只写触发条件与动作 |
机检特征词+人工 |
| R5 | 规则可判定:能回答"违反了没";不可度量表述改硬阈值或删;不用 agent 无法可靠感知的指标(如耗时/时长/预估时间),特征词表见 scripts/lint.py 常量 | 机检特征词+人工 |
| R6 | 规则只在一处定义,SKILL.md 与 references/scripts 不互相复制语句(模板示例除外);也不得复述相邻/依赖 skill 已定义的内容(如 herdr-flows 不复述 herdr 的命令细节),冲突处只写"见 " | 机检+人工 |
| R7 | 文中相对链接指向的文件必须存在 | 机检 |
写作规范
- 每条以动作开头,用祈使句;技能自身不做性质/价值定位(如
透明化、高效、智能),这类词对模型执行无帮助,定位只写触发条件与动作;"解释"只在它是验收标准时保留,例:"自包含:读者无本会话上下文也能看懂"。 - description 设计(触发面):硬时机句+能力锚点半句+正向枚举+反向豁免句;时机锚点(动作前/提交前/收尾后)必写,高频场景排前。
- 枚举分两型:请求型埋用户真实原话与近义动词;状态型写工作特征(如"本次改了命令用法"),供模型自主判定时机。
- 反向豁免句只划最近邻:与正向枚举共享词汇/语义、但目标不同的场景;与锚点天然互斥的场景不写(如写码技能列出「README 不触发」)。与邻技能的分工在 description 直接点名对方。
- 两测过关才算完:回放——拟 5~10 句用户真实措辞逐句对照能否命中;替身——把别的技能名换进来读,无违和即边界没写清。
- 输出物路径与命名写死为常量格式,不留开放式描述。
- 章节骨架二选一:任务型技能(替用户干活)用"触发时机 → 流程(编号步骤)→ 输出规范 → 边界";治理型技能(约束其它技能怎么写)用"定位 → 规则 → 工作流 → 边界"。两者的触发场景都写在 description,不设重复小节。
工作流
创建
- 需要访谈、测试用例、评估循环时先用 skill-creator 出稿;简单技能直接起稿。
- 按"章节骨架"起草;description 过回放与替身两测。
- 用户话术排查:逐句朗读正文,给 agent 下命令的保留,给用户解释设计/价值/理念的删或改写。
- 对照红线逐条自查,跑
python <本技能目录>/scripts/lint.py <技能目录>,错误清零后交付。
修改
- 只约束新增内容:新增句子同样受红线约束;历史遗留违规仅口头提示,不顺手改。
- 改完跑 lint。
优化(瘦身)
按序逐项处理,输出修改清单(每项一句理由):
- 删哲学句(R4);不可度量表述改硬阈值或删(R5);
- 跨文件重复语句合并到唯一定义处(R6);
- 单选项占位符改为字面值;
- 超 R3 预算时把细节拆入 references/ 或 scripts/,正文留指针。
边界
- lint 只做机检;语义判断(是否哲学句)由执行者按红线清单人工判。
- 优化阶段只删减合并,不新增功能或改变技能行为。