{"slug":"verification-before-completion-4","title":"verification-before-completion","summary":"在宣称工作完成、已修复或测试通过之前使用，在提交或创建 PR 之前——必须运行验证命令并确认输出后才能声称成功；始终用证据支撑断言","platform":"Claude","tags":["verification"],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-07T18:38:27.20167Z","repo":{"url":"https://github.com/jnMetaCode/superpowers-zh","stars":8205,"forks":767,"license":"MIT","updatedAt":"2026-09-17T09:11:21Z"},"bodyHtml":"<hr>\n<h2>name: verification-before-completion\ndescription: 在宣称工作完成、已修复或测试通过之前使用，在提交或创建 PR 之前——必须运行验证命令并确认输出后才能声称成功；始终用证据支撑断言\nversion: \"1.0.0\"\nlicense: MIT\nmetadata:\nhermes:\ntags: [quality, verification]</h2>\n<h1>完成前验证</h1>\n<h2>概述</h2>\n<p><strong>核心原则：</strong> 始终用证据支撑结论。</p>\n<p><strong>对这条规则敷衍了事，就等于违背了它的精神。</strong></p>\n<h2>铁律</h2>\n<pre><code>没有新鲜的验证证据，不许宣称完成\n</code></pre>\n<p>如果你在这条消息中没有运行验证命令，就不能声称测试通过。</p>\n<h2>门控函数</h2>\n<pre><code>在宣称任何状态或表达满意之前：\n\n1. 确定：什么命令能证明这个结论？\n2. 运行：执行完整命令（重新运行，完整执行）\n3. 阅读：完整输出，检查退出码，统计失败数\n4. 验证：输出是否支持这个结论？\n   - 如果否：用证据说明实际状态\n   - 如果是：带证据陈述结论\n5. 只有这时：才能做出结论\n\n跳过任何一步 = 说谎，不是验证\n</code></pre>\n<h2>常见失败模式</h2>\n<table>\n<thead>\n<tr>\n<th>结论</th>\n<th>需要</th>\n<th>不够格</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>测试通过</td>\n<td>测试命令输出：0 failures</td>\n<td>之前的运行结果、\"应该会通过\"</td>\n</tr>\n<tr>\n<td>Linter 无报错</td>\n<td>Linter 输出：0 errors</td>\n<td>部分检查、推断</td>\n</tr>\n<tr>\n<td>构建成功</td>\n<td>构建命令：exit 0</td>\n<td>linter 通过、日志看起来没问题</td>\n</tr>\n<tr>\n<td>Bug 已修复</td>\n<td>测试原始症状：通过</td>\n<td>代码改了，假设已修复</td>\n</tr>\n<tr>\n<td>回归测试有效</td>\n<td>红-绿循环已验证</td>\n<td>测试只通过了一次</td>\n</tr>\n<tr>\n<td>代理已完成</td>\n<td>VCS diff 显示变更</td>\n<td>代理报告\"成功\"</td>\n</tr>\n<tr>\n<td>需求已满足</td>\n<td>逐项核对清单</td>\n<td>测试通过</td>\n</tr>\n</tbody>\n</table>\n<h2>红线——停下来</h2>\n<ul>\n<li>使用\"应该\"、\"大概\"、\"似乎\"</li>\n<li>验证前就表达满意（\"太好了！\"、\"完美！\"、\"搞定！\"等）</li>\n<li>即将提交/推送/创建 PR 却没有验证</li>\n<li>信任代理的成功报告</li>\n<li>依赖部分验证</li>\n<li>想着\"就这一次\"</li>\n<li>累了想赶紧收工</li>\n<li><strong>任何暗示成功但实际未运行验证的措辞</strong></li>\n</ul>\n<h2>防止合理化</h2>\n<table>\n<thead>\n<tr>\n<th>借口</th>\n<th>现实</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>\"应该能行了\"</td>\n<td>运行验证命令</td>\n</tr>\n<tr>\n<td>\"我有信心\"</td>\n<td>信心 ≠ 证据</td>\n</tr>\n<tr>\n<td>\"就这一次\"</td>\n<td>没有例外</td>\n</tr>\n<tr>\n<td>\"Linter 通过了\"</td>\n<td>Linter ≠ 编译器</td>\n</tr>\n<tr>\n<td>\"代理说成功了\"</td>\n<td>独立验证</td>\n</tr>\n<tr>\n<td>\"我累了\"</td>\n<td>疲劳 ≠ 借口</td>\n</tr>\n<tr>\n<td>\"部分检查就够了\"</td>\n<td>部分检查什么也证明不了</td>\n</tr>\n<tr>\n<td>\"换个说法这条规则就不适用了\"</td>\n<td>精神大于字面</td>\n</tr>\n</tbody>\n</table>\n<h2>关键模式</h2>\n<p><strong>测试：</strong></p>\n<pre><code>✅ [运行测试命令] [看到：34/34 pass] \"全部测试通过\"\n❌ \"应该能通过了\" / \"看起来对了\"\n</code></pre>\n<p><strong>回归测试（TDD 红-绿）：</strong></p>\n<pre><code>✅ 编写 → 运行（通过）→ 回退修复 → 运行（必须失败）→ 恢复 → 运行（通过）\n❌ \"我写了回归测试\"（没有经过红-绿验证）\n</code></pre>\n<p><strong>构建：</strong></p>\n<pre><code>✅ [运行构建] [看到：exit 0] \"构建通过\"\n❌ \"Linter 通过了\"（linter 不检查编译）\n</code></pre>\n<p><strong>需求：</strong></p>\n<pre><code>✅ 重读计划 → 创建核对清单 → 逐项验证 → 报告缺口或完成\n❌ \"测试通过了，阶段完成\"\n</code></pre>\n<p><strong>代理委派：</strong></p>\n<pre><code>✅ 代理报告成功 → 检查 VCS diff → 验证变更 → 报告实际状态\n❌ 信任代理报告\n</code></pre>\n<h2>何时使用</h2>\n<p><strong>以下情况之前必须使用：</strong></p>\n<ul>\n<li>任何形式的成功/完成声明</li>\n<li>任何满意的表达</li>\n<li>任何关于工作状态的正面陈述</li>\n<li>提交、创建 PR、标记任务完成</li>\n<li>进入下一个任务</li>\n<li>委派给代理</li>\n</ul>\n<p><strong>本规则适用于：</strong></p>\n<ul>\n<li>准确措辞</li>\n<li>同义词和换一种说法</li>\n<li>暗示成功</li>\n<li>任何传达完成/正确性的沟通</li>\n</ul>\n","files":[{"path":"SKILL.md","sizeBytes":3624,"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-07T18:39:01.085901Z","sha256":"5731264F5B54FDC28557D41F6A5D7CDD24079040669AAA476D1BFF16A2030419","sizeBytes":2070},"review":null,"source":{"repositoryUrl":"https://github.com/jnMetaCode/superpowers-zh","path":"skills/verification-before-completion","license":"MIT","commit":"78cb4f68d691d516eb7216897053ea574212cdf6","subtreeSha":"CC74F565CB12A766FDD25CD8E07980C728587C97D027CB356E38AA9D9954E989","lastSyncedAt":"2026-09-25T06:49:13.086723Z"},"reviewedAt":"2026-09-07T18:40:02.801852Z","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/jnMetaCode/superpowers-zh/tree/main/skills/verification-before-completion"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install jnmetacode-superpowers-zh@llmmart"},{"target":"git","command":"git clone https://github.com/jnMetaCode/superpowers-zh.git"}]}