proofread
Skill0 starsChanged 16 days agoMITView on GitHub
The one entry point for checking whether something is true before anyone acts on it. Proofreads a plan, spec, design doc, audit, report, PR description, a published artifact, a single finding or root cause, a plan's readiness to build, a diff against its plan, or a code change, by routing it to the right engine (claim-verification-loop, verify-findings, code-council, code-review) under one shared set of proof rules. Use for /proofread, \"proofread the plan\", \"verify this plan\", \"is this plan still correct\", \"fact-check the audit\", \"verify this finding\", \"does this diff do what the plan says\", or before a document drives real changes. Report only: it changes nothing it checks (the one exception, with the owner's yes, is adding verdicts to the project's decision record).
27 other projects use a version of this.
Adopted by
Most recently taken up by
- pedrohcgs/claude-code-my-workflowtheir own version, first seen Nov 8, 2026
- NilsHellwig/acl-paper-skillstheir own version, first seen Nov 8, 2026
- flonat/flonat-researchtheir own version, first seen Nov 3, 2026
- obviousbread/docs-skillstheir own version, first seen Nov 1, 2026
- shuymn/skillstheir own version, first seen Nov 1, 2026
- dewil/claude-toolkittheir own version, first seen Nov 1, 2026
Used with
Projects with it also use humanize, deploy and 2 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.
eherrerosjSkillhumanize
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive 'Signs of AI writing' guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases. Triggers on: 'humanize', 'make this sound human', 'remove AI writing', 'de-AI', 'sound more natural', 'less robotic', 'too AI-sounding', or when reviewing text that reads like AI output.
Also in 3 projects that use this
VercelSkilldeploy
Deploy applications to Vercel. Use when the user says "deploy", "deploy to Vercel", "push to production", "deploy my app", or "go live".
Also in 3 projects that use this
Microsoft AzureSkillverify
End-to-end app testing pipeline for browser-based web apps on cloud browsers via Azure Playwright Workspaces: verify the live app, author tests for working flows, heal failing tests, then re-run with video and produce one consolidated report. Three phases (app verification, test authoring, test healing) plus a scoped final sanity run; each phase emits a sub-report. Use when asked to "verify my app", "make sure my app works and has good test coverage", "do a full QA pass", "add tests where I'm missing coverage", "fix failing tests and add new ones", "smoke test before deploy", "QA my deployment", or any combined verify-and-test ask. Requires Azure CLI (`az login`) and a Playwright Workspace resource ID — bootstraps configs on first invocation. Browser-based web apps with Playwright only — not for unit/API tests, native mobile/desktop, load/perf, or full accessibility audits.
Also in 3 projects that use this
SentrySkillreview
Fixture review skill.
Also in 3 projects that use this
Other versions27 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 27
- pedrohcgs/claude-code-my-workflow★ 1.7ksame name
- flonat/flonat-research★ 150same name
- maxwell2732/paper-replicate-agent-demo★ 134same name
- sonilo-ai/skills★ 117same name
- maxwell2732/my-submission-formatting-agent★ 106same name
- tance-mang/chinese-webnovel-skills★ 97same name
- JakobThumm/proofreading★ 38same name
- christopherkenny/skills★ 26same name
- AlessandroCaforio/Academic-Writing★ 17same name
- amondnet/yoonmoon★ 17same name
17 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 repository23 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- agent-orchestrationSkill
- ask-for-approvalSkill
- claim-verification-loopSkill
- code-councilSkill
- code-reviewSkill
- context-as-imagesSkill
- grillingSkill
- grow-test-coverageSkill
- investigateSkill
- loop-until-verifiedSkill
- plan-and-buildSkill
- prompt-cachingSkill
- review-allSkill
- review-before-mergeSkill
- review-panelSkill
- to-questionnaireSkill
- track-review-findingsSkill
- trim-contextSkill
- unslopSkill
- verify-findingsSkill
- whatnowSkill
- wizardSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 5 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 21 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Every plan, spec, design doc, register, questionnaire or report this skill writes is read by a person: an intern who can code but does not …
- Very specific: line 58
Only these, each with its non-interactive default (ask nothing, take the default, list the question under Open questions in the report):
- Distinctive: line 71
Cost gate: Before any Workflow launch, say the agent count and a token estimate (the claim loop's pre-launch estimate).
- Very specific: line 122
Run claim-verification-loop on the document, all its phases, as written: the register, internal consistency, snapshot once, readers and …
- Very specific: line 193
Run verify-findings on the single claim, reading code on origin/main after git fetch unless the claim names another ref.
- Distinctive: line 200
If the finding came from a review, the agent that raised it does not check it.
- Distinctive: line 202
If the only behavioural proof would write to a live system (a command to a device, a row in production): do not run it.
- Very specific: line 209
Run code-council implementation mode with the diff or branch and the plan path.
- Very specific: line 214
Run code-council plan mode on the plan.
- Very specific: line 229
Deleted behaviour: when the diff removes functions, branches, checks or tests, run verify-findings' deleted-code check on the 20 largest …
- Distinctive: line 244
Do not fix anything. Fixes go through the normal build flow and get checked again.
“Common” is measured: kept by at least 6 in 10 of the 21 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
Proofread
One command for "is this true?". It picks a mode from what it is given, runs the engine that
does that job best, and holds every engine to proof-rules.md in this folder. Read that file
first, every run.
Writing rules (owner rule 2026-10-22)
Every plan, spec, design doc, register, questionnaire or report this skill writes is read by a person: an intern who can code but does not know this project.
- Load the
unslopskill before writing, and apply it to every section. - Be concise. Lead with the decision or result, one idea per sentence. No long narration, no history of how you got there, nothing the reader does not need to act.
- Human readable. Name decisions, tasks and questions by what they are, never by an id alone or an id range ("R-D98 to R-D102"); an id may follow the title in brackets. Define every project term on first use.
- No em dashes.
It never edits the thing it checks. Fixes are a separate step, done by someone else and checked
again. To gate a finished deliverable with a fix loop, use santa-method instead; to review a
spec and auto-apply clear fixes, use review-panel in finalize mode.
Pick the mode
The mode named in the args wins. Otherwise take the first row that matches:
- Code target.
- An open PR (number or URL), or no args with uncommitted changes:
codewithcode-review. A merged PR (gh pr view <n> --json statesays MERGED):code, merged-PR rule. - A branch or commit range together with a plan path:
implements. - A branch alone: if it has an open PR (
gh pr list --head <branch>),codewithcode-reviewon that PR; otherwisecodewithcode-councilcode mode. - A commit range alone, a source file or a code directory:
codewithcode-councilcode mode.
- An open PR (number or URL), or no args with uncommitted changes:
- Document. A prose file, a
/plan-and-buildfolder, or a claude.ai artifact link (read it with the Artifact tool,action: "read"). With tasks:plan. Without:claims. - One statement (no question mark) in quotes, or one item from a report:
finding. An unquoted statement falls to row 5. "Was the behaviour this diff deletes kept or dropped on purpose?" is afindingon that diff. - A question (ends in "?", quoted or not) with no document:
claims; the claim loop's Phase 0a researches it first with hyperresearch. Not installed: check the question as one claim infindingmode and say so in the report. - Anything else (blank args with a clean tree, a non-code directory, a web page): ask the owner one question: what should be checked, and against what.
buildable (is the plan sized, ordered and routed well enough to build?) runs only when asked
by name: it goes to code-council plan mode, after plan mode has checked the facts.
Questions this skill may ask
Only these, each with its non-interactive default (ask nothing, take the default, list the
question under Open questions in the report):
| Question | Default |
| Step 5: what to check, against what | stop; write a report that names the blocker |
| Which systems to snapshot (no snapshot script) | repo only; every live claim UNVERIFIED |
| A task subset, or the go-ahead for a run over the cost gate | run the whole plan, in parts, with every loop the engine calls for; report the cost |
| Narrow a large diff (code-review or code-council, over about 2000 lines or 50 files) | the folders the PR description names, else the top folders by changed lines up to 2000 lines; the rest listed as not reviewed |
| code-council's research gate or missing-snapshot ask | skip research; review repo-only and say so |
| Run a live write that is the only proof of a finding | do not run it; UNVERIFIED with the command |
| Write verdicts into the project's decision record | do not write it; list the rows it would add |
Cost gate. Before any Workflow launch, say the agent count and a token estimate (the claim loop's pre-launch estimate). Over about 3M tokens for the whole run, wait for the owner's yes. The gate only pauses for that yes; it never shrinks the run (the claim loop's own rule: the estimate is information). Loops follow the engine: 2 to 3, never more.
Where files go
One rule for every mode, and it overrides the report location an engine names. The folder
is the plan folder the caller names; otherwise docs/plans/<today>-<slug>/, where today is the
local date and slug is the document's file name without extension and without a leading date,
the artifact's title, the PR or branch name, or the claim's first four words, in kebab case. If
a docs/plans/*-<slug>/ folder from the last 7 days exists, reuse it. Before writing, run
git check-ignore -q <folder>. If it is not ignored and git ls-files docs/plans prints
nothing, append docs/plans/ to the file git rev-parse --git-path info/exclude prints. If
git tracks files there, use .claude/reviews/<today>-<slug>/ when that is ignored, else the
session scratchpad. Outside a git repo, use the scratchpad. In the folder: the report
<mode>.md (verification.md for plan mode), one claim register claim-register.md shared by all
parts of a run, and workflow-args-p<part>-loop<N>.json, written before each Workflow launch so
a failed launch can be re-run from the file.
Before any mode: project add-on
grep -rlE "snapshot-live-state|verification-sources|state snapshot" CLAUDE.md .claude 2>/dev/null
ls -d .claude/skills/*verification-loop* .claude/skills/*proof-and-analysis* .claude/skills/*decision-record* 2>/dev/null- The first grep is the claim loop's Phase 1b grep. A snapshot script it finds runs once per
run (not per part), with the arguments its owner skill gives. A
.claude/verification-sources.jsonlists the systems instead. Neither: ask which systems to snapshot. - A project verification skill (for example
myproject-verification-loop): load it for its worked adjudication cases and its live-versus-repo rules. The stricter rule wins. - A project proof-recipe skill (for example
myproject-proof-toolkit):findingmode uses its recipes as the method for each condition. - A project planning format (for example
myproject-decision-record): after the owner says yes, the orchestrator writes the verdicts there as research evidence, then renders and republishes it as the project's CLAUDE.md says. This is the one write outside the report folder. - An earlier claim register for the same document (a file in
docs/plans/or.claude/plans/that names the document and holdsid | verdict | methodlines; a/plan-and-builddecision register does not count): add each earlier verdict to its claim'sdocEvidenceas "earlier verdict:<verdict>by<method>(a lead)". The engine readspreviousonly from loop 2 on, so loop 1 must get the leads this way.
Mode: claims
A claude.ai artifact the owner cannot edit comes back from the Artifact tool as a summary, not the page: its claims are leads only; ask for the file (non-interactive: say so under Open questions). An artifact that cannot be read at all gives a report with every claim UNVERIFIED. The plan-mode cap applies here too: over 60 claims, run in parts.
Run claim-verification-loop on the document, all its phases, as written: the register,
internal consistency, snapshot once, readers and adversaries through its verify-workflow.js
(its Phase 2 says how to call it), the adjudication of disputes, annotation of the register,
its loop rules, and its cost report (scripts/run-cost.py). Use its spec mode for a document
checked against code and live state, and its code mode when the document's claims are about
code behaviour (a PR description, a code audit).
Mode: plan
For a plan that will drive work. /plan-and-build verify calls this mode.
Turn each task into claims in the register, one fact per id. Ids use the plan's task number with dots as underscores (task 9.15 is
T9_15), in numeric order:T9_15.open: "the work this task describes is absent on<ref>and live".<ref>isorigin/mainaftergit fetch, unless the plan names another. CONFIRMED means the work still has to be done; REFUTED means it is already there. For a task that is a decision, an agreement or an account step (no code to find), writeT9_15.open: n/aand say why.T9_15.p<k>: each premise the task rests on ("X still accepts any key"). A decision, research item or review finding the task cites by id (D53, Q77) is a premise too, or is listed under the task as "not checked".T9_15.c<k>: eachfile:linethe task cites.T9_15.n<k>: each count or name it states.H<k>: the plan's headline facts (summary counts, names, status table).
Cap: at most 6 claims per task (the ones that decide its status first) and about 12 per lane. A plan over 60 claims runs in parts of up to 5 lanes each, one Workflow call per part, in sequence; or the owner names a task subset (
tasks=9.15,9.31). Non-interactive default: run in parts. Say the part count and agent count before starting.- Lanes: cluster the claims by evidence system into at most 5 lanes per Workflow call.
A lane never mixes evidence systems. With more systems than 5, the extra systems go into
the next part, never into a mixed lane. Headline facts join the lane whose system holds
their evidence. Each lane has
decisive(the one check that could flip the lane's frame, done first; claim loop Phase 1) andliveAllowed(''or the exact read-only live commands it may run). - Run the claim loop as in
claimsmode, on that register. Two lists come back for the adjudicator (proof-rules.md, Adjudicators), one command per claim:challenged(an adversary disagrees: the claim is DISPUTED until settled) andorchestratorMustRecheck(every REFUTED and PARTLY claim: re-check it before it changes a task). At most 20 per loop; the rest carry to the next loop as they are, and after the last loop an unchecked one counts as UNVERIFIED for status. A confirmation the engine lists underweakConfirmationscounts as UNVERIFIED for status. Task status: go down this list and take the first row that matches. One status per task.
Order Status Rule 1 DONE T.openis REFUTED2 OBSOLETE a premise is REFUTED or PARTLY in a way that removes the task's reason (the bug it fixes is gone because the code was deleted); log the reason as a ruling 3 BLOCKED the plan text says the task waits on a person, account or other team before any code 4 UNVERIFIED T.openis UNVERIFIED, DISPUTED or weak, or a premise that decides whether the task is needed is: give the settling command5 CHANGED T.openis PARTLY (say what part remains), or any premise, cite, count or name is REFUTED or PARTLY (say what is true)6 STILL NEEDED T.openis CONFIRMED or n/a, and no row above matchedA claim that does not decide the status and stays UNVERIFIED is listed under the task, with its settling command; it does not change the status. Add a rough size of each remaining task: the lines likely to change in the cited files.
- Write
verification.md: Verdict, Task status, Plan errors (what it says against what is true), Open questions, Cost, How we know, in that order.
Workflow args for one part of a plan run (the engine's header lists every field):
{ "mode": "spec", "document": "docs/plans/<date>-<slug>/plan.md: tasks 3 to 8",
"registerPath": "docs/plans/<date>-<slug>/claim-register.md", "repoRoot": "<abs path>",
"snapshot": "<snapshot folder>", "summary": "<its SUMMARY.md text>",
"verifierChecks": "one count through the database MCP, not the script",
"projectRules": "<the project's hard stops, pasted>", "loop": 1, "previous": "",
"lanes": [{ "key": "database", "decisive": "snapshot tables match live",
"liveAllowed": "", "claims": [{ "id": "T3.open", "text": "...", "docEvidence": "plan:120" }] }] }Mode: finding
Run verify-findings on the single claim, reading code on origin/main after git fetch
unless the claim names another ref. The orchestrator splits it into conditions and rates the
finding's severity. One
Sonnet worker per condition (at most 5) checks it with its own method, using the project's
proof recipes where they fit. A medium, high or critical finding also gets one blind refuter with a
different method (low findings do not). When the finding is about live state, finding mode
re-reads the live system (read-only) and labels the finding UNVERIFIED if it cannot. Combine with strict AND. A dismissal needs as much proof as a confirmation.
If the finding came from a review, the agent that raised it does not check it.
If the only behavioural proof would write to a live system (a command to a device, a row in production): do not run it. Use the project's preview branch or sandbox when one exists. Otherwise the condition is UNVERIFIED with the exact command, and the owner is asked whether to run it (non-interactive: Open questions).
Mode: implements
Run code-council implementation mode with the diff or branch and the plan path. It reports
where the change does or does not do what the plan says.
Mode: buildable
Run code-council plan mode on the plan. It answers whether the plan can be built as written:
tasks sized and ordered, files and tests named, decisions settled. Run plan mode first so it
reviews true facts.
Mode: code
- Open PR or local uncommitted changes:
code-review, report-only; answer "no" to its GitHub-posting question. Its "narrow this large PR?" question is allowed; non-interactive default: review the folders the PR description names and list the rest as not reviewed. - Merged PR: review what it changed with
code-councilcode mode, and report findings only: a merge decision means nothing after the merge. Get the diff fromgh pr view <n> --json mergeCommit,commits: for a merge or squash commit,git diff <mergeCommit>^1 <mergeCommit>; for a rebase merge, the range from the parent of the first PR commit to the last one on the default branch. - Branch without a PR, commit range, files or a directory:
code-councilcode mode. - Deleted behaviour: when the diff removes functions, branches, checks or tests, run
verify-findings' deleted-code check on the 20 largest removed pieces inside the reviewed scope: was each kept elsewhere or dropped on purpose? List the rest as not checked.
For the full five-skill review the owner runs /review-all.
After the run
- Find every published artifact that mentions what was checked (global CLAUDE.md, "plans are tracked in published artifacts") and list, in the report, each statement in them that the verdicts contradict. Proofread never edits them; the owner or the build flow does.
- Tell the owner: the verdict, what they must decide, and where the report is.
- In the report and the message, name every claim, task and decision by what it says, not
by its register id (
T9_15.p2,D53). The id may follow in brackets so the row can be found (owner rule 2026-10-22). - Do not fix anything. Fixes go through the normal build flow and get checked again.
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.

