{"version":"1.1.0","schema":"https://oneagentaday.com/api/schema.json","agent":{"title":"Test Plan from the Prompt","slug":"test-plan-from-prompt","date":"2026-09-17","issue":13,"category":"coding","categoryLabel":"Coding & Vibe Coding","tags":["vibe-coding","testing","prompts"],"difficulty":"medium","runtimes":["Cursor","Claude","ChatGPT"],"excerpt":"Paste the prompt you used to vibe-code a feature. Get the checks to run before merge, including the case that prompt forgot.","problem":"The feature works on the happy path you described to the model, and the cases you never mentioned are still untested.","videoUrl":null,"url":"https://oneagentaday.com/agents/test-plan-from-prompt","apiUrl":"https://oneagentaday.com/api/agents/test-plan-from-prompt.json","promptUrl":"https://oneagentaday.com/agents/test-plan-from-prompt/prompt.txt","configUrl":null,"configFilename":null,"license":"CC-BY-4.0","howItWorks":"The prompt you used to generate the feature is a spec with holes. This agent reads that prompt and names the cases it never mentioned, then turns the dangerous ones into checks you can run before merge.\n\nIt does not write a novel of tests, and it does not claim a case passes. Each check has a setup, an action, and a visible result. Cases you already said were tested are left off the before-merge list.\n\nRun the three. If one fails, that is the plan working. Do not paste a production token into the chat to try the call.","steps":[{"name":"Paste the original prompt","text":"Use the prompt you gave the coding agent, not a cleaned-up spec you wrote afterward. The gaps in that prompt are the point."},{"name":"Add what actually shipped","text":"Two or three lines: what exists now, and the stack. If a case is already tested, say so and the plan will skip it."},{"name":"Paste this agent's prompt first","text":"You get a short list of checks. Each one says the setup, the action, and the result you should see."},{"name":"Run the first three","text":"Do not try to automate the whole list in one sitting. Run the three the agent marks as before-merge. File the rest."}],"demo":[{"second":0,"label":"The original prompt","detail":"A refund button for paid orders under 7 days, a POST, and a success toast. No failure, no double click, no permissions."},{"second":8,"label":"The forgotten cases","detail":"A 500 from the API, a second click, an order already refunded, and a viewer who is not allowed to refund."},{"second":16,"label":"Before merge","detail":"Three checks: the happy path you asked for, the failed POST does not say Refunded, and a double click does not send two POSTs."},{"second":24,"label":"Later","detail":"The 7-day boundary and the hidden button are listed as follow-ups, not pretended to be done."}],"sampleInput":"Prompt I gave Cursor:\n\"Add a refund button on the order page. If the order is paid and less than 7 days old, call POST /api/refunds with the order id. Show a toast on success.\"\nWhat shipped: the button, the fetch, a toast that says Refunded.\nI did not mention: failed requests, double clicks, orders that are already refunded, or who is allowed to see the button.\nStack: Next.js, the button is a client component.","prompt":"You write a test plan from the prompt a person used to vibe-code a feature. You look for the cases that prompt forgot.\n\nINPUTS\n- Original prompt: the text they gave the coding agent.\n- What shipped: a short description.\n- Already tested: optional.\n\nRULES\n- Derive cases from missing words in the original prompt: failure, repeat, permission, empty, boundary, and the opposite of the happy path.\n- Do not invent product rules they did not state. A boundary they did state (like 7 days) is in scope. A rule they did not state is a question, not a test.\n- Mark exactly 3 checks as before-merge. The rest are later.\n- Each check: setup, action, result you can see. No exploit steps. No production secrets.\n- Skip anything they listed as already tested.\n- Cap the whole plan at 8 checks.\n\nOUTPUT\n## Forgot\nThe cases the original prompt never mentioned.\n\n## Before merge\n3 checks. Numbered.\n\n## Later\nThe rest.\n\n## Questions\nRules you refused to invent, as questions.","config":null}}