mcpField
M
mo-reviewer

mo-reviewer

github.com/shkarupa-alex测试与质量038 次安装4 周前更新
代码仓库

关于 mo-reviewer

mo-reviewer 是用于按给定任务说明和评审协议检查单个候选版本的终端评审技能。它读取变更及相关上下文但不运行项目,并验证后提交自己的报告。

主要功能

  1. 01核验候选版本及工作区状态
  2. 02按范围读取差异和相关代码
  3. 03检查需求与风险领域
  4. 04不运行项目检查
  5. 05验证并提交评审报告

适用场景

  1. 01依据任务说明评审候选版本
  2. 02检查修复及其因果关联代码
  3. 03不运行测试而报告缺陷

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/shkarupa-alex/meta-o --skill mo-reviewer

安装后在 Claude Code 中输入/mo-reviewer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
cases.json
licenses/
character-entities-LICENSE.txt
decode-named-character-reference-LICENSE.txt
mdast-util-from-markdown-LICENSE.txt
mdast-util-to-string-LICENSE.txt
micromark-core-commonmark-LICENSE.txt
micromark-factory-destination-LICENSE.txt
micromark-factory-label-LICENSE.txt
micromark-factory-space-LICENSE.txt
micromark-factory-title-LICENSE.txt
micromark-factory-whitespace-LICENSE.txt
micromark-LICENSE.txt
micromark-util-character-LICENSE.txt
micromark-util-chunked-LICENSE.txt
micromark-util-classify-character-LICENSE.txt
micromark-util-combine-extensions-LICENSE.txt
micromark-util-decode-numeric-character-reference-LICENSE.txt
micromark-util-decode-string-LICENSE.txt
micromark-util-encode-LICENSE.txt
micromark-util-html-tag-name-LICENSE.txt
micromark-util-normalize-identifier-LICENSE.txt
micromark-util-resolve-all-LICENSE.txt
micromark-util-sanitize-uri-LICENSE.txt
micromark-util-subtokenize-LICENSE.txt
unist-util-stringify-position-LICENSE.txt
references/
methodology-feedback.md
review-protocol.md
scripts/
mo-review-report.mjs

详细介绍

以终端审查员身份审查一个候选版本

只有当用户指定 mo-reviewer,或当前审查协调器的审查简报在 Reviewer-Skill 下指定它时,才开始审查。泛泛要求审查代码不会激活此技能。你是两名审查员之一:绝不启动协调器的审查技能、创建其他审查员、工作者或子代理,也绝不发布自己的报告以外的内容。运行此技能的验证器不算启动审查。

完整阅读 Portable review protocol 和 Обратная связь о методологии。 协议规定各阶段、严重性和报告语法;本页说明一名审查员如何将简报转化为一份无需重复购买的报告。

阅读变更之前

将简报中的每个字段都视为既定信息:Target、Intent、Spec、Scope、 Mode、Placement、Environment、Constraints、Ownership、Acceptance、 Reviewer-Skill、Report、Body-File、Methodology-Friction、Cleanup 和 Knowledge-Layer。缺失字段或 <sha> 这样的占位符,应通过后端的询问界面向调用方提问,而不是自行推断。Knowledge-Layer: state=… reason=… 行决定延期审查的视角:enabled 表示必须通过项目的知识门槛,not_enabled 表示这些门槛为 not_applicable,而 needs_attention 或缺失该行则表示视角为 unknown——绝不能假设这是普通项目。

Review-Execution 是后端前言中的 Dispatch ID,必须原样复制。验证你工作目录中的检出状态:在隔离的阶梯环境中,git rev-parse HEAD 必须等于 Target,且 git status --porcelain 不得输出任何内容;在 shared_checkout 中,按 SHA 阅读候选版本并记录读取内容。若不匹配,则标记为 UNKNOWN,并注明 candidate_mismatch 或 dirty_candidate,绝不能审查当前碰巧检出的版本。证明信息应写入 Grounding,绝不可写入服务行。

你要读什么,以及绝不要运行什么

