isitdone
isitdone is a zero-dependency CLI that answers one question: do this repository's own checks pass on the code as it is right now?
It never guesses. It runs npm test, pytest, go test, cargo test, tsc, ruff, eslint (whatever the repo defines) in a subprocess and reads the exit codes.
When to run it
- Before you write "done", "complete", "all tests pass", "verified", "ready for review", or similar.
- After every change that could affect behaviour, even if you only "fixed a typo".
- When the user asks whether the work is finished or whether tests pass.
- As the last step before creating a commit or pull request.
How to run it
npx isitdone
- Exit code
0 and a line starting with DONE mean every detected check passed on this exact tree, and a receipt was written to .isitdone/receipt.json.
- Exit code
1 and NOT DONE mean at least one check failed. The output shows which command failed and the last lines of its output.
- If it prints
no checks detected, tell the user; do not claim the tests pass, because nothing ran.
Machine-readable form for scripts and orchestrators:
npx isitdone --json # {"ok": true|false, "done": true|false, "checks": [...]}
What to do with the result
- NOT DONE: fix the underlying problem and run
npx isitdone again. Do not delete, skip, .only, xit, or weaken tests, and do not change test configuration or CI settings to make the check pass. If you believe a check is wrong for this repository, say so explicitly to the user instead of working around it.
- DONE: include the receipt in your final message so the user can see the evidence:
npx isitdone receipt --md
Paste that table into your completion message or the PR description.
Rules
- Never state that tests pass unless
isitdone (or the equivalent real command) ran on the current tree and returned DONE.
- If the checks take too long or time out, report that honestly rather than assuming success.
isitdone is also installed as a Stop hook in many repositories. If your turn is blocked with a message beginning isitdone: NOT DONE, treat that message as the ground truth, fix the failures, and only then finish.
Options you may need
npx isitdone --profile lite runs only fast checks (typecheck, lint). Use it mid-task; use the default full run before claiming completion.
npx isitdone detect shows which commands will run and where they were detected from.
- Repository maintainers can override commands in
.isitdone.json; do not edit that file to make checks pass.
1---2name: isitdone3description: Prove a coding task is actually done before saying so. Runs the repository's real test, typecheck and lint commands on the exact working tree, writes a git-bound receipt, and reports NOT DONE with the failing output when anything fails. Use it before claiming "tests pass", before opening a PR, at the end of any task that changed code, or when a user asks you to verify your work.4---56# isitdone78`isitdone` is a zero-dependency CLI that answers one question: **do this repository's own checks pass on the code as it is right now?**9It never guesses. It runs `npm test`, `pytest`, `go test`, `cargo test`, `tsc`, `ruff`, `eslint` (whatever the repo defines) in a subprocess and reads the exit codes.1011## When to run it1213- Before you write "done", "complete", "all tests pass", "verified", "ready for review", or similar.14- After every change that could affect behaviour, even if you only "fixed a typo".15- When the user asks whether the work is finished or whether tests pass.16- As the last step before creating a commit or pull request.1718## How to run it1920```bash21npx isitdone22```2324- Exit code `0` and a line starting with `DONE` mean every detected check passed on this exact tree, and a receipt was written to `.isitdone/receipt.json`.25- Exit code `1` and `NOT DONE` mean at least one check failed. The output shows which command failed and the last lines of its output.26- If it prints `no checks detected`, tell the user; do not claim the tests pass, because nothing ran.2728Machine-readable form for scripts and orchestrators:2930```bash31npx isitdone --json # {"ok": true|false, "done": true|false, "checks": [...]}32```3334## What to do with the result35361. **NOT DONE**: fix the underlying problem and run `npx isitdone` again. Do not delete, skip, `.only`, `xit`, or weaken tests, and do not change test configuration or CI settings to make the check pass. If you believe a check is wrong for this repository, say so explicitly to the user instead of working around it.372. **DONE**: include the receipt in your final message so the user can see the evidence:3839```bash40npx isitdone receipt --md41```4243Paste that table into your completion message or the PR description.4445## Rules4647- Never state that tests pass unless `isitdone` (or the equivalent real command) ran on the current tree and returned `DONE`.48- If the checks take too long or time out, report that honestly rather than assuming success.49- `isitdone` is also installed as a Stop hook in many repositories. If your turn is blocked with a message beginning `isitdone: NOT DONE`, treat that message as the ground truth, fix the failures, and only then finish.5051## Options you may need5253- `npx isitdone --profile lite` runs only fast checks (typecheck, lint). Use it mid-task; use the default full run before claiming completion.54- `npx isitdone detect` shows which commands will run and where they were detected from.55- Repository maintainers can override commands in `.isitdone.json`; do not edit that file to make checks pass.