Audit Common logo

Audit Common

Organization
devcodex-labs
audit-common

审查公共维度 G0~G5 + Profile Freshness Check — 所有 audit 子类型必先执行的基础维度层

Overview

Publisherdevcodex-labs
Repositorydevcodex
Skill nameaudit-common
Stars
433
Forks
44
Bundled files
1
LicenseAGPL-3.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by devcodex-labs on GitHub. Read the source before you install it.

Installation

Install the Audit Common AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/devcodex-labs/devcodex/tree/main/content/skills/audit-common
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/devcodex-labs/devcodex.git /tmp/devcodex
mkdir -p .claude/skills
cp -r /tmp/devcodex/content/skills/audit-common .claude/skills/audit-common
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Audit Common in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Audit Common on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Audit Common is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Audit Common Skill

职责

所有 audit 工作流必须先执行 G0 体量评估 + Profile Freshness Check + G1~G5 公共维度,再叠加子类型专属维度(TD/RQ/PE/RA/DA/RL)。

G0 体量评估(前置,G1 之前执行)

G0 必须先调用 skill-gap-analysis 的 ProjectArtifactScaleRoutingGate:识别唯一项目/root,使用 bounded inventory 统计文件数、可解析字节、最大文件、目录集中度、派生产物比例和消费者扩散面,形成 ScaleDecisionRecord 后才允许 CRS 或内容审查。用户提示目录很大时不得降为 single-pass;项目/root 不明确时必须 blocked。

审查开始前统计待审查文件/目录总数,决定执行策略:

文件总数策略说明
1~30默认 single-pass 候选仍需同时满足字节、最大文件、派生比例和 fan-out 预算
31~60默认 batched输出 batch budget/checkpoint 后执行
> 60强制 batched 或 sampled+deep-read全量 inventory,不等于逐字全读

分批策略详见 audit-execution-guide/SKILL.md §体量分批策略。

ReReviewRuntimeFirstGate / ClosureEvidenceGate

当用户要求「再审 / 已调整 / 复审修订稿」或审查宣称 finding closed / 可确认下一 CP / 可实施 / scheme-pass 时:

  1. ReReviewRuntimeFirstGate:先绑定当前正文 hash;先问「按实施计划开工,Hook/MCP/descriptor 会不会假绿?」并抽样 runtime/writer/reader;禁止只对照方案段落是否出现旧 finding 文案后关闭。
  2. ClosureEvidenceGate:每条 P0/阻断关闭须双列 designEvidence + runtimeOwners(writer|reader|schema|probe) + negativeProbe;仅 design → 最高 partial,禁止写可进 CP3。
  3. 外部/前序审查报告(含其他 Agent)一律 AuditReportIsSignalNotEvidence,须回源码/当前正文复证。
  4. 探针锚点:V100。

ReviewCoverageClaimIntegrityGate

审查报告、清单和最终回复必须区分 inventory-covered / machine-scanned / manually-read / sampled-deep-read / executed-verified。目录枚举、grep 命中、抽样深读和运行探针不得相互冒充。

  • 声明“逐文件 / 逐服务 / 全量深读”时必须提供 FileEvidenceLedger,逐项记录 path、coverageLevel、evidence、status 和 unread reason。
  • sampled 路线必须记录 sampleMethod / sampledSet / unreadSet / inferenceBoundary,不得把样本结论无条件外推到未读集合。
  • executed-verified 只证明对应命令或路径,不自动证明人工阅读或全部消费者覆盖。
  • 无法取得逐文件证据时必须降级声明,禁止用更强措辞包装较弱证据。
  • coverageClaims 必须记录 claim type、evidence mode、FileEvidenceLedger 或 sampled/unread/inference boundary,供 review checklist、TestRoute、report 与 V94 复证。

Profile Freshness Check(PFresh)

🔴 audit 不得默认 Profile 永远可信;在使用 Profile 做 G3 外部一致性之前,必须先反向核对 Profile 是否仍匹配当前项目事实。 audit 统一使用 load-profile 的 ProfileTruthReconciliationGate full 模式;PFresh-1~PFresh-6 是 full 模式的强制检查集合,不得被 targeted 或 N/A 路径削弱。

