with one click
audit
有边界的代码审计与修复。分层标准:L1阻塞性/L2功能性/L3最佳实践/L4过度优化。 默认目标L2,L1+L2清零即宣布完成,防止无限深挖。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
有边界的代码审计与修复。分层标准:L1阻塞性/L2功能性/L3最佳实践/L4过度优化。 默认目标L2,L1+L2清零即宣布完成,防止无限深挖。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
统一开发工作流入口。 v3.2.0 变更(步骤重构): - Step 4: DoD → 探索(先读代码理解架构) - Step 5: 写代码 → DoD(基于探索结果定义验收标准) - Step 6: 写测试 → 写代码(含测试,合并旧 05+06) - Step 7: 质检 → 本地验证(跑 npm test,不生成空 JSON) 循环控制由 Stop Hook 实现: - 有头模式: Stop Hook 检测 .dev-mode 文件,exit 2 阻止会话结束 - 无头模式: CECELIA_HEADLESS=true 时 Stop Hook 直接 exit 0,外部循环控制
跨仓库 QA 总控。统一管理测试决策、回归契约、Golden Paths 和 Feature 归类。
OKR 统一拆解工具。支持 6 层层级识别(Global OKR → Area OKR → KR → Project → Initiative → Task), 自动判断输入层级,逐层拆解到可执行 Task。Exploratory 优先策略。
| name | audit |
| version | 1.2.0 |
| updated | "2026-01-23T00:00:00.000Z" |
| description | 有边界的代码审计与修复。分层标准:L1阻塞性/L2功能性/L3最佳实践/L4过度优化。 默认目标L2,L1+L2清零即宣布完成,防止无限深挖。 |
CRITICAL LANGUAGE RULE(语言规则): 所有输出必须使用简体中文。包括步骤说明、状态更新、日志信息、错误报告。严禁使用日语、韩语或任何其他语言,即使在无头(headless)子进程中也必须遵守。
有边界的代码审计,避免无限深挖。
| Layer | 名称 | 描述 | 完成标准 |
|---|---|---|---|
| L1 | 阻塞性 | 功能不工作、崩溃、数据丢失 | 必须修 |
| L2 | 功能性 | 边界条件、错误处理、已知 edge case | 建议修 |
| L3 | 最佳实践 | 代码风格、一致性、可读性 | 可选 |
| L4 | 过度优化 | 理论边界、极端情况、性能微调 | 不修 |
当审计发现问题时,严重性关键字会自动映射为业务优先级:
| 审计严重性 | 业务优先级 | 对应 Layer | RCI 要求 |
|---|---|---|---|
| CRITICAL | P0 | L1 阻塞性 | ✅ 必须更新 RCI |
| HIGH | P1 | L2 功能性 | ✅ 必须更新 RCI |
| MEDIUM | P2 | L2/L3 | 可选 |
| LOW | P3 | L3/L4 | 可选 |
触发规则:
CRITICAL → 触发 P0 检查HIGH → 触发 P1 检查security: 开头 → 触发 P0 检查影响:
regression-contract.yaml 添加 RCI 条目scripts/devgate/detect-priority.cjs 执行scripts/devgate/require-rci-update-if-p0p1.sh 检查注意:本 Skill 的 L1/L2/L3/L4 是 问题严重性分类,用于审计发现的问题。
这与 /dev 工作流的质检分层是不同概念:
| 质检层 | 名称 | 内容 | 与本 Skill 的关系 |
|---|---|---|---|
| L1 | 自动化测试 | npm run qa | 无关 |
| L2A | 代码审计 | 本 Skill 执行的工作 | Audit 是 L2A |
| L2B | Evidence 证据 | 截图/curl 验证 | 无关 |
| L3 | Acceptance 验收 | DoD 全勾 | 无关 |
简单说:
L2 完成 = 稳定可用(推荐停止点)
用户说"找 bug" → 做到 L2
用户说"深度审计" → 做到 L3
用户说"极致优化" → 警告用户,确认后做 L3
# 询问用户
- 审计哪些文件/目录?
- 目标层级?(默认 L2)
- 最大轮次?(默认 3 轮)
第 1 轮:只找 L1 问题(阻塞性)
第 2 轮:找 L2 问题(功能性)
第 3 轮:如果用户要求,找 L3 问题
问自己:
1. 这个问题会导致功能失败吗? → L1
2. 这个问题会在边界情况出错吗? → L2
3. 这个问题只是"可以更好"吗? → L3,停止
如果找到的都是 L3/L4 问题 → 宣布审计完成
当以下条件满足时,主动声明审计完成:
✅ L1 问题:0 个
✅ L2 问题:0 个(或已全部修复)
✅ 连续 2 轮未发现新的 L1/L2 问题
输出:
"审计完成。L1/L2 问题已清零,剩余 N 个 L3 建议(可选修复)。"
使用自动化脚本进行合同验证
# 对比实际改动与 QA-DECISION.md 中允许的 Scope
BASE_BRANCH=$(git branch -r | grep -q 'origin/develop' && echo "develop" || echo "main")
node scripts/audit/compare-scope.cjs --base $BASE_BRANCH --head HEAD
# 输出:
{
"scopeCheck": {
"allowed": ["scripts/*", "skills/*"],
"changed": ["scripts/qa/risk-score.js", ...],
"extraChanges": [], # 超出范围的改动
"pass": true
},
"forbiddenCheck": {
"forbidden": ["node_modules/*", ".git/*"],
"forbiddenTouched": [], # 触碰的禁区
"pass": true
},
"overallPass": true
}
# 检查是否触碰禁止修改的区域
BASE_BRANCH=$(git branch -r | grep -q 'origin/develop' && echo "develop" || echo "main")
node scripts/audit/check-forbidden.cjs --base $BASE_BRANCH --head HEAD
# 输出:
{
"pass": true,
"forbiddenTouched": [],
"details": "No forbidden areas touched"
}
# 验证 Tests 字段对应的测试是否完成
node scripts/audit/check-proof.cjs --qa-decision docs/QA-DECISION.md
# 输出:
{
"pass": true,
"totalTests": 5,
"passedTests": 5,
"failedTests": [],
"details": "All tests verified"
}
# 聚合所有审计结果,生成 AUDIT-REPORT.md
BASE_BRANCH=$(git branch -r | grep -q 'origin/develop' && echo "develop" || echo "main")
node scripts/audit/generate-report.cjs --base $BASE_BRANCH --head HEAD --output docs/AUDIT-REPORT.md
# 输出:
{
"success": true,
"outputPath": "docs/AUDIT-REPORT.md",
"decision": "PASS"
}
在 Step 6(Audit Node)中自动调用:
# 1. Scope 验证
node scripts/audit/compare-scope.cjs || exit 1
# 2. Forbidden 检查
node scripts/audit/check-forbidden.cjs || exit 1
# 3. Proof 验证
node scripts/audit/check-proof.cjs || exit 1
# 4. 生成报告
node scripts/audit/generate-report.cjs || exit 1
# 5. 检查 Decision
if grep -q "Decision: PASS" docs/AUDIT-REPORT.md; then
echo "✅ Audit passed"
else
echo "❌ Audit failed, check AUDIT-REPORT.md"
exit 1
fi
scripts/audit/compare-scope.cjs - Scope 对比scripts/audit/check-forbidden.cjs - Forbidden 检查scripts/audit/check-proof.cjs - Proof 验证scripts/audit/generate-report.cjs - 报告生成当 /dev 流程调用 Audit Node 时,必须输出 docs/AUDIT-REPORT.md。
# Audit Report
Branch: cp-xxx
Date: YYYY-MM-DD
Scope: file1, file2, ...
Target Level: L2
Summary:
L1: 0
L2: 0
L3: 0
L4: 0
Decision: PASS | FAIL
Findings:
- id: A1-001
layer: L1 | L2 | L3 | L4
file: path/to/file
line: 123
issue: 问题描述
fix: 修复建议
status: fixed | pending
Blockers: [] # L1 + L2 问题列表
| 字段 | 必填 | 说明 |
|---|---|---|
| Branch | ✅ | 当前分支名 |
| Date | ✅ | 审计日期 |
| Scope | ✅ | 审计范围(改动的文件) |
| Target Level | ✅ | 目标层级(默认 L2) |
| Summary | ✅ | 各层级问题数量 |
| Decision | ✅ | PASS=可继续 / FAIL=需修复 |
| Findings | ✅ | 发现的问题列表 |
| Blockers | ✅ | L1+L2 问题的 ID 列表 |
L1 > 0 OR L2 > 0 → Decision: FAIL
L1 = 0 AND L2 = 0 → Decision: PASS
PR Gate 会检查:
docs/AUDIT-REPORT.md 存在Decision: PASS(FAIL 则 Gate 失败)/dev 流程中的使用(必须):
Step 5(写代码)完成后:
- Audit Node 对新代码做 L1+L2 检查
- 输出 docs/AUDIT-REPORT.md
- Decision: FAIL 时必须修复后重新审计
- Decision: PASS 后才能继续 PR 创建
Gate 强制检查:
- PR Gate 检查 AUDIT-REPORT.md 存在
- PR Gate 检查 Decision: PASS
❌ "我再找找看还有没有问题" → 无边界 ❌ "这个地方可以更好" → L3/L4 ❌ "理论上可能出问题" → L4 ❌ "为了一致性统一改掉" → L3
✅ "L1/L2 已清零,审计完成" ✅ "发现 N 个 L3 建议,是否需要修复?"
/audit → L2 审计(默认)
/audit deep → L3 审计(用户明确要求)
/audit <路径> → 指定范围
生成 AUDIT-REPORT.md 后的行为:
关键点: