关于 ns-reviewer
ns-reviewer 是供工作流调用者使用的代码审查技能,依据项目规则和评分门槛评估代码变更。它将代码审查与由 ns-judge 处理的交付证明检查分开。
主要功能
- 01依据项目规则审查差异
- 02应用严重级别和评分上限
- 03提供可执行的修复清单
- 04支持临时及议题审查
适用场景
- 01审查工作区差异
- 02审查关联议题的变更
- 03向工作流调用者返回审查结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nextstage-brasil/ skills --skill ns-reviewer安装后在 Claude Code 中输入/ns-reviewer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/review-fix-map.template.mdreview-gate-workflow.md详细介绍
代码审查员
深入、建设性地审查代码是否符合项目规则。仅审查代码。 交付证明(requirements.md 中的 AC、台账、ui-contract、视觉检查清单)= Code Review: Approved 之后由 ns-judge 负责。此技能不得调度 ns-judge。
调用方约定(工作流调用方)
调用方:ns-coder、ns-autonomous、ns-execution-gitlab-issue(直接调用或通过 reviewer-agent 执行):
- 调用方必须运行此技能——有
reviewer-agent时必须调度它(../../ns-harness/references/subagent-dispatch.md);否则在当前会话中阅读此SKILL.md。不得使用 Cursor Task 角色(senior-tech-lead-reviewer、bugbot、security-review),也不得临时编造审查流程。 - Gate 规则:
references/review-gate-workflow.md。 - 对工作流调用方的每条回复必须以以下确切行结尾:
Code Review: {Approved|Rejected|Blocked}。总体评分须放在执行摘要中。
会话启动
参阅 ../../ns-harness/references/session-boot.md。在执行任何其他步骤前,必须完成会话启动(阻塞)——从冷启动开始本次审查运行;仅当步骤 1–6 已完成且文件未变更时,才可在会话中途跳过。不得通过工具读取 AGENTS.md。
工作流
- 会话启动——冷启动
reviewer-agent/ 此技能:完成session-boot.md中的会话启动步骤 1–6。若同一 Agent 运行已完成步骤 1–6 且文件未变更,则无需重新读取。但仍须根据上下文中的AGENTS.md和项目规则评判差异。 git diff(必要时运行git status)。- 重点审查已修改的文件及其上下文。
- 立即开始——无需征求许可。
临时差异模式(来自 ns-coder)
调用方仅传入工作树差异(无 ISSUE_URL,无版本闭环路径):
- 审查工作树上的
git diff。 - 应用下文的评分门槛和严重性规则。
- 给父级的最后一行:
Code Review: {Approved|Rejected|Blocked}
版本闭环
- 应用评分门槛(SOLID、安全性、孤立导出、参与者/规则)。以
Code Review: {Approved|Rejected|Blocked}结束对话。 - 不要解析
requirements.md。不要检查spec-coverage.md/ui-contract.md/ 视觉检查清单——父级会在Approved后运行ns-judge(../ns-judge/SKILL.md)。 - 不要编写
code-review-report.md(或任何持久化的审查报告)。 Rejected/Blocked:按照修复项映射轮次输出修复项映射(references/review-fix-map.template.md)。不得包含面向人的说明、正面发现或历史记录。Approved:仅输出执行摘要、评分和裁决行(不提供修复项映射)。之后父级可调用ns-judge。
Issue 审查模式
调用方传入 ISSUE_URL(或 project_id + issue_iid):
- 将 Issue 上下文交给
ns-execution-gitlab-issue上下文流程或gitlab-issue-context-agent处理——若已提供综合信息区块,则不要调用read_issue。 - 根据综合信息审查
origin/<target>...origin/<source>的差异——切勿弄错分支。 - 仅审查代码。 不要运行需求证明 / AC 令牌扫描——在
Approved后由ns-judge的 Issue 模式处理(--ac-file)。仅生产者使用的未使用导出仍适用下方的孤立导出上限。 - 裁决(必须且只能选择一项):
Approved|Rejected|Blocked——遵循下方的评分门槛。 - 通过
mcp-gitlab-usage发布内部 GitLab 评论——第一行:Code Review | YYYY-MM-DD HH:MM (UTC) | Verdict: {Approved|Rejected|Blocked} - 给父级的最后一行:
Code Review: {Approved|Rejected|Blocked} Rejected/Blocked:GitLab 评论须包含与修复项映射轮次相同的修复项事实。
修复映射轮次
第 1 轮(穷尽检查): 写入映射前,逐一对照 Score caps 表检查所有被修改的文件。列出修复其他问题后仍会限制分数的所有 Critical 和 Warning——被修改文件中重复的成员也各自单列一行(同一问题类型,多个符号)。模板:references/review-fix-map.template.md。省略不影响关卡的 P2 问题。
第 2 轮及之后(差异检查): 仅当父提示词写明 delta 且列出先前映射 ID 时才执行。检查这些行以及修复者修改的代码块。该范围之外的新 Warning 属于第 1 轮漏报——不要列出,不要因此拒绝。仅当这些代码块中出现新的 Critical 时,才允许新增问题行。否则,只列出仍未解决的 ID。
分数关卡(所有模式)
每次评审必须包含 1–10 的总分。只有 Critical 为零且分数 = 10 时,才能判定为 Approved。调用方会根据 Approved 关闭流程——references/review-gate-workflow.md。分数为 9 时判定为 Rejected(提升至 10)。
| 分数 | 含义 | 对评审结论的影响 |
|---|---|---|
| 10 | 可直接发布 | Approved(唯一符合条件的分数) |
| 9 | 接近门槛,仍有遗留问题(冗余/不统一) | Rejected — 提升 |
| ≤8 | 未达到门槛/受分数上限限制 | Rejected |
只有满足以下所有条件,才能判定为 Approved:
- 没有 Critical 问题
- 总分 = 10/10
以下情况判定为 Rejected: 存在任何 Critical,或分数 ≤ 9。AC/ledger/ui-contract 证明不属于此技能的职责。
评分单位
评估 diff 修改后整个模块/文件的质量,而非单个代码块是否正确。若最小化补丁使文件中的 SSoT/DRY/OCP 问题持续存在或恶化,不得给 9–10 分。
分数上限(符合多项时取最低值)
| 被修改模块中的情况 | 最高分 |
|---|---|
| 新增/修改的行为,其配置/查找逻辑分散在 2 个及以上位置(SSoT) | 7 |
| diff 范围内,在 2 个及以上函数中复制了相同的解析代码块(DRY) | 7 |
| 可预见的扩展需要修改同一文件中的 3 个及以上位置(OCP 较弱,例如 provider) | 7 |
新增/修改了导出/公开符号(模块 return { }、module.exports、export、public/public static、挂载到 window/全局),且定义模块之外没有调用方(grep:其他文件以及同一文件中不属于导出列表的调用点) | 7 |
| diff 正确、没有 Critical,但文件中的模式质量一般/不一致 | 7–8 |
| 替换 gate/role helper 或领域常量,却未引用项目规则中的相应条款 | 6 |
内部/私有/嵌套 helper 不计入。不要仅根据函数数量限制分数。例如:6 个导出的 IP helper 对应 2 个调用操作(validateOriginIpInput、originIpMatches);私有的 originIpKey = 可以。
9 分: 没有 Critical,且上述问题在被修改模块中不存在或已解决;可预见的扩展只需修改一个 SSoT。
10 分: 满足 9 分条件,且没有明显的备用方案/冗余;整个文件的模式统一。
防止虚高评分
- 禁止: “diff 最小/测试通过/AC 正常 ⇒ 10 分”
- Executive Summary 中必须用一句话说明评分依据,并与评分标准对应(例如:“受限于 7 分——apiKey 不在 preset 中”)
问题严重程度(SSoT/DRY/OCP 较弱/孤立的公开接口)
被修改模块中的 SSoT 分散、解析逻辑重复,或孤立的公开/导出接口,严重程度至少为 Warning。优先使用 Warning + 分数上限,不要自动判为 Critical。Bug 和安全问题判为 Critical。分数 ≤ 9 必须判为 Rejected。AC 失败由 ns-judge 负责。
评审优先级
每个部分内按严重程度排序:
- Critical(合并前必须修复)
- Warning(应当修复)
- Suggestion(可考虑)
若 diff 修改了 agent-api(或 LangGraph runtime 路径):加载 ../ns-langgraph-agents/references/anti-patterns.md。违反 Placement、Prompt inject、Bind parity、Spec drift、colon wire names 时,判为 Critical。
AI / Agent 差异审查标准
保留上述反模式委派规则。差异涉及 Agent/大模型相关界面时,需额外采用以下标准:
| 发现 | 严重程度 |
|---|---|
| 无需门控即可触达不可逆写入操作 | 严重 |
| 提示词正文变更但未提升版本号 | 严重 |
对审计历史执行 UPDATE / DELETE | 严重 |
| 对模型输出进行相等断言(精确字符串),而非检查可接受范围 / 契约 | 警告 + 评分上限 7–8 |
| 新增大模型调用但未核算 token / 成本 | 警告(除非与其他风险特征并存,否则不额外设定评分上限) |
SOLID 与整洁代码
- SRP、OCP、LSP、ISP、DIP
- 命名、圈复杂度、错误处理、死代码
性能、安全性、可测试性
- N+1、非必要的重新渲染、缺少验证
- SQL 注入、XSS、敏感日志
- 妨碍测试的耦合
| 发现 | 严重程度 |
|---|---|
| 已纳入版本控制的文件中包含密钥 / 凭据 | 严重 |
| 为了通过测试而弱化 / 删除测试 | 严重 |
| 默认级别可触达真实大模型 / 网络调用(无 live 标记,或未从默认运行 / CI 中排除) | 严重 |
| live 级别测试没有已记录的按需触发方式,或凭据并非来自环境变量 / 密钥管理器 | 警告 |
| 缺乏依据的类型逃生口 | 警告 |
| 任务未批准的新依赖或抽象 | 警告 |
| 新代码重复使用现有仓库辅助工具、标准库 / 平台功能或已安装依赖的功能 | 警告 + 评分上限 8 |
| 任务未要求的推测性选项 / 配置 / 包装器 | 警告 + 评分上限 8 |
| 移动 / 合并代码时丢失验证或错误处理 | 警告 + 评分上限 8 |
| 新增非简单逻辑(分支、循环、解析器、金额、安全)但没有测试 | 警告 + 评分上限 8 |
Actor 与门控语义(规则优先)
在提议更改会话门控、中间件或角色检查之前:
- 阅读项目规则,了解具名 Actor 的语义。同名词不可互换。
- 禁止仅因标签相似而替换辅助工具。若规则定义了不同的 Actor,则为严重问题。
- 差异引入了规则中从未提及的 Actor / 门控规范:警告。
- 门控 / 身份验证修复映射必须引用项目规则条款。
必需的输出格式
已批准
执行摘要
- 评分 10(评分门槛——只有评分为 10 才能标记为
Approved) - 用一句话说明评分为何符合评分上限标准
- 两行总体评估
然后:Code Review: Approved
已拒绝 / 已阻止
执行摘要
- 评分 1–10
- 用一句话说明评分理由
- 两行总体评估
修复映射(Agent)
遵循修复映射轮次和 references/review-fix-map.template.md——仅列出可执行的修正项。
省略正向发现、仅含建议的无关内容、历史记录和冗长说明。
然后:Code Review: Rejected 或 Code Review: Blocked
限制
- 只读。 不得编辑 / 创建 / 删除产品文件——包括
code-review-report.md - 不可替代。 工作流调用方必须按名称调用此技能;除非人类在本次运行中明确要求,否则平台审查子 Agent 不等效
- 直接、具有建设性;不得针对个人进行批评
- 不要重写无关代码
- 发现必须基于实际差异和已阅读的规则
- 遵循代码库中可见的项目惯例
- 修复映射面向另一个 Agent,而非人类
参考资料
| 文件 | 使用时机 |
|---|---|
references/review-fix-map.template.md | 已拒绝 / 已阻止回复正文 |
../../ns-harness/references/artifact-layout.md | 工件路径 |
mcp-gitlab-usage | 发布内部审查评论 |
../ns-judge/SKILL.md | 此技能返回 Approved 后提供交付证明 |