Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Read-only check of whether the claims a public-facing document makes (README, release notes, install and usage guides) are supported by user-supplied evidence. Runs Preflight, Claim Triage, and Validation, splits composite claims into atomic ones, and labels each. Runs no commands and writes no fixes.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 120% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 156% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 364% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 176% | 0% |
Assess whether the statements a public-facing document makes are actually supported by the evidence supplied alongside it. The assessment reads, judges, and reports. It changes nothing and runs nothing.
Typical subjects: a README, a release note, an install guide, a quickstart, a migration note, a feature or compatibility table.
Three boundaries are absolute. They hold even when the request asks for more; in that case perform the assessment and decline the rest in Boundary Notes.
linters, network requests, or any shell command as part of the assessment. When a claim can only be settled by running something, name the exact command and the file it should run against and label the claim needs-human. Naming the command is the deliverable; running it is not.
edits. Describe what a maintainer would change and where, then stop.
architecture, performance, or vulnerabilities. If asked, state the boundary in Boundary Notes and continue with the claim assessment only.
Opening the files the user pointed at, to locate the evidence they supplied, is in scope — that is reading, not executing.
Complete all three steps before triaging a single claim. If a step cannot be completed, report that and stop rather than guessing.
written for users of the software: README, release notes, install and usage guides, published site pages. Internal design notes, task trackers, and private runbooks are out of scope — say so and stop.
it came from, its version identifier, and its timestamp. An item with neither is still usable, but record it as undated: it cannot later support a freshness judgment.
for credentials, tokens, private keys, connection strings, and personal data. On a hit, flag the location for redaction, never reproduce the secret in any output, and continue only once a redacted copy is available.
Turn the document into an inventory of atomic claims.
Extract. Walk the document and pull out every statement that asserts something checkable about the software: supported platforms and versions, install and usage steps, defaults, limits, guarantees, availability, counts.
Decompose composite claims. A composite claim bundles several independently-checkable assertions into one sentence. Split it so that each atomic claim carries exactly one assertion and therefore receives exactly one label. A sentence that would otherwise need two labels is not yet atomic.
> "Installs with a single command on macOS and Linux" splits into three atomic > claims: single-command install, macOS support, Linux support. Each is > evidenced — and can fail — independently.
Set aside the subjective. Statements of taste or ambition ("fast", "developer-friendly", "production-grade") cannot be checked against evidence. Exclude them from labeling and list them under Input Scope Reviewed with a one-line reason. When a subjective adjective wraps a checkable core, split it: label the core, exclude the adjective.
Bind evidence. For each atomic claim, note which supplied evidence items bear on it — or record that none does.
Assign exactly one label to every atomic claim by walking the ordered decision tree. Stop at the first gate that fires; do not re-open an earlier gate.
needs-human -> stale-suspected -> verified -> unsupported| Label | Gate condition | |-------|----------------| | needs-human | Settling the claim requires something outside this skill: running a command, reaching a private system, exercising a UI, or a call only a maintainer can make. | | stale-suspected | Evidence indicates the claim was true earlier, but current evidence disagrees on a version, date, count, or name. A temporal mismatch, not a contradiction of substance. | | verified | Supplied evidence directly supports the claim and the supporting item can be named. | | unsupported | None of the above fired: the evidence does not carry the claim. |
unsupported always carries exactly one reason:
| Reason | Meaning | |--------|---------| | missing-evidence | No supplied evidence speaks to the claim at all. | | contradicted | Supplied evidence asserts the opposite. | | insufficient-coverage | Evidence is on-topic but narrower than the claim — one platform of three, one version of a declared range, one path of several. |
Anchoring rules: every verified names its evidence anchor; every stale-suspected names the mismatched field and both values; every needs-human names the command or file that would settle it; every unsupported carries its reason.
Gate criteria in full, tie-breaks between adjacent gates, and a claim-type table live in references/label-decision-tree.md. Worked end-to-end assessments live in references/worked-examples.md.
Emit exactly these three sections, in this order, every time — including when the claim inventory is empty.
undated).One row per atomic claim:
| # | Atomic claim | Label | Reason | Evidence anchor or what is missing | |---|--------------|-------|--------|------------------------------------|
Reason is filled only for unsupported rows.
assessment.
security review requests).
row is verified.
needs-human row, the specific command or file a maintainer needs.This skill is the document-facing procedure for the project rule at .claude/rules/moai/core/verification-claim-integrity.md. That rule owns the norm and its reporting format; this skill only applies the norm to a published document. Read the rule directly when the norm itself is in question — it is not restated here.
| File | Contents | |------|----------| | references/label-decision-tree.md | Full gate criteria, adjacent-gate tie-breaks, claim-type table, composite-splitting guidance | | references/worked-examples.md | End-to-end assessments across several language ecosystems |
<!-- moai:evolvable-start id="rationalizations" -->
| Rationalization | Reality | |---|---| | "One quick command settles this claim, so I will just run it" | The no-execution boundary has no size exemption. Name the command and label the claim needs-human. | | "The claim is obviously true, I know this ecosystem" | Background knowledge is not supplied evidence. Absent an evidence anchor the label is unsupported, reason missing-evidence. | | "No evidence contradicts it, so it passes" | Nothing arriving to contradict a claim is not support for it. Silence maps to missing-evidence, never to verified. | | "The doc is wrong, I will just fix the sentence" | Findings only. Describe the change and where it belongs; the edit is a maintainer action. | | "This sentence has two parts but one obvious verdict" | Two assertions need two labels. Split it before labeling. | | "The Linux log is missing but the macOS log is close enough" | Narrower evidence than the claim is insufficient-coverage, not verified. | <!-- moai:evolvable-end -->
<!-- moai:evolvable-start id="red-flags" -->
verified row names no evidence anchor.unsupported row carries no reason, or more than one.verified.judge freshness. <!-- moai:evolvable-end -->
<!-- moai:evolvable-start id="verification" -->
unsupported row carries exactly one reason.<!-- moai:evolvable-end -->
Other measured skills in the registry, with their headline benchmark lift.