---
name: audit-dimensions
description: D1~D25 规范文件审查维度总览 — 规范库/specs 文件专属审查层
---
# Audit Dimensions Skill

## 适用范围

审查目标为**规范文件**（instructions/*.md、skills/**/SKILL.md、agents/*.agent.md、RULES.md 等 AI 指导文档）时加载本 Skill。

## 维度总览（D1~D25）

| 分组 | 维度 | 优先级 |
|------|------|:------:|
| A — 结构规范 | D1 文件结构 · D2 NODE_META/frontmatter 规范 · D3 路由语法正确性 | 🔴 |
| B — 内容质量 | D4 内容完整性 · D5 跨文件一致性 · D6 示例可执行性 | 🔴/🟡 |
| C — 可维护性 | D7 职责边界 · D8 版本标注 · D9 引用准确性 | 🔴/🟡 |
| D — AI 执行性 | D10 指令明确性 · D11 冲突检测 · D12 路由正确性 | 🔴 |
| E — 可扩展性 | D13 扩展点标注 · D14 租户覆盖支持 · D15 向后兼容 | 💡 |
| F — 维度体系 | D16 维度编号唯一 · D17 优先级标注 · D18 AI-first 设计 | 🔴/🟡 |
| G — 运维 | D19 废弃说明 · D20 变更历史 · D21 Markdown 渲染格式 | 🟡/🔴 |
| H — 语义正确性 | D22 产品语义正确性 | 🔴 |
| I — 跨客户端适配 | D23 Claude Code 适配层 · D24 客户端支持矩阵 · D25 记忆/报告 agent 字段 | 🔴 |

## 执行优先级分批

| 批次 | 维度 | 说明 |
|------|------|------|
| 🔴 第一批 | D1·D2·D3·D4·D5·D7·D9·D10·D11·D12·D16·D17·D21·D22·D23·D24·D25 | 强制，发现问题立即标记 |
| 🟡 第二批 | D6·D8·D18·D19·D20 | 建议，不阻塞 |
| 💡 第三批 | D13·D14·D15 | 改进，按 Token 预算执行 |

## 关键检查（D5 跨文件一致性）

新增子类型 spec 后必须核查三项（L1~L3）：
- L1：`routing/SKILL.md` 路由表包含该子类型
- L2：`02-output-paths.instructions.md` 注册该子类型目录
- L3：对应 report 模板的子类型字段包含该子类型

---

## 各维度检查项

### A — 结构规范

**D1 文件结构 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | `plugin.json` 注册的所有 `agents/*/` 和 `skills/*/` 文件是否实际存在 |
| 2 | 每个 SKILL.md 是否有 YAML frontmatter（`name` + `description`）|
| 3 | 每个 agent 文件是否有 `name`/`description`/`tools` 三字段 |
| 4 | 所有 `prompts/*.prompt.md` 是否有 `agent`/`description`/`applyTo` frontmatter（注：`agent: agent` 为 VS Code Copilot prompt 的正确字段，非 `mode`）|
| 5 | instructions 目录中是否存在无 `applyTo` 的文件（需添加）|

**D2 frontmatter 规范 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | agent frontmatter 中 `tools:` 列表是否符合 Copilot 平台支持的工具名（filesystem/terminal）|
| 2 | DevCodex Skills 注释（`<!-- DevCodex Skills: ... -->`）中的 skill id 是否全部在 `plugin.json` 里注册 |
| 3 | instructions 文件的 `applyTo` 是否正确（全局用 `**`，工作流专属用具体路径）|
| 4 | Skills 注释里的 id 顺序是否与执行依赖顺序一致（core 类 skill 应排在前）|

**D3 路由语法正确性 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | `01-common.instructions.md` §意图路由表是否覆盖所有 8 个意图（dev/fix/analyze/audit/self-fix/resume/other/chat），且与 `routing/SKILL.md` / `intent/SKILL.md` 一致 |
| 2 | `intent/SKILL.md` 的三问法和前置识别是否可由 LLM 无歧义执行 |
| 3 | `routing/SKILL.md` 的子类型路由表是否与各工作流 Skill 声明的子类型一致 |

---

### B — 内容质量

**D4 内容完整性 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | 每个 SKILL.md 是否有实质性内容（非空壳/非占位符）|
| 2 | dev/fix/audit 工作流描述中 CP 流程是否完整（CP1/CP2/CP3 定义、触发条件、模板引用）|
| 3 | `compliance/SKILL.md` 的 FC/SC/RC 三层检查项是否有完整的可执行判断标准 |
| 4 | `cp-gate/SKILL.md` 是否覆盖所有 CP 响应类型（确认/修正/拒绝/追问/模糊）|

**D5 跨文件一致性 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | L1~L3 联动检查（见上方关键检查）|
| 2 | `02-output-paths.instructions.md` 与各工作流 report 模板的产物路径是否一致 |
| 3 | `17-compliance.instructions.md` 的 PC0~PC10 预检查、`15-memory.instructions.md` 的读取顺序与 `01-common.instructions.md` 的路由 / Profile 规则是否对齐 |

**D6 示例可执行性 🟡**

| # | 检查内容 |
|:-:|---------|
| 1 | Skills 中的示例代码块（如 `.http`/`.cjs` 格式）是否可直接执行 |
| 2 | `api-verification/SKILL.md` 的双产物示例是否语法正确 |
| 3 | `memory/SKILL.md` 中的路径模板变量（`<project>`/`<agent>`/`YYYYMMDD`）是否有明确的替换规则 |

---

### C — 可维护性

**D7 职责边界 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | 工作流主规则是否收敛在 `instructions/`，Skill 仅承载详细检查标准 / 模板 / 补充说明，Agent 入口不重复维护同一事实 |
| 2 | `instructions/`、`skills/`、`website` 之间是否存在同一事实多处维护但无权威来源声明的分叉 |
| 3 | `compliance/SKILL.md` 是否包含非合规检查内容（如执行逻辑）→ 应拆出 |

**D8 版本标注 🟡**

| # | 检查内容 |
|:-:|---------|
| 1 | `plugin.json` 的 `version` 字段是否与 `CHANGELOG.md` 最新版本一致 |
| 2 | `RULES.md` 头部的版本号是否与 `plugin.json` 一致 |

**D9 引用准确性 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | 各 SKILL.md 中引用的 prompt 模板路径（`prompts/*.prompt.md`）是否全部存在 |
| 2 | Agent 入口文件中的职责说明是否与 `instructions/` 当前真实执行面一致，未继续引用已下沉或已移除的主逻辑 |
| 3 | `report/SKILL.md` 模板引用是否覆盖所有工作流（dev/fix/analyze/audit） |

---

### D — AI 执行性

**D10 指令明确性 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | 每个 SKILL.md 是否有可操作的执行步骤（不止是"应该做X"，而是"执行步骤：1.X 2.Y"）|
| 2 | compliance SC 层每个检查项是否有明确的判断标准（是/否，而非"合理即可"）|
| 3 | fix 工作流的"修复三步必做"是否有具体的 grep 命令示例或搜索模式 |
| 4 | `memory/SKILL.md` 的 SUMMARY.md 格式是否有可直接填写的表头模板 |

**D11 冲突检测 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | `00-safety.instructions.md` 与 `01-common.instructions.md` / 各工作流 instructions 之间是否存在规则冲突 |
| 2 | `instructions/` 各文件之间优先级是否明确，是否有相互矛盾的约束 |
| 3 | `17-compliance.instructions.md` 的预检查 / 合规顺序是否与 `01-common.instructions.md`、`15-memory.instructions.md` 的约束优先级一致 |

**D12 路由正确性 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | `intent/SKILL.md` 三问法的每个分支是否都能唯一确定一个目标工作流 |
| 2 | 意图为 `other` 时是否明确路由到 plan 工作流（无兜底缺失）|
| 3 | `token-check/SKILL.md` 的当前状态声明是否与 `plugin.json` tier 配置一致 |

---

### E — 可扩展性

**D13 扩展点标注 💡**

| # | 检查内容 |
|:-:|---------|
| 1 | 新增工作流子类型时需更新的文件是否有注释标注（L1~L3 联动）|
| 2 | `plugin.json` 的 `_note_skills` 字段是否说明了子类型 Skill 注册方式 |

**D14 租户覆盖支持 💡**

| # | 检查内容 |
|:-:|---------|
| 1 | `instructions/tenants/` 目录是否存在并有 README 说明覆盖规则 |
| 2 | 租户 instructions 的 frontmatter 格式是否有示例 |

**D15 向后兼容 💡**

| # | 检查内容 |
|:-:|---------|
| 1 | `CHANGELOG.md` 和 `changelogs/` 中的版本映射是否完整（所有变更都有对应记录）|
| 2 | 现有 `npx devcodex init` 安装的文件路径是否与 `plugin.json` 注册路径一致 |

---

### F — 维度体系

**D16 维度编号唯一 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | D1~D25 编号在本文件内无重复 |
| 2 | `audit-execution-guide/SKILL.md` 的分批表与本文件维度编号一致 |

**D17 优先级标注 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | 每个维度有明确优先级标注（🔴/🟡/💡）|
| 2 | 优先级与执行优先级分批表一致（🔴 维度全在第一批，不遗漏）|

**D18 AI-first 设计 🟡**

| # | 检查内容 |
|:-:|---------|
| 1 | 所有 SKILL.md 是否面向 LLM 执行而非人类阅读设计（指令式 > 描述式）|
| 2 | 条件判断是否使用明确的"如果X则Y"格式，避免模糊的"应当/建议"表述 |

---

### G — 运维

**D19 废弃说明 🟡**

| # | 检查内容 |
|:-:|---------|
| 1 | `CHANGELOG.md` 是否记录了已删除的 8 个独立 agent 文件 |
| 2 | 废弃的触发方式（`@dev`/`@fix` 等旧指令）是否有迁移说明 |

**D20 变更历史 🟡**

| # | 检查内容 |
|:-:|---------|
| 1 | `CHANGELOG.md` 格式是否符合 `02-output-paths.instructions.md` 的 CHANGELOG 维护规范 |
| 2 | MAJOR/MINOR 版本是否有对应 `changelogs/releases/vX.Y.Z.md` 详情文件 |

**D21 Markdown 渲染格式 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | 表格每行是否以 `\|` 开头且以 `\|` 结尾，无多余前缀字符（如 `？`/空格/不可见字符）破坏渲染 |
| 2 | 表格分隔符行（`\|:-:\|---\|`）格式是否正确，列数是否与表头一致 |
| 3 | 代码块是否正确闭合（开 ` ``` ` 必有对应的闭合 ` ``` `） |
| 4 | 标题前后是否有空行（Markdown 渲染要求标题前后各一空行） |
| 5 | 嵌套列表缩进是否统一（2 或 4 空格，不混用 Tab） |
| 6 | 表格前是否有空行（Markdown 渲染要求表格前至少一空行，段落/粗体文本直接跟表格会导致渲染失败） |

---

### H — 语义正确性

**D22 产品语义正确性 🔴**

> 历史教训：ENV_MODE 行为在 11+ 文件中搞反（prod 全量合规 / dev 轻量），根因是规范原型定义错误后被忠实复制，无任何节点质疑"行为分配是否符合模式名称的常规含义"。

| # | 检查内容 |
|:-:|---------|
| 1 | **模式语义一致性**：dev/prod/test 等环境模式的行为分配是否符合其常规产品含义（dev=开发调试/全量检查；prod=生产稳定/最小开销）|
| 2 | **角色/层级语义**：Free/Pro/Enterprise 等层级名称的权限分配是否符合层级递进含义（Free ⊂ Pro ⊂ Enterprise）|
| 3 | **功能开关语义**：enable/disable、skip/enforce、required/optional 等控制标志的实际行为是否与名称语义一致 |
| 4 | **跨文件语义传播**：同一模式/角色名称在所有引用处的行为描述是否语义一致（防止 A 文件说 dev=轻量、B 文件说 dev=全量）|

---

### I — 跨客户端适配（v1.9.2+）

> 历史背景：v1.9.0 引入 Claude Code 适配（`devcodex init --claude`、`CLAUDE.md`、`.mcp.json`、`.claude/settings.json` hooks）后，规范分发面从单一 Copilot 扩展为多客户端，但 audit 维度长期未覆盖适配层，导致 CLAUDE.md 与 `lifecycle.cjs` 实现错位、记忆 `<agent>` 字段歧义等问题。

**D23 Claude Code 适配层 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | `CLAUDE.md` 与 `index.js` `cmdInitClaude`/`CLAUDE_SOURCES`/`CLAUDE_SETTINGS_HOOKS` 是否描述同一现实（不出现"文档说 A、实现是 B"）|
| 2 | `CLAUDE.md` 引用的 `.claude/skills/` `.claude/instructions/` 路径是否与 `index.js` 实际写入路径一致 |
| 3 | `hooks/_runtime/lifecycle.cjs` 对各宿主的 Bootstrap / CP gate 工作流约束与操作风险 advisory 是否对称，且 advisory 不得投影为权限 deny |
| 4 | `.mcp.json` 与 `index.js` `CLAUDE_MCP_JSON` 是否一致 |
| 5 | `CLAUDE.md` 是否包含 SC/RC/T 完整索引或显式跳转（避免 Claude 用户必须额外读 17-compliance）|

**D24 客户端支持矩阵 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | `README.md` 或官网首页是否给出 Client Support Matrix（明示 Copilot/Claude Code/Cursor/Codex 各等级）|
| 2 | 矩阵描述与实际分发链路（`SOURCES` vs `CLAUDE_SOURCES`）一致 |
| 3 | 未支持客户端（如 Codex）是否明示"无适配"而非默认隐瞒 |

**D25 记忆/报告 `<agent>` 字段 🔴**

| # | 检查内容 |
|:-:|---------|
| 1 | `15-memory.instructions.md`、`CLAUDE.md` `02-output-paths.instructions.md` 三处的 `<agent>` 枚举值是否一致（固定集合，无散值）|
| 2 | `devcodex profile init` 是否按当前宿主推断写入 `"agent"` 到 `.devcodex/profile/config.json`，且 `devcodex init` / `devcodex init --claude` 不伪造 profile config |
| 3 | `.devcodex/.memory/clients/<agent>/` 目录命名是否符合上述枚举 |
| 4 | 报告路径 `.devcodex/reports/<type>/<agent>/YYYYMMDD/` 中 `<agent>` 是否同样符合枚举 |
