Skills/llms.txtv2.1.0

Add an llms.txt that cannot go stale, with your agent

Adds a /llms.txt to a site, a plain text outline for AI assistants built from the site’s own pages and facts, with tests that catch a missing page, and checks it with clickd.

Add it, from the top of the site’s repositorynpx skills add subinternal/clickd --skill clickd-llms-txt
Then ask your agentAdd an llms.txt to this site from our sitemap, with a test that fails when a page is missing.

For a site owner who wants assistants pointed at the right pagesCheck a site for llms.txt

The file, from what the site already says

Every fact and every line comes from the one place the pages read it, so the file changes when the site does. No new claims: if the site does not say it, the file does not either. It follows the llms.txt proposal. Its effect on AI visibility is unproven1,2, and the skill says so.

/llms.txt

A drainage business, from the skill’s worked example

Sample
  • Name and summaryconfig/site.json2 lines
  • Phone, hours, area servedThe footer’s dataFrom the site
  • What assistants get wrongAsked of the ownerNotes
  • Every pagesitemap.xml, less the home page9 links
  • Titles and descriptionsEach page’s own, never rewritten9 of 9
/llms.txt, served as text/plain
# Hollow Creek Drainage

> Hollow Creek Drainage installs french drains, dry wells and sump pumps for homes in St. Louis and St. Charles counties, Missouri. It is a family business with its own crews.

- Phone: (314) 555-0100
- Email: [email protected]
- Based in: St. Louis, Missouri
- Service area: St. Louis County and St. Charles County
- Hours: Monday to Friday, 7 am to 5 pm
- Quotes: free, on site, booked at https://example.com/contact

Notes for assistants:

- Prices are quoted per job after a visit. The guides give typical ranges, not prices.
- "Yard drain" and "french drain" mean the same service here.
- It does not do waterproofing inside basements.

## Services

