# Test-first for agents

> Make your coding agent write the failing test, show it fail, implement, and show it pass; no test, no done.

Page: https://videotomd.com/b/text-test-first-for-agents/
Tool: Any AI · Tags: tdd, testing, coding-agent, verification · 392 words, about 510 tokens
Pills: free · ran in Claude Code · self-check · done check · checked 2026-10-12 · Any AI · Claude Code · Codex · Cursor · Aider · OpenCode · shell · file tools · on demand · 14B+ · coding

## Recipe

- Kind: workflow
- Stage: not set
- Loads: on demand
- Works in: Any AI, Claude Code, Codex, Cursor, Aider, OpenCode
- Needs: shell, file tools
- Bring: nothing
- Cost: free
- Model: 14B+
- Tested in: Claude Code
- Checked: 2026-10-12
- For: coding

## When this is useful
- The agent's code "works" until you run it.
- You ask for a fix and get a rewrite of three files with no proof the bug is gone.
- You want the agent to stop guessing what the code does and measure it.


## Change it to
- Claude Code: the block in CLAUDE.md; add a PostToolUse hook that runs the test command after every edit so step 3 is automatic (the claude-code row).
- Aider: put the block in CONVENTIONS.md and start with `aider --read CONVENTIONS.md --auto-test --test-cmd "npm test"` (the aider row).
- Chat-only: the model writes the test and the code; you run both and paste the output. It must not claim a run it did not see.
- 7B model: one test, one change, one run; skip the suite step until the single test passes.


## If your AI needs to look something up
- The test command for a framework: fetch the framework's own docs (for example https://docs.pytest.org/ or https://nodejs.org/api/test.html) and quote the command.


## Put it here

Loads on demand: paste or attach it when the task comes up. To have it every session, put it where your tool reads instructions:

- Any AI: Coding agent: save as AGENTS.md in the project root (read natively by Codex, Cursor, Copilot, Gemini CLI, Kiro, Devin, Cline, Roo, OpenHands, OpenCode, Goose, Amp, Zed, Warp, Junie, Factory and Jules; Claude Code when no CLAUDE.md exists; Aider with --read). Chat: paste it first. Reload: new session. Check it loaded: ask it to repeat one rule from the file. Source: https://agents.md/ (checked 2026-10-12).
- Claude Code: Save as CLAUDE.md in the project root, or .claude/CLAUDE.md. Other agents share the repo: put the shared rules in AGENTS.md and make CLAUDE.md one line, @AGENTS.md. Commit it. Start a new session: the file is read at launch. Reload: new session (or /memory to open the files). Check it loaded: /context lists the Memory files it read; /skills, /agents, /hooks list the rest; the InstructionsLoaded hook event fires once per loaded instruction file. Source: https://code.claude.com/docs/en/memory (checked 2026-10-12).
- Codex: Save as AGENTS.md in the repo root. Codex concatenates AGENTS.md from the git root down to the working directory, closer wins. Commit it. Start a new session. Reload: new session. Check it loaded: ask: Summarize the current instructions; `codex status`. Source: https://learn.chatgpt.com/docs/agent-configuration/agents-md (checked 2026-10-12).
- Cursor: Save as AGENTS.md in the repo root, or as .cursor/rules/<name>.mdc with `alwaysApply: true` in its frontmatter. Commit it. Reopen the project so it reindexes. Reload: reopen the project. Check it loaded: Cursor Settings → Rules shows each rule and its status; no per-reply indicator. Source: https://cursor.com/docs/context/rules (checked 2026-10-12).
- Aider: Save as CONVENTIONS.md and add `read: [CONVENTIONS.md]` to .aider.conf.yml, or start with `aider --read CONVENTIONS.md`. Aider does not read AGENTS.md on its own: pass it with --read too. Reload: restart aider. Check it loaded: none documented: ask it to repeat one rule from the file. Source: https://aider.chat/docs/usage/conventions.html (checked 2026-10-12).
- OpenCode: Save as AGENTS.md in the project root. Commit it. Start a new session. Reload: new session. Check it loaded: none documented: ask it to repeat one rule from the file. Source: https://opencode.ai/docs/rules (checked 2026-10-12).

## Access

Membership: plans at https://videotomd.com/pricing/, or email then a plan at https://videotomd.com/b/text-test-first-for-agents/. A member's browser downloads the file there; an AI without that session needs the member to attach it.
