verification-before-completion · mvschwarz — скилл для Claude Code
Скилл запрещает агенту объявлять задачу закрытой без свежих доказательств. Он требует запускать тесты и сборку перед коммитами или созданием пул-реквестов.
npx skills add mvschwarz/openrig --skill verification-before-completion -a claude-codeЧто делает verification-before-completion
Правило отсекает фразы вроде «должно работать» и запрещает верить отчётам субагентов на слово. Перед созданием коммита или закрытием задачи ИИ обязан запустить проверки и разобрать их фактический вывод. Старый прогон не в счёт. Если файлы изменились, нужен свежий отчёт с кодом возврата 0 или полным списком пройденных тестов.
Инструкция заставляет смотреть на содержание ответа, а не только на статус команды. Проверка синтаксиса доказывает лишь читаемость кода парсером, но не запуск в рантайме. Для регрессионных тестов скилл требует цикл Red-Green: убедиться в падении теста без фикса, а затем проверить успех после его возврата.
Какие задачи решает
- остановить преждевременные заявления агента о починке бага
- проверить код возврата сборки перед отправкой коммита
- подтвердить работу регрессионных тестов через цикл Red-Green
- проверить результаты работы субагентов вместо доверия их отчётам
Примеры запросов агенту
- Почини баг с таймаутом сессии и подтверди исправление тестами перед коммитом
- Обнови метод расчёта скидки и проверь, что проект собирается без ошибок
- Проверь пул-реквест перед отправкой в репозиторий
Как установить verification-before-completion
1Через Skills CLI (Vercel)
npx skills add mvschwarz/openrig --skill verification-before-completion -a claude-code2Вручную: положить файлы
~/.claude/skills/verification-before-completion/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/verification-before-completion/
1Через Skills CLI (Vercel)
npx skills add mvschwarz/openrig --skill verification-before-completion -a codex2Вручную: положить файлы
.agents/skills/verification-before-completion/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add mvschwarz/openrig --skill verification-before-completion -a cursor2Вручную: положить файлы
.cursor/skills/verification-before-completion/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install mvschwarz/openrig verification-before-completion2Вручную: положить файлы
.github/skills/verification-before-completion/SKILL.md1Через Skills CLI (Vercel)
npx skills add mvschwarz/openrig --skill verification-before-completion -a gemini-cli2Командой платформы
gemini skills install https://github.com/mvschwarz/openrig --path skills/_canonical/process/verification-before-completionВручную: положить файлы
.devin/skills/verification-before-completion/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add mvschwarz/openrig --skill verification-before-completion -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о verification-before-completion
Как установить verification-before-completion в Claude Code?
Выполните команду npx skills add mvschwarz/openrig --skill verification-before-completion -a claude-code. Конфигурация запишется в файл ~/.claude/skills/verification-before-completion/SKILL.md.
Что делает скилл verification-before-completion?
Он задаёт строгое правило: агент не имеет права называть задачу выполненной без прямых доказательств. Ассистент обязан запускать линтеры, сборку и тесты вместо предположений.
Почему скилл запрещает верить только коду возврата 0?
Команда может завершиться с кодом 0, но вывести текст о пропуске тестов или отсутствии совпадений. Правило требует сверять фактическое содержание вывода с ожидаемым результатом.
Исходный текст
SKILL.md · Apache-2.0
---
name: verification-before-completion
description: Use when about to claim work is complete, fixed, or passing, or before committing or creating PRs
metadata:
openrig:
vendored_from: "Obra Superpowers (https://github.com/obra/superpowers)"
vendoring_pattern: modify-the-file
last_upstream_check: "2026-05-13 (diff against plugin source pulled 2026-05-11 = identical)"
---
# Verification Before Completion
## Overview
Claiming work is complete without verification is dishonesty, not efficiency.
**Core principle:** Evidence before claims.
**This rule serves shipping — it is not a ritual that outranks it.** It governs one thing: *claims that a verifiable result holds* ("tests pass", "build succeeds", "bug fixed") — have evidence for the result before you assert it, and scale the check to the stakes (a one-line copy tweak is not a test-suite ceremony). Don't dodge it with synonyms; equally, don't inflate it into a tax on the word "done" or a reason to keep re-proving instead of shipping the working thing.
## The Rule
Before claiming a verifiable result, inspect evidence that supports that result for the candidate and environment you name. Use an existing result while its relevant inputs and assumptions still hold; rerun the affected check when they change or are uncertain. State whether you ran the check or inspected another owner's evidence. A source read, syntax check or partial test supports only its stated scope. Ordinary progress reports, delegation and moving to another task do not require a new test run. Required project checks still apply.
A completed run is not automatically current, and unchanged source does not establish unchanged live state.
For a claim about performance, also read [references/performance-claims.md](references/performance-claims.md).
## Common Failures
| Claim | Requires | Not Sufficient |
|-------|----------|----------------|
| Tests pass | Test output with 0 failures, for the candidate you name | A run on an older candidate, "should pass" |
| Linter clean | Linter output: 0 errors | Partial check, extrapolation |
| Build succeeds | Build command: exit 0 | Linter passing, logs look good |
| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
| Regression test works | Red-green cycle verified | Test passes once |
| Delivered outcome | Relevant artifact and observed result | An agent's success message or a diff alone |
| Requirements met | Promised outcomes checked against applicable evidence, gaps named | Tests passing |
## Red Flags - STOP
- Using "should", "probably", "seems to"
- Claiming a specific result is *proven* ("tests pass", "it's fixed", "build's green") without evidence that applies to it — enthusiasm itself is fine; an unverified **result claim** is the flag
- About to commit/push/PR without verification
- Trusting agent success reports
- Claiming more than a partial check covers
- Thinking "just this once"
- Tired and wanting work over
## Key Patterns
**Tests:**
```
✅ [Run test command, or read the named candidate's CI output] [See: 34/34 pass] "All tests pass"
❌ "Should pass now" / "Looks correct"
```
**Regression tests (TDD Red-Green):**
```
✅ Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)
❌ "I've written a regression test" (without red-green verification)
```
**Build:**
```
✅ [Run build] [See: exit 0] "Build passes"
❌ "Linter passed" (linter doesn't check compilation)
```
**Requirements:**
```
✅ Check each promised outcome against applicable evidence → Report gaps or completion
❌ "Tests pass, phase complete"
```
**Agent delegation:**
```
✅ Agent reports success → Inspect the artifact and the evidence it names → Report what was checked and what wasn't
❌ Pass on the report alone
```
## When the check itself lies — content over shape
A passing check is necessary but not sufficient: a check can exit clean and still prove nothing. These are the named ways a green check lies — the failure siblings behind "evidence before claims." (Deeper treatment of *what* you verify against: `reference-first-verification`.)
- **Assert on CONTENT, never shape or count.** Output that *looks* like success — a non-zero count, a clean exit, no error text — can carry failure as its content. Before trusting a check, ask what its output looks like *when it fails*: if failure and success are indistinguishable at a glance, the check proves nothing. (`[1 lines]` and `No matches found` both read as "a match" to a line-count.)
- **Compare the returned value to the value you PASSED — never to a description of it.** A confident label (`evidenceRef NOW SET:` printed above the untouched original) is indistinguishable from a verification in a transcript. Diff the actual result against your actual input, not against a claim about it.
- **Find the untested axis.** Thorough coverage of ONE axis reads as thorough coverage overall. Ask what every one of your tests shares — a healthy manifest, a default option value, the happy path — and treat that shared assumption as the dimension you never tested.
- **A syntax check proves parseability and nothing else.** A clean `node --check` / lint / parse pass is the *covered* axis; boot and runtime are the untested one. Parseable ≠ sound.
- **A failure whose shape is a HANG reports nothing.** A bare `await` against a stated deadline that never re-checks cannot fail loudly. Race it against a timer so failure has a shape you can see.
- **A completeness inventory read through a truncating display is worthless.** When deciding *which occurrences to change*, count with `grep -c` / `grep -o` / full-line output — never `cut`, `head`, or a pager, which can hide a match *past* the cut. Distinguish *"I found N"* (a count) from *"I saw N"* (a display). Audit multiline prose **by paragraph, not by line** — a line filter both misses long-line matches and false-flags paragraphs whose companion text is on the next line. Then re-audit with a **different method** than the one that built the inventory — same-method re-checking reproduces the blind spot. (Empty/short output is a claim about your COMMAND until re-proven a second way.)
© mvschwarz · Apache-2.0 · mvschwarz/openrig
Похожие скиллы
Все скиллы по теме «Тесты и QA» →Сначала — verification-before-completion от других авторов.