- [French drain installation](https://example.com/services/french-drains): Trenches with fabric, gravel and pipe that carry water away from a yard or a foundation.
- [Dry wells](https://example.com/services/dry-wells): Underground pits that take water from downspouts and let it soak away.
- [Sump pumps](https://example.com/services/sump-pumps): New pumps and replacements, with battery backups.

## Guides

- [How deep should a french drain be?](https://example.com/guides/french-drain-depth): Depth, width and slope for a yard drain, and when to go deeper.
- [French drain or dry well](https://example.com/guides/french-drain-or-dry-well): Which one fits the water you have, compared.

## Areas served

- [St. Louis County](https://example.com/areas/st-louis-county): Towns served, with the work done in each. Also [Kirkwood](https://example.com/areas/kirkwood) and [Webster Groves](https://example.com/areas/webster-groves).
- [St. Charles County](https://example.com/areas/st-charles-county): Towns served, with the work done in each.

## Company

- [About](https://example.com/about): Who runs the business, its licenses and since when.
- [Contact](https://example.com/contact): Phone, email, hours and the quote form.

Six tests that keep it true

Added to the site’s own test suite. The second is the one that catches a page someone forgot.

A page added, the file not rebuilt

The test run the day someone adds a gutter guards page.

Sample
  • The file starts with # Business name and a > summary.Passes
  • Every address in the sitemap appears in the file./services/gutter-guards is in the sitemap and not in llms.txtFails
  • The file has no HTML and no dashes used as punctuation, every link is an absolute https address on the site's own domain, and every ## section holds only links.Passes
  • The footer links to it.Passes
  • For a static file, the --check mode passes in the test suite.Passes
  • For an unbranded or white-label site, the operator's name and phone number do not appear.Not this site

Served one of two ways

Picked by how the site makes its pages. Either way: text/plain, status 200, no redirect, and never blocked in robots.txt.

Built on each request

When pages come from data: a route builds the file from that same data, so it cannot go stale. A network of sites gets one route that outlines whichever domain asked.

Next.js, Astro, WordPress, a plain server

Built into a file

When pages are written by hand: a command reads the sitemap, takes each page’s own title and description, and writes the file. Its check mode fails the tests when the file is out of date.

A static site generator, a public folder

When to reach for it

Reach for it when

  • clickd reports the llms-txt finding.
  • You want one plain outline of the site for any agent or assistant that asks.
  • You run several sites from one app and each needs its own file.

Leave it when

  • You expect it to move rankings or citations. No major assistant has said it reads the file.1
  • The site has no sitemap and no list of its pages yet: make that first.

Install it by hand

The line at the top adds it for any agent. Or fetch its 5 files where your agent looks. Your agent also needs clickd connected over MCP: connecting an agent shows how.

Loads skills from .claude/skills/ in the repository, for everyone who works in it, or ~/.claude/skills/ for every project on your machine. Claude uses it when a request matches its description, or type /clickd-llms-txt.

Terminal, for Claude Code
mkdir -p .claude/skills/clickd-llms-txt/references
curl -fsSL https://clickd.com/skills/llms-txt/SKILL.md -o .claude/skills/clickd-llms-txt/SKILL.md
curl -fsSL https://clickd.com/skills/llms-txt/references/example.md -o .claude/skills/clickd-llms-txt/references/example.md
curl -fsSL https://clickd.com/skills/llms-txt/references/format.md -o .claude/skills/clickd-llms-txt/references/format.md
curl -fsSL https://clickd.com/skills/llms-txt/references/stacks.md -o .claude/skills/clickd-llms-txt/references/stacks.md
curl -fsSL https://clickd.com/skills/llms-txt/references/verify.md -o .claude/skills/clickd-llms-txt/references/verify.md
PowerShell, for Claude Code
New-Item -ItemType Directory -Force .claude\skills\clickd-llms-txt\references | Out-Null
Invoke-WebRequest https://clickd.com/skills/llms-txt/SKILL.md -OutFile .claude\skills\clickd-llms-txt\SKILL.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/example.md -OutFile .claude\skills\clickd-llms-txt\references\example.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/format.md -OutFile .claude\skills\clickd-llms-txt\references\format.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/stacks.md -OutFile .claude\skills\clickd-llms-txt\references\stacks.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/verify.md -OutFile .claude\skills\clickd-llms-txt\references\verify.md -UseBasicParsing

Puts the files in .claude/skills/clickd-llms-txt/.

Loads skills from .agents/skills/ in the repository and its parent folders, or ~/.agents/skills/ for every project. Codex uses it when a task matches its description, or mention it as $clickd-llms-txt; /skills lists them.

Terminal, for Codex
mkdir -p .agents/skills/clickd-llms-txt/references
curl -fsSL https://clickd.com/skills/llms-txt/SKILL.md -o .agents/skills/clickd-llms-txt/SKILL.md
curl -fsSL https://clickd.com/skills/llms-txt/references/example.md -o .agents/skills/clickd-llms-txt/references/example.md
curl -fsSL https://clickd.com/skills/llms-txt/references/format.md -o .agents/skills/clickd-llms-txt/references/format.md
curl -fsSL https://clickd.com/skills/llms-txt/references/stacks.md -o .agents/skills/clickd-llms-txt/references/stacks.md
curl -fsSL https://clickd.com/skills/llms-txt/references/verify.md -o .agents/skills/clickd-llms-txt/references/verify.md
PowerShell, for Codex
New-Item -ItemType Directory -Force .agents\skills\clickd-llms-txt\references | Out-Null
Invoke-WebRequest https://clickd.com/skills/llms-txt/SKILL.md -OutFile .agents\skills\clickd-llms-txt\SKILL.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/example.md -OutFile .agents\skills\clickd-llms-txt\references\example.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/format.md -OutFile .agents\skills\clickd-llms-txt\references\format.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/stacks.md -OutFile .agents\skills\clickd-llms-txt\references\stacks.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/verify.md -OutFile .agents\skills\clickd-llms-txt\references\verify.md -UseBasicParsing

Puts the files in .agents/skills/clickd-llms-txt/.

Loads skills from .cursor/skills/ or .agents/skills/ in the repository, or ~/.cursor/skills/ for every project. It also reads .claude/skills/, so one copy there serves both. The agent uses it when it is relevant, or type / in Agent chat and pick it.

Terminal, for Cursor
mkdir -p .cursor/skills/clickd-llms-txt/references
curl -fsSL https://clickd.com/skills/llms-txt/SKILL.md -o .cursor/skills/clickd-llms-txt/SKILL.md
curl -fsSL https://clickd.com/skills/llms-txt/references/example.md -o .cursor/skills/clickd-llms-txt/references/example.md
curl -fsSL https://clickd.com/skills/llms-txt/references/format.md -o .cursor/skills/clickd-llms-txt/references/format.md
curl -fsSL https://clickd.com/skills/llms-txt/references/stacks.md -o .cursor/skills/clickd-llms-txt/references/stacks.md
curl -fsSL https://clickd.com/skills/llms-txt/references/verify.md -o .cursor/skills/clickd-llms-txt/references/verify.md
PowerShell, for Cursor
New-Item -ItemType Directory -Force .cursor\skills\clickd-llms-txt\references | Out-Null
Invoke-WebRequest https://clickd.com/skills/llms-txt/SKILL.md -OutFile .cursor\skills\clickd-llms-txt\SKILL.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/example.md -OutFile .cursor\skills\clickd-llms-txt\references\example.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/format.md -OutFile .cursor\skills\clickd-llms-txt\references\format.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/stacks.md -OutFile .cursor\skills\clickd-llms-txt\references\stacks.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/verify.md -OutFile .cursor\skills\clickd-llms-txt\references\verify.md -UseBasicParsing

Puts the files in .cursor/skills/clickd-llms-txt/.

An agent that does not load skills can still follow the file. Save the folder in the repository and point its standing instructions at it, with a line in AGENTS.md, which many agents read. The agent reads AGENTS.md when it starts, and follows the file when the task matches.

Terminal, for Any other agent
mkdir -p docs/clickd-llms-txt/references
curl -fsSL https://clickd.com/skills/llms-txt/SKILL.md -o docs/clickd-llms-txt/SKILL.md
curl -fsSL https://clickd.com/skills/llms-txt/references/example.md -o docs/clickd-llms-txt/references/example.md
curl -fsSL https://clickd.com/skills/llms-txt/references/format.md -o docs/clickd-llms-txt/references/format.md
curl -fsSL https://clickd.com/skills/llms-txt/references/stacks.md -o docs/clickd-llms-txt/references/stacks.md
curl -fsSL https://clickd.com/skills/llms-txt/references/verify.md -o docs/clickd-llms-txt/references/verify.md
echo "For adding llms.txt, follow docs/clickd-llms-txt/SKILL.md." >> AGENTS.md
PowerShell, for Any other agent
New-Item -ItemType Directory -Force docs\clickd-llms-txt\references | Out-Null
Invoke-WebRequest https://clickd.com/skills/llms-txt/SKILL.md -OutFile docs\clickd-llms-txt\SKILL.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/example.md -OutFile docs\clickd-llms-txt\references\example.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/format.md -OutFile docs\clickd-llms-txt\references\format.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/stacks.md -OutFile docs\clickd-llms-txt\references\stacks.md -UseBasicParsing
Invoke-WebRequest https://clickd.com/skills/llms-txt/references/verify.md -OutFile docs\clickd-llms-txt\references\verify.md -UseBasicParsing
Add-Content AGENTS.md "For adding llms.txt, follow docs/clickd-llms-txt/SKILL.md."

Puts the files in docs/clickd-llms-txt/.

What is inside

SKILL.md stays short and sends your agent to a reference when a step needs it.

  • SKILL.mdThe six steps from gathering the site’s facts to checking the live file, the file’s shape, its rules, two ways to serve it, the tests and the report.179 lines
  • references/example.mdA whole file for a sample business, a route that builds it from the site’s own data, and the test that catches a new page.91 lines
  • references/format.mdThe proposal’s exact parts in order, the mistakes that break them, a broken file and its fix, what to leave out, large sites split by section, Markdown twins and llms-full.txt.122 lines
  • references/stacks.mdBuilding and serving the file in Next.js, Astro, a static site generator, WordPress, a plain server, and a network of sites from one app, each from the data the pages use.174 lines
  • references/verify.mdThe tests as code, the live checks with what a pass and a fail look like, keeping the file in sync, and a table of symptoms, causes and fixes.123 lines

Version 2.1.0, October 31, 2026ChangesSKILL.md in fullSourcesAs data, in skills.json

Sources

20 pages

Each is in a ## Sources list in the file that cites it, by the page’s own title.

Google Search Central

  1. 1Optimizing your website for generative AI features on Google Search, Google Search Central. Google's word that its Search can ignore files like llms.txt, and that Google may still crawl and index such a file like any other.
  2. 2Latest documentation updates, Google Search Central. Google's note that the file neither helps nor hurts a site in Search, and is fine to keep for others.
  3. 3Manage Your Sitemaps With Sitemap Index Files, Google Search Central. How a sitemap index names other sitemaps, which the page test must follow.
  4. 4Robots Meta Tags Specifications, Google Search Central. The `X-Robots-Tag` header that keeps a non-HTML file, such as a Markdown twin, out of the index.
  5. 5How to Specify a Canonical with rel="canonical" and Other Methods, Google Search Central. The `rel="canonical"` HTTP header that points a Markdown twin at its HTML page.

Platforms

  1. 6Route Handlers, Vercel, on GitHub. Next.js route handlers, that `GET` is not cached by default, and `force-static` to build it once.
  2. 7route.js, Vercel, on GitHub. The non-UI response pattern, a folder named for the file with a `route.ts` inside.
  3. 8Endpoints, Astro Docs. Astro's static file endpoints, where `src/pages/llms.txt.ts` builds `/llms.txt`, called at build time on a static site and on request with a server.
  4. 9Content collections, Astro Docs. `getCollection()`, the same data an Astro site's pages are built from.
  5. 10add_rewrite_rule(), WordPress Developer Resources. How a WordPress plugin answers an address of its own, and that rules must be flushed after they change.
  6. 11flush_rewrite_rules(), WordPress Developer Resources. That flushing is expensive and belongs on activation, not on every request.
  7. 12WP_Sitemaps, WordPress Developer Resources. WordPress's own sitemap since 5.5, an index at `/wp-sitemap.xml`.
  8. 13llms.txt, Mintlify docs. One documentation platform's llms-full.txt, every page in one file, which is a platform's convention and not part of the proposal.

Standards and protocols

  1. 14The /llms.txt file, v2, llmstxt.org. The proposal the file's shape follows, its required H1, its file lists, subpath files, Markdown twins and link relations.
  2. 15llms.txt, Chrome for Developers. Lighthouse's agentic browsing audit, which flags a server error on the file and treats a missing file as not applicable.
  3. 16Link header, MDN Web Docs. The HTTP `Link` header, with the same meaning as an HTML `<link>`, for pointing a page at its Markdown twin and its llms.txt.

Agent skills format and clients

  1. 17Extend Claude with skills, Anthropic, Claude Code docs. Where Claude Code loads skills from, and how one is called.
  2. 18Build skills, OpenAI, ChatGPT Learn. Where Codex loads skills from, and how one is called.
  3. 19Agent Skills, Cursor docs. Where Cursor loads skills from, and how one is called.
  4. 20Specification, Agent Skills. The format every skill here keeps: the folder, the frontmatter and its limits.