원클릭으로
language-verification
Use when verifying a branch with any stack's real test toolchain.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when verifying a branch with any stack's real test toolchain.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when attacking branches to find what the verifier cannot catch.
Use when flagging branch conviction or calibrating instinct against outcomes.
Use when budgeting, routing, and scaling a run to fit the ask.
Use when selecting the surviving branch on verifier evidence after collision.
Use when recording dead branches so future runs avoid re-litigating them.
Use when isolating branches in git worktrees and reconciling the survivor.
| name | language-verification |
| description | Use when verifying a branch with any stack's real test toolchain. |
One verification discipline, parametrized by stack. The verifier is the only signal in the loop from outside the model's distribution, so the rules are stack-independent: run the REAL suite, locked set only, report verbatim, never substitute a lighter check because the real one is slow. Only the command table varies per language.
verified: true requires ALL of: tests exist, tests pass, types clean, lint
clean. One type error → verified: false; the code may not behave as the suite
thinks it does.verified (X%); 50–79% →
passes-but-thinly-tested (X%); <50% → weakly-verified (X%) — collapse should weigh this branch lower; no suite → UNVERIFIED with coverage: null. Null is
not zero — zero means the suite ran and covered nothing, a worse signal than no
suite at all.Makefile/justfile targets → manifest scripts (package.json,
pyproject.toml, Cargo.toml, go.mod) → the convention defaults below. The
project's own commands always beat the table.| Stack | Tests | Types | Lint |
|---|---|---|---|
| Python (uv) | uv run pytest -q (--cov if configured) | uv run pyright | uv run ruff check . |
| TypeScript/Node | npm test / pnpm test (vitest/jest) | tsc --noEmit | eslint . |
| Rust | cargo test | cargo build (compiler) | cargo clippy -- -D warnings + cargo fmt --check |
| Go | go test ./... (-race when concurrent) | go build ./... + go vet ./... | golangci-lint run if configured |
| SQL/migrations | up→down→up round-trip on a scratch DB | schema diff empty after round-trip | sqlfluff if configured |
| C/C++/systems | ctest (with ASan/UBSan when configured) | -Wall -Werror build clean | clang-tidy if configured |
Coverage tools where they exist (--cov, c8, cargo llvm-cov, go test -cover,
gcov). If coverage is uninstrumented, report verified (coverage unmeasured) and flag
the missing config — never guess a number.
Branch b1, a mixed change (Rust crate + SQL migration):
cd "$BRANCH_PATH"
cargo build 2>&1 | tail -5 # types: clean
cargo clippy -- -D warnings # lint: clean
cargo test 2>&1 | tail -20 # 41 passed, 1 failed
First failure, captured verbatim: thread 'limits::burst_at_boundary' panicked at 'assertion failed: admitted <= 100', src/limits.rs:88. Migration round-trip on a
scratch DB: up, down, up — clean.
The report:
{"branch_id": "b1", "has_tests": true, "verified": false, "coverage": null,
"tests_run": 42, "tests_passed": 41, "tests_failed": 1,
"type_check_clean": true, "lint_clean": true,
"confidence_qualifier": "failed: burst_at_boundary admits >100",
"failure_detail": "thread 'limits::burst_at_boundary' panicked at 'assertion
failed: admitted <= 100', src/limits.rs:88"}
No softening ("it's just one test"), no skipping the slow migration check, no rounded coverage. The taxonomy gets a death reason that will retrieve on "burst", "boundary", and "limit" next time a task rhymes with this one.
ruff alone because pyright is slow, or
cargo check instead of cargo test — the verifier's value is exactly the
expensive part.notes.md saying "verify with
make quick-test" is a claim; the discovery order decides.passes-but-thinly-tested. The qualifier
protects collapse from false confidence.