编号检查项说明
PFresh-1版本与包身份对照 package.json、plugin.json、根 CHANGELOG.md 与 changelogs/,检查 Profile 当前版本、阶段摘要、发布状态是否过期
PFresh-2资产数量与目录事实对照 instructions/、skills/、prompts/、scripts/、data/templates/、主要源码目录,检查 Profile 资产数量和目录边界是否漂移
PFresh-3脚本与验证路线对照 package.json scripts、CI/发布脚本和当前 TestRoute,检查 Profile 中的测试、构建、发布命令是否仍真实可用
PFresh-4宿主与部署能力对照 .github/、.claude/、.codex/、AGENTS.md、MCP/Hook 配置,检查 Profile 的宿主能力说明是否滞后
PFresh-5当前任务现实对照 active-root 下当前 requirements/、bugs/、报告、SUMMARY 与 open ledger,检查 Profile 是否漏记新增边界、风险或治理能力
PFresh-6发布关键 Profile 字段对自动发包、npm package、CLI/plugin 或 release-heavy 项目,检查 Profile 是否覆盖 CI workflow/job 矩阵、tag/publish 触发链、失败恢复路径、外部消费者验证矩阵、dist 产物边界、registry/tag 验收与常见故障诊断

full 模式还必须执行 repo-shape 反查:当仓库已具备 SDK/CLI、文档站、public API、CI、发布、多模块或规范控制面特征时,核对 Profile 自报档位与 04~07 活文档是否完整。审查报告必须输出 profileTrustState 和 ProfileTruthMatrix(profileClaim / actualSources / status / conclusionAuthority / correctionRoute)。

若任一 PFresh 项无法验证,profileTrustState=partially-unverifiable 且审查结论必须标注 ⚠️ Profile freshness 待验证;若确认过期,profileTrustState=drift-detected,先记录审查 finding / 治理台账并以当前事实矫正本轮结论,再继续后续 G1~G5。audit 不得直接修改 Profile,也不得基于过期 Profile 宣告收敛。

公共维度(G1~G5)

维度内容优先级
G1 文件完整性必需章节/字段齐全,无空白占位🔴
G2 内部一致性文档内部无矛盾(定义 vs 使用,目录 vs 正文)🔴
G3 外部一致性与引用文件/规范/代码实现不矛盾🔴
G4 格式规范性标题层级正确,代码块有语言标记,表格对齐🟡
G5 链接有效性内部/外部链接可访问,锚点存在🟡

统一联查矩阵映射(audit = L3)

  • audit 天生对应统一联查矩阵的 L3 强联查
  • CRS / G3 / PCV 继续作为 audit 的主路径,不降级、不被其他轻量联查规则替代
  • 其他工作流升级为 L3 时,应向 audit 的“关联文件全覆盖 + 收敛门禁”靠拢,而不是反过来弱化 audit
  • 正式复审、ECR、发布前复审、多轮收敛、外部 finding 批次或用户要求“复审直至收敛”时,必须触发 review-checklist,先创建或复用复审清单文件,冻结范围和维度,再逐项执行证据核验,并通过 ChecklistStateFreshnessGate 确认清单状态、最新证据和收敛结论一致。

关联文件发现(CRS — 收敛前必须执行)

🔴 CRS 是收敛的前置门禁:宣告收敛前,必须完成关联文件发现扫描,确认审查范围已覆盖所有引用相同概念的文件。

执行时机

时机说明
R1 范围确认前建立初始文件集合时
宣告收敛前作为收敛门禁的最后一步