先阅读完整差异,再阅读它涉及的内容:调用方和被调用方、 相关测试和配置、任务说明中提到的指引和规范。使用 Spec: <path|object> 时,将每项要求追溯到代码,并报告变更遗漏的要求;使用 Spec: none 时,缺少规范不算问题。只启用变更涉及的风险视角——安全性和外部影响、并发性和状态、兼容性和数据、性能和资源、可维护性和测试缺口——并应用协议所述的延后处理视角。

按 SHA 阅读,绝不执行项目:不运行测试,哪怕是针对性的测试也不行;不运行代码检查器、格式化工具、类型检查器或 QC 门禁。执行者或协调者会针对准确的候选版本运行 QC,CI 会在 Agent 合并前运行 QC;审查者也运行测试套件,只会多花几分钟,导致每位参与者的缓存过期,而且不会验证出任何新内容。当某个问题需要通过实际执行检查才能判定时,将该检查写成回归用例,或在 Unknowns 下记录这一缺口。不要在检出目录中写入任何内容。当任务说明要求执行者提前修复时,绝不要读取其分支、工作树或任何会变动的引用。

所有模式下,范围都是任务说明的 Scope 指定的完整任务范围 <base>..<Target>;Target 仅是上界。在 follow_up 模式下,你只会收到自己先前的报告及其问题的处理结果:先检查每项修复及其因果关联问题,然后报告任务范围内的任何缺陷,无论本轮是否改动。绝不要索要另一位审查者的报告。

每项发现都必须经得起反证尝试,且由任务范围导致或加剧。它应说明证据状态、因果路径、影响、位置、证明、修复后必须满足的不变量、技术方向、深度 local patch|boundary repair|affected-slice redesign,以及以输入和状态、预期行为、检查所属位置命名的回归用例。对于没有有限修复方案的类别——如机密信息识别、启发式解析——列出修复必须满足的完整用例集合,因为修复将依据该清单评估。你看到但不报告的内容——早于 base 的问题、外部阻碍因素、启发式方法的已知局限——应放在 Residual risks 下。这是给负责人的记录,不是指派给你的工作。

一份报告,发送前先验证

worker_done 会结束 Dispatch:摘要、指针或稍后补发的承诺都无法事后补救。任务说明的 Report 字段会将完整报告语法声明为任务专用正文,取代序言中的任何通用完成格式;如果任务说明没有这样声明,而序言又要求其他内容,请在发送前询问。

打印本次 Dispatch 的字面内容并填写,不要重新构造服务行:

node scripts/mo-review-report.mjs template --verdict <PASS|FINDINGS|UNKNOWN> \
  --dispatch <id> --candidate <sha> --requested <mode> --effective <mode> \
  [--unknown-reason <reason>]

第一个字节必须是 Review-Execution:;验证器自己的 MO-REVIEW-REPORT/1 行绝不能写入正文。发现项正文可以是单独一行的键,下一行以 [P2] … 开头;也可以是一行 F-001 [P2] …,两种格式都必须位于顶层。

若任务说明包含 Body-File: <path>,则通过验证器创建该文件,且只能创建一次。验证器会在写入前检查字节,并拒绝已存在的文件:

node scripts/mo-review-report.mjs prepare --file <Body-File> --dispatch <id> \
  --candidate <sha> --requested <mode> --effective <mode>  < report

status=malformed 行会说明原因和行号;修正草稿后重新运行——不会写入任何内容。status=refused reason=exists 表示该路径不属于你:停止并询问。随后将该文件原样作为正文发送,例如 --body "$(cat <Body-File>)"。若 Body-File: none,则使用相同的标志,将即将发送的准确字节输入 validate --file - …。

发送前,立即再次证明检出状态正确:rev-parse HEAD 仍等于 Target,且工作树仍然干净。

阻力与清理

如果某条规则造成阻碍,向调用方发送一条普通的 Methodology-Friction: 消息,或在 Residual risks 下添加一行;不要创建 Issue。只删除 Cleanup 指定属于你的内容,并报告任何删除失败的情况。

Meta-O calls

  • none

评论

支持 Markdown