validate
Skill0 starsChanged 11 days agoApache-2.0View on GitHub
Drive the built application, collect evidence, and propose an e2e test.
63 other projects use a version of this.
Adopted by
Most recently taken up by
- joeldevz/skynex-pitheir own version, first seen Nov 8, 2026
- 99Luuk/Forge-or-Scraptheir own version, first seen Nov 8, 2026
- etr/groundworktheir own version, first seen Nov 8, 2026
- cykedev/vereinsheimtheir own version, first seen Nov 3, 2026
- aya-taleb/biz-ready-skillstheir own version, first seen Nov 1, 2026
- sophonfinance-wq/finance-automation-portfoliotheir own version, first seen Nov 1, 2026
Used with
Projects with it also use policy-init, create and 7 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.
open-coder-aiSkillpolicy-init
Create conformant Chock policy from request. args(request, target_path,
Also in 3 projects that use this
MicrosoftSkillcreate
Also in 4 projects that use this
Hugging FaceSkillsprint
Work on a batch of GitHub issues in parallel using Agent Teams. Creates one worktree per issue with TDD enforcement, coordinates via a lead agent, then produces stacked PRs.
Also in 4 projects that use this
qtzx06Skilleval
Evaluate trained YOLO model accuracy with mAP metrics and per-class error analysis. Identifies failure cases for targeted improvement. Use after training.
Also in 4 projects that use this
csiddhant796-blipSkillboard
Read, write, and browse the AgentHub message board for agent coordination.
Also in 3 projects that use this
ArvorCoSkillspecify
Create feature specification from natural language description. Use when starting a new feature or creating a spec. Triggers on: create spec, specify feature, new feature spec.
Also in 3 projects that use this
Other versions63 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 63
- iPlug2/iPlug2★ 2.4ksame name
- sirius-db/sirius★ 1.1ksame name
- H-mmer/pentest-agents★ 815same name
- nudgebee/nudgebee★ 520same name
- microsoft/skills-for-copilot-studio★ 486same name
- boshu2/agentops★ 453same name
- scaccogatto/okf-skills★ 444same name
- whawkinsiv/solo-founder-skills★ 260same name
- whawkinsiv/claude-code-skills★ 258same name
- OffchainLabs/arbitrum-docs★ 252same name
53 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 repository24 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- auditSkill
- closeSkill
- doctorSkill
- editorSkill
- execSkill
- knowledgeSkill
- openSkill
- package-mapSkill
- plan-reviewSkill
- planSkill
- preflightSkill
- prSkill
- pr-statusSkill
- pr-syncSkill
- quickfixSkill
- resetSkill
- resumeSkill
- review-prSkill
- sliceSkill
- syncSkill
- triageSkill
- upstream-rulesSkill
- worktree-kitSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 3 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 53 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 48
Stop it when you are done: pdkit validate stop --issue <n>.
- Distinctive: line 77
Write the scenario you just performed as a test, then run it.
- Distinctive: line 129
If an R-ID was only on the step you set aside, the command says so.
- Distinctive: line 162
Do not record PASS from reading code.
- Very specific: line 166
If the application could not be driven at all, produce the human checklist, attach nothing, and let the outcome be unverified.
“Common” is measured: kept by at least 6 in 10 of the 53 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
Via pd-validator, against a running application.
Evidence or nothing. Reading the source and concluding it works is explicitly
not validation, and there is no way to record PASS on that basis — the outcome
of a step comes from what is attached to it, and pdkit validate attach has no
--status.
Preconditions
pdkit state <issue> says implemented. Validating a change that is still
being written means validating something nobody will ship.
1. What is waiting
pdkit validate steps --issue <n>The requirements, the tasks with the command each said it would be done by, the
plan's e2e coverage decision, and whatever is already attached.
Turn that into scenarios. This is the part the tests do not reach: a task's
Done when proves the unit works, and what is left is whether a person using
the application gets what the issue asked for.
2. The application
pdkit validate launch --issue <n> [--build]Prints a CDP endpoint. Playwright MCP attaches to it — configure the server with
--cdp-endpoint; pdkit starts the application and does not connect to it.
--build first when the tree is stale. /pd:doctor says whether there is
anything to drive at all, which is a different problem from Playwright being
absent and has a different fix.
Stop it when you are done: pdkit validate stop --issue <n>.
3. Drive it, and attach what you see
pdkit validate attach --issue <n> --requirement R2 --requirement R5 \
--title "the dialog does not reappear" \
--expected "no dialog on the second launch" \
--observed "no dialog; screenshot attached" \
--evidence /tmp/second-launch.png--requirement takes as many as the step demonstrates — one screenshot of a
list often shows three at once — and --requirement "R2, R5" is the same thing.
Naming one and describing the rest in prose leaves those traced by nobody.
Measured values, not impressions. "The contrast is sufficient" is an opinion;
4.6:1 with the screenshot it was read from is evidence.
A step with an artefact and nothing said about it does not count — the artefact shows something, and which something is yours to state.
4. Codify it
pdkit validate codify --issue <n> --spec tests/playwright/src/specs/<name>.spec.ts
pdkit validate run --issue <n>Write the scenario you just performed as a test, then run it. That run is what PASS rests on. A checklist is verified once, by one person, today; a test is verified by CI on every pull request that follows.
Then prove it is not a flake:
pdkit e2e stability --issue <n>Three runs in a row, and the series stops at the first red. A flake carried into someone else's repository is the worst thing this workflow can deliver, and preflight will not accept a series recorded against a spec that was edited afterwards.
On the quickfix route no e2e is added at all — it inflates review and CI time,
which is the opposite of what a small pull request is for.
5. Close it out
pdkit validate finish --issue <n>Writes validation.md and moves the issue. Three outcomes:
- pass — every step has an artefact.
- fail — a captured run came back red. The issue does not move; that is a finding about the change, not about the process.
- unverified — steps nobody could demonstrate. The issue does move.
When a step measured the environment rather than the change
It happens: the application started for exploration is still holding the
single-instance lock, a port is in use, a container engine is not running. The
step is red, finish takes the worst status in the record, and the finding is
about your laptop.
Re-run the scenario, attach that run, and then:
pdkit validate supersede V4 --issue <n> --by V7 \
--reason "the app launched for exploration held the Electron single-instance lock; no test executed"V4 stays in validation.md with its exit code, its run and this reason, under
Set aside; it stops counting towards the outcome. What it cannot do is launder
a failure: the step named by --by has to have demonstrated something itself, a
step that passed cannot be set aside, and the reason is a sentence you write.
Editing validation.json is not the alternative to this — it is the thing this
exists to make unnecessary.
If an R-ID was only on the step you set aside, the command says so. It is no longer covered, and either the new step should carry it or something still has to demonstrate it.
When a step shows the plan was wrong
A red step usually says the change is wrong: the outcome is fail and the work
goes back to the code. Sometimes it says more — the requirement, or the
hypothesis the plan stood on, does not hold. That is an amendment, not a retry,
and not a step reworded until it passes.
The attached step is the artefact. pdkit validate stop --issue <n>, end the
session, and follow the amendment sequence in /pd:exec from step 2: written
on opus from the artefact, reviewed as a plan if it adds tasks, approved with
pdkit amendment approve A<k> --issue <n> --by <who>.
The state does not move back: implemented has one exit, and it is
validated. The tasks the amendment adds run with /pd:exec <n> T<k> in a new
session, and then /pd:validate <n> again.
When you could not demonstrate something
Say so, and say it where a reviewer will read it. unverified does not block
the pipeline — without Playwright there would be no way out of implemented,
and a gate that expensive gets routed around — but it does not evaporate
either: validation-evidence in preflight refuses a pull request body that
does not name what was left unchecked, under Notes for reviewers.
An unverified step nobody mentions reads exactly like a verified one. That is the whole reason the check exists.
What not to do here
Do not record PASS from reading code. There is no input for it, and constructing one — attaching a file that says "looks correct" — is the same act as writing a receipt by hand.
If the application could not be driven at all, produce the human checklist,
attach nothing, and let the outcome be unverified. An honest gap is useful; a
fabricated pass is worse than no validation at all.
When the phase runs long
budget.turns.validate is the ceiling, and a rough one: nothing counts turns,
you included. Every step is on disk the moment validate attach returns, and
validate steps lists what is still waiting, so a restart loses only the
running application. Past the ceiling, pdkit validate stop --issue <n> and ask
for one; validate launch brings the application back in the next session.
Next
/pd:audit <issue> — the diff against the plan, in fresh context.
Fresh context means a new session, not only a fresh auditor. The auditor is
a subagent and starts clean whatever happens here; the session that hands it the
diff and reads its verdict does not, and pays for this whole validation — the
launch, the runs, every step attached — on each of its turns. validation.md
is what carries over.
pdkit next <issue> prints the line.
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.