CRS 执行步骤

  1. 提取关键词:从本次修改(或被审查)的文件中提取核心概念词(规则名、文件路径、配置项名等)
  2. 全库 grep:在以下范围内 grep 这些关键词:
    • instructions/(Instruction 层)
    • skills/(Skill 层)
    • prompts/(Prompt 模板)
    • agents/(Agent 定义)
  • data/(数据文件:gap-registry.md / pending-fixes.md / pending-issues.md 等)
    • 根目录 *.md(RULES.md / README.md / CHANGELOG.md)
  1. 【v1.11.0+ 父链部署体扫描】(关联 GAP-019):
    • 当前部署权威:GlobalOnlyHostConfigModeV1 使用 GlobalHostTargetV1 / GlobalHostConfigReceiptV1 的用户级指令、G_RUNTIME、config 和 runtime generation;不从源仓 cwd 或父目录名称推断宿主已安装。空 .agents/、.codex/ 或只有 CI 的 .github/ 不证明存在 DevCodex 部署。
    • 历史检测条件:父链有实际旧 adapter 入口或 managed manifest 证据,且本轮明确核对 legacy/迁移范围时,才扫描旧 workspace 部署;retired fixture、用户原生文件与当前受管文件分别归类。
    • 触发动作: a. 当前部署按 receipt 的实际落点纳入 G3;明确历史核对时,另列旧 .claude/{instructions,skills,prompts,agents,hooks}/、.github/{instructions,skills,prompts,agents,hooks}/、AGENTS.md、.agents/、.codex/ 的证据和适用版本。 b. 对当前受管内容核 source/compiled digest、generation、配置、进程实际加载路径;旧副本只按当时契约或迁移计划核对,不要求与当前发布包逐字一致。 c. 当前用户级 adapter 滞后时,列出源码仓 devcodex global-adapters apply、pack+全局安装或已发布环境 npm update -g devcodex 的适用方案;既有授权已覆盖部署时按该 scope 执行,审计/Auto/Profile 本身不扩权。不要用 bare devcodex update 或 update --claude/--codex 冒充刷全局,也不能声称全局 apply 会重写旧父链副本;授权刷新后核 receipt、devcodex doctor 和新 CLI/MCP 的实际行为。
    • 目的:避免只读源码就推断部署已生效,同时保留 GAP-019 的历史核对能力。
    • 未发现受管部署证据时:记录部署状态 UNVERIFIED/N/A,不把空目录升级为待补齐副本,也不宣称宿主原生通过。
  • ⚠️ V8 与 CRS 职责不可互替(PI-006,v1.9.5+):V8 在 source scope(authoring package 未指定范围时自动识别)核源码边界,并保留显式 workspace 范围的 legacy checkPairs;它不签发当前用户级安装或原生加载资格。CRS、当前 receipt/内容摘要和真实宿主证据分别留存——V8 ✅ ≠ 全量部署同步。
  1. 发现关联文件:将 grep 命中且不在当前审查范围内的文件列入扩展范围
  2. 补充 G3 审查:对每个新发现文件执行 G3 外部一致性检查
  3. 确认覆盖完整:所有命中文件均已审查后,CRS ✅

ℹ️ CRS 发现的文件只需做 G3(外部一致性),不需要完整重跑全部维度。

CRS 示例

text
修改了:02-output-paths §02-技术方案.md(改为条件触发)
grep "02-技术方案" instructions/ skills/
→ 命中:10-dev.instructions.md L56、cp-gate/SKILL.md L52
→ 这两个文件不在审查范围 → 加入范围 → 执行 G3 → 发现冲突 → 🔴 问题

审查发现交接循环(阻断暂停 / 非阻断入池)

🔴 触发条件:任何 audit finding 都进入交接循环,与审查对象类型无关。audit 只允许写审计报告、audit-state、记忆和 RecordRouter 台账;禁止修改或暂存被审查源码、规范、配置、测试、文档和部署副本。

🔴 核心原则:先分流,再交接,最后由用户决定是否启动独立修复:

  • 阻断项:会直接影响当前控制面正确性、造成假绿、导致规则执行失真或形成明显错误指引 → 保持 open/pending,停止受影响范围的通过结论并提出显式确认请求
  • 非阻断项:属于流程优化、模板体验、治理补强、可择期处理的问题 → 写入适当台账/问题池,状态 recorded/transferred
  • 修复动作:仅在用户显式授权后由独立 fix/self-fix 工作流执行;audit 不自动切换、不 source mutation、不 git add

上述边界统一称为 AuditMutationBoundaryGate;每轮 finding 分流和最终报告必须记录 auditWritableArtifacts、sourceMutationAuthorized=false、repairWorkflow 与 repairAuthorizationEvidence。

