no-fabricate Gate
A deterministic, read-only fact-honesty gate. Extracts every data-claim from
content and requires each one to trace to a value in a source-pack manifest
({ sources: [{ claim, value, url }], ignore: [regex] }). A statistic nobody
sourced does not ship.
Matching is case-, comma-, and whitespace-insensitive (an inline tag splitting a
stat, e.g. <strong>41</strong>%, still matches the manifest value 41%).
Structural numbers (years, ordinals, listicle counts, section refs) are exempt;
your own prices/versions go in the manifest ignore list.
Invoke
# from the skill directory (or point node at its absolute path)
node cli.mjs --manifest ../my-site/content/sources.json ../my-site/public/articles
Exit 1 on any unsourced claim (--warn-only for non-blocking baseline mode).
Exit 2 on usage or manifest errors: a malformed or missing manifest fails
closed, never open.
When to reach for it
- An AI writing step produced copy that states numbers: gate before publish.
- Building an autonomous content pipeline, where this is the rail that makes "only use cited figures" enforceable instead of aspirational.
- Auditing existing pages: run with
--warn-onlyto inventory unsourced statistics without blocking.
Pairs with the de-ai-gate skill (style honesty); this gate covers fact
honesty.