“Done” means proven
by end-user testing
Proofpunk is an execution-first delivery plugin for Claude Code, oh-my-pi (OMP), and OpenCode: 18 skills where the AI drives the real system as an end user — clicking, typing, submitting via MCP/automation tools — and any claim it did not actually execute is reported UNVERIFIED, never PASS. No mocks, no stubs, no test-mode bypasses.
If the real system doesn't work, fix the real system. Never mocks, stubs, test doubles, fake endpoints, or test-mode bypasses.
Validation is never faked, skipped, or assumed. The AI personally executes the actions a real end user would — clicking, tapping, typing, submitting. Unexecuted validation is UNVERIFIED, never done.
Run-scoped, sequential, non-empty, never reused across runs — cited by full path with a description of what is SEEN. PASS criteria are defined before evidence.
18 skills, five layers, one closed graph
Every referenced skill ships — the Related Skills graph is closed. Layers from the repository
architecture: orchestration composes prompt & plan, execution, proof, and deep analysis;
every verdict cites the shared doctrine in references/.
Six verbs for the whole pipeline
Shipped against itself: the mood-ring walkthrough
examples/mood-ring/ is a complete live walkthrough on the Flaskr tutorial app:
the Mood Ring feature (per-post mood emoji + filter bar), built and audited end-to-end by the
skills in series. The sealed evidence run holds 19 artifacts, validate OK,
including 5 browser screenshots committed as PNGs — and 32/32 tests green
(24 baseline + 8 new).
- A forged
<script>alert(1)</script>mood POST safely defaults to 😐 with a flash notice. - An invalid
?mood=🦄filter returns 200 unfiltered — no 500, no leak. - Visual inspection caught (and the loop fixed) a blue-on-blue invisible “All” filter label — a real HIGH defect.
One canonical palette source renders to OMP, OpenCode, and Hyper formats: neon-tokyo, acid-rain, vapor-grid, ion-storm, red-line, …
pure #000000 canvas, two-neon accent systems, tuned status colors.
Claude Code plugin with SessionStart doctrine hook; OMP plugin with doctrine-guard extension; OpenCode plugin + agent + commands; plain skills for any agent via the installer.
The system, rendered
graph TD
M["proofpunk-marketplace<br/>.claude-plugin/marketplace.json"]
M --> P["plugins/proofpunk<br/>the plugin"]
M --> T["tools/<br/>proofpunk-install.sh + INSTALL.md"]
M --> E["examples/mood-ring<br/>the sealed live walkthrough"]
P --> S["skills/ — 18 skills"]
P --> R["references/ — 13 shared doctrine files"]
P --> D["docs/ — consolidation + validation records"]
R -.->|cited by| S
(diagram source — pre-renderer unavailable)
graph TB
subgraph ORCH["Orchestration"]
IMP["implement"]
end
subgraph PROMPT["Prompt and Plan"]
PF["prompt-forge"]
BS["brainstorm"]
VP["validation-plan"]
PH["plan-hardening"]
end
subgraph EXEC["Execution"]
IM2["implement"]
ST["stack-testing"]
MVR["mobile-validation-runner"]
end
subgraph PROOF["Proof"]
EG["end-user-testing"]
VI["visual-inspection"]
UX["ui-experience-audit"]
FFA["full-functional-audit"]
end
subgraph DEEP["Deep analysis"]
RCD["root-cause-debugging"]
RTE["red-team-eval"]
PR["production-readiness"]
SI["session-intent"]
end
subgraph DOC["Doctrine — plugins/proofpunk/references/"]
REF["end-user-actor.md<br/>evidence-contract.md<br/>severity-model.md<br/>platform-routing.md<br/>preflight-checks.md<br/>ci-gates.md<br/>defect-pattern-database.md<br/>web-wcag-checklist.md<br/>ios-hig-checklist.md"]
end
ORCH --> PROMPT
ORCH --> EXEC
ORCH --> PROOF
ORCH --> DEEP
PROMPT --> EXEC
EXEC --> PROOF
DEEP --> PROOF
PROOF -.->|every verdict cites| DOC
EXEC -.->|discipline from| DOC
PROMPT -.->|stage 8 from| DOC
(diagram source — pre-renderer unavailable)
graph LR
IMP["implement"] --> SI["session-intent"]
IMP --> PF["prompt-forge"]
IMP --> VP["validation-plan"]
IMP --> PH["plan-hardening"]
IMP --> IM2["implement"]
IMP --> RCD["root-cause-debugging"]
IMP --> EG["end-user-testing"]
IMP --> ST["stack-testing"]
IMP --> BS["brainstorm"]
IM2 --> VP
IM2 --> EG
IM2 --> BS
BS --> VP
BS --> PH
BS --> IM2
VP --> PH
VP --> EG
VP --> IM2
PH --> VP
PH --> PF
PF --> PH
PF --> VP
FFA --> EG
FFA --> UX
UX --> VI
MVR["mobile-validation-runner"] --> VI
MVR --> UX
MVR --> EG
RCD --> ST
RCD --> EG
ST --> EG
ST --> RCD
ST --> IM2
PR["production-readiness"] --> FFA
PR --> ST
PR --> EG
PR --> PH
RTE["red-team-eval"] --> PH
RTE --> PF
RTE --> EG
SI --> PR
SI --> RCD
SI --> EG
EG --> VI
EG --> UX
(diagram source — pre-renderer unavailable)
sequenceDiagram
autonumber
participant U as User
participant I as implement
participant SI as session-intent
participant SC as scout agents
participant PF as prompt-forge
participant PL as validation-plan + plan-hardening
participant RC as root-cause-debugging
participant PR as proof layer (end-user driving + end-user-testing + stack-testing)
U->>I: implement "add billing webhooks" --parallel --auto --mine
I->>SI: Phase 1: mine past implementation sessions
SI-->>I: intent matrix (prompts, tools, files, commits)
I->>I: Phase 0: distill TRUE success criteria
alt criteria not clearly laid out
I->>U: present distilled criteria
U-->>I: approval (the only mandatory stop)
end
par Phase 2: parallel exploration
I->>SC: structure scout
I->>SC: patterns scout
I->>SC: contracts scout
I->>SC: history scout (fed by mined matrix)
end
SC-->>I: 3-6 bullet context summary
I->>PF: Phase 3: forge implementation prompt (canonical XML skeleton)
PF-->>I: prompt with output_contract + validation per criterion
I->>PF: Phase 4: --parallel -> PIPELINE mode, .prompts/ stages in parallel
PF-->>I: dependency-aware stage tree
I->>PL: harden the plan (proof obligations inside, not after)
par Phase 5: parallel execution lanes
end
loop --auto: until every criterion is proven
IM2 -->>I: lane result
alt failure
I->>RC: reproduce, minimize, root-cause fix
RC-->>I: fix + blast-radius re-check
end
I->>PR: validate criterion as the end user
PR-->>I: PASS / UNVERIFIED (= NOT DONE, keep going)
end
I->>U: criteria-by-criteria proof table + todo ledger + sealed evidence
(diagram source — pre-renderer unavailable)
stateDiagram-v2
[*] --> InitRun: fresh_evidence.py init-run <slug>
InitRun --> Capture: run-<timestamp>-<slug>/ created
Capture --> Capture: next-step <slug> per artifact (step-NN)
Capture --> Seal: fresh_evidence.py seal
Seal --> Validate: evidence-inventory.txt written
Validate --> Passed: exit 0 — fresh + non-empty + cited
Validate --> Refused: exit 2 — STALE:/EMPTY: per artifact
Refused --> Capture: re-capture the offending artifact
Passed --> [*]: verdict may cite this run
(diagram source — pre-renderer unavailable)