Documentation Claim Check
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.
Hard boundaries
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.
- No command execution. Do not run builds, tests, package managers,
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.
- No fixes. Do not produce patches, diffs, rewritten passages, or file
edits. Describe what a maintainer would change and where, then stop.
- No code review and no security review. Do not assess code quality,
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.
Phase 1 — Preflight
Complete all three steps before triaging a single claim. If a step cannot be
completed, report that and stop rather than guessing.
- Confirm the document is public-facing. This skill judges documents
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.
- Inventory the supplied evidence. For every item record what it is, where
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.
- Flag secrets for redaction before proceeding. Scan the supplied evidence
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.
Phase 2 — Claim Triage
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.
Phase 3 — Validation
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.
Output contract
Emit exactly these three sections, in this order, every time — including when
the claim inventory is empty.
1. Input Scope Reviewed
- Documents read, with version or date when known.
- Evidence items inventoried, each with version and timestamp (or
undated).
- Statements excluded as subjective, each with a one-line reason.
- Evidence that was needed but not supplied, named specifically.
2. Claim Assessments
One row per atomic claim:
| # |
Atomic claim |
Label |
Reason |
Evidence anchor or what is missing |
Reason is filled only for unsupported rows.
3. Boundary Notes
- The certification, stated literally: no commands executed during this
assessment.
- Anything declined, with the boundary that forbade it (fix requests, code or
security review requests).
- Residual risk: what this assessment still does not prove even where every
row is
verified.
- For each
needs-human row, the specific command or file a maintainer needs.
Relationship to the claim-integrity policy
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.
Bundled references
| 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 |
Common 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. |
Red Flags
- A claim row carries two labels, or a label plus a hedge.
- A
verified row names no evidence anchor.
- An
unsupported row carries no reason, or more than one.
- A subjective adjective was labeled instead of excluded.
- Boundary Notes are missing, or omit the literal no-commands-executed line.
- A command was run "just to confirm" during the assessment.
- Zero evidence was supplied and some claim still came back
verified.
- Evidence was inventoried without a version or timestamp and then used to
judge freshness.
Verification
1---2name: moai-workflow-docs-claim-check3description: 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.4license: Apache-2.05---6
7# Documentation Claim Check
8
9Assess whether the statements a public-facing document makes are actually
10supported by the evidence supplied alongside it. The assessment reads, judges,
11and reports. It changes nothing and runs nothing.
12
13Typical subjects: a README, a release note, an install guide, a quickstart, a
14migration note, a feature or compatibility table.
15
16## Hard boundaries
17
18Three boundaries are absolute. They hold even when the request asks for more;
19in that case perform the assessment and decline the rest in Boundary Notes.
20
211. **No command execution.** Do not run builds, tests, package managers,
22 linters, network requests, or any shell command as part of the assessment.
23 When a claim can only be settled by running something, **name** the exact
24 command and the file it should run against and label the claim
25 `needs-human`. Naming the command is the deliverable; running it is not.
262. **No fixes.** Do not produce patches, diffs, rewritten passages, or file
27 edits. Describe what a maintainer would change and where, then stop.
283. **No code review and no security review.** Do not assess code quality,
29 architecture, performance, or vulnerabilities. If asked, state the boundary
30 in Boundary Notes and continue with the claim assessment only.
31
32Opening the files the user pointed at, to locate the evidence they supplied, is
33in scope — that is reading, not executing.
34
35## Phase 1 — Preflight
36
37Complete all three steps before triaging a single claim. If a step cannot be
38completed, report that and stop rather than guessing.
39
401. **Confirm the document is public-facing.** This skill judges documents
41 written for users of the software: README, release notes, install and usage
42 guides, published site pages. Internal design notes, task trackers, and
43 private runbooks are out of scope — say so and stop.
442. **Inventory the supplied evidence.** For every item record what it is, where
45 it came from, its **version** identifier, and its **timestamp**. An item with
46 neither is still usable, but record it as undated: it cannot later support a
47 freshness judgment.
483. **Flag secrets for redaction before proceeding.** Scan the supplied evidence
49 for credentials, tokens, private keys, connection strings, and personal
50 data. On a hit, flag the location for redaction, never reproduce the secret
51 in any output, and continue only once a redacted copy is available.
52
53## Phase 2 — Claim Triage
54
55Turn the document into an inventory of atomic claims.
56
57**Extract.** Walk the document and pull out every statement that asserts
58something checkable about the software: supported platforms and versions,
59install and usage steps, defaults, limits, guarantees, availability, counts.
60
61**Decompose composite claims.** A composite claim bundles several
62independently-checkable assertions into one sentence. Split it so that **each
63atomic claim carries exactly one assertion and therefore receives exactly one
64label**. A sentence that would otherwise need two labels is not yet atomic.
65
66> "Installs with a single command on macOS and Linux" splits into three atomic
67> claims: single-command install, macOS support, Linux support. Each is
68> evidenced — and can fail — independently.
69
70**Set aside the subjective.** Statements of taste or ambition ("fast",
71"developer-friendly", "production-grade") cannot be checked against evidence.
72Exclude them from labeling and list them under Input Scope Reviewed with a
73one-line reason. When a subjective adjective wraps a checkable core, split it:
74label the core, exclude the adjective.
75
76**Bind evidence.** For each atomic claim, note which supplied evidence items
77bear on it — or record that none does.
78
79## Phase 3 — Validation
80
81Assign **exactly one** label to every atomic claim by walking the ordered
82decision tree. Stop at the first gate that fires; do not re-open an earlier gate.
83
84```
85needs-human -> stale-suspected -> verified -> unsupported
86```
87
88| Label | Gate condition |
89|-------|----------------|
90| `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. |
91| `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. |
92| `verified` | Supplied evidence directly supports the claim and the supporting item can be named. |
93| `unsupported` | None of the above fired: the evidence does not carry the claim. |
94
95`unsupported` always carries **exactly one** reason:
96
97| Reason | Meaning |
98|--------|---------|
99| `missing-evidence` | No supplied evidence speaks to the claim at all. |
100| `contradicted` | Supplied evidence asserts the opposite. |
101| `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. |
102
103Anchoring rules: every `verified` names its evidence anchor; every
104`stale-suspected` names the mismatched field and both values; every
105`needs-human` names the command or file that would settle it; every
106`unsupported` carries its reason.
107
108Gate criteria in full, tie-breaks between adjacent gates, and a claim-type
109table live in `references/label-decision-tree.md`. Worked end-to-end
110assessments live in `references/worked-examples.md`.
111
112## Output contract
113
114Emit exactly these three sections, in this order, every time — including when
115the claim inventory is empty.
116
117### 1. Input Scope Reviewed
118
119- Documents read, with version or date when known.
120- Evidence items inventoried, each with version and timestamp (or `undated`).
121- Statements excluded as subjective, each with a one-line reason.
122- Evidence that was needed but **not** supplied, named specifically.
123
124### 2. Claim Assessments
125
126One row per atomic claim:
127
128| # | Atomic claim | Label | Reason | Evidence anchor or what is missing |
129|---|--------------|-------|--------|------------------------------------|
130
131`Reason` is filled only for `unsupported` rows.
132
133### 3. Boundary Notes
134
135- The certification, stated literally: **no commands executed** during this
136 assessment.
137- Anything declined, with the boundary that forbade it (fix requests, code or
138 security review requests).
139- Residual risk: what this assessment still does not prove even where every
140 row is `verified`.
141- For each `needs-human` row, the specific command or file a maintainer needs.
142
143## Relationship to the claim-integrity policy
144
145This skill is the document-facing procedure for the project rule at
146`.claude/rules/moai/core/verification-claim-integrity.md`. That rule owns the
147norm and its reporting format; this skill only applies the norm to a published
148document. Read the rule directly when the norm itself is in question — it is
149not restated here.
150
151## Bundled references
152
153| File | Contents |
154|------|----------|
155| `references/label-decision-tree.md` | Full gate criteria, adjacent-gate tie-breaks, claim-type table, composite-splitting guidance |
156| `references/worked-examples.md` | End-to-end assessments across several language ecosystems |
157
158<!-- moai:evolvable-start id="rationalizations" -->
159## Common Rationalizations
160
161| Rationalization | Reality |
162|---|---|
163| "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`. |
164| "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`. |
165| "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`. |
166| "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. |
167| "This sentence has two parts but one obvious verdict" | Two assertions need two labels. Split it before labeling. |
168| "The Linux log is missing but the macOS log is close enough" | Narrower evidence than the claim is `insufficient-coverage`, not `verified`. |
169<!-- moai:evolvable-end -->
170
171<!-- moai:evolvable-start id="red-flags" -->
172## Red Flags
173
174- A claim row carries two labels, or a label plus a hedge.
175- A `verified` row names no evidence anchor.
176- An `unsupported` row carries no reason, or more than one.
177- A subjective adjective was labeled instead of excluded.
178- Boundary Notes are missing, or omit the literal no-commands-executed line.
179- A command was run "just to confirm" during the assessment.
180- Zero evidence was supplied and some claim still came back `verified`.
181- Evidence was inventoried without a version or timestamp and then used to
182 judge freshness.
183<!-- moai:evolvable-end -->
184
185<!-- moai:evolvable-start id="verification" -->
186## Verification
187
188- [ ] All three Preflight steps completed and recorded before any labeling.
189- [ ] Every composite claim split until each atomic claim holds one assertion.
190- [ ] Every atomic claim carries exactly one label from the four-value set.
191- [ ] The decision tree was walked in order for each claim.
192- [ ] Every `unsupported` row carries exactly one reason.
193- [ ] All three output sections are present, in order.
194- [ ] Boundary Notes state the literal no-commands-executed certification.
195- [ ] No patch, diff, or edited passage appears anywhere in the output.
196<!-- moai:evolvable-end -->