{"slug":"eo-review","title":"eo-review","summary":"按需代码审查：风险信号命中或用户点名时，对已实施代码做 AC 逐条核对 + 代码质量审查，产简版 review.md（P0/P1/P2）。触发：review / 代码审查 / 再找双眼睛看看 / /eo-review。 NOT FOR: change 方案审查（/eo-change-review，代码还没写时用）；默认主路（无信号时不强制）。","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-02T16:13:07.382295Z","repo":{"url":"https://github.com/SimpleEve/eo-skills","stars":31,"forks":6,"license":"MIT","updatedAt":"2026-09-24T03:41:00Z"},"bodyHtml":"<hr>\n<h2>name: eo-review\ndescription: |\n按需代码审查：风险信号命中或用户点名时，对已实施代码做 AC 逐条核对 + 代码质量审查，产简版 review.md（P0/P1/P2）。触发：review / 代码审查 / 再找双眼睛看看 / /eo-review。\nNOT FOR: change 方案审查（/eo-change-review，代码还没写时用）；默认主路（无信号时不强制）。</h2>\n<h1>eo-review — 代码审查（按需闸门）</h1>\n<p>本 skill 是<strong>可选闸门</strong>。根据 change.md（验收清单 + TODO）对<strong>已实施的代码</strong>做独立审查，产出简版报告。</p>\n<blockquote>\n<p>与 /eo-change-review 的区别：本 skill 审<strong>代码</strong>（implement 之后）；change-review 审<strong>方案</strong>（implement 之前）。两者都是按需闸门，不是必经节点。</p>\n</blockquote>\n<h2>核心原则</h2>\n<ol>\n<li><strong>AC 是检查表</strong>：change.md §2 逐条核对实现覆盖</li>\n<li><strong>最佳实践审查</strong>：代码质量、命名、架构合理性</li>\n<li><strong>简版报告</strong>：结论 + P0/P1/P2 清单，输出到 <code>eo-doc/changes/&lt;change-id&gt;/review.md</code>；复审<strong>覆盖重写</strong>（历史由 git 兜）</li>\n<li><strong>通过即流转</strong>：审查通过（无未决 P0/P1）时把 change.md <code>status</code> 置 <code>reviewed</code>（可选状态，只有本 skill 写）</li>\n</ol>\n<h2>对抗立场</h2>\n<p><strong>默认这份实现有罪</strong>——审查的目标是推翻它，不是确认它：主动构造反例、对抗输入与边界组合去戳每条 AC 和关键实现路径。「没发现问题」不是结论，「试图推翻但失败」才是——报告须能列出试过的攻击面（构造过的对抗输入、核验过的前提、推演过的失败路径）；列不出攻击面的审查视为没做。</p>\n<h2>前置条件</h2>\n<ul>\n<li><strong>必须能找到 <code>.eo-project.json</code></strong>。同目录存在 <code>.eo-project.local.json</code> 时顶层字段覆盖合并（local 优先）。找不到 → 报错退出，提示运行 <code>/eo-project-init</code></li>\n<li><code>eo-doc/changes/&lt;change-id&gt;/change.md</code> 存在，<strong>相关代码已实现</strong>（TODO 至少部分勾选），status 为 <code>implementing</code> 或 <code>reviewed</code></li>\n<li>调用依据：§6 信号命中未豁免 / 用户显式点名。都没有 → 告知默认主路不需要本闸门，确认仍要跑再继续</li>\n</ul>\n<h3>前置拦截（硬性）</h3>\n<table>\n<thead>\n<tr>\n<th>信号</th>\n<th>正确路径</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>change.md <code>status: draft</code> / <code>confirmed</code> 且 TODO 全未勾选</td>\n<td>先 <code>/eo-implement</code>；审方案走 <code>/eo-change-review</code></td>\n</tr>\n<tr>\n<td>用户描述是「审查 change 方案」/「implement 之前再看看」</td>\n<td><code>/eo-change-review</code>（不是本 skill）</td>\n</tr>\n<tr>\n<td>用户描述是「实施后发现方案/架构不对」</td>\n<td>eo-change <strong>回炉子流程</strong>（不是本 skill）</td>\n</tr>\n</tbody>\n</table>\n<h2>工作流程</h2>\n<h3>第一步：阅读上下文</h3>\n<ol>\n<li><code>eo-doc/changes/&lt;change-id&gt;/change.md</code>：§1 意图与已钉决策、§2 AC、§5 TODO、§6 风险</li>\n<li>相关代码定位：<code>.codegraph/</code> 索引存在则 <code>codegraph explore</code> 优先召回；不存在则按目录收敛 + 源码直读</li>\n<li>本次交付的 diff（按 frontmatter <code>base_commit</code> 起算，或 <code>[&lt;change-id&gt;]</code> 前缀提交）</li>\n</ol>\n<h3>第二步：代码审查</h3>\n<ul>\n<li><strong>维度 1 · 验收覆盖</strong>：§2 每条 AC 逐条核对实现与证据；<strong>反向核对</strong>：diff 中映射不到任何 AC/TODO 的行为新增（镀金）→ P1 建议裁剪或转 backlog</li>\n<li><strong>维度 2 · 逻辑正确性</strong>：核心逻辑、异常处理、边界条件；竞态/死锁/资源泄漏/生命周期</li>\n<li><strong>维度 3 · 架构合规</strong>：分层、模块边界、依赖方向；职责单一、无不合理耦合</li>\n<li><strong>维度 4 · 代码规范</strong>：命名一致、类型严格、重复代码；<strong>注释纪律</strong>（项目 <code>eo-doc/agent-handbook/comments.md</code>，未启用时以行内标准：溯源标注与叙事辩护）只作观察——发现流程溯源标注或叙事辩护注释 → P2，不阻塞</li>\n<li><strong>维度 5 · 安全与性能</strong>：注入/越权/敏感信息暴露；明显性能瓶颈</li>\n<li><strong>维度 6 · 设计一致性（条件）</strong>：涉及 UI 且仓库根有 <code>DESIGN.md</code> → 字体/色值/间距/圆角符合性；色板外颜色、刻度外魔法数标 P1</li>\n</ul>\n<p>finding 标根因：业务源码归 <code>implementation</code>；测试本身的问题归 <code>test-asset</code>；验收口径或方案本身有误归 <code>requirement</code>。</p>\n<h3>第三步：报告与速报</h3>\n<ol>\n<li>按 <a href=\"references/review-template.md\">references/review-template.md</a> 写入 <code>review.md</code>（覆盖式：复审先核销上一版未决清单——fixed 按修复 commit 复验 → verified / 回 open，再加上新发现；用户当场裁决不修的标 <code>waived</code> 附原话，不阻塞）</li>\n<li><strong>status 流转（双向都归本 skill）</strong>：无未决 P0/P1 → change.md <code>status</code> 置 <code>reviewed</code>；有 P0/P1 且当前已是 <code>reviewed</code>（复审翻车）→ 当场置回 <code>implementing</code></li>\n<li><strong>对话速报（硬性）</strong>：</li>\n</ol>\n<pre><code>结论：通过 / 不通过（P0 x 条）/ 有保留通过（P1 x 条）［基线 &lt;short-sha&gt;］\nP0（阻塞）：\n1. &lt;一句话&gt; — &lt;file:line&gt;\nP1（应修）：\n2. &lt;一句话&gt; — &lt;file:line&gt;\n下一步：&lt;implementation finding → /eo-fix 循环内分支；requirement → /eo-change 回炉或精化；通过 → /eo-archive&gt;\n\uD83D\uDCCB &lt;通过且存在 acceptance.md 时：可以人工验收了：&lt;路径&gt;（说「带我验收」可逐项走查）；否则省略此行&gt;\n（详细报告见 &lt;review.md 路径&gt;）\n</code></pre>\n<h2>关键约束</h2>\n<ul>\n<li><strong>客观公正</strong>：基于 AC 和最佳实践，不做主观偏好评判</li>\n<li><strong>定位精确</strong>：必须给出文件路径和行号</li>\n<li><strong>不直接改交付物</strong>：只产报告；修复归 <code>/eo-fix</code> 循环内分支，需求口径归 <code>/eo-change</code></li>\n<li><strong>分级清晰</strong>：P0 仅限阻塞性问题</li>\n<li><strong>status 自动流转（双向）</strong>：通过置 <code>reviewed</code>；复审翻车当场回退 <code>implementing</code></li>\n</ul>\n","files":[{"path":"references/review-template.md","sizeBytes":1377,"isText":true},{"path":"SKILL.md","sizeBytes":5567,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-02T16:13:36.788474Z","sha256":"1B166FDD70B2C50A6787FEAF0EE17F59681A2628E850DFF51E6431A3B3E67198","sizeBytes":4326},"review":null,"source":{"repositoryUrl":"https://github.com/SimpleEve/eo-skills","path":"eo-review","license":"MIT","commit":"a5062887a6abcb255b4745f871208be292484bfa","subtreeSha":"8F10C48DD947264974158AECD1381EBB9DB1EF6ABB6E83335DB884A38C15E16C","lastSyncedAt":"2026-09-27T19:48:06.599057Z"},"reviewedAt":"2026-09-02T16:15:43.414772Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/SimpleEve/eo-skills/tree/main/eo-review"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install simpleeve-eo-skills@llmmart"},{"target":"git","command":"git clone https://github.com/SimpleEve/eo-skills.git"}]}