Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Set a repo up to prove engineering-task work actually works before it ships. Investigates the repo, ensures a one-command dev stack (`dev-local`) exists, asks whether verification runs locally or in a sandbox (crabbox), confirms/installs the driver (the `playwright-cli` skill for web by default). Outputs three artifacts: a committed `/verify` skill (per-task verification SOP — spawn a verifier sub-agent → drive the app → screenshot/video proof → open a PR with the proof embedded), the `/dev-loca
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 121% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 83% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 6% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 88% | 0% |
/verify skillGoal: leave the repo able to prove an engineering task works before it ships — run once, and it wires up everything the per-task /verify loop needs.
You are setting up — not verifying anything yourself right now. The /verify template lives at assets/verify.template.md (next to this skill). Parallels dev-local-setup (which generates a script + its skill doc): a setup skill that leaves behind reusable, repo-specific artifacts.
Running verifier-setup end-to-end leaves the repo with:
/verify skill — .claude/skills/verify/SKILL.md, the repo-tailoredper-task verification SOP (spawn a verifier sub-agent → drive the app → screenshot/video proof → open a PR with the proof embedded). Generated in Step 5.
/dev-local skill + its script — scripts/dev-local.sh and.claude/skills/dev-local/SKILL.md, via dev-local-setup (Step 2) if not already present. The one-command stack /verify depends on.
playwright-cli skill for web apps (Step 2);for non-web, the concrete exercise tool confirmed present.
Before creating anything, take stock — the repo may already have some of this, under whatever name or layout its team chose. Look for the capability, not a specific filename; the paths below are only examples. For each, decide reuse as-is / adapt-extend / create fresh — never blindly overwrite working setup:
Makefile/Procfiletarget, docker-compose, package scripts (e.g. scripts/dev-local.sh, but any form counts).
team's own convention.
(e.g. the playwright-cli skill), or the relevant API/CLI client.
link gets published (a release, bucket, CI artifacts, etc.).
Every later step is conditional on this inventory: if a capability exists and works, reuse and adapt it (fill gaps, don't regenerate); only create what's missing.
Discover the real facts the generated skill will hardcode:
server on a port), an API/service (HTTP endpoints, no UI), a CLI, or a desktop/mobile app? This picks the driver.
Step 0)? Note the up-command and the app URL/port. If none, Step 2 handles it.
verifier can mint a session with (see e2e-setup)? Record it, or "n/a".
unit, existing e2e commands) from package.json/Makefile/turbo.json/etc.
pr-evidenceGitHub prerelease via gh release upload is the default; a bucket/CI artifact works too).
For each, act on what Step 0 found — reuse if present, adapt if partial, create only if missing. Each check is idempotent; a no-op on what's already there:
script, Make/Procfile target, compose, package scripts), reuse it — read it for the up-command/port/services and move on (extend only if a needed service is missing). If there's none, scaffold one via dev-local-setup (don't hand-roll a launcher here). The generated /verify just needs a reliable one-command up.
playwright-cli skill (it documents + wrapsthe browser driver). Ensure its binary is callable too (npx --yes @playwright/cli --version; install it + the chrome channel if missing). This closes the usual local gap where the browser driver was assumed but never installed.
API, the built binary for a CLI). No browser skill needed.
evidence/ is gitignored (proof output lands there).Present the choice (default and recommend local — it's simpler to stand up):
scripts/dev-local.sh up). Best for asingle task at a time. Recommend this unless they need parallelism.
or a fixed-port/single-instance stack. If chosen and not yet set up, scaffold via crabbox-setup; the generated skill drives the app in-box via cbx.sh pw.
Record the pick as the generated skill's default RUN_MODE (the other stays a documented fallback).
State the detected driver and confirm with the user (default playwright-cli for web apps). For non-web, name the concrete tool (e.g. curl/an HTTP script, the built CLI). This becomes DRIVER in the generated skill.
.claude/skills/verify/SKILL.mdIf a prior verification skill/SOP already exists (Step 0), update it in place — refresh the repo-specifics/placeholders, preserve any hand-edits the team added; don't clobber. Otherwise copy assets/verify.template.md → the repo's skills dir (.claude/skills/verify/ or the repo's convention) and fill every {{...}} placeholder from Steps 1–4: STACK_UP, APP_URL, RUN_MODE(+RUN_MODE_NOTE), DRIVER(+DRIVER_INSTRUCTION), AUTH_HELPER(+AUTH_INSTRUCTION), EXERCISE, REGRESSION_CMDS, EVIDENCE_UPLOAD, DATE. Delete branches that don't apply (e.g. drop the browser/video language for a non-web repo). Keep it to one screen — it's an SOP the agent follows, not an essay.
Commit the generated skill (+ any .gitignore/dev-local changes). Tell the user:
/verify before opening a PR (or when asked to verify), on abranch with changes committed";
gh authfor evidence upload).
the driver skill, e2e, evidence gitignore, the verify skill itself — is inventoried first (Step 0) and reused/extended when it already exists. Only create what's genuinely missing; preserve working setup and team hand-edits.
repo — the generated skill hardcodes real facts, not conventions.
evidence/ existbefore the /verify skill ships, so it never fails on a missing tool.
a stdout-assertion SOP. Match the template to the repo; cut what doesn't apply.
/verify runs.Other measured skills in the registry, with their headline benchmark lift.