02 · 指令层:AGENTS.md 与 skills
AGENTS.md 树与 skills:规则怎样进入模型上下文
关键文件
AGENTS.mdCLAUDE.mdpackages/AGENTS.mddocs/AGENTS.md.agents/skills/scripts/verify-skill-invocation-metadata.ts根 AGENTS.md:标准规则
根文件只放"每次会话都需要在上下文里"的规则。每条规则一到三行,加粗关键句,末尾链接到规则的正式归属。字数上限是 2,080 词,由 verify-doc-budgets 检查。
md
**An empty `catch` names the error** and why; keep its `try` to one statement.上面是根文件里的一条原文。它短到能常驻上下文,又具体到可以在评审时直接判定。
CLAUDE.md 在根目录和 packages/ 下都只是指向 AGENTS.md 的链接,所以 Claude Code 和 Codex 等工具读到的是同一份规则。verify-skill-invocation-metadata 让两边的 skill 调用元数据保持一致。
子树 AGENTS.md:局部规则
只在某个目录成立的规则放在那个目录的 AGENTS.md,不污染根文件。仓库里有:
| 文件 | 内容 |
|---|---|
packages/AGENTS.md | 包的规则:插件导出形式、共享状态要有 owner、单一调用方的公共方法要改成私有闭包、在执行操作处强制决策、边界覆盖完整结果。上限 810 词 |
docs/AGENTS.md | 文档标准:分层表、写作规则、字数预算、slop 清单。上限 1,430 词 |
snapshots/AGENTS.md | 录制会话 snapshot 的命名、归一化和归属 |
scripts/AGENTS.md | 门禁脚本写法:语法感知的发现、防止空语料、spec 自己管理资源 |
.github/AGENTS.md | CI 工作流与运行器路由 |
.agents/notes/AGENTS.md 及其子目录 | 每个新 Note 都要做取代检查;archived/ 冻结 |
benchmarks/、vendor/、website/、packages/client/ 等 | 各自领域的补充规则 |
Skills:按需加载的工作流
标准规则只说"要做什么"。"怎么做"写在 .agents/skills/<name>/SKILL.md 里,靠 frontmatter 的 description 触发,用到时才加载,所以不占常驻上下文。与减少 slop 直接相关的有:
| Skill | 何时使用 |
|---|---|
dsh-prose-standard | 写或审任何文字:Markdown、JSDoc、注释、prompt、诊断信息、UI 文案 |
dsh-trim-cot-leakage | 清理读起来像推理过程转录的文字 |
dsh-find-simplifications | 寻找有证据支撑的删减:死代码、重复、投机设计 |
dsh-code-review | 评审 PR |
cordis-styling-nitpicking | 审查 Cordis 插件的生命周期与所有权 |
dsh-error-handling | 设计或审查失败路径 |
dsh-ci-test-reliability | 编写或排查可能 flaky 的测试 |
dsh-pre-push-checks | 推送前选择最小的检查集 |
dsh-doc | 创建、重组、审计文档 |
dsh-archive-agent-notes | 新增或清理 Agent Note |
多数 skill 开头都写着 "guidance, not a checklist"。这句话防止模型把 skill 当成机械执行的脚本,跳过语义判断。
可以借鉴
- 根规则文件要短到能常驻上下文。每条规则自成一体,详细解释放在链接的归属文件里。
- 给规则文件设字数上限,并用脚本检查。
- 局部规则下沉到子目录;流程类知识做成按需加载的 skill。