seo-geo-factdensity — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited seo-geo-factdensity (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<!-- Portions Copyright (c) 2026 Enrique Rocha (@soyenriquerocha) - see LICENSE for original authors · tododeia.com · id er-d03758e1 -->
Generative engines preferentially cite passages that are concrete, quantified, and attributable. This module measures how "citable" the page's prose is — facts, numbers, original data, and authoritative outbound links — not vocabulary. AI retrieval/citation context: references/ai-crawlers.md.
Work from the PageSnapshot named in your dispatch envelope: read parsed from <run_dir>/pages/<slug>.json (anchors[] for outbound links, text_sample) and the HTML file for passage-level counts; Grep pages/<slug>.html for verbatim evidence; site artifacts live in <run_dir>/site/{robots.json,sitemaps.json,discovery.json}. Deterministic findings already emitted by audit.mjs are listed in <run_dir>/findings.deterministic.json — do not re-emit those ids; add model-judged findings only. If invoked directly with a URL/path and no snapshot exists, first run node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs" and use the printed snapshot path.
Working from the PageSnapshot (parsed_rendered when render.used is not none, else parsed):
<li> / heading-bounded block) and count numeric tokens — figures, percentages, dates, quantities, ranges. Flag long passages of pure assertion with zero numeric support..gov/.edu, named publications); distinguish them from internal/nav/affiliate links.ADVISORY only — this module proposes nothing it would write. It produces a list of (a) claims that should carry a statistic or citation, (b) passages where an original-data callout (table, "our data" box, methodology note) would raise citability, and (c) unsupported superlatives to soften or source. The tool will NOT fabricate statistics, sample sizes, study results, or source URLs. Where a value is missing, it emits a clearly-marked TODO placeholder for the user to fill — never an invented number. (Findings here are fixable: advisory per the finding schema.)
manual_review: node "${CLAUDE_PLUGIN_ROOT}/scripts/factdensity.mjs" --snapshot <pages/<slug>.json> [--lang en|es|auto] (or --url <u>) returns numeric-token density per passage — split into all / years / prices / substantive — and the outbound-authority link count. Report the raw counts so a human can re-derive them; a page whose only "numbers" are a copyright year and a price is not fact-dense, which is why substantive is the count that matters..gob.mx, .gov.uk, scielo.org). Outside those languages the language-dependent fields come back null, never 0, and the finding is manual_review.manual_review; do not auto-pass them.needs_api, never a false pass.Emit findings per schema/finding.schema.json; axis ai; fixable: advisory throughout. Severity policy: 5 is reserved for catastrophic, eligibility-killing facts at site/template scope; 4 major · 3 moderate · 2 minor · 1 cosmetic · 0 informational — and only an established severity-5 fail in an active category can cap a score (references/scoring-model.md). Nothing in M12 is established, so nothing here ever caps.
M12.density.low_numeric_passages — multiple main-content passages with zero substantive numeric support (warn, severity 3, confidence directional).M12.citations.no_outbound_authority — the main content makes factual claims and links to no authoritative outbound source (warn, severity 3, confidence directional).M12.original_data.missing — a topic that invites first-party evidence (benchmark, survey, pricing study) carries none (warn, severity 3, confidence directional).M12.original_data.present — a first-party data claim backed by a method, sample, table, or chart (pass, severity 3, confidence directional).M12.claim.unsourced_superlative — a superlative/comparative claim with no inline citation or data (warn, severity 1, confidence speculative).M12.lang.unsupported — the page language is outside the EN/ES lexicons, so density and authority scoring cannot decide (manual_review, severity 0; language-dependent fields null).Each finding: evidence.observed quotes the exact passage/claim from the page; verification.reproduce is the runnable count above; expected_impact is banded + confidence-tagged (no naked %).
directional and they are never established. A page can be dense with numbers and still be commodity content.manual_review, not a pass: a zero count in a language we cannot tokenize is a gap in the tool, not a finding about the page.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.