validate-verdict
Skill7 starsChanged 18 days agoMITView on GitHub
The Trial. A prosecutor sub-agent argues the idea is dead, a defense sub-agent argues it lives, and a judge sub-agent rules go, test, narrow or kill against the bar set in validator/idea.json. Any argument that does not cite complaint IDs is struck out, and every quote is checked against its source. Compiles the full report. Use when the user asks "should I build this", "go or no go", "give me the verdict", "is this idea dead", or "write the validation report".
In this repository10 other files it gives its agents.
- validate-clusterSkill
- validate-competitorsSkill
- validate-ideaSkill
- validate-interviewSkill
- validate-mineSkill
- validate-painSkill
- validate-prospectsSkill
- validate-segmentSkill
- validate-smokeSkill
- validate-wtpSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 4 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 41
If the bar moved without a recorded reason, stop and tell the user.
- Very specific: line 46
If the user ran the smoke test or counted interview commitments, write validator/realworld.json with their numbers.
- Very specific: line 76
If a side printed its JSON instead of writing the file, save it with TRIAL save prosecution (or defense) and the reply on stdin.
- Distinctive: line 85
Every claim that cites no evidence, an ID that does not exist, a report that was not in the pack, or a quote that is not word for word is …
- Distinctive: line 102
kill: stop. Always allowed, with at least two reasons.
- Very specific: line 104
Run one judge sub-agent the same way (description: trial judge).
- Very specific: line 110
If the ruling is refused (a ruling the bar does not allow, a reason citing a struck claim, no narrow_to), run the judge once more.
- Distinctive: line 154
Do not soften a kill, hedge a go, or add your own opinion of the idea.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
validate-verdict
The last skill in the pack. Three sub-agents put the idea on trial, using only the evidence the pack collected. The prosecutor makes the strongest honest case against it, the defense the strongest case for it. A tool strikes out every claim that cites nothing real, so the judge only weighs claims that point at real posts and real numbers. The judge's ruling then has to fit the bar the user set before seeing any data. You run the trial. You are not the judge, and you do not overrule it.
What the user typed after /validate-verdict: $ARGUMENTS
The tools
python3 "${CLAUDE_SKILL_DIR}/trial.py" <command> # pack, save, check, judge, rule
python3 "${CLAUDE_SKILL_DIR}/report.py" # report.md, report.html and links.md, every quote checked
python3 "${CLAUDE_SKILL_DIR}/quotecheck.py" # check every quote in every reportBelow, TRIAL, REPORT and QUOTES mean these three. If the path is not
expanded, use the base directory Claude Code printed for this skill. Each one
takes --dir validator first. The trial works in validator/trial/.
Step 1: check what there is
The trial needs at least pain.json (/validate-pain). It uses every other
output that exists: prices, segments, competitors, interviews, smoke results.
Run python3 "${CLAUDE_SKILL_DIR}/../validate-idea/idea.py" check validator/idea.json.
If the bar moved without a recorded reason, stop and tell the user. Recorded
moves go into the report, at the top.
Step 2: real-world results, if there are any
If the user ran the smoke test or counted interview commitments, write
validator/realworld.json with their numbers. Use only numbers the user gave
you or that smoke.md records. Never estimate one.
{"results": [
{"bar": "200 waitlist signups from strangers", "need": 200, "have": 37, "pass": false}
]}Each bar is copied exactly from bar.real_world in idea.json, once. need
is the number in that bar, and pass must equal have >= need: the tool
checks it and refuses a file where they disagree. Leave out anything that was
not tested. The tool then counts the real-world bar as untested.
Step 3: pack the evidence and run the two sides
TRIAL pack # --fresh to throw away an earlier trial, after askingIt writes trial/evidence.md (the idea, the bar, the scores and an index of
verified quotes), the two briefs, and the rulings the bar allows. Tell the user
the trial is three sub-agent calls. Then send ONE message with two Agent tool
calls, so both sides argue at the same time without seeing each other:
subagent_type:general-purposedescription:trial prosecution/trial defenseprompt:Read <brief path> and follow it exactly. It is your whole brief.
If a side printed its JSON instead of writing the file, save it with
TRIAL save prosecution (or defense) and the reply on stdin.
Step 4: strike
TRIAL checkEvery claim that cites no evidence, an ID that does not exist, a report that was not in the pack, or a quote that is not word for word is struck. If more than half of one side's claims were struck, run that side once more from its brief. Never write, fix or rescue a claim yourself.
Step 5: the judge
TRIAL judgeIt writes the judge's brief: the surviving claims only, labelled P1, P2... and D1, D2..., the bar, and the rulings allowed:
- go: the evidence and the real-world test both passed.
- test: the evidence passed, but nothing real has been tested yet.
- narrow: build for one group and one pain. Always allowed.
- kill: stop. Always allowed, with at least two reasons.
Run one judge sub-agent the same way (description: trial judge). Then:
TRIAL ruleIf the ruling is refused (a ruling the bar does not allow, a reason citing a
struck claim, no narrow_to), run the judge once more. Add the refusal reason,
word for word, to its prompt. If it is refused twice, report that the trial did
not reach a valid ruling, and why. Never write the ruling yourself.
Step 6: the report
REPORTIt writes three files from the same checked data:
validator/report.md: the verdict and the next test first, then the reasons with their claims and quotes, the bar, the pain, who, money, competitors, coverage, and honest limits.validator/report.html: the same report as one visual page (bars for the funnel, the pain scores, each competitor's gaps, money and who; the trial's reasons with checked quotes). Self-contained, light and dark, no scripts: it opens in any browser and can be sent as a file.validator/links.md: every link the run found, grouped by pain theme (highest score first), then relevant posts that were not complaints, then noise, then each competitor's. No author names.
Then it checks every quote in every report in validator/ word for word. If
any fails, it removes all three and names the file and line. Fix that file by rerunning the step that wrote it, or
by deleting the bad quote. Never by changing the quote until it matches.
Step 7: tell the user
- The verdict in one line, and the next test.
- The bar: evidence and real world, pass or fail, and any time it was moved.
- The two or three reasons that decided it, each with one quote and its link,
as
report.mdgives them. - How many claims were struck, from which side.
- Where to go from here:
- go: build the smallest version for the beachhead. Keep the prospects and interviewees close: they are the first users.
- test:
/validate-smoke, then run this skill again with the results. - narrow:
/validate-ideaagain, for the narrowed group and pain. Moving the bar for it needsidea.py lock --reason. - kill: say it plainly. Then point at what the data does support, if anything: a theme that scored well, a group that pays.
Do not soften a kill, hedge a go, or add your own opinion of the idea. If you disagree with the ruling, you may say so once, citing evidence IDs, after giving the ruling exactly as it is.
Output
validator/trial/ (evidence pack, briefs, both sides' claims, the ruling),
validator/verdict.json, validator/report.md, validator/report.html,
validator/links.md, and validator/realworld.json if real-world results were
given.
Offer to open report.html for the user. If this session can publish pages
(an Artifact tool), you may offer to publish it as a private page they can
share; publish only on their yes.
This is the last skill in the pack.
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.

