Verifying Before Done

作者 riekelte67b7af9ac74無授權條款5 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫3 週前更新

Use when about to say "done", "fixed", "passing", or "shipped", or when reporting the outcome of any change. Encodes verification as the definition of done: drive the change at its surface, run the verify command, report faithfully, distrust green suites, own failing gates. Use before every completion claim, even when the change was small and obviously correct, which is when this is skipped.

僅含說明AI & Agents
AI 產生的概覽

將驗證視為完成的定義:在實際介面驅動變更、執行驗證指令,並忠實回報結果。

功能
此技能為即將宣稱工作已完成、已修正、已通過或已交付的 AI 代理提供一套紀律指南。它規定的步驟包括:在執行環境的介面上驅動被改動的程式碼、執行驗證指令並引用其輸出、忠實回報失敗與略過的步驟、不輕信全綠的測試套件、區分已實作、已部署與已外部驗證,以及在宣布完成前檢視差異。它產出的是驗證習慣與回報標準,而非任何檔案或成品。
適用情境
在每次宣稱完成之前使用,包括看似顯然正確的小改動。它適用於回報任何變更結果時、測試套件全綠但變更可能並未真正生效時,或變更涉及關鍵或不可逆路徑而需要獨立驗證時。
執行需求
僅為指示性內容;不需要指令碼、套件或憑證。它引用 principal-engineering 與 operating-safely 技能作為背景。

Verifying before done

REQUIRED BACKGROUND: the principal-engineering skill.

Overview

Done means verified, and verified names what was checked. Careful work is not a check.

The discipline

  1. Drive the change at its surface, capture what it did. Run the smallest path that executes the changed code in the running system; "Verify at the surface" below expands this.
  2. Run the verify command, paste its output. The verify command comes from the pre-change checkpoint; it proves the gates hold, and its actual output backs that part of the claim. Redact secret values from output before quoting it (operating-safely owns secrets hygiene). "Verified" is always "PASS (checked X and Y)", never a bare checkmark.
  3. Report faithfully, both directions. Report failing tests with their output, name skipped steps as skipped, and state verified work plainly without hedging. Underclaiming verified work wastes the reader's re-verification exactly like overclaiming wastes their trust.
  4. Distrust green. A green suite over code that cannot work means the suite does not run, does not cover, or cannot fail. When a result seems too clean for the change's size, confirm the test executed (run it alone, watch it appear) and confirm it can fail (break the code, watch it go red, unbreak it). A test that never ran and a gate that never fires produce confident wrong "done"s.
  5. Distinguish the tiers. Implemented (in the repo) is not deployed (live) is not externally verified (checked in the external system). Never claim a later tier from evidence of an earlier one.
  6. Lookback before declaring complete. Sweep the diff: no unrelated changes, no planning residue in code or comments, docs updated in the same change, every acceptance criterion actually met rather than approximately met.
  7. Independent verification for top-tier changes. The author of a change is the worst-placed person to verify it. For the project's declared critical paths (money, sales, stored data, safety, whatever the system must never get wrong) and for irreversible migrations, the verifier is someone or something that did not write the code. When no independent verifier is reachable in time, use the nearest substitute and name it as the weaker form it is; downgrading the check silently is the failure, downgrading it visibly is a decision.

Verify at the surface

The gates (the verify command, the suite, the build) prove the repository holds; the change is proven where its caller meets it: the command line that runs it, the endpoint that serves it, the screen that renders it, or the consumer that imports it.

  • Drive the smallest path that executes the changed code, in the running system. Run a changed flag with the flag set, send a changed handler its request, trigger the error of a changed error path. An internal function is not a surface: its caller ends at a surface, so observe there.
  • Read tests as the author's evidence, not the verification. A test says what to drive; the gates re-run it.
  • Probe beside the change. The happy path confirms the claim; the neighbors test it: the empty value, the repeated call, the conflicting option, the adjacent error the change did not touch. One probe past the claim is the minimum; a probe that holds is still reported, because it says what was covered.
  • Quote what the system produced. The response body, the terminal output, and the rendered screen back the claim. Redact before quoting: tokens, connection strings, and auth headers. Treat ambiguous output as a failure with the redacted raw capture attached, never interpret it into a pass.
  • Say "no runtime surface" when none exists. Docs, comments, and type declarations that produce no behavior get that as the verification, never a substitute gate run to fill the space.
  • Never drive destructive paths live. Where the changed code deletes or writes beyond the workspace and no safe target exists, verify around it and name the unexercised path (operating-safely owns the guards).

Failing gates you own

Attribute the origin first, then fix the test regardless of whose it is. "Pre-existing" is a footnote in the report, never an excuse in the gate. The one exception is procedural: a pre-existing red on the main branch that blocks an unrelated green fix gets surfaced with an offer to merge the green fix anyway, decided by the operator.

Common mistakes

  • Declaring done from the diff looking right. The diff is the hypothesis; the run at the surface is the experiment.
  • Running the whole suite instead of the targeted verify command, and reading "no new failures" as "my change works". A suite that never covered the path cannot vouch for it.
  • Re-running the gates and calling it verification. Green gates plus an undriven surface claim "CI works", not "the change works".
  • Verifying the happy path of a change whose risk is in the failure path.
  • "Tests pass locally" as the terminal claim for a change whose risk is environmental (config, migrations, permissions, prod data shape).
  • Fixing the test instead of the code when red is inconvenient. The test was the messenger.

來源與署名

來源:riekelt/principal-engineer位於plugins/principal-engineer/skills/verifying-before-done提交e67b7af

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架