AI Readiness Auditor — validates the
/llms.txt file that guides AI agents through a site’s content.AI Readiness
Agents get a concise, structured map of the site instead of scraping HTML chrome.
Interoperability
The file follows llms.txt v2 so parsers and agents can read it with fixed markdown rules.
/llms.txt is a markdown file at the site origin that gives AI agents a short project summary and curated links to LLM-friendly pages. This auditor fetches origin /llms.txt (required) and /llms-full.txt (optional), then checks hosting headers and the v2 format: an H1 name, an optional blockquote, H2 file-list sections, and [name](url) links.
How it works
The auditor requests the origin files and then validates every HTTP 200 response:- Required file — GET
{origin}/llms.txt. If the file is missing or not available, the audit is aFAIL. An unreachable host is anERROR. - Optional full file — GET
{origin}/llms-full.txt. A missing or unreachable full file is ignored; when it returns HTTP 200, the same content-type and format rules apply. - Hosting — each present file must send
Content-Type: text/plain,text/markdown, ortext/x-markdown(parameters such as; charset=UTF-8are ignored). - Format — each present file is checked against llms.txt v2: a non-empty H1, a blockquote summary, H2 file-list sections, and markdown links under those sections.
- Specification pin — every run emits
37A-LlmsTxtAuditor-100(INFORMATION) naming llms.txt v2 (10 Aug 2026) and nbs/index.qmd commit6e55a65a7a4b541779dd0585f508717a6ea89a9e. That check does not change overall status.
FAIL; otherwise a missing blockquote, H2, or link list produces a WARNING; otherwise the audit is a SUCCESS. An optional BOM at the start of the file is stripped before parsing.
What it audits
Every row maps to onecheckRule* method and one CheckCode. Content-type and format rules run once per HTTP 200 file (/llms.txt and, when present, /llms-full.txt). 37A-LlmsTxtAuditor-100 is emitted on every run, including missing-file and fetch errors. CheckCode suffixes use status ranges: 100 information, 200 success, 300–399 warning, 400–499 fail, 500–599 error.
Output documentation
Risks and considerations
AI discoverability
- Without
/llms.txt, agents must scrape HTML (navigation, ads, JavaScript) and guess which pages matter, wasting context and missing the curated path through the site. - An empty or missing H1 leaves the file without the only required v2 section, so parsers that look for
# {name}treat the document as incomplete.
Agent interoperability
- Serving
/llms.txtastext/html(a common 404 or CMS page) causes clients that trustContent-Typeto skip or mis-parse the file. - H2 sections without
[name](url)links give agents headings but no files to fetch, so the overview cannot be followed on demand.
Optional full file
/llms-full.txtis a community convention, not part of v2. This auditor validates it only when it returns HTTP 200; a missing full file is not a finding.- v2 no longer gives
## Optionalmechanical meaning. Secondary links may still live under that heading by convention; their absence is not a finding.