witness
Skill0 starsChanged 4 months agoMITView on GitHub
Turn a heavy task into a self-verifying loop that runs to a proven definition-of-done. Use whenever a task is big, multi-step, or high-stakes enough that the real risk is declaring victory early — "looks done" with no check behind it. Witness derives explicit success criteria, each with a runnable/objective check, gets them signed off once, then executes and KEEPS GOING — re-checking every criterion each round — until all of them are objectively met with captured evidence. Trigger on "witness this", "keep going until it's done", "don't stop until the criteria are met", "define success and finish it", "hold yourself to a definition of done", or "run this to completion". Do NOT use for trivial one-step tasks, lookups, or pure conversation.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- grainulation/grainulatortheir own version, first seen Nov 3, 2026
- juxt/alliumtheir own version, first seen Oct 8, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- juxt/allium★ 506same name
- grainulation/grainulator★ 86same name
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 repository19 other files it gives its agents.
- construct-validity-screen/CLAUDE.mdCLAUDE.md
- role-bleed-probe/CLAUDE.mdCLAUDE.md
- adversarial-hardenSkill
- ai-proofSkill
- construct-validity-screenSkill
- divergent-solveSkill
- forgeSkill
- gate-canariesSkill
- grill-meSkill
- heavy-task-plannerSkill
- overnightSkill
- parallel-researchSkill
- premise-gateSkill
- prompt-architectSkill
- role-bleed-probeSkill
- scope-firstSkill
- session-handoffSkill
- stakes-gateSkill
- voice-profileSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 6 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Do NOT trigger for trivial one-step tasks, lookups, or pure conversation.
- Distinctive: line 44
Ask once: *anything to add, cut, or tighten?* Apply the edits.
- Distinctive: line 56
Repeat until every criterion passes: No partial credit, no "close enough."
- Distinctive: line 60
No silent truncation: If you bound coverage — sampled, capped, skipped a check that won't run in this environment — say so.
- Distinctive: line 61
No false-pass: If a check is weak, or you are tempted to mark something met without proof, strengthen the check instead.
- Distinctive: line 68
Verdict: all N criteria met.
≈ “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
Witness
A witness holds the work accountable to a definition of done that has teeth. The job is not to "do the task" — it is to define what done objectively means, prove each part of it, and refuse to stop until every part is proven. The failure mode this skill exists to kill is declaring victory early: "looks complete," with no check behind the claim.
This is the persistent-definition-of-done loop. It sits between planning (shaping the work before it starts) and verification methods that attack code specifically. Witness works for any task type — content, systems, migrations, research, builds — and its spine is one rule: every criterion has a runnable check, and the loop ends only when all checks pass.
When to trigger
- Someone says "witness this", "keep going until done", "don't stop until the criteria are met", "run to completion", "hold yourself to a definition of done".
- Any heavy, multi-step, or high-stakes task where stopping early — at plausible-but-unproven "done" — is the real risk.
- Pairs with, doesn't replace, a planning pass: shape the task first if its shape is still ambiguous. Witness assumes the task is shaped and now needs to be finished and proven.
Do NOT trigger for trivial one-step tasks, lookups, or pure conversation.
The protocol
Phase 0 — Derive checkable criteria
Layer 0 — validity of the inputs (runs before any craft criterion). Before deriving criteria about the quality of the work, gate the task's premises. Every load-bearing claim should carry its provenance: verified against a named source, inferred, or merely assumed and still needing a check. Pay special attention to attribution claims — "X asked for / wants / needs Y." Treat an unverified attribution as a premise to confirm, not a fact to build on. No craft criterion closes while a load-bearing premise is still unverified — it caps the definition-of-done below 100% until the premise is confirmed, or until the dependent criterion is reframed to "verify the premise first." This is the row most checklists miss: a plan can score full marks on craft while resting on a request nobody actually made.
Then restate the task in one or two sentences and decompose "done" into a list of success criteria. For each one, attach an objective verification — something a machine can settle, not a vibe:
- a command whose output settles it (
test passes,exit 0,grep returns N,build succeeds) - a file or artifact that must exist or contain X
- a count or threshold that must match (
all 44 items present,0 findings,≥ 3 sources cited) - a downstream gate or tool that must pass (a linter exits clean, a quality check returns no flags)
Convert subjective criteria into checkable proxies. "Prose reads well" → "passes the writing-quality linter with no flags." "Dashboard looks polished" → "passes the UI quality check." "Code is safe" → "the adversarial pass finds no high-severity issue." If a criterion genuinely cannot be made objective, say so explicitly and mark it [judgment] — but treat that as a smell and keep it rare. The default is runnable proof required: nothing counts as met on the model's say-so alone.
Track the criteria as a live checklist so status is visible the whole way through.
Phase 1 — Sign-off (the one and only checkpoint)
Present the criteria as a table:
| # | Criterion | How it's verified (the check) |
Ask once: anything to add, cut, or tighten? Apply the edits. This is the only place witness stops for input. Once it is signed off, the definition-of-done is frozen and the loop goes autonomous.
(If invoked in an unattended or "no checkpoints" mode, skip the sign-off, derive criteria with logged defaults, and proceed — but still emit the criteria table so the choice is auditable.)
Phase 2 — The verify-and-iterate loop
Now execute, autonomously, to completion:
- Do a round of work toward the unmet criteria.
- Run every criterion's check — actually run it, capture the real output. Do not infer a pass.
- Record status per criterion: ✅ met (with the evidence) / ❌ unmet (with the failing output) /
[judgment](with the reasoning). Update the live checklist. - If anything is unmet, loop — work the failures and re-check. Re-running a check that already passed is cheap insurance; a criterion is only "done" when its check passes in the current state, not because it passed three rounds ago.
- Repeat until every criterion passes. No partial credit, no "close enough."
Guardrails for the autonomous stretch:
- No silent truncation. If you bound coverage — sampled, capped, skipped a check that won't run in this environment — say so. A skipped check is an unmet criterion, never a silent pass.
- No false-pass. If a check is weak, or you are tempted to mark something met without proof, strengthen the check instead. That is the whole point of the skill.
- Resolve small ambiguities with a logged default and keep going. Don't hang on choices anyone would wave through.
Phase 3 — Witness report (only when all checks pass)
The loop ends only when every criterion is ✅ (or an explicitly accepted [judgment]). Then report:
- Verdict: all N criteria met.
- Evidence table: criterion → check → captured result. The proof, not a summary of the proof.
- Rounds taken, and anything resolved by a logged default.
- Residue: anything out of frozen scope that surfaced and was deliberately left, so it is visible rather than buried.
HALT conditions
Witness is autonomous after sign-off, but it should stop and surface — not silently hang, not silently proceed — on:
- An irreversible or outward-facing action — sending, publishing, deleting, anything hard to undo — unless it was pre-authorized in the frozen criteria.
- A true blocker — a criterion that cannot be met without a decision, credential, or resource only a human can provide. Report the blocker and the next runnable check, not a multiple-choice symptom question.
- A boundary it isn't sure it may cross — any action whose permission is genuinely ambiguous. Ambiguous means stop and ask.
Everything short of those resolves with a logged default and the loop continues.
One-line spine
Define done as a list of checks → freeze it with the user once → loop work-and-verify until every check passes with captured proof → report the proof. Don't stop early; don't mark met without running the check.
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.

