Files
Leroy d3e9bd45bd LeMetaSkill v1.1.0:跨 runtime(ZCode/Claude Code/Codex)的 Agent Skill 创建与迭代工坊
- SKILL.md 双工作流(创建/迭代)+ 两道门(验料/通用化)+ 三档位
- 7 篇方法论 references + 3 个纯标准库脚本(scaffold/validate/trigger_eval)
- 自身触发用例 16 条 + 先例研究/创建/迭代证据报告
- 方法论吸收自 qiaomu-meta-skill 与 luban-skill,取舍见 reports/prior-art.md
2026-10-05 12:09:22 +08:00

57 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 写作手艺——description 与正文
Skill 的两个加载层各有各的写法:description 决定被不被触发,正文决定触发后好不好执行。
## description:唯一的自动触发信号
各 runtime(ZCode / Claude Code / Codex)都靠 frontmatter 的 `description` 决定何时加载 skill(连同 `name` 常驻上下文)。模型倾向于**漏触发**而不是误触发,所以 description 要写得主动一点。
**四件必须写进去的事:**
1. **做什么**:一句话职责。
2. **何时触发**:用户真实会说的话——"帮我做个 skill""把这个流程沉淀下来""给我的 skill 做体检"。给 3–8 条原话级别的触发词。
3. **负触发**:明确"不要用于……"的相邻请求。没有负触发的 description 会在边界请求上犹豫。
4. **丢来就触发**的说明:用户丢来 SKILL.md、目录、链接说"帮我看看"时该不该接。
**写法检查:**
- 用中英混合的真实口语测试:拿 5 条用户会说的原话(含 2 条不该触发的)逐条对照 description,每条都该能明确判出触发/不触发。
- 别写成功能清单("支持 A、B、C"),写成场景句("当用户想……时使用")。
- 长度:3–8 行。太短盖不住场景,太长稀释信号。
## 正文:给模型的操作手册
正文只在触发后加载,目标是让模型照着执行,而不是让人读了佩服。
**七条手艺:**
1. **祈使句**。"读取文件后再编辑",不是"你应该考虑读取文件"。
2. **讲为什么**。规则不明显时给理由——模型理解了原因才会在边界情况做对判断。发现自己在写全大写 MUST 时,通常说明该把理由讲清楚,而不是加重语气。
3. **示例胜过规则**。要求结构化输出就贴一个字面示例;要求调某工具就给调用样例。一段示例顶三条规则。
4. **正文 ≤500 行**。超了就把领域细节拆进 references,正文里留一句"做 X 前先读 references/x.md"。
5. **每节一个职责**。读者跳着读不迷路。
6. **失败模式要编码**。"遇到 X 时停下来问用户"比"小心行事"有用得多。
7. **写完删一遍**。删掉不承重的句子。规则越少,剩下的越有权威。
## 跨 runtime 约定(ZCode / Claude Code / Codex)
Skill 遵循 Agent Skills 开放格式:一个目录 + `SKILL.md`(frontmatter:`name` + `description`)。三个 runtime 都认这个格式,差别只在发现路径:
| runtime | 项目级 | 用户级 |
|---|---|---|
| ZCode | `.zcode/skills/`(优先)· `.agents/skills/` | `~/.zcode/skills/` · `~/.agents/skills/` |
| Claude Code | `.claude/skills/` | `~/.claude/skills/` |
| Codex | `.codex/skills/` | `~/.codex/skills/`(实验性) |
- **frontmatter**:`name`(kebab-case,1–64 字符,必须与目录名一致)+ `description` 是必填;其余保留字段按需。
- **新建默认放 `.agents/skills/`**——跨工具标准位;目标 runtime 不读这个位置时,复制或软链到它的目录(一份源,多处入口,改完同步)。
- **目录即身份**:同名 skill 不同路径算两个安装,ZCode 里路径优先级高的胜出——起名字前先查各 runtime 的发现路径有没有撞名。
- **可移植三禁**:正文不写死某个 runtime 专属的工具名/技能名(如把"配置排障"指给单一 runtime 的指南);不用私有绝对路径;脚本只用 python3/bash 标准库。做到这三条,同一个目录在三个 runtime 里行为一致。
- **先例研究时的提示**:搜 Claude 生态的 skill(数量最多)借鉴机制没问题,但安装路径、触发语法要按目标 runtime 换算,不要照搬。
## 命名
- 英文 kebab-case,≤3 个连字符段为佳:`weekly-report`、`api-docs-lint`。
- 名字要能自解释职责;人设名(如 `luban`)只有配合强 description 才可用。
- 与已有 skill 撞名 = 改名,不是覆盖。