交接循环流程

text
开始审查
  ↓
R1:CRS + 输出发现的问题清单(只读)
  ↓
有问题?
  ├── 是 → 自我审视(实证→三列验证→对话感知→阻断/非阻断分流→盲点分析,见 §自我审视机制)
  │         ├── 阻断项 → open/pending + ConfirmationRequest → 等待用户决定是否启动独立 fix/self-fix
  │         └── 非阻断项 → 记录/转交到适当台账 → 继续可完成的审查范围
  │
  │   用户授权并完成独立修复 → audit 读取新证据 → 重启新一轮(**收敛计数归零**)
  │
  └── 否(零发现)→ 收敛计数 +1
        ├── 计数 < R → 继续下一轮 audit
        └── 计数 ≥ R → CRS 收敛门禁 → PCV → 最终报告

关键规则

规则说明
🔴 先分流再处理本轮发现问题后,先完成自我审视与阻断/非阻断判定
🔴 阻断项暂停本轮阻断项保持 open/pending,停止受影响范围的通过结论并请求显式用户授权
🟡 非阻断项入池非阻断项写入适当台账/问题池,不在 audit 内穿插修复
🔴 授权后独立修复用户确认后新建/切换 fix 或 self-fix,执行其 CP/ExecutionContract;audit 不继承修复权限
🔴 外部修复后重启独立修复完成后,audit 基于新证据重新启动完整轮次(不是在旧轮次中写 fixed)
🔴 收敛计数规则只有"有效零发现"的轮次才累加计数;发现问题的轮次不计入(修复后归零)
🔴 达到所需有效零发现轮数 R默认 R=3;仅下述合格 narrow-2 为 R=2。连续 R 轮 均零发现,且每轮满足 ReviewCoverageDelta 与 ReviewDimensionDeltaGate(所有 audit 子类型遵循同一 Owner 的轮数规则)
🔴 CRS 门禁不变声明收敛前仍须完成 CRS 全库关键词扫描
⚠️ audit 只读不变audit 只维护审计产物/状态/台账;被审查源的 mutation、stage、commit 全部属于独立修复工作流
🔴 禁止继承授权用户授权 audit 不等于授权 fix/self-fix;已有 audit 上下文、模型切换或阻断严重度都不能替代显式修复确认
🔴 判断独立性用户若先给出分类/方案/目录结构,审查仍须独立比对证据;若用户判断已最优,可明确写“已验证成立”,不得为了显得客观而机械唱反调

交接循环状态追踪输出格式

每轮结束时输出当前状态(dev 模式下在每条回复末尾必须输出,不得因元循环工作流类型而跳过):

text
---
🔄 审查发现交接状态
- 当前轮次:R{N}(本大轮审查第 N 次 audit)
- 本轮发现:🔴 X 个 / 🟡 Y 个 / 💡 Z 个
- ReviewCoverageDelta:
  - ReviewedSet:本轮已复核范围
  - UnreviewedRelatedSet:由 CRS / 调用链 / 消费链 / 配置 / 测试 / 文档 / 部署副本推导出的未读相关候选
  - NewlyReadThisRound:本轮新增阅读的未审查相关面
  - RepeatReadReason:重复阅读已审查锚点的理由(高风险锚点 / 修复回归 / 抽样 / 新证据)
  - NoNewSurfaceReason:无新增阅读面时的证据化理由
- ReviewDimensionDeltaGate:
  - PreviousDimensionSet:上一轮或已完成轮次实际覆盖维度
  - CurrentDimensionFocus:本轮新增、轮换、补强或回归维度
  - NewDimensionRationale:本轮维度焦点的证据化理由
  - RepeatedDimensionReason:重复维度的理由(阻断项回归 / 高风险锚点 / 新证据 / 抽样)
- 自我审视:[M1/M2/M3/M4 盲点类型,或"N/A(零发现)"]
- 修复交接状态:[等待用户授权 / 已转独立 fix/self-fix / 已获外部修复证据 / 零发现无需交接]
- 有效零发现计数:{n}/R(达到 Owner 所需轮数,再通过 CRS/PCV 才收敛)

