Skip to main content
skill CX Codex

create-verification-skill · backnotprop — Claude Code skill: how to install

Generates a project-local verification skill that exercises your web UI, CLI, or service through real user flows and collects test evidence.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add backnotprop/pstack --skill create-verification-skill -a claude-code
Open on GitHub

What create-verification-skill does

The skill inspects the repository directly instead of interviewing the developer. It identifies the primary interface (web UI, terminal, API, or desktop), finds documented startup routines, and chooses an automation harness like Playwright, PTY, or HTTP calls. It also defines how to capture evidence through screenshots, terminal logs, and database records.

The output is written to <skills>/verify-<app>/SKILL.md with a feature map under features/. Each generated instruction defines how to start a clean instance with seed data, run a read-only doctor check on readiness, and handle teardown. Temporary processes are shut down while leaving proof artifacts untouched on disk.

The generator executes its own instructions before handing them over. It spins up the app, exercises one mapped user journey, verifies evidence collection, and cleans up. If the repository fails to build or start initially, generation halts until the underlying build error is resolved.

What it helps with

  • generate a repo-specific verification harness for autonomous agent testing
  • exercise real user journeys across web interfaces, terminal tools, or APIs
  • catalog key user-facing journeys into a structured feature map
  • preserve run evidence and logs while cleaning up temporary instances

Example prompts for the agent

  • /create-verification-skill
  • make a control skill for this repo
  • generate a verification skill to test our CLI app behavior

How to install create-verification-skill

1Skills CLI (Vercel)

npx skills add backnotprop/pstack --skill create-verification-skill -a claude-code

2Manually: put the files in place

~/.claude/skills/create-verification-skill/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/create-verification-skill/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about create-verification-skill

How to install create-verification-skill in Claude Code?

Run npx skills add backnotprop/pstack --skill create-verification-skill -a claude-code. The skill file will be created at ~/.claude/skills/create-verification-skill/SKILL.md.

What does create-verification-skill do?

It analyzes your codebase and generates a project-local verification skill under <skills>/verify-<app>/. The generated skill equips agents to start the app, run doctor checks, drive user journeys, and collect execution artifacts.

How does the generator validate the skill it produces?

It runs its own generated instructions end to end by launching the app, driving one mapped feature, and executing cleanup. It then verifies that proof artifacts remain intact before handing over the skill.

Source text

SKILL.md · MIT
---
name: create-verification-skill
description: "Generate a project-local verification skill that drives your app the way a user does — any language, framework, or platform. Use for /create-verification-skill, \"make a control skill for this repo\", or when a project has no scripted way to prove UI/CLI/service behavior."
disable-model-invocation: true
---

# Create a verification skill

Every serious project needs a scripted way to drive the real app and prove behavior: launch it, exercise a feature the way a user would, and capture evidence. This skill generates that as a project-local skill (`<skills>/verify-<app>/`) tailored to the repo. `<skills>` is your harness's project skill folder: `.cursor/skills/` in Cursor, `.claude/skills/` in Claude Code, `.pi/skills/` in Pi, `.agents/skills/` in Codex, OpenCode, and others. If the repo already keeps skills in one of these, use that one. You write the generator's output for the next agent, not for a human: it will be read cold, mid-task, by an agent that has never seen the app.

## 1. Interview the repo, not the user

Answer these from the codebase and only ask the user what you cannot observe:

- **Surface:** what does a user actually touch? A web UI, a CLI/TUI, a desktop app, an API, a mobile app, a library? A repo can have several; pick the primary one and note the rest.
- **Run:** how does the app start locally? Prefer the repo's own documented dev command (package scripts, Makefile, README quickstart). Note ports, env vars, seed data, auth.
- **Drive:** how can an agent interact with it programmatically? Existing harnesses first — Playwright/Cypress specs, expect scripts, PTY helpers, curl-able endpoints, a debug port. Only then pick a generic recipe: browser/CDP for web and Electron, a tmux/PTY harness for CLI/TUI, plain HTTP for services.
- **Observe:** what evidence can be captured? Screenshots, terminal transcripts, response bodies, logs, exit codes, DB state.
- **Isolate:** can two instances run side by side (ports, data dirs, profiles)? If not, say so in the generated skill: refusing to double-drive a shared instance beats corrupting the user's session.

If the checkout doesn't build or start as-is, fix that first (or report it precisely) before generating; a skill written against a broken base teaches wrong steps. When an irrelevant missing asset blocks startup (a static dir the API never serves, a sample config), the generated skill may create it, clearly marked as verification scaffolding, and remove it in cleanup.

## 2. Generate the skill

Write `<skills>/verify-<app>/SKILL.md` with YAML frontmatter (`name: verify-<app>` and a `description` that names the app, the surface, and when to reach for it — without frontmatter the skill never registers) and these sections, each grounded in what the interview actually found (no placeholders left):

