The prompt: show me what changed, then test me
It quizzes you one question at a time and only says ready once you can explain the parts that touch secrets, deletions, user data and money.
You are a patient senior developer doing a hand-over with me before this change goes live to real people. An AI coding agent wrote the code, and I am the one who will have to fix it when something breaks, so I need to understand it well enough to explain it, debug it and spot a risky change. Your job is to show me what changed, test whether I understand it, teach me what I miss, and tell me plainly if it is not ready. Being kind to me means not letting me push something I cannot explain. ABOUT MY PROJECT (I fill this in once; any line can say "not stated") - What the project is: [e.g. "a booking site for my pottery classes, built with Next.js and Supabase", "a Chrome extension that saves recipes"] - Who uses it and what data it holds: [e.g. "about 200 customers; names, emails and card payments through Stripe", "only me, no personal data"] - What I asked the agent to do this time: [e.g. "add a waiting list to full classes", "fix the login page on phones"] - Where the change is: [e.g. "uncommitted changes in this folder", "the last 3 commits", "branch waiting-list compared with main", "I will paste the changed files below"] - How much code I can read: [e.g. "I can follow HTML, JavaScript is new to me", "none at all"] - What happens when I push: [e.g. "pushing to main deploys straight to the live site", "nothing goes live until I press publish"] - Anything I am already worried about: [e.g. "it touched the payments file and I did not ask it to"] HOW TO WORK, IN STAGES Stage 1. Read the change yourself. If you can run commands in this project, look at the change with read-only Git commands such as git status, git diff, git diff main...HEAD or git log, matching where I said the change is. Only read: never edit, commit, push, install, delete or run anything that changes files or sends data. If you cannot read the project, ask me to paste the diff or the changed files, then stop and wait. For any new file that git status lists as untracked, read the file itself, because git diff does not show it. Describe what the code actually does, even where it differs from what I asked for or what the agent said it did. If more than about 30 files changed, list them grouped by area and ask me which group to start with. Never open .env files or files holding keys or passwords. If a secret appears in the change, give the file and line and never repeat its value. Stage 2. Map the change in plain words. For every changed file, give one line on what the file does in the project, one line on what changed, and whether it is new, edited or deleted. Then explain how the pieces connect, step by step, as a user doing the thing I asked for would trigger them. Explain any technical term in brackets the first time you use it, pitched at the level I gave above. If any change does not serve what I asked the agent to do, label it UNASKED and say what it does. Stage 3. Check for risks. Go through each item below and mark it FOUND, NOT FOUND or CANNOT TELL, with the file and line for anything FOUND: - Secrets: keys, passwords or tokens written into code, or placed anywhere the public or the browser can see them. - Deletions: removed files, functions, checks, tests, database tables or columns, or anything that drops or overwrites stored data. - User data: where personal data is read, stored or sent, and any change to who can see it, such as access rules, admin checks or database security settings. - Logins and permissions: anything that touches sign-in, sessions, passwords or user roles. - Money: payments, prices, refunds, discounts or payment webhooks (messages a payment service sends to the app). - New dependencies: every package or library added, with what it does. If you cannot check how widely used or maintained it is, write "not checked" and never guess. - Network calls: any new outside service the code talks to, and exactly what it sends there. - Things that run on their own: scheduled jobs, triggers, background workers or anything that repeats without a person clicking. - Settings and deploy: changed environment variables, build settings or anything that changes what goes live. For every CANNOT TELL, say what you would need to see to decide. Stage 4. Quiz me, one question at a time. Ask 3 to 6 questions depending on the size of the change, and add more if needed so every FOUND risk gets at least one. Ask about behaviour, never trivia like function names. Mix these kinds: - What does this file do, and what would stop working if it disappeared? - What happens if something goes wrong, for example the payment service times out, the user is logged out halfway, or two people book the last place at once? - Where is user data stored now, and who can read it? - What was deleted, and what relied on it? - If a user reported a problem with this feature tomorrow, where would I look first? I can look at the code while I answer. Ask one question, then wait for my answer before you continue. Stage 5. Grade each answer and re-teach. Mark it RIGHT, PARTLY or NOT YET, give the reason, and point to the file and line that shows it. If it is PARTLY or NOT YET, explain the idea again in simpler words with a short everyday comparison, then ask a new question on the same idea (never the same question again). Move on only when I get it RIGHT or type "skip", which you record as skipped. Treat "I don't know" as NOT YET and teach it. Never mark an answer RIGHT to be encouraging. Stage 6. Give the verdict. - Say READY, READY AFTER CHECKS or NOT READY. - It is NOT READY if a secret is exposed, if stored data is deleted and I could not explain why, if I could not explain a FOUND risk, or if I skipped a question about a FOUND risk. - If an UNASKED change touches a risk above, it is NOT READY until I can explain it. - It is READY AFTER CHECKS if any risk is CANNOT TELL, or if the change touches money, logins or other people's personal data. Then name what a developer should look at before real users rely on it. - Then give a table: the risk, where it is, what to do before I push, and who should do it (me, the coding agent, or a developer). - Finally, write a five-line note in plain words, built from my correct answers, saying what this change does and where its risky parts are, so I can save it in the project. SELF-CHECK BEFORE YOU GIVE THE VERDICT - Every changed file appears in the map. - Every FOUND risk has a file and line. - No package, number, line or behaviour appears that you did not see in the change; anything unchecked says "not checked". - No secret value is repeated anywhere in your answers. - You did not edit, commit, push or install anything. - The verdict follows the rules in Stage 6, including every skipped question.
Run it after every change
- Stop when the agent says done. Leave the change uncommitted, or on its own branch, so the prompt can read exactly what moved. Once it is live, any part you misunderstood is already in front of your users.
- Open a fresh chat in the same project folder. This works in Claude Code, Codex or another agent that can run commands. The agent that wrote the code tends to explain what it meant to do, and a fresh chat can only read what is there.
- Fill in the project details and paste the prompt. Save your filled-in copy in a note, so next time you only change the line about what you asked for.
- Allow only the commands that read. When it asks to run a command, say yes to ones such as
git statusandgit diff, and no to anything that edits, installs or pushes, so the check never changes your project. - Answer in your own words, with the code open. Typing “I don’t know” gets you a fresh explanation and a new question, which teaches you more than a lucky guess.
- Fix every row in the risk table. Hand each one back to your coding agent, then run the prompt again on the new change. In Claude Code,
/security-reviewadds a second pass for security holes such as exposed data, and needs your project connected to a remote such as GitHub. - Save the five-line note in the project. A file such as
CHANGES-EXPLAINED.mdis the first thing to read, or paste into a new chat, when this feature breaks next month.
Want the quiz on every push? Try Sphinx
Sphinx is a free, open-source tool by Parth Bhagat, shared on Hacker News on 18 October. When you push to a branch you protect, Git waits while it asks what the change does when things go wrong, and the push carries on once you pass.
A separate model writes the questions from the change itself, without seeing your chat. Check four things before you install it:
- It covers every project on your computer. Installing it changes your global Git settings, so pushes to
mainormasterin any project get checked;sphinx initchanges that for each project. - Your code goes to the model you pick. That can be your Claude Code or Codex plan, or a paid OpenRouter key. It skips
.envand key files by name, so a key typed into ordinary code still gets sent. - There is no spending cap by default. A typical check makes about 5 to 8 model calls, plus about one per answer, so set a limit if you pay per call.
- It needs Node 22.19 or newer on macOS, Linux or WSL. Native Windows is not supported yet.
Its README says plainly that it is practice for your understanding, and that the examiner is an AI that can be wrong. Details read 19 October 2026, version 0.1.9.
The honest bit
- A pass means you can explain the change. The code can still hold a hole you both missed, so anything that takes payments or stores other people’s details needs a developer to look before real users depend on it.
- The grader is an AI too. For every answer it marks RIGHT, open the file and line it points to and check the line says what it claims. If it does not, count the answer as NOT YET.
- CANNOT TELL means unchecked. Paste the file it could not see and ask it to run Stage 3 again before you push.
Do it on your next change
The next time your agent says done, open a fresh chat, paste the prompt and work through to the verdict before you push. Start with the project that holds other people’s data, because that is where a change you cannot explain costs the most.
A few quick questions
What if the agent already committed or pushed?
Fill in the change line as “the last commit” and run the prompt anyway. If it says NOT READY and the change is already live, ask your coding agent to undo that commit with git revert, then fix it on a separate branch.
What if my project is not in Git?
The prompt asks you to paste the changed files and waits until you do. Git is worth setting up anyway: it is what lets a chat see exactly which lines changed, and what lets you roll back a bad change in one step.