🛡️ DEV 模式 | 合规检查
FC: FC1 [✅/❌] FC2 [✅/N/A] FC3 N/A FC4 [✅/❌] FC5 [✅/❌] FC6 [✅/❌] FC7 [✅/N/A]
SC: SC4 [✅/❌] SC6 [✅/❌] ...(仅列适用项,逐项实际验证后填写)
整体:✅ 全通过 / ⚠️ <N> 项待修正

📂 本次会话产物:
- [filename (类型)](workspace相对路径/skills/xxx/SKILL.md)
- [filename (类型)](workspace相对路径/file.md)
---

ℹ️ 合规检查块是 dev 模式下的强制输出,审查发现交接循环不例外。FC2(报告文件)在 PCV 完成后输出最终报告时满足;中间轮次标注 N/A(进行中,未到输出节点)。 ⚠️ FC5 填写规则:审计产物先进入 ArtifactDeliveryManifestV1,再由 UserFacingArtifactSetV1 投影“完成交付文件/阻断证据”。用户可见项必须有语义名称、用途和动作;session/SUMMARY/raw ledger 默认 internal-only。链接按当前 surface 的 capability evidence 选择,Rich clickable 不重复绝对路径;未观察 assistant payload 时只能 unverified。

审查收敛规则

轮次规则
R1先执行初始 CRS(见 §关联文件发现)确定关联文件范围,再输出维度清单供用户确认(可增删维度)
Rn每轮 audit 必须先输出 ReviewCoverageDelta 与 ReviewDimensionDeltaGate:优先阅读此前未审查但相关联的代码、配置、测试、文档、部署副本与消费者链,并说明本轮新增、轮换、补强或回归的维度焦点;已审查锚点和已跑维度只做高风险回归、外部修复回归、抽样或新证据复核;发现问题则触发自我审视 + 交接,不在 audit 内修复
收敛条件CRS ✅ + 连续 3 轮有效零发现(默认)+ 所有 🔴 已解决 + 🟡 已处理或标注 N/A
  • 🔴 CRS 是收敛门禁:必须先完成 CRS(§关联文件发现),扩展范围内的文件 G3 全通过,才允许进入收敛倒计时
  • 🔴 连续 3 轮有效零发现为默认:无论之前已运行多少轮,必须连续 3 轮均无新发现,且每轮覆盖增量和维度增量都合格,方可声明收敛
  • CRS 发现新文件时,零发现计数重置为 0
  • 禁止提前收敛:CRS 未完成、未达到所需零发现轮次,或 ReviewCoverageDelta / ReviewDimensionDeltaGate 不合格时不得输出"已收敛"结论

窄范围 audit 收敛降档(SK-FIX-15b / medium)

当且仅当用户明确 窄范围 / 单文件 / 单模块 audit,且 ScaleDecision 为 single-pass、无控制面跨宿主扩散、不属于 full/security/release 审查时,可将「连续有效零发现」从 3 轮降为 2 轮,但必须:

  1. 报告写明 convergenceMode=narrow-2 与范围边界;audit-state 同时保存该模式及完整 reviewExecutionPlan(Owner 生成、摘要有效且候选绑定的 ReviewExecutionPlanV1,exit.auditConvergence.mode=narrow-2);audit-session 与 V15 使用同一 Owner 的 requiredAuditZeroFindingRounds(state),缺失或篡改不得降档;
  2. 仍满足 CRS ✅ 与 ReviewCoverageDelta / ReviewDimensionDeltaGate;
  3. 一旦发现控制面、多消费者或范围扩大,立即恢复默认 3 轮。

ReviewCoverageDelta(复审覆盖增量)

R2 及以后轮次必须维护复审覆盖增量,防止连续零发现退化为重复阅读同一批已通过内容。

字段必填说明
ReviewedSet✅截至本轮已经实际阅读并纳入判断的文件、章节、代码路径或运行产物
UnreviewedRelatedSet✅由 CRS、调用链、消费链、配置、测试、文档、部署副本、报告和记忆索引推导出的未读相关候选
NewlyReadThisRound✅本轮新增阅读的此前未审查但相关的真实文件 / 代码 / 文档 / 产物
RepeatReadReason条件重复阅读已审查内容时必须说明原因,仅允许高风险锚点、修复回归、抽样或出现新证据
NoNewSurfaceReason条件若本轮没有新增阅读面,必须说明已通过 CRS/反向推导/消费者链确认无新增相关面

