verification-guide · git:20260930.ce1c74b · 2026-09-30 · sha256 6f45d03c4cc3040b

verification-guide git:20260930.ce1c74bA

Immutable. This exact content never changes and is served at /api/v1/blob/6f45d03c4cc3040b.

---
name: verification-guide
description: Write and keep docs/VERIFY.md, the project's feature map with the exact steps and test data that prove each user-facing feature works. Use at project setup, when a new user-facing area appears, or when QA or a witness finds the map wrong. The architect owns it; QA, witnesses and the bug review board follow it.
---

# Verification guide

`docs/VERIFY.md` answers one question for an agent that has never seen the app: how do I prove this feature works the
way a user sees it? Write it for that reader, who reads it cold in the middle of a task.

## When

- At project setup, before the first wave is dispatched.
- When a slice adds a user-facing area (a new page, flow, command or API a client calls). The architect updates the
  map in the same wave, before its W witness slice runs.
- When QA, the bug review board or a witness finds a step that no longer matches the app. They send the lead a queue
  row. The architect fixes the map.

## Find the answers in the repo

Ask the owner only what the repo can't tell you.

- **Surface:** what a user touches (web UI, CLI, API, mobile). Name the primary one and list the others.
- **Run:** the repo's own dev or preview command, the port, the env it needs, and the seed data. Use the deployed URL
  when the project deploys on merge.
- **Drive:** the tool that exercises it: the Playwright MCP browser for web, a shell for a CLI, `curl` for an API.
- **Observe:** what proves it: what the screen shows, a response body, an exit code, a database row read back.
- **Isolate:** whether two runs can share one instance. If they can't, say so and say how to get a clean one.

## The file

```markdown
# Verifying <app>

## Baseline
- URL or command, seed data, test accounts BY NAME (from playwright.env: `ACME_ADMIN_EMAIL`, `ACME_ADMIN_PASSWORD`),
  and the one check that says the instance is worth driving (right build, healthy, logged-in page loads).

## Proof rules
- Drive the real user path, never internal setters or test-only endpoints.
- Capture the action and the resulting state, not only the final screen.
- Check side effects too: the email sent, the row written, the file saved.

## Features
### <feature>
- Sub-features: short ids, one line each.
- How a user gets there: every entry point (menu, link, deep URL, shortcut).
- Steps: `Preconditions:`, then action -> exact input -> what the user should see.
- Gotchas: what wastes a run or gives a false pass.
```

Start with the 3 to 5 features users use most. Add the rest as slices land. Keep implementation details out; name only
user paths, visible labels, test data and observable results.

## Prove the guide before you hand it over

Run it once yourself: baseline check, one feature end to end, evidence captured. A guide nobody has run is a draft.
Commit it in a PR like any other change.

## Who uses it

- QA and the bug review board take their scenarios from it.
- Witnesses walk its steps on the deployed environment.
- Reviewers check that a PR adding a user-facing area also updates it.

---
Adapted from `create-verification-skill` in [pstack](https://github.com/cursor/plugins/tree/main/pstack) by Lauren Tan
(v0.15.5, commit fae2c6e, 2026-09-29), MIT licence; the licence text is in `LICENSE` beside this file. Changes: a single
`docs/VERIFY.md` owned by the architect instead of a generated Cursor skill folder; tied to our QA, witness and review
steps; credentials by name only.