llms-txt
Skill1 starsChanged 30 days agoMITView on GitHub
Generate and validate llms.txt and llms-full.txt for a website. Reads the sitemap and navigation, picks canonical evergreen pages, writes one-line descriptions from the pages' own content, and checks an existing file for dead links, redirects, duplicates and structure errors. Use when the user asks for an llms.txt, llms-full.txt, or to make a site readable for LLMs and AI agents.
13 other projects use a version of this.
Adopted by
Most recently taken up by
- 6t9xstar/one-step-seotheir own version, first seen Nov 8, 2026
- genericService/claude-skillstheir own version, first seen Nov 8, 2026
- akii-technologies-ltd/akii-seo-ai-search-optimizertheir own version, first seen Nov 1, 2026
- Anas660/claude-seo-desktheir own version, first seen Nov 1, 2026
- aelena/claude-skillstheir own version, first seen Oct 26, 2026
- jsath/claude-skillstheir own version, first seen Oct 13, 2026
Other versions13 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 13
- akii-technologies-ltd/akii-seo-ai-search-optimizer★ 79same name
- jsath/claude-skills★ 14same name
- littlebearapps/pitchdocs★ 8same name
- 6t9xstar/one-step-seo★ 5same name
- Anas660/claude-seo-desk★ 3same name
- AgentCTO/claude-skills★ 2same name
- jstanx/aeo-toolkit★ 2same name
- marcelo-earth/llms-txt-generator★ 2same name
- genericService/claude-skills★ 1same name
- howseen-ai/howseen-geo-skills★ 1same name
3 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository14 other files it gives its agents.
- ai-keyword-researchSkill
- ai-visibility-reportSkill
- answer-engine-contentSkill
- article-reviewSkill
- citation-sourcesSkill
- competitor-gapSkill
- content-briefSkill
- content-calendarSkill
- eraSkill
- geo-auditSkill
- on-page-seoSkill
- publish-to-siteSkill
- schema-markupSkill
- technical-seo-auditSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 6 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 13 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
Not for: whether AI crawlers can reach the site, or an overall AI-readiness score (geo-audit).
- Distinctive: line 50
Collect candidates: Read every URL from the sitemap, following sitemap index files.
- Very specific: line 51
Add the links from the home page header, footer and, for docs, the sidebar.
- Distinctive: line 56
Select pages: Keep a page only if it passes every test.
- Distinctive: line 69
Prefer hubs (a docs home, a pricing page, a products index) over every leaf.
- Distinctive: line 153
Every description is derived from the page.
- Distinctive: line 157
Do not overwrite the user's file.
- Distinctive: line 159
Do not promise ranking, citation or traffic gains.
“Common” is measured: kept by at least 6 in 10 of the 13 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
llms.txt
Produce a short, curated llms.txt (and, when asked, an llms-full.txt) that tells an AI
agent what a site is and which pages to read first, built from the site's real structure
and checked link by link. For an existing file, report what is wrong and give the fixed
version.
When to use
- "Create an llms.txt", "write llms-full.txt", "make our docs readable by AI agents".
- "Check / fix our llms.txt", or after a redesign or migration that moved URLs.
- A
geo-auditfinding saysllms.txtis missing or malformed.
Not for: whether AI crawlers can reach the site, or an overall AI-readiness score
(geo-audit); sitemap, robots and canonical problems found along the way
(technical-seo-audit); rewriting pages whose purpose cannot be described in one line
(answer-engine-content).
Set expectations once. llms.txt is a proposal published at llmstxt.org, not a
standard. At the time of writing, no major search or answer engine has documented that it reads the file to rank
or cite pages; it is read today by agents and developer tools that fetch documentation on
demand. Say so, then do the work: the file is cheap to produce and harmless to publish.
To test whether it matters on this site, check the server logs 30 days after publishing
for requests to /llms.txt from AI user-agents such as OAI-SearchBot, ChatGPT-User,
Claude-User, PerplexityBot and Perplexity-User.
Inputs
- Site URL — the origin, for example
https://example.com. Use the canonical host (the one the home page redirects to). - Mode — generate (no file yet), validate (a file exists), or both. Find out by
fetching
/llms.txt; do not ask the user what you can read. - Full file? — ask whether they want
llms-full.txt. Default: yes for documentation sites, no for marketing sites. - Priorities (optional) — sections that must be in, pages that must stay out, the language to cover if the site is multilingual.
Steps
- Fetch what exists.
GET /llms.txt,/llms-full.txt,/robots.txt(read theSitemap:lines) and the sitemap. For each file record status, final URL, content type and size. A200withtext/htmlfor/llms.txtmeans the server returns its app shell for unknown paths: treat the file as missing and say why. - Collect candidates. Read every URL from the sitemap, following sitemap index files.
Add the links from the home page header, footer and, for docs, the sidebar. With a
shell, run
scripts/llms_txt_skeleton.py <sitemap-url>: it prints a draft grouped by first path segment with titles and meta descriptions, and lists on stderr what it dropped and why. Without a shell, fetch the sitemap and the key pages with the web tool and build the same grouping by hand. The draft is raw material, not the answer. Select pages. Keep a page only if it passes every test; record the first test it fails for the exclusion table.
Test Exclude when Canonical it redirects, or its canonical points elsewhere Reachable status is not 200, or it needs a login Indexable noindexin the meta tag orX-Robots-TagEvergreen it is dated news, an expired event, a time-limited campaign Substantive fewer than about 150 words of unique content, or a pure listing Distinct another selected page covers the same question better Useful to an agent tag, author or archive pages, pagination, search, cart, thank-you Prefer hubs (a docs home, a pricing page, a products index) over every leaf. Prefer pages that state facts: limits, prices, specifications, definitions, procedures.
- Fetch the selected pages and read each one's title, H1, meta description and first
paragraph. Note duplicates: pages that share one
<title>or description (common on templated sites) need a description written from the body, and the duplication is a finding foron-page-seo. Write the file in this order, following
references/llms-txt-format.md:# Site name— the name the site uses for itself.> Summary— one to three sentences: what it is, who it is for, what the file covers. Facts only.- Optional free paragraph — only facts an agent would get wrong: current version, currency, API base URL, supported regions.
## Sectionsordered by importance, each item- [Page name](absolute-url): note.## Optionallast, for secondary material (blog hub, changelog, legal).
A note says what the reader will find, in at most about 160 characters, from the page's own words. No "comprehensive", "powerful", "best". If the page does not say what it is for, write the note from its H1 and first paragraph and flag the page.
- Markdown versions. For each selected URL, request
<url>.md. If it returns 200 with Markdown, link that instead and say so. If not, link the HTML page. Never invent a.mdURL. - Build
llms-full.txt(if asked). For each link in the main sections, in file order, fetch the page, keep the main content only, convert to Markdown, demote headings, and write a block: page title,Source:line, body, separator. Leave## Optionalout unless asked. Count characters and estimate tokens (characters / 4). Above about 200,000 tokens, split by section and link the split files fromllms.txt. - Validate the result with the checks V1–V16 in
references/llms-txt-format.md. Fetch every linked URL and confirm status, redirects and canonical. Fix and re-run until no error remains. For an existing file, run the same checks on it first and report them before showing the new version. - Placement and upkeep. The file goes at
/llms.txton the canonical host root, servedtext/plain; charset=utf-8(ortext/markdown), status 200, no redirect, not blocked inrobots.txt. Give the user the exact path or CMS step if the platform is known (a static file inpublic/, a route in the framework, a plugin setting). Recommend regenerating it from the sitemap in the build, or reviewing it whenever pages are added, removed or renamed; a quick check is that every listed URL is still in the sitemap.
Output
Generate mode:
llms.txt — {site}
Summary: {N} pages listed in {M} sections · {K} excluded · {W} words of notes
Existing file: none / present (see validation)
Verdict: {one sentence — e.g. "Ready to publish; 3 descriptions are inferred and marked."}Then, in this order:
- The file in a fenced
markdownblock, ready to paste, with no working notes inside it. List the entries whose note was inferred from thin content in a line under the block, so the user can check them. - Pages table — url · decision (included / excluded) · reason. Cover every URL the script or sitemap pass considered; group long exclusion runs (for example, 40 tag pages) into one row with the count.
- llms-full.txt (if built) — size in characters and estimated tokens, whether it was split, and the first block in a fenced block as a sample. Offer the full text as a file rather than pasting it.
- Placement — path, content type, and the check that confirms it is live
(
curl -sSI https://host/llms.txt).
Validate mode:
llms.txt validation — {site}
Verdict: valid / valid with warnings / broken
Errors {n} · Warnings {n} · Info {n}- Checks table — ID · check · result · evidence (the status code, the line, the URL) · fix. Only failing and warning checks get a row; list passing IDs in one line.
- Dead and redirected links — url · status · where it redirects · replacement from the sitemap, if one exists.
- Coverage — important sitemap pages missing from the file (pricing, docs hub, about) and listed pages missing from the sitemap.
- The corrected file in a fenced block, with a short list of what changed.
Guardrails
- Fetch only URLs the user gave, the sitemap lists, or that the pages themselves link to
within the same site. The only URLs you construct are
/llms.txt,/llms-full.txt,/robots.txtand<listed-url>.md. Never log in, submit forms or fetch gated pages. - Every description is derived from the page. Do not add features, prices, numbers or claims the page does not state.
- The file is public. Do not list staging hosts, admin paths, private documents or anything behind a login, and warn the user if the sitemap lists some.
- Do not overwrite the user's file. Produce the new content and the placement step; the user publishes it.
- Do not promise ranking, citation or traffic gains. The honest claim is "a curated map for agents that read it"; the test is the log check above.
- A listed URL is not protected or promoted by being listed, and an omitted one is not
blocked. Access control belongs in
robots.txtand server rules.
Era tools used
None. This skill works on public pages only and needs no Era account.
Hand-offs
geo-audit— whether AI crawlers can reach the site, and the wider AI-readiness score.technical-seo-audit— when validation finds sitemap, canonical or redirect problems that go beyond this file.answer-engine-content— for pages that cannot be summarised in one line because they never say what they are.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

