prove-it
Skill1 starsChanged 40 days agoMITView on GitHub
Produces proof that a change works before the reviewer reads it. Runs the real thing, captures artifacts (video or step screenshots, before/after pairs, render diffs, timings, mutation-proven tests) and writes a one-page proof report that the reviewer can judge without reading every line. Use when the user says "prove it", "/prove-it", "show me it works", "give me proof", or briefs a worker to finish with proof. A personal workflow, not a repo gate. Never paste its output into a PR or ticket unless the user asks.
27 other projects use a version of this.
Adopted by
Most recently taken up by
- ryanda9910/prove-ittheir own version, first seen Nov 8, 2026
- decebal/chief-of-staff-v2their own version, first seen Nov 8, 2026
- SaudSatopay/bullseyetheir own version, first seen Nov 8, 2026
- anotherben/claude-harnesstheir own version, first seen Nov 8, 2026
- SylphxAI/skillstheir own version, first seen Nov 1, 2026
- nagi-studio/skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use root-cause, challenge and 4 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
Ingramradical235Skillroot-cause
Structured root cause analysis using WHERE (MECE decomposition) then WHY (causal structure diagrams) pipeline. Includes coin-flip detection, logical-leap detection, and vicious cycle intervention. Use when buffer enters YELLOW/RED, when metrics stall, or when Actions execute but don't produce results.
Also in 3 projects that use this
michalattSkillchallenge
Pressure-test plans, decisions, and directions by picking and answering the most relevant challenge questions for the current conversation
Also in 3 projects that use this
renatorozasSkillgrill
Adversarial code review. Don't let me ship until the changes pass your scrutiny.
Also in 4 projects that use this
AWSSkillretro
Conduct a retrospective on a coding session.
Also in 3 projects that use this
MicrosoftSkillhandoff
Compact the current conversation into a handoff document for another agent to pick up.
Also in 3 projects that use this
GoogleSkilltdd
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
Also in 3 projects that use this
Other versions27 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 27
- nagi-studio/skills★ 470same name
- AlemTuzlak/skills★ 45same name
- Neko-Catpital-Labs/Invoker★ 20same name
- anotherben/claude-harness★ 7same name
- nadirali1350/vetted★ 5same name
- Xnadir/vetted★ 5same name
- SaudSatopay/bullseye★ 4same name
- drewdrewthis/claude-skills★ 2same name
- dundas/thinkrun★ 2same name
- duvi-ai/skills★ 2same name
17 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- failure-to-constraintSkill
- frame-taskSkill
- invent-workSkill
- property-testsSkill
- public-launch-readinessSkill
- releasingSkill
- write-strategySkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
42 rules. 0 are common, 32 are distinctive, and 10 are very specific to this project.
0
Common
Most of the 25 edited versions we read keep these.
32
Distinctive
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
Every claim on the page links to something the reviewer can look at: a video, a screenshot pair, a diff, a command with its output.
- Distinctive: line 35
If HEAD moves later, mark the page stale and re-run the affected rows.
- Distinctive: line 39
Read the commit log and the diff against the default branch, plus the ticket when one exists.
- Distinctive: line 40
Write each behaviour the change claims as one line: "X now does Y for user Z".
- Distinctive: line 41
Add the implicit claim of every change: "nothing else changed".
- Very specific: line 44
Before you pick a baseline, run git cherry -v origin/main <branch>.
- Distinctive: line 60
Run against the real local stack, with no mocks on the path you claim.
- Distinctive: line 61
Use demo or seed data: never capture production data.
- Distinctive: line 62
When the login form gets in the way, create a local session by the project's own means.
- Distinctive: line 69
Never check out main in the working tree you are proving.
- Distinctive: line 71
If you cannot get a baseline, say "no baseline" in the row.
- Distinctive: line 72
Do not substitute a description of what main "probably" did.
- Distinctive: line 76
Never tune the input until it breaks without saying so on the page.
- Distinctive: line 84
Run the new tests against the "before" side with a separate test database.
- Distinctive: line 86
Only a failed assertion is a red.
- Very specific: line 90
Before you create a row, change a field or mint a session, save the originals to $PROOF.
- Distinctive: line 92
Read its current help for the commands.
- Very specific: line 94
Use a driver that records video, for example playwright-cli (start a video, add a chapter per step, show actions so clicks are visible, …
- Distinctive: line 95
When no video recorder is available, take a numbered screenshot sequence, one per step, and name each step in the report.
- Distinctive: line 96
Keep each video under 60 seconds.
- Distinctive: line 100
Do not trim the failing lines.
- Distinctive: line 101
Test runs: the test command, the pass count, and the mutation red/green pair when the row needs one.
- Very specific: line 105
Write $PROOF/index.html: plain HTML, no external assets, files referenced relatively, <video controls> for videos.
- Distinctive: line 120
Never use your memory of an earlier run.
- Very specific: line 125
When command -v lavish-axi finds the binary, review the same file in Lavish instead of using open.
- Very specific: line 126
Never run it through npx: that can restart a shared server with another version.
- Very specific: line 127
Read lavish-axi --help for the current commands.
- Very specific: line 129
Run lavish-axi "$PROOF/index.html".
- Very specific: line 130
Wait for the reviewer with lavish-axi poll "$PROOF/index.html".
- Very specific: line 132
When the reviewer sends "Send & End", or no more feedback is due, run lavish-axi end "$PROOF/index.html".
- Distinctive: line 138
Remove what the proof run created, after the last capture (including rows re-run for review comments) and before you report.
- Distinctive: line 140
Stop the extra server.
- Distinctive: line 141
Remove the throwaway worktree.
- Distinctive: line 142
Delete the rows you created and restore the fields you changed from the originals saved in step 4.
- Distinctive: line 143
Delete the sessions you minted.
- Distinctive: line 145
Remove any session key from the bundle.
- Distinctive: line 152
When a row is ✗, say so first.
- Distinctive: line 154
If you then fix the failure, re-run that row and update the page.
- Distinctive: line 158
Do not test only through unit tests and call it end-to-end.
- Distinctive: line 159
Do not mock the path you claim works.
- Distinctive: line 160
Do not write a new test in the same breath as the code and count it as proof without the mutation step: a test written by the code's author …
- Distinctive: line 161
Do not publish the bundle anywhere (PR, ticket, artifact link) unless the user asks.
“Common” is measured: kept by at least 6 in 10 of the 25 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
prove-it
Goal: the reviewer reads the proof page first and reviews only the load-bearing code. The page answers four questions: does it work, what did main do, what did you not prove, and which files must a human read.
An artifact is proof. Your verdict is not. Every claim on the page links to something the reviewer can look at: a video, a screenshot pair, a diff, a command with its output. A claim without an artifact goes under "Not proven". You wrote the code, so your summary of it is the least reliable evidence on the page.
1. Set up the bundle
BRANCH=$(git branch --show-current)
BRANCH=${BRANCH:-detached-$(git rev-parse --short HEAD)}
PROOF="$(git rev-parse --git-common-dir)/agent-tasks/proof/$BRANCH"
mkdir -p "$PROOF"Git never tracks files under the common dir, and the bundle survives worktree removal.
Record git rev-parse HEAD in the report: proof belongs to one commit.
If HEAD moves later, mark the page stale and re-run the affected rows.
2. List the claims
Read the commit log and the diff against the default branch, plus the ticket when one exists. Write each behaviour the change claims as one line: "X now does Y for user Z". Add the implicit claim of every change: "nothing else changed". Each claim becomes one row of the matrix.
Before you pick a baseline, run git cherry -v origin/main <branch>.
A line that starts with - means main already holds the patch.
Say so at the top of the report, and prove the change on main: "before" is the parent of the merged commit.
3. Pick the evidence per claim
| Change shape | Evidence |
| UI / user flow | a video with one chapter per step, plus a before/after screenshot pair at the same URL, user and viewport |
| Bug fix | reproduce on main first (screenshot, failing request, or a test that is red on main), then the same check green on the branch |
| Transform (sanitizer, serializer, formatter) | for "nothing else changed": 10-15 typical inputs, parsed by a real browser in the original and the transformed form, DOM and visible text compared |
| Refactor, "no behaviour change" | a render or response diff of the affected output, main against branch; list every delta and explain it |
| Performance | same data, same command, at least 5 runs on each side, median and spread in a table; profile or trace output for the claimed cause |
| New guard / validation / permission | the test, plus a mutation proof: remove the guard, show the red output, restore it |
| Background job / email / signal | run it locally and capture the side effect: the database row, the rendered email, the log line |
Run against the real local stack, with no mocks on the path you claim. Use demo or seed data: never capture production data. When the login form gets in the way, create a local session by the project's own means.
Getting "before" (main):
- Server-rendered or API output: run the project's own dump or snapshot test on main and on the branch, and diff the output. This is the cheapest option.
- Browser behaviour: create a separate worktree for main and run it on another port. Never check out main in the working tree you are proving.
- Reuse the running stack's backing services for the second side, and never print its environment.
- If you cannot get a baseline, say "no baseline" in the row. Do not substitute a description of what main "probably" did.
A bug that does not reproduce on "before" is a finding. Report it under "Not proven". Never tune the input until it breaks without saying so on the page.
Transforms. For "nothing else changed" on a sanitizer, serializer or formatter, build 10-15 typical inputs. Let a real browser parse the original and the transformed version, and compare the DOM and the visible text. The browser is the oracle, not your reading of the output.
Mutation red for tests on old code. Run the new tests against the "before" side with a separate test database. An error, for example a schema mismatch, is not a red. Only a failed assertion is a red.
4. Capture
- Before you create a row, change a field or mint a session, save the originals to
$PROOF. - Browser driver: use
chrome-devtools-axifor screenshots, before/after pairs, console output, network requests and performance traces. Read its current help for the commands. - Video:
chrome-devtools-axidoes not record video. Use a driver that records video, for exampleplaywright-cli(start a video, add a chapter per step, show actions so clicks are visible, stop). When no video recorder is available, take a numbered screenshot sequence, one per step, and name each step in the report. Keep each video under 60 seconds. Make one video per claim, not one for the whole session. - Screenshots:
before-<claim>.pngandafter-<claim>.pngwith identical viewport and data. Dismiss cookie and consent overlays before each screenshot. - Command evidence: save the exact command and its full output to
$PROOF/<claim>.txt. Do not trim the failing lines. - Test runs: the test command, the pass count, and the mutation red/green pair when the row needs one.
5. Write the report
Write $PROOF/index.html: plain HTML, no external assets, files referenced relatively, <video controls> for videos.
Then open it in the default browser, or in Lavish when it is installed (see "Lavish mode").
Sections, in this order:
- Header: branch, commit, date, one sentence on what the change does.
- Verdict per claim: a matrix with one row per claim and the columns claim | how it was exercised | main | branch | evidence link. Mark each cell ✓, ✗ or "not run". The main column is required for a bug fix and a refactor.
- Not proven: everything you did not exercise, and why. Examples: a payment provider not available locally, a browser not tested, a user role not tried. An empty list is a red flag. Re-check before you leave it empty.
- Read these files: the load-bearing files the reviewer must read line by line. These are anything in a high-risk area (permissions, tenant scoping, auth, payments, personal data), migrations, and shared functions with many callers. Then the edge files, where the proof stands in for a full read.
- Gates: the project's check and test commands, with pass/fail taken from the output. Never use your memory of an earlier run.
Lavish mode (optional)
Plain index.html is the default and needs no other tool.
When command -v lavish-axi finds the binary, review the same file in Lavish instead of using open.
Never run it through npx: that can restart a shared server with another version.
Read lavish-axi --help for the current commands.
- Run
lavish-axi "$PROOF/index.html". Do not write a second copy of the page. - Wait for the reviewer with
lavish-axi poll "$PROOF/index.html". Keep the poll in the foreground, and re-run it when it times out. - For each comment, answer it with evidence. When a row is disputed, re-run that row, update
index.html, and pass a short--agent-replyto the next poll. - When the reviewer sends "Send & End", or no more feedback is due, run
lavish-axi end "$PROOF/index.html". Never reopen an ended session unless the user asks.
Without Lavish nothing changes: the file stays valid plain HTML.
6. Clean up
Remove what the proof run created, after the last capture (including rows re-run for review comments) and before you report.
- Stop the extra server.
- Remove the throwaway worktree.
- Delete the rows you created and restore the fields you changed from the originals saved in step 4.
- Delete the sessions you minted.
- Drop the extra test database.
- Remove any session key from the bundle.
List each item you could not remove under "Not proven".
7. Report back
In chat: the path to index.html, the matrix in 3–5 lines, and the "Not proven" list in full.
When a row is ✗, say so first.
A failed proof is the result, not something to fix silently before reporting.
If you then fix the failure, re-run that row and update the page.
Do not
- Do not test only through unit tests and call it end-to-end.
- Do not mock the path you claim works.
- Do not write a new test in the same breath as the code and count it as proof without the mutation step: a test written by the code's author is green by construction.
- Do not publish the bundle anywhere (PR, ticket, artifact link) unless the user asks.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