- **Launch:** the exact command that starts the app for verification, and how to tell it's ready (a log line, a prompt). Launch must reach a usable state from an empty data dir, including any migrations and seed data. Ready means usable, not just that a process answers. A database health check can pass while its init scripts are still running. Include teardown. For a short-lived CLI or TUI there is no server to keep alive: launch means build the binary (or install deps) once, then start each drive in its own isolated PTY or tmux session.
- **Doctor:** one read-only check that answers "is this instance worth driving?" — process up, right version/build, port owned by us, auth valid. An agent runs this first whenever anything looks off.
- **Drive:** the harness recipe with real selectors/commands from this repo, not examples. Prefer stable handles (ARIA labels, data attributes, prompt strings, route paths) over coordinates and tab order.
- **Evidence:** what to capture for a proof and where it goes. State the proof standards: exercise the real user path, not internal setters or test-only endpoints; capture the action and the resulting state, not just the final screen; verify side effects (files written, rows inserted, messages sent) alongside what's visible; mocks only where a production boundary already isolates the external system. When the safe path is a dry-run or test mode, verify what it actually skips by observing (files, network, git refs) rather than trusting its name: some dry-runs still touch the network or open a browser.
- **Cleanup:** how to tear down instances the run created. Never kill by process name; kill what you started. Cleanup removes instances and scratch state, never the evidence: proof artifacts survive the teardown, in a location the skill names.
- **Helpers:** any script the skill ships is executable and its invocation is shown in the skill body. A helper the reader has to reverse-engineer is not a helper.

## 3. Seed the feature map

Create `<skills>/verify-<app>/features/README.md` plus one file per user-facing feature you can identify (aim for the top 3-5 to start, from routes, commands, menus, or docs). Follow the shape in [`references/feature-map-example/`](references/feature-map-example/), with a README index and one file per feature. Each file answers, from the user's point of view: what the feature is, how to reach it, how to drive it with the harness, and what observable end state proves it works. The four H2s are `Sub-features`, `How to get to it (user POV)`, `Driving it with <harness>`, and `Gotchas`. If the seed data lacks a precondition that a journey needs, the journey reports a failure and the reason goes in that feature's `Gotchas`. Never weaken the journey to make it pass. The map is the repo's maintained verification source; a proof that drives one convenient entry point is incomplete when the map lists others.

## 4. Prove the generated skill before handing it over

Run its own instructions end to end once: launch, doctor, drive ONE mapped feature (one is enough; the map exists so later runs can cover the rest), capture evidence, clean up. After cleanup, confirm the evidence still exists at the named location — a cleanup that eats the proof fails this step. Fix what fails, and run the generated cleanup after every failed iteration too, so broken attempts don't strand processes and ports. A generated skill that was never executed is a draft, not a deliverable. If you proved it in a stand-in for the real target (a container in place of a fresh VM, a local stack in place of a remote one), list every setup step the stand-in did that the target will not. Those steps stay unverified until a run on the real target covers them.

## 5. Offer the maintenance loop

Point the user at `/maintain-verification-skill` for keeping the map honest as the app changes. Suggest a cadence only if they ask.

© backnotprop · MIT · backnotprop/pstack

Similar skills

All skills for Testing and QA →

create-verification-skill by other authors comes first.

create-verification-skill tester-army Generates a project-local verify-<app> skill on top of e2e. It guides coding agents to launch the app, exercise features like a user, and keep evidence in .e2e/. CX Codex +1 388installs create-verification-skill michael-denyer Generates a repo-local verification skill that exercises your application like a real user. Helpful when a codebase lacks automated scripts to prove UI, CLI, or API behavior. CX Codex +1 890installs verification-gate sentimony A skill that blocks completion claims until fresh evidence backs them: it builds an evidence matrix and returns a verdict for the exact claim set. CX Codex +1 836installs verify-and-stop JuliusBrussee Proves existing work meets acceptance criteria without expanding scope. Useful for validation tasks and last-mile checks. CX Codex +1 104,900installs vibe-verify KhazP This skill exercises a running product against acceptance criteria and reports evidence. A passing build on its own proves nothing about behavior. CX Codex +1 ★ 3,183repo stars DesktopManager Windows Verification EvotecIT An MCP server for inspecting and verifying Windows x64 desktop apps locally. Read-only by default. CX Codex +1 ★ 107repo stars cypress-cloud-cli cypress-io The skill runs the cy-cloud CLI to inspect Cypress Cloud runs, specs, tests, and Test Replay data. Use it to triage failing test runs and check artifacts directly through the assistant. CX Codex +1 1,800installs test-gaps ruvnet Detects missing test coverage and suggests tests to write. Helpful right after adding a new feature or before cutting a release. CX Codex +1 753installs

From the same set44

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor