agentleFS
Azd325Azd325/skills/skills/prove-it/SKILL.md

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

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.
  • Ingramradical235Skill

    root-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

  • michalattSkill

    challenge

    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

  • renatorozasSkill

    grill

    Adversarial code review. Don't let me ship until the changes pass your scrutiny.

    Also in 4 projects that use this

  • AWSSkill

    retro

    Conduct a retrospective on a coding session.

    Also in 3 projects that use this

  • MicrosoftSkill

    handoff

    Compact the current conversation into a handoff document for another agent to pick up.

    Also in 3 projects that use this

  • GoogleSkill

    tdd

    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

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
  1. Distinctive:

    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.

    line 22
  2. Distinctive:

    If HEAD moves later, mark the page stale and re-run the affected rows.

    line 35
  3. Distinctive:

    Read the commit log and the diff against the default branch, plus the ticket when one exists.

    line 39
  4. Distinctive:

    Write each behaviour the change claims as one line: "X now does Y for user Z".

    line 40
  5. Distinctive:

    Add the implicit claim of every change: "nothing else changed".

    line 41
  6. Very specific:

    Before you pick a baseline, run git cherry -v origin/main <branch>.

    line 44
  7. Distinctive:

    Run against the real local stack, with no mocks on the path you claim.

    line 60
  8. Distinctive:

    Use demo or seed data: never capture production data.

    line 61
  9. Distinctive:

    When the login form gets in the way, create a local session by the project's own means.

    line 62
  10. Distinctive:

    Never check out main in the working tree you are proving.

    line 69
  11. Distinctive:

    If you cannot get a baseline, say "no baseline" in the row.

    line 71
  12. Distinctive:

    Do not substitute a description of what main "probably" did.

    line 72
  13. Distinctive:

    Never tune the input until it breaks without saying so on the page.

    line 76
  14. Distinctive:

    Run the new tests against the "before" side with a separate test database.

    line 84
  15. Distinctive:

    Only a failed assertion is a red.

    line 86
  16. Very specific:

    Before you create a row, change a field or mint a session, save the originals to $PROOF.

    line 90
  17. Distinctive:

    Read its current help for the commands.

    line 92
  18. Very specific:

    Use a driver that records video, for example playwright-cli (start a video, add a chapter per step, show actions so clicks are visible, …

    line 94
  19. Distinctive:

    When no video recorder is available, take a numbered screenshot sequence, one per step, and name each step in the report.

    line 95
  20. Distinctive:

    Keep each video under 60 seconds.

    line 96
  21. Distinctive:

    Do not trim the failing lines.

    line 100
  22. Distinctive:

    Test runs: the test command, the pass count, and the mutation red/green pair when the row needs one.

    line 101
  23. Very specific:

    Write $PROOF/index.html: plain HTML, no external assets, files referenced relatively, <video controls> for videos.

    line 105
  24. Distinctive:

    Never use your memory of an earlier run.

    line 120
  25. Very specific:

    When command -v lavish-axi finds the binary, review the same file in Lavish instead of using open.

    line 125
  26. Very specific:

    Never run it through npx: that can restart a shared server with another version.

    line 126
  27. Very specific:

    Read lavish-axi --help for the current commands.

    line 127
  28. Very specific:

    Run lavish-axi "$PROOF/index.html".

    line 129
  29. Very specific:

    Wait for the reviewer with lavish-axi poll "$PROOF/index.html".

    line 130
  30. Very specific:

    When the reviewer sends "Send & End", or no more feedback is due, run lavish-axi end "$PROOF/index.html".

    line 132
  31. Distinctive:

    Remove what the proof run created, after the last capture (including rows re-run for review comments) and before you report.

    line 138
  32. Distinctive:

    Stop the extra server.

    line 140
  33. Distinctive:

    Remove the throwaway worktree.

    line 141
  34. Distinctive:

    Delete the rows you created and restore the fields you changed from the originals saved in step 4.

    line 142
  35. Distinctive:

    Delete the sessions you minted.

    line 143
  36. Distinctive:

    Remove any session key from the bundle.

    line 145
  37. Distinctive:

    When a row is ✗, say so first.

    line 152
  38. Distinctive:

    If you then fix the failure, re-run that row and update the page.

    line 154
  39. Distinctive:

    Do not test only through unit tests and call it end-to-end.

    line 158
  40. Distinctive:

    Do not mock the path you claim works.

    line 159
  41. Distinctive:

    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 …

    line 160
  42. Distinctive:

    Do not publish the bundle anywhere (PR, ticket, artifact link) unless the user asks.

    line 161

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 shapeEvidence
UI / user flowa video with one chapter per step, plus a before/after screenshot pair at the same URL, user and viewport
Bug fixreproduce 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
Performancesame 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 / permissionthe test, plus a mutation proof: remove the guard, show the red output, restore it
Background job / email / signalrun 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-axi for screenshots, before/after pairs, console output, network requests and performance traces. Read its current help for the commands.
  • Video: chrome-devtools-axi does not record video. Use a driver that records video, for example playwright-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>.png and after-<claim>.png with 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:

  1. Header: branch, commit, date, one sentence on what the change does.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

  1. Run lavish-axi "$PROOF/index.html". Do not write a second copy of the page.
  2. 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.
  3. For each comment, answer it with evidence. When a row is disputed, re-run that row, update index.html, and pass a short --agent-reply to the next poll.
  4. 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.

  1. Stop the extra server.
  2. Remove the throwaway worktree.
  3. Delete the rows you created and restore the fields you changed from the originals saved in step 4.
  4. Delete the sessions you minted.
  5. Drop the extra test database.
  6. 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.