Block completion claims until verification evidence has been produced in the current message. Use before marking a task/slice/milestone complete, before creatin
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-verify-before-complete-850eda864ee9 ,按照其中的说明把「verify-before-complete」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
Invocation points:
[ ] to [x] via a gsd_* tool<core_principle> EVIDENCE BEFORE CLAIMS, ALWAYS. "I ran it earlier" is not evidence. A log from three tool calls ago is not evidence if code has changed since. The verification must have happened after the last code change, in this message, with fresh output.
VIOLATING THE LETTER IS VIOLATING THE SPIRIT. If the principle feels inconvenient, that is the signal it is load-bearing. Find the verification command. Run it. Read the output. </core_principle>
What are you about to claim? Name it precisely:
Match claim → command:
| Claim | Verification |
|---|---|
| Tests pass | The specific test command the project uses (npm test, cargo test, pytest, etc.) — scoped to changed code if large suite. |
| Build works | The project's build command, for real — not tsc --noEmit if the project needs a bundle. |
| Lint clean | lsp diagnostics on edited files, plus the project's linter if CI runs one. |
| Bug fixed | The reproduction steps from the bug report or test, freshly run. |
| UI works | Browser verification via browser_snapshot_refs + browser_assert in a running app — not "it looks right in the diff". |
| Slice complete | Every acceptance criterion in S##-PLAN.md, re-checked against live behavior. |
If no verification command exists, the task has not produced a falsifiable claim — it is not complete. Write the verification first (see the tdd or test skill).
Use async_bash for one-shot commands, bg_shell for long-running servers/watchers. Wait for it to exit. Read the output. Not skim — read.
If output indicates failure: you do not have a completion claim. Loop back: inspect the error, fix, re-run until it passes or a real blocker requires user input. Do not partially claim ("tests mostly pass") — either pass or report failure honestly.
If output indicates success: quote the relevant line in your reply. "42 tests passing" or "Exit code 0" or "LSP reports 0 errors on the 3 edited files."
If you ran the verification early in this message, then made further code changes, the output is stale. Re-run. Cancel in-flight async_bash jobs that predated the edit (see system prompt: "stale job hygiene").
Only now, after fresh output, can you:
gsd_*Include the evidence in the claim: "Slice complete — npm test passed (84/84), npm run build exit 0, acceptance criterion 3 verified against live UI at /dashboard."
<anti_patterns>
tsc --noEmit as the build check when the project bundles — test what the user experiences.</anti_patterns>
<success_criteria>
npm test passed with 84/84 tests."</success_criteria>