# Verify

> Stage 4 of the canonical coding workflow — execute verification checks, write verify.json, and gate completion on real evidence. Failure auto-routes to fix-loop.

- Skill: `chainlesschain/verify-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add chainlesschain/verify-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/chainlesschain/verify-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: chainlesschain (https://skillmd.com/u/chainlesschain)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/chainlesschain/verify-2

---


# Verify Skill

Fourth step of the canonical coding workflow
(`$deep-interview → $ralplan → $ralph/$team → $verify → complete`).

`$verify` runs structured verification checks, aggregates the result,
and writes `verify.json`. The result is the **only** authorization to
transition a session to `complete`. A failing or partial result routes
the session to `fix-loop` (bounded retries) or `failed`.

## Usage

```
$verify
```

## Inputs (params)

- `sessionId` (string, optional) — workflow session id
- `checks` (Array<{id, command, timeout?}>, optional) — explicit checks
- `maxRetries` (number, optional, default 3) — fix-loop cap (Gate V4)
- `autoFixLoop` (boolean, optional, default true) — on failure, auto
  call `enterFixLoop` instead of just reporting
- `cwd` (string, optional) — working directory for commands; defaults
  to `projectRoot`

## Check sources (priority order)

1. `params.checks`
2. `tasks.json` — union of every task's `verifyCommands`
3. Default heuristics (package.json → `npm test`, Maven → `mvn test -q`,
   pytest → `python -m pytest -q`). Skipped cleanly if nothing detected.

## Output

Writes `.chainlesschain/sessions/<id>/verify.json` via
`SessionStateManager.writeVerify()` and transitions stage to `verify`.
If the aggregate status is `passed`, the caller may invoke `$complete`
(which enforces Gate V1/V3). If not, the handler enters fix-loop or
records failed.

## Gates

- Refuses if `plan.md` is missing.
- Refuses if `plan.md` is not approved.
- `verify.json` is the only authorization for `complete` (Gate V1/V3).
- Fix-loop respects `maxRetries` (Gate V4).

