关于 ns-judge
ns-judge 是用于代码评审通过后检查交付差异是否满足验收标准的会话内技能。它结合脚本检查与 LLM 补充评估,并按评分规则给出交付结论。
主要功能
- 01验收标准令牌验证
- 02差异绕过项扫描
- 03LLM 补充评估
- 04按评分门槛判定结论
- 05结构化发现与修复映射
适用场景
- 01按项目需求验证交付闭环
- 02根据综合文件检查 Issue 验收标准
- 03使用可选需求评估临时改动
- 04识别测试未覆盖的剩余问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nextstage-brasil/ skills --skill ns-judge安装后在 Claude Code 中输入/ns-judge确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/workflow.mdscripts/mutate_prove_ac.pyprove_ac.pyreview_gate.pyscan_bypasses.pytest_prove_ac.py详细介绍
交付评审
证明已交付的差异符合输入 AC。不评 SOLID,不评安全性。代码质量已通过 ns-reviewer。
形式(不是照搬供应商内容):the-judge SKILL.md v1.4.0。在此重新实现。不要粘贴该文件。不要用 GitHub APPROVE、表情符号、禁用词门槛、六轮 LLM 检查或 post_review.py。
适用时机
父级已从 ns-reviewer / reviewer-agent 获得 Code Review: Approved。同一父级随后在当前会话中读取此 SKILL.md。v1 中没有 judge-agent。人工 /ns-judge 只是会话入口。
| 父级 | 模式 | AC 来源 |
|---|---|---|
run-implementation 步骤 5 | closure | sdd/requirements.md |
ns-autonomous 独立收尾 | closure | 同上 |
ns-coder 临时调用 / C2 | adhoc | 如有则使用 --requirements / --ac-file;否则跳过 AC 证明 |
ns-execution-gitlab-issue 阶段 4 | issue | synthesis 提供的 --ac-file(Python 不会调用 GitLab) |
ns-reviewer 不得分派此技能。
没有 Code Review: Approved → 停止。不要进行评审。告知父级先运行 reviewer。
会话启动
参阅 ../../ns-harness/references/session-boot.md。本次评审为冷启动:探测前先完成会话启动步骤 1–6。绝不要用工具读取 AGENTS.md。
探测(Python 可选)
运行 command -v python3。若缺少 Python,或任意脚本退出码为 1 → 跳过预检。仍须进行 LLM 剩余检查。绝不能因为缺少 Python 而判为 Blocked。
详情和 CLI:references/workflow.md。令牌正则只存在于 scripts/prove_ac.py 中,不在本文内。
工作流
- 确认最近一次代码评审结论为
Code Review: Approved。否则停止。 - 探测 Python。如果存在:
- 针对当前模式运行
prove_ac.py - 始终运行
git diff \| python3 scripts/scan_bypasses.py(退出码始终为 0)
- 针对当前模式运行
prove_ac.py退出码为 2 → 按格式生成修复映射(../ns-reviewer/references/review-fix-map.template.md),最后一行写Delivery Review: Rejected。不进行 LLM 剩余检查。- LLM 剩余检查(脚本已跳过 或
prove退出码为 0):检查测试尚未发现的遗留问题。不要重复报告 phpunit/lint 的结果。对scan_bypasses.py发现的裸抑制项,在剩余检查中进行评审。所有主张都需要证据(Pass E,要求更严格:AC 令牌)。 - 写入
findings.json。运行review_gate.py。若门禁未通过,编辑 JSON 并重新运行。这不是产品Blocked。 - 最后一行写:
Delivery Review: {Approved|Rejected|Blocked}。在 Executive Summary 中写明分数。
分数门禁(与 ns-reviewer 使用相同表格)
复制此表,不要另创一套评分标准。Approved = Critical 项为零且分数 = 10。分数为 9 = Rejected(Lift)。
| 分数 | 含义 | 对评审结论的影响 |
|---|---|---|
| 10 | 可直接交付 | Approved(唯一符合条件的分数) |
| 9 | AC/ledger/ui-contract 项目仍有接近门槛的遗留问题 | Rejected — Lift |
| ≤8 | 未达门槛 / 缺少 AC 令牌 / ledger 未满足 | Rejected |
只有同时满足以下所有条件,才能给出 Approved:
- Critical 发现为零
- 总分 = 10/10
- 每个计分 AC 令牌均在仓库中命中(存在 AC 来源时)
缺少 AC 令牌 / ledger 未满足 / 缺少 testid → 判为 Critical 或分数上限为 8 → 不可能得到 10 分。
跳过 Python 时进行的剩余检查:同样遵循仅 10 分可通过的规则。LLM 仍须给出分数和结论。
review_gate.py 会拒绝以下 JSON:分数不等于 10 却声明 Approved,或存在 P0 发现却声明 Approved。
模式
closure
prove_ac.py --mode closure [--repo .] [--version VERSION_SAN] [--requirements PATH]
规则:#### Acceptance criteria: 下的复选框行。令牌:反引号内容、引号字符串、data-testid、HTTP \b[1-5][0-9]{2}\b(位于脚本中)。至少有 1 个令牌且仓库中命中数为 0 → P0 Rejected。某行没有令牌 → 不计分(由剩余检查处理)。脚本不会证明功能有效。
另需检查:ledger 缺失 / 未映射;ui-contract testid/文案;视觉检查清单中的字面值。判定门槛相同:Rejected。
issue
--mode issue --ac-file PATH。使用 synthesis 文件。Python 不会调用 GitLab。
adhoc
除非使用 --requirements 或 --ac-file,否则跳过 AC 证明。仍会运行 Residual。父级报告可将 AC 证明标记为 n/a。
必需输出
已批准
执行摘要
- 评分 10
- 用一句话对照评分标准
- 两行评估
- AC 证明:
pass|n/a(adhoc,无来源)
然后:Delivery Review: Approved
已拒绝 / 已阻止
执行摘要
- 评分 1–10
- 一句话说明
- 两行评估
修复映射(Agent)
../ns-reviewer/references/review-fix-map.template.md
然后:Delivery Review: Rejected 或 Delivery Review: Blocked
约束
- 对产品文件只读
- 不从
ns-reviewer派发任务 - 不调用 GitHub review API
- P0/P1 的发现必须包含
evidence: [{type:internal,ref:path:line}] - Residual 不重复陈述测试已捕获的问题
参考资料
| 文件 | 适用时机 |
|---|---|
references/workflow.md | 探查、跳过、CLI、findings.json |
../ns-reviewer/references/review-gate-workflow.md | 父级流程(先代码,后评审) |
../ns-reviewer/references/review-fix-map.template.md | 被拒绝时的正文 |
scripts/prove_ac.py | AC / ledger / ui-contract / visual law |
scripts/scan_bypasses.py | Diff stdin 候选项 |
scripts/review_gate.py | findings.json 门禁 |