The prompt is minor. What it leads to is not: a step that could not run gets read as a step that passed.
Last updated: 2026-09-20
A missing test command looks like a minor annoyance. The damage is what comes next: a step that could not run is easy to report as a step that did not fail. You get a green summary describing a test run that never happened.
A failing test is information. A test that never ran, reported as a pass, is worse than no test at all — because now you believe something.
1. Tell it the command. In CLAUDE.md at the project root:
## Commands
- Test: `pnpm vitest run --silent`
- Lint: `pnpm eslint .`
Verbatim. Including the flags. It is copied, not interpreted.
2. Let it run without asking. In .claude/settings.json:
{ "permissions": { "allow": ["Bash(pnpm vitest:*)", "Bash(pnpm eslint:*)"] } }
Without the second half you have traded a "cannot find it" prompt for an "may I run it" prompt.
| Ask for | Good answer | Bad answer |
|---|---|---|
| The command | The exact string, matching your repo | A paraphrase, or nothing |
| The output | A count: "42 passed, 0 failed" | "Tests pass" |
| The exit code | 0, and it is stated | Not mentioned |
Make it a habit to ask. It costs one line and it is the difference between a verified change and a claimed one.
Some test runners will report success when they ran nothing at all. --passWithNoTests does exactly what it says. So does appending || true to a command. If either appears in a command that is supposed to be proving your change works, the proof is gone.
Worth writing into your CLAUDE.md never-list, where it applies to every session automatically.
Claude Code forgets my project every session is the same file solving the bigger version of this problem. Claude Code keeps asking permission is the second half of the fix above.
Flat prices, written scope, stop at any rung. No call to book, no retainer.
| Rung | What you get | Clock |
|---|---|---|
| Free — starter repo | A real setup you copy yourself | now |
| $29 — Setup Lite | One project: CLAUDE.md, allowlist, one skill, as a pull request you review | 24 hours |
| $99 — Setup Sprint | 3–5 skills, hooks, up to 3 MCP servers, plus a runbook | 48 hours |
| $79 — Surface Audit | Already set up and still fighting it: contradictions and an exact fix list | 48 hours |
Clocks run from a complete intake, not from the Stripe receipt.