Create a verification skill
Create one repository-owned skill that another agent can use cold to launch the
real application, exercise a user-facing feature, capture evidence, and clean
up only what it started.
This workflow adapts pstack's create-verification-skill for Codex, Claude, and
Cursor. Keep one canonical copy. Do not create divergent instructions for each
harness.
Locate the canonical directory
Use the repository's established agent-skill directory when one exists.
Otherwise use .agents/skills/verify-<app>/ as the canonical location. Add a
compatibility link under .cursor/skills/ or .claude/skills/ only when that
harness does not discover the canonical directory and the repository already
permits links. Never maintain copied variants.
Inspect before writing
Determine these facts from the repository before asking the user:
- The primary user-facing surface and any secondary surfaces.
- The repository's documented start command, required environment, readiness
signal, and teardown path.
- The closest existing driver: Playwright, Cypress, PTY,
expect, HTTP, a
debug protocol, or another repo-owned harness.
- Evidence the driver can retain: screenshots, terminal output, response data,
logs, exit codes, files, or database state.
- Whether two verification instances can run safely in parallel. If not, make
the generated skill refuse to share or double-drive an instance.
If the application does not start from the current checkout, diagnose or report
that first. Do not write permanent instructions against a broken baseline.
Generate the skill
Write SKILL.md with valid frontmatter and these concrete sections:
- Launch: Exact command, loopback bind for temporary network services,
readiness check, and teardown. Record the process or container identity that
this run owns. Never kill by broad process name.
- Doctor: One read-only command that proves the expected build or version is
worth driving and that the listener is bound no wider than intended.
- Drive: Real commands or stable selectors from this repository. Prefer
accessibility labels, test ids, prompt strings, routes, and protocol fields
over screen coordinates.
- Evidence: Where proof is stored and what observable result makes each
feature pass. Exercise the user path, capture the action and result, and
verify material side effects. A dry-run label is not proof of no writes.
- Cleanup: Remove only instances and scratch state created by the run.
Evidence must survive cleanup.
- Feature map: An index and one short file per important user-facing
feature, initially the top three to five. Each feature states how a user
reaches it, how the harness drives it, the observable success state, and
known prerequisites.
Add helper scripts only when deterministic mechanics justify them. Document
their exact invocation and make them fail loudly.
Prove the generated skill
Run its launch, doctor, one real feature drive, evidence capture, and cleanup.
After cleanup, confirm that the evidence remains and the listener or process is
gone. Fix the generated instructions and repeat until that full path works.
The deliverable is not complete until another agent can follow the skill
without relying on facts left only in this conversation.
1---2name: create-verification-skill3description: Create a project-local skill that drives a real application through its user-facing surface and captures durable proof. Use when a repository lacks a repeatable way for agents to verify UI, CLI, API, service, or desktop behavior.4---56# Create a verification skill78Create one repository-owned skill that another agent can use cold to launch the9real application, exercise a user-facing feature, capture evidence, and clean10up only what it started.1112This workflow adapts pstack's `create-verification-skill` for Codex, Claude, and13Cursor. Keep one canonical copy. Do not create divergent instructions for each14harness.1516## Locate the canonical directory1718Use the repository's established agent-skill directory when one exists.19Otherwise use `.agents/skills/verify-<app>/` as the canonical location. Add a20compatibility link under `.cursor/skills/` or `.claude/skills/` only when that21harness does not discover the canonical directory and the repository already22permits links. Never maintain copied variants.2324## Inspect before writing2526Determine these facts from the repository before asking the user:2728- The primary user-facing surface and any secondary surfaces.29- The repository's documented start command, required environment, readiness30 signal, and teardown path.31- The closest existing driver: Playwright, Cypress, PTY, `expect`, HTTP, a32 debug protocol, or another repo-owned harness.33- Evidence the driver can retain: screenshots, terminal output, response data,34 logs, exit codes, files, or database state.35- Whether two verification instances can run safely in parallel. If not, make36 the generated skill refuse to share or double-drive an instance.3738If the application does not start from the current checkout, diagnose or report39that first. Do not write permanent instructions against a broken baseline.4041## Generate the skill4243Write `SKILL.md` with valid frontmatter and these concrete sections:4445- **Launch:** Exact command, loopback bind for temporary network services,46 readiness check, and teardown. Record the process or container identity that47 this run owns. Never kill by broad process name.48- **Doctor:** One read-only command that proves the expected build or version is49 worth driving and that the listener is bound no wider than intended.50- **Drive:** Real commands or stable selectors from this repository. Prefer51 accessibility labels, test ids, prompt strings, routes, and protocol fields52 over screen coordinates.53- **Evidence:** Where proof is stored and what observable result makes each54 feature pass. Exercise the user path, capture the action and result, and55 verify material side effects. A dry-run label is not proof of no writes.56- **Cleanup:** Remove only instances and scratch state created by the run.57 Evidence must survive cleanup.58- **Feature map:** An index and one short file per important user-facing59 feature, initially the top three to five. Each feature states how a user60 reaches it, how the harness drives it, the observable success state, and61 known prerequisites.6263Add helper scripts only when deterministic mechanics justify them. Document64their exact invocation and make them fail loudly.6566## Prove the generated skill6768Run its launch, doctor, one real feature drive, evidence capture, and cleanup.69After cleanup, confirm that the evidence remains and the listener or process is70gone. Fix the generated instructions and repeat until that full path works.7172The deliverable is not complete until another agent can follow the skill73without relying on facts left only in this conversation.74