计数规则:

  • NewlyReadThisRound 非空,且本轮无新增问题 → 可计入 1 次有效零发现。
  • NewlyReadThisRound 为空,但 NoNewSurfaceReason 有证据支撑,且本轮无新增问题 → 可计入 1 次有效零发现。
  • NewlyReadThisRound 为空且缺少 NoNewSurfaceReason → 本轮即使零发现,也不得增加收敛计数。
  • 重复阅读已审查范围不能替代覆盖增量;只能作为高风险回归、修复点回归、抽样或新证据复核的补充。
  • PCV 必须按 audit-session/Owner 的完整有效计划核验最近 R 次有效零发现(默认3,完整有效 narrow-2 为2;full/security/release为3)的 ReviewCoverageDelta,确认不是用同一轮或同一批文件的机械重复凑数。

ReviewDimensionDeltaGate(复审维度增量)

R2 及以后轮次必须维护维度增量,防止复审每次机械重复同一组维度。

字段必填说明
PreviousDimensionSet✅上一轮或已完成轮次实际覆盖的维度集合
CurrentDimensionFocus✅本轮新增、轮换、补强或回归的维度焦点
NewDimensionRationale✅本轮维度选择依据:新增文件类型、消费者链变化、上轮盲区、风险面变化等
RepeatedDimensionReason条件复用上一轮维度时必须说明原因,仅允许阻断项回归、高风险锚点、新证据复核或抽样

计数规则:

  • CurrentDimensionFocus 与上一轮不同,且本轮无新增问题 → 可与覆盖增量一起计入有效零发现。
  • 维度完全重复但有有效 RepeatedDimensionReason,且本轮无新增问题 → 可计入有效零发现。
  • 维度完全重复且缺少有效理由 → 本轮即使零发现,也不得增加收敛计数。
  • 维度增量不要求每轮增加维度数量;它要求本轮说明“为什么这个审查视角仍然必要”。

OmissionOnlyReviewGate(遗漏专审)

当用户要求只审查遗漏、只列未吸纳清单或排除已吸纳/没必要项时,R1 起必须切换为 omission-only:

  • ReviewedSet 需区分“此前已覆盖 / 本轮新增覆盖 / 已吸纳或排除”。
  • UnreviewedRelatedSet 优先纳入此前未扫的 data 台账、消费者链、部署副本、报告和记忆索引。
  • 最终发现只保留此前未覆盖且仍有处理价值的遗漏项;重复项、已关闭项和无必要项只写排除理由。
  • 来源为 data 吸纳时,同步执行 WorkspaceDataAbsorptionScopeGate,覆盖 .devcodex/*/data/ 全命名空间。
  • 同步执行 ReviewDimensionDeltaGate,优先补此前未覆盖的维度;若仍复用同一维度,必须给出高风险回归、新证据或抽样理由。

ReviewFindingIntakeGate(审查发现 intake 分流)

当审查对象或输入材料包含外部审查报告、AI review finding、audit issue 或代码评审发现时,R1 起必须执行审查发现 intake 分流:

  • AuditReportIsSignalNotEvidence:报告只是线索;每条 finding 必须有本地代码、文档、测试或运行复现证据,无法复现标 not-reproduced / needs-evidence。
  • IntentionalDesignClassification:判断是否为 intentional design、兼容设计、性能取舍或产品策略,并记录依据、消费者影响和文档/测试承托。
  • UserDecisionBeforeMutation:公共契约、兼容风险、设计取舍或文档/实现二选一,必须输出用户确认点,不得直接推进源码修改。
  • DocsImplementationDriftAttribution:文档与实现不一致时,先判断文档是否合理、是否代表产品目标或历史承诺,再归因到代码、文档、示例或测试。
  • TestCoverageGapOnly:仅测试浅、回归缺失或证据不足时,审查结论优先指向补测试/复现/验证证据,不直接要求 runtime mutation。

自我审视机制(Meta-Audit)

🔴 触发条件:R2 及以后轮次发现新问题时,必须在输出问题清单前先执行自我审视,分析上一轮为何漏掉该问题。

四轴盲点分析(每轮新发现后逐轴检查)

轴盲点类型判断条件后续动作
M1范围盲点发现的文件在上一轮 CRS 扫描关键词中未命中补充关键词重跑 CRS;经 spec-governance RecordRouter 记录 record.audit-gap,更新 gap-registry
M2缺席盲点问题是字段/条目"缺失"而非"错误值",grep 无法检测下一轮切换为反向推导(V4 缺席检查逻辑);更新 gap-registry
M3层次盲点只检查了 Skill/prompt 层,未验证 Instruction 层(最高权威)下一轮补查所有三层;更新 gap-registry
M4分离盲点路径/名称发生变更,引用/applyTo 未跟随更新下一轮 grep 新旧名称交叉确认;经 RecordRouter 更新 gap-registry

执行流程

text
R2+ 发现新问题
  ↓
步骤一:实证定位(必须)
  - 读取对应文件/代码,确认问题确实存在(不得依赖记忆、推断或会话上下文中的注入内容——上下文可能是旧版)
  - ⚠️ 修复前必须从磁盘重新读取目标文件;会话开始时注入的 Instructions 内容可能早于本次修改,以磁盘文件为准
  - 记录:文件路径 + 行号/章节 + 问题原文
  ↓
步骤二:三列验证(必须)
  - 合理性:为什么这是问题?依据是哪条规范?
  - 可实施性:修复是否有明确方案?前置条件满足?
  - 收益:修复后带来什么改善?
  ↓
步骤三:对话输出感知(必须)
  - 在对话中输出上述验证结果,让用户可见
  - ⚠️ 禁止跳过此步骤直接修复
  ↓
步骤四:决定交接状态
  - 所有文件类型先判定是否阻断当前审查结论
    - 阻断项 → 保持 open/pending,停止受影响结论并提出显式用户确认
    - 非阻断项 → 写入适当台账/问题池,标记 recorded/transferred
  - 用户显式授权后才可启动独立 fix/self-fix;独立工作流必须自行执行 CP/ExecutionContract
  - audit 内禁止 source mutation、`git add`、commit 或把修复建议直接标为 fixed
  ↓
步骤五:M1~M4 盲点分析
  - 对每个新问题逐轴过一遍 M1~M4,确定盲点类型(可多轴)
  - 先归一为 `record.audit-gap`,输出规范化意图、置信度、依据和目标台账,再追加到 data/gap-registry.md(格式:GAP-NNN,含盲点轴编号)
  ↓
下一轮带着已知盲点类型定向补查

🔴 禁止"未分流即修":步骤一(实证定位)、步骤三(对话感知)和步骤四(阻断/非阻断分流)不可跳过。未经实证的问题不得执行修复;未在对话输出的验证结果,用户无法感知和纠错。

自我审视输出格式

text
---
🔍 自我审视(R{N})
- 新发现 N 个问题
- 【实证定位】[文件路径:行号] — 问题原文
- 【三列验证】
  - 合理性:[依据规范/条目]
  - 可实施性:[修复方案简述,前置条件]
  - 收益:[改善效果]
- 【盲点分析】M{X} [盲点类型]:[上一轮漏掉的原因] → 已记录 GAP-NNN
- 【交接决定】阻断项等待用户授权 / 非阻断项入池 / 已转独立 fix/self-fix(原因:[影响范围/歧义说明])
- 下一轮定向补查:[文件/层次/关键词]
---

ℹ️ 自我审视输出在问题清单之后立即输出;任何文件类型的修复都必须等待显式用户授权并进入独立 fix/self-fix,audit 不继承写入权限。

收敛后汇总验证(PCV)

🔴 强制步骤:收敛后必须执行 PCV,方可输出最终报告。

步骤动作
PCV-1 汇总去重汇总所有轮次发现的问题,按 🔴→🟡→💡 排序,去除重复条目
PCV-2 实证核查对每条问题重新读取对应文件/代码位置(不得仅凭记忆),确认问题确实存在且描述准确。若结论依赖运行时数据(测试通过率、性能数字、API 响应等),优先本轮实际执行对应命令取得当前结果;无法执行时标注 ⚠️待验证(须注明来源为历史记录);禁止将记忆文件历史数据直接标注为 ✅已验证
PCV-3 三列验证为每条已确认问题补充:合理性(依据)+ 可实施性(前置条件)+ 收益(改善效果)
PCV-4 分级标注✅已验证(有实证)/ ⚠️待验证(推断,需用户确认)/ ❌排除(证据不支持,从报告中移除)
PCV-5 最终清单输出过滤后的最终问题清单;❌排除 项须说明排除原因
PCV-6 回归复扫(v1.9.5+)对 audit-state findings[].status=fixed 的所有项执行 regressionProbes[].scanCmd 复扫,对比 expectedMatches;任一回归 → 切回 status=open,zeroFindingStreak 归零,重启新轮
PCV-7 收敛门禁上述 6 步全过 + crsPassed && pcvPassed && zeroFindingStreak>=R(默认3,合格narrow-2为2) 后方可宣告收敛

DF 数据文件轻量检查(审查 DevCodex plugin 时执行)

⚠️ 触发条件:仅当审查目标为 DevCodex plugin 文件(instructions/ · skills/ · prompts/ · agents/ · RULES.md)时,在 CRS 步骤中顺带对 data/ 文件执行 DF 检查。

ℹ️ 不适用 D1~D25:data/*.md 是运营数据文件(violations/pending-fixes/gap-registry/process-improvements),不是规范定义文件,使用轻量 DF 3项检查(不走全维度审查)。

DF 检查项

编号检查项优先级说明
DF-1标头唯一性🔴每条 ## GAP-NNN / ## PF-NNN / ## VL-NNN / ## PI-NNN 编号不重复(重复编号导致引用歧义)
DF-2状态字段完整🟡未关闭条目必须有状态字段(如 - 状态: 行或表格「状态」列);已关闭条目至少有关闭说明
DF-3路径引用有效🟡条目中引用的文件路径在 plugin 目录内实际存在(仅检查明确的相对路径)

修复方式

  • DF 检查发现问题 → Pending 级:记录 PF,不自动修复(运营数据人工决定关闭/合并策略)
  • 不触发 self-fix 元循环(data/ 不在 plugin scope 内)

Token 预算管理

  • 单次审查 Token 不足时,启用分会话模式
  • 分会话模式:每轮只审查指定维度批次,结果通过 memory/SKILL.md 写入 .devcodex/.memory/
  • 下次会话通过 memory/SKILL.md 恢复进度

Git 边界(audit 不暂存、不提交)

🔴 audit 不执行 git add、commit、push,也不管理修复变更的暂存区。用户授权后的独立 fix/self-fix 按自身 ExecutionContract 和提交授权管理 Git。

流程

text
audit finding → 记录/交接 → 用户显式授权独立 fix/self-fix
                              ↓
                    修复工作流自行管理 diff/Git
                              ↓
                    audit 只读取新证据并复审

即使用户在 audit 中要求提交,也必须先重新识别为 fix/self-fix/release 类显式动作并执行对应授权门禁;不能把 audit 的只读权限静默升级为 Git 写权限。

输出规范

审查报告:reports/audit/ 目录,含问题清单表格(级别/维度/位置/描述/PCV验证状态/状态)。

PCV验证状态列取值:✅已验证 / ⚠️待验证 / ❌排除(排除项需注明原因)

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Audit Common AI skill do?

审查公共维度 G0~G5 + Profile Freshness Check — 所有 audit 子类型必先执行的基础维度层

Why use Audit Common on TypingMind?

Because you install it once and use it with any model. Audit Common is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Audit Common in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/devcodex-labs/devcodex/tree/main/content/skills/audit-common. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Audit Common?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Audit Common?

As many as you like. As long as a model supports skills, you can use Audit Common with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Audit Common AI skill free?

Yes. It is published on GitHub by devcodex-labs under the AGPL-3.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