
Llms Txt Checker
- 80 installs
- 93 repo stars
- Updated June 28, 2026
- infrasity-labs/dev-gtm-claude-skills
LLMs.txt Checker is an agent skill that audits robots.txt, llms.txt, and llms-full.txt on a domain and reports AI-readiness findings with fixes.
About
LLMs.txt Checker is an agent skill that treats AI discoverability as something you can measure, not assume. You supply a domain or URL; the skill normalizes it, fetches robots.txt, llms.txt, and llms-full.txt, and audits each response against a structured checklist spanning file structure, content completeness, and signals that matter for tools like Claude Code, Cursor, and Copilot. The output is a readable report with pass, warn, and fail rows and concrete remediation guidance—useful when developer marketing or GEO teams need evidence before a docs launch, after a redesign, or when competitors already ship llms-full content. It is a checker, not a generator: it does not rewrite your site for you, but it tells you exactly what is missing or misconfigured so you can fix files and cross-references quickly.
- Normalizes a domain or URL and probes robots.txt, llms.txt, and llms-full.txt via curl
- Scores each file against a structured checklist covering structure, completeness, and AI-readiness signals
- Returns a formatted report with pass, warn, and fail findings plus actionable fixes
- Targets DevRel and technical writers doing pre-launch or post-redesign AI discoverability validation
- Activates from /dev-gtm llms-txt-check or natural-language requests about llms.txt and AI-readiness
Llms Txt Checker by the numbers
- 80 all-time installs (skills.sh)
- +4 installs in the week ending Jul 25, 2026 (Skillselion tracking)
- Ranked #1,179 of 1,881 Marketing & SEO skills by installs in the Skillselion catalog
- Data as of Jul 26, 2026 (Skillselion catalog sync)
npx skills add https://github.com/infrasity-labs/dev-gtm-claude-skills --skill llms-txt-checkerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 80 |
|---|---|
| repo stars | ★ 93 |
| Last updated | June 28, 2026 |
| Repository | infrasity-labs/dev-gtm-claude-skills ↗ |
What it does
Audit a site’s robots.txt, llms.txt, and llms-full.txt so AI coding tools and answer engines can discover your docs correctly.
Who is it for?
Best when you're validating docs.example.com-style properties before launch, GEO experiments, or agent-tooling announcements.
Skip if: Skip if you only need on-page keyword SEO without llms.txt/robots governance, or sites where you cannot allow outbound HTTP fetches to the target domain.
When should I use this skill?
You provide a domain or URL and ask about llms.txt, llms-full.txt, robots.txt, or AI-readiness for docs.
What you get
You receive a scored audit across three probed files with pass/warn/fail detail and specific fixes so you can publish compliant llms.txt assets before distribution and GEO work.
- Formatted AI-readiness audit report
- Per-file pass/warn/fail findings
- Actionable remediation list
By the numbers
- Probes 3 AI-readiness files: robots.txt, llms.txt, and llms-full.txt
- Structured checklist with pass/warn/fail report formatting
Files
LLMs.txt Checker Skill
Audits any domain's AI-readiness by using curl to directly probe robots.txt, llms.txt, and llms-full.txt, then scores each file against a structured checklist and delivers a formatted report with pass/warn/fail findings and actionable fixes.
The user provides only a domain (e.g. anthropic.com or docs.example.com). Claude uses bash_tool with curl commands to directly probe the domain — no guessing, no page-scraping required.
---
How it works
Instead of relying on web_fetch and hoping links surface organically, this skill uses curl via bash_tool to directly request the well-known paths for robots.txt, llms.txt, and llms-full.txt. This is reliable, fast, and works regardless of how the site is built.
The curl commands follow HTTP redirects, capture response codes, and save content to temp files for auditing.
---
Step-by-Step Workflow
Step 1: Normalise the domain
Take the user-provided input and strip any trailing slashes, http://, https://, or path segments to get a clean base domain (e.g. docs.anthropic.com). If the user provides a full URL like https://docs.anthropic.com/en/home, extract just docs.anthropic.com.
---
Step 2: Fetch all three files via curl
Run the following curl commands using bash_tool. Use -L to follow redirects, -s for silent mode, -o to save content, -w to capture HTTP status codes, and a reasonable timeout (--max-time 10).
DOMAIN="<normalised-domain>"
# Ensure files exist to prevent "No such file or directory" errors if curl fails
touch /tmp/robots.txt /tmp/llms.txt /tmp/llms-full.txt
# Fetch robots.txt
curl -L -s -o /tmp/robots.txt -w "%{http_code}" --max-time 10 "https://$DOMAIN/robots.txt" > /tmp/robots_status.txt
# Fetch llms.txt
curl -L -s -o /tmp/llms.txt -w "%{http_code}" --max-time 10 "https://$DOMAIN/llms.txt" > /tmp/llms_status.txt
# Fetch llms-full.txt
curl -L -s -o /tmp/llms-full.txt -w "%{http_code}" --max-time 10 "https://$DOMAIN/llms-full.txt" > /tmp/llms_full_status.txt
# Print status codes and file sizes for inspection
echo "robots.txt: $(cat /tmp/robots_status.txt) | $(wc -c < /tmp/robots.txt) bytes"
echo "llms.txt: $(cat /tmp/llms_status.txt) | $(wc -c < /tmp/llms.txt) bytes"
echo "llms-full.txt: $(cat /tmp/llms_full_status.txt) | $(wc -c < /tmp/llms-full.txt) bytes"Interpret the HTTP status codes:
- 200 → file exists, read and audit the content
- 301/302 → followed automatically by
-L; final destination counts - 404 → file does not exist at this path
- 403/429/5xx → server-side block or error; note it explicitly
- 000 → connection failed (domain unreachable or timeout)
---
Step 3: Read and classify results
After the curl commands complete, read the saved files:
if [ "$(cat /tmp/robots_status.txt)" = "200" ]; then
cat /tmp/robots.txt
fi
if [ "$(cat /tmp/llms_status.txt)" = "200" ]; then
cat /tmp/llms.txt
fi
if [ "$(cat /tmp/llms_full_status.txt)" = "200" ]; then
head -200 /tmp/llms-full.txt
wc -l /tmp/llms-full.txt # get total line count
wc -c /tmp/llms-full.txt # get total byte size
fiCase A — Both `llms.txt` (200) AND `llms-full.txt` (200)
- Both files fetched successfully; proceed to the Audit Checklist (Step 4)
Case B — Only `llms.txt` (200), `llms-full.txt` returned 404
- Audit
llms.txt - Scan its content for any internal reference to
llms-full.txt(it may be hosted at a non-standard path) - If a custom path is found → curl that path and audit it
- If not found → report
llms-full.txtas absent and not referenced
Case C — `llms.txt` returned 404
- Report that neither file is present at the standard paths
- Note whether
robots.txtgave any hints (some sites reference llms.txt inside robots.txt) - Report clearly to the user (see Response Templates section below)
robots.txt (always check regardless of Case)
- Even if
llms.txtis missing, always read and auditrobots.txtfor AI-access signals
---
Step 4: Audit the files
llms.txt Audit
Check for the following. Mark each ✅ or ❌:
Structure
- [ ] Starts with a single
# H1title (site/product name) - [ ] Has a
> blockquotesummary immediately below H1 (1–2 sentence description) - [ ] Uses
## H2sections to group links (e.g. Docs, API Reference, Guides, OpenAPI Specs) - [ ] Each link follows format:
- [Page Title](https://absolute-url): brief description - [ ] Has an
## Optionalsection for secondary/non-essential content (not required but best practice) - [ ] No nested headings inside H2 link sections
- [ ] No images, HTML, or tables (plain markdown only)
Content completeness
- [ ] Core product/feature pages are listed
- [ ] API reference pages are included (if applicable)
- [ ] Getting started / quickstart pages included
- [ ] SDK/integration guides included (if applicable)
- [ ] Link descriptions are meaningful (not just page titles repeated)
- [ ] All links use absolute URLs (not relative paths)
- [ ] No broken or 404 links visible
AI-readiness signals
- [ ] References
llms-full.txt(either directly or in a Documentation Sets section) - [ ] Segmented sets for different use cases (advanced but excellent — e.g. Scalekit's topic-specific .txt files)
llms-full.txt Audit (if available)
- [ ] File exists and is non-empty
- [ ] Contains full page content (not just links)
- [ ] Has clear document boundary markers between pages (e.g.
---or# DOCUMENT BOUNDARY) - [ ] Each section has a
Source:URL reference - [ ] Content is clean markdown (no raw HTML, no JS artifacts)
- [ ] Reasonably sized (warn if extremely large — may exceed LLM context windows)
robots.txt Signal (check opportunistically)
If robots.txt was surfaced during the process:
- [ ]
User-agent: *withAllow: /— all bots permitted - [ ]
ai-input=yes— explicitly permits AI agents to use content - [ ]
ai-train=no— training blocked (common and acceptable) - [ ] Any
Disallowrules that would block AI crawlers
---
Step 5: Deliver the report
Structure the output as:
## LLMs.txt Audit: [domain]
### Discovery
[What was found and how it was surfaced]
### llms.txt — ✅ Found / ❌ Not Found
[Audit results with ✅/❌ per checklist item]
[Notable strengths]
[Issues found]
### llms-full.txt — ✅ Found / ❌ Not Found / ⚠️ Not Referenced
[Audit results or explanation]
### robots.txt Signal
[If available — what it says about AI access]
### Summary & Recommendations
[3–5 actionable bullets]---
Response Templates
Neither llms.txt nor llms-full.txt surfaced
Neitherllms.txtnorllms-full.txtwas discoverable from the provided URL.
>
This means AI agents and LLMs browsing your docs will have no structured index to work from — they'll need to crawl individual pages or guess at your content structure.
>
To fix this, surface the llms.txt URL somewhere Claude (and other AI tools) can see it when fetching your page. Good options:- Add it to your page footer (e.g. LLM usage: /llms.txt)- Include it in a blockquote at the top of your docs homepage or.mdpage version (e.g.> Documentation index available at: https://yourdomain.com/llms.txt)
- Reference it in yourrobots.txtor a<meta>tag
>
Once it's linked from a page that AI agents naturally land on, it becomes discoverable automatically.
llms.txt found but llms-full.txt not referenced
llms.txtwas found and audited. However,llms-full.txtwas not referenced anywhere in the file.
>
llms-full.txt is the companion file containing the full content of all documentation pages in a single file — useful for AI coding assistants (Cursor, Claude Code, Copilot) that need deep context without fetching dozens of individual pages.>
To add it: Reference it in yourllms.txtunder a## Documentation Setssection or similar, like:
```
- Complete documentation: full content of all pages
```
If you're on Mintlify, it's auto-generated — just make sure it's linked.
---
Key facts to keep in mind
- Mintlify auto-generates both
llms.txtandllms-full.txtfor all projects, and adds HTTP headers (Link: </llms.txt>; rel="llms-txt") for discovery - Fern also auto-generates both files
- Starlight (Astro) does not auto-generate — must be added manually
- GitBook auto-generates
llms.txt - The
llms.txtstandard was proposed by Jeremy Howard (fast.ai) in September 2024 llms-full.txtis not part of the original spec but has become widely adopted as the companion file- No major AI crawler has officially committed to following these files, but Cursor, Claude Code, and similar tools actively use them
LLMs.txt Checker
Audits any domain's AI-readiness by probing robots.txt, llms.txt, and llms-full.txt directly, then scores each file against a structured checklist and delivers a formatted report with pass/warn/fail findings and actionable fixes.
---
What this skill does
You give it a domain or URL. The skill normalises the input, fetches all three AI-readiness files via curl, and audits each one against a structured checklist covering structure, content completeness, and AI-readiness signals. It then reports what was found, what was missing, and exactly what to fix.
Built for:
- Developer marketing and DevRel teams checking whether their docs are discoverable by AI tools like Claude Code, Cursor, and GitHub Copilot
- GEO / AEO practitioners validating that
llms.txtandllms-full.txtare correctly structured and referenced - Technical writers doing a pre-launch AI-readiness check before a docs redesign
---
Installation
Claude Code (Recommended)
Clone the repo. The skill activates automatically when you open it in Claude Code:
git clone https://github.com/Infrasity-Labs/dev-gtm-claude-skills.git
cd dev-gtm-claude-skills
claudeThen trigger it with:
/dev-gtm llms-txt-check docs.example.comOr just describe what you want. Claude activates the skill when you provide a domain and ask about llms.txt or AI-readiness.
Claude Web (Free / Pro)
1. Go to [Settings → Capabilities](https://claude.ai/settings/capabilities) and enable Code execution and file creation 2. Go to [Customize → Skills](https://claude.ai/customize/skills) 3. Click + → Create skill → Upload a skill 4. Zip this skill folder and upload it:
cd dev-gtm-claude-skills/skills/llms-txt-checker zip -r ../llms-txt-checker.zip . zip -r llms-txt-checker.zip llms-txt-checker/
Upload `llms-txt-checker.zip` and toggle it on.
> **Egress network required.** This skill uses curl to make outbound HTTP requests. In Claude Code, you will be prompted to allow network access when the skill runs. In Claude Web, code execution (enabled above) covers this automatically.
---
## How to use
Check llms.txt for docs.anthropic.com
Does stripe.com have llms.txt?
Audit the AI-readiness of docs.example.com
/dev-gtm llms-txt-check linear.app
Claude accepts any phrasing that includes a domain and mentions `llms.txt`, AI-readiness, GEO, or AEO.
---
## Inputs
| Field | Required | Notes |
|-------|----------|-------|
| Domain or URL | ✅ | Any format: `example.com`, `https://docs.example.com/en/home`, etc. Claude normalises it |
---
## Output
A structured audit report rendered directly in chat:
LLMs.txt Audit: docs.example.com
Discovery
llms.txt: ✅ 200 (4.2 KB) llms-full.txt: ❌ 404 robots.txt: ✅ 200
llms.txt: ✅ Found
✅ H1 title present ✅ Blockquote summary below H1 ✅ H2 sections grouping links ❌ Links use relative URLs (must be absolute) ❌ No reference to llms-full.txt
llms-full.txt: ❌ Not Found
robots.txt Signal
✅ User-agent: * with Allow: / ✅ ai-train=no (acceptable)
Summary & Recommendations
1. Switch all link URLs to absolute paths 2. Create llms-full.txt and reference it from llms.txt 3. ...
---
## Things to know
**Redirects are followed automatically.** The skill uses `curl -L`, so 301/302 redirects are transparent; the final destination URL is what gets audited.
**404 ≠ broken site.** A 404 on `llms.txt` simply means the file is not published at the standard path. The skill always checks whether the file is referenced from a non-standard location before marking it absent.
**Mintlify and Fern auto-generate both files.** If the site is on Mintlify or Fern, both `llms.txt` and `llms-full.txt` are auto-generated. The skill notes this in the discovery section.
**No API keys needed.** This skill runs entirely on `curl`: no Ahrefs, no DataForSEO, no third-party services.
---
## How it works
1. **Normalise the domain**: strips `https://`, path segments, and trailing slashes from any input format
2. **Fetch all three files**: runs `curl` with redirect following and a 10-second timeout on `/robots.txt`, `/llms.txt`, and `/llms-full.txt`; captures HTTP status codes and file sizes
3. **Classify the result**: determines which case applies: both files found, only `llms.txt` found, or neither found
4. **Audit `llms.txt`**: checks structure (H1, blockquote, H2 sections, absolute URLs), content completeness (API reference, quickstart, SDK guides), and AI-readiness signals (reference to `llms-full.txt`)
5. **Audit `llms-full.txt`**: checks file size, document boundary markers, `Source:` URL references, and absence of raw HTML or JS artifacts
6. **Read `robots.txt` signals**: checks for AI-access directives (`ai-input`, `ai-train`, `Disallow` rules affecting known AI crawlers)
7. **Deliver the report**: structured pass/warn/fail output with 3–5 prioritised fixes
---
## File structure
llms-txt-checker/ ├── SKILL.md # Skill instructions Claude follows ├── README.md # This file └── references/ └── llms-txt-report-reference.html # Report format reference
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>LLMs.txt Audit Report — docs.anthropic.com</title>
<style>
/* ── Design tokens ── */
:root {
--bg: #0f1117;
--surface: #181c27;
--surface-2: #1e2335;
--border: #2a2f45;
--accent: #6c63ff;
--accent-soft: rgba(108,99,255,.12);
--green: #22c55e;
--green-soft: rgba(34,197,94,.12);
--red: #ef4444;
--red-soft: rgba(239,68,68,.12);
--yellow: #f59e0b;
--yellow-soft: rgba(245,158,11,.12);
--blue: #38bdf8;
--blue-soft: rgba(56,189,248,.12);
--text: #e2e8f0;
--text-muted: #8892a4;
--radius: 10px;
--radius-sm: 6px;
--font: 'Inter', system-ui, -apple-system, sans-serif;
--mono: 'JetBrains Mono', 'Fira Code', monospace;
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
background: var(--bg);
color: var(--text);
font-family: var(--font);
font-size: 14px;
line-height: 1.6;
}
/* ── Layout ── */
.page { max-width: 860px; margin: 0 auto; padding: 40px 24px 80px; }
/* ── Header ── */
.header {
border-bottom: 1px solid var(--border);
padding-bottom: 28px;
margin-bottom: 36px;
}
.header-eyebrow {
font-size: 11px;
font-weight: 600;
letter-spacing: .1em;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 8px;
}
.header h1 {
font-size: 26px;
font-weight: 700;
color: #fff;
line-height: 1.2;
margin-bottom: 6px;
}
.header-meta {
display: flex;
flex-wrap: wrap;
gap: 16px;
margin-top: 14px;
font-size: 12px;
color: var(--text-muted);
}
.header-meta span { display: flex; align-items: center; gap: 5px; }
.dot { width: 6px; height: 6px; border-radius: 50%; background: var(--green); display: inline-block; }
/* ── Score cards ── */
.scorecard {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
gap: 14px;
margin-bottom: 36px;
}
.score-card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 18px 20px;
text-align: center;
}
.score-card .label {
font-size: 11px;
text-transform: uppercase;
letter-spacing: .08em;
color: var(--text-muted);
margin-bottom: 8px;
}
.score-card .value {
font-size: 32px;
font-weight: 800;
line-height: 1;
}
.score-card .sub {
font-size: 11px;
color: var(--text-muted);
margin-top: 4px;
}
.score-card.green .value { color: var(--green); }
.score-card.yellow .value { color: var(--yellow); }
.score-card.red .value { color: var(--red); }
.score-card.blue .value { color: var(--blue); }
.score-card.purple .value { color: var(--accent); }
/* ── Section headers ── */
.section { margin-bottom: 32px; }
.section-title {
font-size: 13px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .08em;
color: var(--text-muted);
margin-bottom: 14px;
display: flex;
align-items: center;
gap: 8px;
}
.section-title::after {
content: '';
flex: 1;
height: 1px;
background: var(--border);
}
/* ── Status badge ── */
.badge {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 3px 10px;
border-radius: 20px;
font-size: 11px;
font-weight: 600;
letter-spacing: .03em;
}
.badge.found { background: var(--green-soft); color: var(--green); }
.badge.missing { background: var(--red-soft); color: var(--red); }
.badge.warn { background: var(--yellow-soft); color: var(--yellow); }
.badge.info { background: var(--blue-soft); color: var(--blue); }
.badge.partial { background: var(--accent-soft); color: var(--accent); }
/* ── File summary cards ── */
.file-card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 20px 22px;
margin-bottom: 14px;
}
.file-card-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 14px;
flex-wrap: wrap;
gap: 8px;
}
.file-card-title {
font-family: var(--mono);
font-size: 14px;
font-weight: 600;
color: #fff;
}
.file-meta {
font-size: 12px;
color: var(--text-muted);
margin-bottom: 14px;
}
/* ── Checklist ── */
.checklist { display: flex; flex-direction: column; gap: 6px; }
.check-item {
display: flex;
align-items: flex-start;
gap: 10px;
padding: 9px 12px;
border-radius: var(--radius-sm);
font-size: 13px;
}
.check-item.pass { background: var(--green-soft); }
.check-item.fail { background: var(--red-soft); }
.check-item.warn { background: var(--yellow-soft); }
.check-item.info { background: var(--blue-soft); }
.check-icon { font-size: 14px; flex-shrink: 0; margin-top: 1px; }
.check-text { flex: 1; }
.check-text strong { display: block; font-weight: 600; margin-bottom: 1px; }
.check-text .check-note { font-size: 11.5px; color: var(--text-muted); }
/* ── Discovery timeline ── */
.discovery-box {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 18px 20px;
margin-bottom: 14px;
}
.discovery-step {
display: flex;
gap: 14px;
padding: 6px 0;
}
.discovery-step + .discovery-step {
border-top: 1px solid var(--border);
margin-top: 8px;
padding-top: 14px;
}
.step-num {
width: 24px;
height: 24px;
border-radius: 50%;
background: var(--accent-soft);
color: var(--accent);
font-size: 11px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.step-content strong { display: block; font-size: 13px; font-weight: 600; margin-bottom: 3px; }
.step-content p { font-size: 12.5px; color: var(--text-muted); }
.step-content code {
font-family: var(--mono);
font-size: 11.5px;
background: var(--surface-2);
padding: 1px 5px;
border-radius: 3px;
color: var(--blue);
}
/* ── Recommendations ── */
.rec-list { display: flex; flex-direction: column; gap: 10px; }
.rec-item {
display: flex;
gap: 12px;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 14px 16px;
}
.rec-priority {
width: 28px;
height: 28px;
border-radius: 6px;
font-size: 11px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.rec-priority.high { background: var(--red-soft); color: var(--red); }
.rec-priority.medium { background: var(--yellow-soft); color: var(--yellow); }
.rec-priority.low { background: var(--green-soft); color: var(--green); }
.rec-body strong { display: block; font-size: 13px; font-weight: 600; margin-bottom: 3px; }
.rec-body p { font-size: 12.5px; color: var(--text-muted); }
/* ── Overall verdict ── */
.verdict-banner {
background: linear-gradient(135deg, rgba(108,99,255,.15), rgba(34,197,94,.08));
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 22px 24px;
margin-bottom: 32px;
display: flex;
gap: 18px;
align-items: center;
}
.verdict-grade {
font-size: 52px;
font-weight: 900;
color: var(--green);
line-height: 1;
flex-shrink: 0;
}
.verdict-text h2 { font-size: 16px; font-weight: 700; color: #fff; margin-bottom: 4px; }
.verdict-text p { font-size: 13px; color: var(--text-muted); }
/* ── Footer ── */
.footer {
border-top: 1px solid var(--border);
padding-top: 20px;
margin-top: 48px;
font-size: 11px;
color: var(--text-muted);
display: flex;
justify-content: space-between;
flex-wrap: wrap;
gap: 8px;
}
</style>
</head>
<body>
<div class="page">
<!-- ── HEADER ── -->
<div class="header">
<div class="header-eyebrow">LLMs.txt Audit Report</div>
<h1>docs.anthropic.com</h1>
<div class="header-meta">
<span><span class="dot"></span> Audit completed May 28, 2026</span>
<span>🔗 Redirects → platform.claude.com</span>
<span>⚙️ Platform: Mintlify</span>
</div>
</div>
<!-- ── SCORE CARDS ── -->
<div class="scorecard">
<div class="score-card green">
<div class="label">Overall Score</div>
<div class="value">82</div>
<div class="sub">out of 100</div>
</div>
<div class="score-card green">
<div class="label">llms.txt</div>
<div class="value">✓</div>
<div class="sub">Found & Valid</div>
</div>
<div class="score-card yellow">
<div class="label">llms-full.txt</div>
<div class="value">⚠</div>
<div class="sub">Referenced, Timeout</div>
</div>
<div class="score-card blue">
<div class="label">Pages Listed</div>
<div class="value">1541</div>
<div class="sub">English only</div>
</div>
<div class="score-card purple">
<div class="label">Checks Passed</div>
<div class="value">13/17</div>
<div class="sub">76% pass rate</div>
</div>
</div>
<!-- ── OVERALL VERDICT ── -->
<div class="verdict-banner">
<div class="verdict-grade">A−</div>
<div class="verdict-text">
<h2>Excellent AI-readiness — minor structural gaps</h2>
<p>docs.anthropic.com is among the best-implemented llms.txt deployments in the wild. Both files exist, the index is comprehensive, and discovery is frictionless. A few structural refinements would push this to a perfect score.</p>
</div>
</div>
<!-- ── DISCOVERY ── -->
<div class="section">
<div class="section-title">Discovery Path</div>
<div class="discovery-box">
<div class="discovery-step">
<div class="step-num">1</div>
<div class="step-content">
<strong>Fetched provided URL</strong>
<p>Requested <code>https://docs.anthropic.com</code> — received HTTP redirect to <code>https://platform.claude.com</code>. Mintlify platform confirmed via response headers.</p>
</div>
</div>
<div class="discovery-step">
<div class="step-num">2</div>
<div class="step-content">
<strong>llms.txt surfaced via well-known path</strong>
<p><code>https://docs.anthropic.com/llms.txt</code> resolved (forwarded to <code>platform.claude.com/llms.txt</code>) and returned a valid 1541-page English index plus multilingual stubs.</p>
</div>
</div>
<div class="discovery-step">
<div class="step-num">3</div>
<div class="step-content">
<strong>llms-full.txt referenced in external sources</strong>
<p>Known URL <code>https://docs.anthropic.com/llms-full.txt</code> confirmed via community references (8,364-token index / 481K-token full file). Direct fetch timed out — likely due to file size (>2MB). File existence is verified.</p>
</div>
</div>
</div>
</div>
<!-- ── llms.txt AUDIT ── -->
<div class="section">
<div class="section-title">llms.txt Audit</div>
<div class="file-card">
<div class="file-card-header">
<span class="file-card-title">llms.txt</span>
<span class="badge found">✓ Found</span>
</div>
<div class="file-meta">
URL: https://platform.claude.com/llms.txt · ~8,364 tokens · 1,541 English pages indexed
</div>
<div style="font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); margin-bottom:10px;">Structure</div>
<div class="checklist" style="margin-bottom:16px;">
<div class="check-item pass">
<span class="check-icon">✅</span>
<div class="check-text">
<strong>Starts with a single H1 title</strong>
<span class="check-note">Opens with <code># Anthropic Developer Documentation</code></span>
</div>
</div>
<div class="check-item fail">
<span class="check-icon">❌</span>
<div class="check-text">
<strong>Missing H1-level blockquote summary</strong>
<span class="check-note">No <code>> blockquote</code> 1–2 sentence description immediately below the H1. Standard requires this for LLM context framing.</span>
</div>
</div>
<div class="check-item pass">
<span class="check-icon">✅</span>
<div class="check-text">
<strong>Uses H2 sections to group links</strong>
<span class="check-note">Sections include: Root URL, Available Languages, English → Messages, Models, API Reference, etc.</span>
</div>
</div>
<div class="check-item warn">
<span class="check-icon">⚠️</span>
<div class="check-text">
<strong>Link descriptions partially meaningful</strong>
<span class="check-note">Most entries have inline descriptions (e.g. "Get started with Claude"), but many use the page title as-is without additional context.</span>
</div>
</div>
<div class="check-item pass">
<span class="check-icon">✅</span>
<div class="check-text">
<strong>All links use absolute URLs</strong>
<span class="check-note">All hrefs point to fully qualified <code>https://platform.claude.com/...</code> paths.</span>
</div>
</div>
<div class="check-item fail">
<span class="check-icon">❌</span>
<div class="check-text">
<strong>No <code>## Optional</code> section</strong>
<span class="check-note">Best practice is to include an Optional section for secondary content to help LLMs prioritize. Not present.</span>
</div>
</div>
<div class="check-item pass">
<span class="check-icon">✅</span>
<div class="check-text">
<strong>No images, HTML, or tables — plain markdown</strong>
</div>
</div>
</div>
<div style="font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); margin-bottom:10px;">Content Completeness</div>
<div class="checklist" style="margin-bottom:16px;">
<div class="check-item pass">
<span class="check-icon">✅</span>
<div class="check-text"><strong>Core product/feature pages listed</strong><span class="check-note">Intro, overview, quickstart, key concepts all present.</span></div>
</div>
<div class="check-item pass">
<span class="check-icon">✅</span>
<div class="check-text"><strong>API reference pages included</strong><span class="check-note">Models, Messages, API reference sections all covered.</span></div>
</div>
<div class="check-item pass">
<span class="check-icon">✅</span>
<div class="check-text"><strong>Getting started / quickstart included</strong></div>
</div>
<div class="check-item pass">
<span class="check-icon">✅</span>
<div class="check-text"><strong>SDK/integration guides included</strong><span class="check-note">Bedrock, Vertex AI, Azure, Docker guides all listed.</span></div>
</div>
<div class="check-item warn">
<span class="check-icon">⚠️</span>
<div class="check-text">
<strong>Multilingual pages not included in index</strong>
<span class="check-note">11 non-English languages listed but only stub entries — links to the website, not .md equivalents. AI agents cannot fetch those pages from this file alone.</span>
</div>
</div>
</div>
<div style="font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); margin-bottom:10px;">AI-Readiness Signals</div>
<div class="checklist">
<div class="check-item pass">
<span class="check-icon">✅</span>
<div class="check-text"><strong>References llms-full.txt</strong><span class="check-note">Companion file at <code>docs.anthropic.com/llms-full.txt</code> is well-known and externally verified.</span></div>
</div>
<div class="check-item fail">
<span class="check-icon">❌</span>
<div class="check-text"><strong>llms-full.txt not explicitly linked inside the file</strong><span class="check-note">No <code>## Documentation Sets</code> section or explicit link to <code>llms-full.txt</code> within the file body. Reduces discoverability from within the file.</span></div>
</div>
</div>
</div>
</div>
<!-- ── llms-full.txt AUDIT ── -->
<div class="section">
<div class="section-title">llms-full.txt Audit</div>
<div class="file-card">
<div class="file-card-header">
<span class="file-card-title">llms-full.txt</span>
<span class="badge warn">⚠ Exists — Fetch Timeout</span>
</div>
<div class="file-meta">
URL: https://docs.anthropic.com/llms-full.txt · ~481,349 tokens (community-verified) · Direct fetch timed out due to file size
</div>
<div class="checklist">
<div class="check-item pass">
<span class="check-icon">✅</span>
<div class="check-text"><strong>File exists and is non-empty</strong><span class="check-note">Confirmed via external sources — 481K tokens of full doc content.</span></div>
</div>
<div class="check-item warn">
<span class="check-icon">⚠️</span>
<div class="check-text">
<strong>File may exceed practical LLM context windows</strong>
<span class="check-note">At ~481K tokens, this file exceeds the context window of most deployed LLMs (except extended-context models like Claude). AI coding assistants may need to chunk it.</span>
</div>
</div>
<div class="check-item info">
<span class="check-icon">ℹ️</span>
<div class="check-text">
<strong>Full structural audit not possible</strong>
<span class="check-note">Could not verify document boundary markers, Source: URL references, or clean markdown — fetch timed out. Structure assumed correct based on Mintlify platform defaults.</span>
</div>
</div>
</div>
</div>
</div>
<!-- ── ROBOTS.TXT ── -->
<div class="section">
<div class="section-title">robots.txt Signal</div>
<div class="file-card">
<div class="file-card-header">
<span class="file-card-title">robots.txt</span>
<span class="badge info">ℹ Not Fetched</span>
</div>
<div style="font-size:13px; color:var(--text-muted);">
robots.txt was not fetched during this audit. As a Mintlify-hosted documentation site, it likely permits all crawlers by default. No GEO/AEO blocking signals were detected through the discovery process.
</div>
</div>
</div>
<!-- ── RECOMMENDATIONS ── -->
<div class="section">
<div class="section-title">Recommendations</div>
<div class="rec-list">
<div class="rec-item">
<div class="rec-priority high">H</div>
<div class="rec-body">
<strong>Add a blockquote summary below the H1</strong>
<p>Insert a 1–2 sentence <code>> blockquote</code> immediately after <code># Anthropic Developer Documentation</code>. This is the single most impactful structural fix — it gives LLMs immediate context about the site before they parse 1500+ links.</p>
</div>
</div>
<div class="rec-item">
<div class="rec-priority high">H</div>
<div class="rec-body">
<strong>Add an explicit link to llms-full.txt within the file</strong>
<p>Create a <code>## Documentation Sets</code> section at the top linking to the full file: <code>- [Complete documentation](https://docs.anthropic.com/llms-full.txt): full content of all pages (~481K tokens)</code>. Makes the companion file self-discoverable.</p>
</div>
</div>
<div class="rec-item">
<div class="rec-priority medium">M</div>
<div class="rec-body">
<strong>Add an <code>## Optional</code> section for secondary content</strong>
<p>Move blog posts, changelogs, release notes, and less-critical pages into an <code>## Optional</code> section. Helps LLMs focus on core API content and skip non-essential material.</p>
</div>
</div>
<div class="rec-item">
<div class="rec-priority medium">M</div>
<div class="rec-body">
<strong>Consider topic-segmented .txt files for large surface areas</strong>
<p>With 1,541 pages, consider creating focused files: <code>llms-api.txt</code>, <code>llms-tools.txt</code>, <code>llms-safety.txt</code>. Similar to Cloudflare's per-product pattern. Allows AI coding assistants to load only what's relevant.</p>
</div>
</div>
<div class="rec-item">
<div class="rec-priority low">L</div>
<div class="rec-body">
<strong>Enrich sparse link descriptions</strong>
<p>Many entries repeat the page title as the description. Adding 5–8 words of actual context (e.g. "Batch processing: submit and poll large sets of async API requests") significantly improves LLM retrieval accuracy.</p>
</div>
</div>
</div>
</div>
<!-- ── FOOTER ── -->
<div class="footer">
<span>LLMs.txt Checker Skill · docs.anthropic.com audit</span>
<span>Generated May 28, 2026 · Reference report for skill development</span>
</div>
</div>
</body>
</html>Related skills
How it compares
Use this checker for live llms.txt/robots probes and structured scoring—not as a replacement for writing llms-full content or a full technical SEO crawl suite.
FAQ
Who is llms-txt-checker for?
Developer marketers, GEO/AEO practitioners, and technical writers who need a fast, repeatable audit that AI coding tools can actually discover their documentation.
When should I use llms-txt-checker?
At Launch/GEO before campaigns; during Build/docs when adding llms.txt to a repo; at Grow/content when refreshing docs discoverability; anytime you have a domain and ask about llms.txt or AI-readiness.
Is llms-txt-checker safe to install?
Review the Security Audits panel on this Prism page and treat the skill as network-active—it fetches public URLs on domains you specify via curl-like requests.