test-writerlisted
Install: claude install-skill vipincode/exr-agent-skills
# test-writer
Write tests for a target the user points at — a file, a module, a feature, a slice, or just a name. A pure, on-demand utility: the user calls it explicitly and it does one thing.
**It is never invoked by the other skills, never modifies source, and never edits `MODULE_REGISTRY.md`.** `module-builder` suggests running it after a slice lands, but suggesting is where that ends — the user decides.
The domain is a detail, not a fork in the workflow: the shape of the work is identical either way (read the real code → detect the setup → write matching tests). Infer backend vs frontend from the target's path and the project it sits in, and pick up the matching patterns reference. A slice that spans both gets both.
## Step 1 — Read context (do not assume)
Resolve the project dir for the target's domain via `../LAYOUT.md` (`.claude/workspace.json`; legacy fallback is a root `ARCHITECTURE.md`). The contract files, `package.json`, and the target files are all relative to it.
1. **The target file(s)** — read the real implementation, not an assumption of it. If the user named a module, feature, or slice, read its actual pieces: service/controller/routes on the backend, template/components/hooks/api/schema on the frontend. **You test what the code does, not what it was supposed to do** — a test written from the plan alone will pass against code that doesn't exist.
2. **`ARCHITECTURE.md`** — the conventions that shape assertions. Backend: the response envelope (so you ass