Skip to content
Back to skills

Verify

ASecurity

Contract document for the binding test verdict file at .claude/state/last_test_result. Format spec for callers (integrate, simplify, chore, the verify-tick worker) that inline the four mechanical operations. Not Skill-tool-invocable.

  • 14 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 4, 2026
ai-agentsrustshellbash

Security analysis

A100/100

Scanned October 4, 2026

npx -y skills add friedbotstudio/baseline --skill verify --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Verify?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Verify
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/friedbotstudio-verify/badge)](https://www.skillsdirectory.com/skills/friedbotstudio-verify)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: verify
owner: baseline
description: Contract document for the binding test verdict file at .claude/state/last_test_result. Format spec for callers (integrate, simplify, chore, the verify-tick worker) that inline the four mechanical operations. Not Skill-tool-invocable.
disable-model-invocation: true
---

# verify — contract document for the binding test verdict

This skill is not invocable. Its body is the canonical reference for the `.claude/state/last_test_result` statefile that the `verify_pass_guard` hook reads as the single source of truth.

Callers that previously did `Skill(verify)` (integrate, simplify, chore, the `verify-tick` worker invoked by harness after a `/tdd` decomposition) now inline the four mechanical operations described below. There is one statefile format; every caller writes the same bytes.

# Statefile format (`.claude/state/last_test_result`)

```
<PASS|FAIL>
<ISO-8601 UTC timestamp, e.g. 2026-05-12T18:30:00Z>
<exact command run, verbatim>
<exit code>
```

Exactly four lines plus a single trailing newline. No preamble, no blank lines, no JSON. The `verify_pass_guard` hook reads line 1 verbatim — anything that breaks the byte format breaks the gate.

# The four mechanical operations a caller performs

1. **Read the command.** Open `.claude/project.json`; extract `test.cmd`. If absent or empty, the verdict is `FAIL` with reason "project.json not configured — run /init-project"; skip step 2 and proceed to step 3 with exit code 1 and an empty command string.
2. **Run the command.** Execute via Bash from the project root. Capture stdout, stderr, and exit code. Do not retry. Do not pass `{file}` placeholders — verify always runs the full suite.
3. **Format the four lines.** Apply the verdict rules below to decide PASS vs FAIL. Build the four-line string in memory.
4. **Atomically write the statefile.** Write the four lines plus trailing newline to `.claude/state/last_test_result`. Prefer write-then-rename for atomicity when the writer needs guarantees; a direct overwrite is acceptable for non-concurrent callers (the four current callers are sequential).

# Verdict rules

- `PASS` iff **all** of: exit code 0 **and** at least one test executed **and** no test reported as failed/errored.
- `FAIL` otherwise. Specifically: non-zero exit, "0 tests collected", a panic/crash, a timeout (treat as FAIL), a killed process (FAIL), or output that contradicts the exit code (ambiguity is FAIL).
- If the same FAIL has stamped three or more consecutive times for the same slug, surface a recommendation that the caller invoke the `rca` skill. (The caller is responsible for noticing repeated failures; verify writes only the current verdict.)

# Inline report the caller emits

Callers emit a human-readable report alongside the statefile write (sent to stdout / surface, not to the statefile):

```
# Verify — <slug or task id>

## Verdict: PASS | FAIL

## Command
`<exact command>`

## Exit code
<N>

## Output tail (last 80 lines)
```
<raw>
```

## Reason (only if FAIL)
<one paragraph>
```

The report's role is human review; the statefile's role is the binding gate.

# verify_pass_guard interaction

`verify_pass_guard.sh` (PreToolUse on Write/Edit/MultiEdit) reads line 1 of `.claude/state/last_test_result`. When a caller attempts to write a PASS line to a verification artifact and line 1 of the statefile says FAIL, the guard blocks the write. Inlined callers MUST preserve the four-line byte format so the guard's parser keeps working.

# Constraints on inlined callers

- **Do not modify source or tests.** Inlined verify reads; it never writes outside `.claude/state/last_test_result`.
- **Do not retry the command.** One run, one verdict.
- **State-write discipline (binding — see `.claude/CONSTITUTION.md` §2 "State-write discipline").** `last_test_result` is **Tier 2 workflow state** — not a consent path. Prefer the **Write tool** for the four-line statefile (write-then-rename when atomicity is needed); if Bash is used, only a shell **builtin** redirect — never `tee` or `sed -i`. The byte format is what `verify_pass_guard` parses; the tool that writes it is the caller's choice within this rule.
- **Do not synthesize, summarize, or "clean up" test output.** Capture raw output for the report; the statefile records the verdict only.
- **A timeout is FAIL. A killed process is FAIL.**
- **The truth lives in the statefile.** The inline report is for the human; the hook trusts the four-line file.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.