source/skills/llmstxt/SKILL.md
Generate or audit an `/llms.txt` file at the site root that makes the site legible to LLMs and AI answer engines at inference time, following the llms.txt proposal (Jeremy Howard, 2024). Use this skill whenever the user asks to "build llms.txt", "create llms.txt", "generate llms.txt", "audit llms.txt", "make my site LLM-friendly", "expose the site to AI assistants", "let ChatGPT / Claude / Perplexity cite my site", "add an AI assistants index", or asks about `.md` companion pages for LLM consumption. Output is a valid `llms.txt` file (or an audit) plus optional `.md` companion page generation for top pages.
npx skillsauth add zhizdev/overgrow llmstxtInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Produces a properly-formatted /llms.txt at the project's static root — a curated, LLM-legible map of the site that AI assistants pull in at inference time to answer questions about the product, docs, or content. Complements sitemap.xml (crawler index) and robots.txt (access rules); does not replace them.
Read knowledge/llms-txt.md from the plugin root before doing anything. That file is the authoritative, rule-by-rule distilled spec. Follow it exactly — format order, link list shape, section taxonomy, companion .md page conventions, quality guidelines, audit checklist. This SKILL.md is the entry-point summary; knowledge/llms-txt.md is the source of truth.
Also read:
knowledge/geo.md for AI-answer-engine behavior and why entity clarity matters in the summary block.knowledge/sitemap.md for the static-root conventions this file must share with sitemap.xml..overgrow/inventory.md. If missing, run init first — the inventory is how this skill decides which pages to surface.$ARGUMENTS:
audit → audit an existing /llms.txt (and companion .md pages if present).build → generate a new one.https://example.com → use as the canonical origin.llms.txt already exists in the repo, default to audit; otherwise default to build. If the project's intent is unclear, {{ask_instruction}}public/llms.txt, static/llms.txt, app/llms.txt, framework-generated routes (app/llms.txt/route.ts). If the project serves from a CMS, ask for the deployed URL.knowledge/llms-txt.md § "Audit checklist":
## Optional.- [Title](url): description (description optional but flag missing ones).Optional H2 is last if present..md pages exist (routes like /about.md, /pricing.md, /docs/intro.md), spot-check 5 random ones:
.overgrow/llmstxt-audit.md with severity-tagged findings and specific fixes, matching the format of .overgrow/audit.md..overgrow/inventory.md, extract:
knowledge/llms-txt.md taxonomy below).knowledge/llms-txt.md § "Common H2 sections" — pick only the sections that match what the site actually has. Typical mapping from the inventory:
homepage, pricing, product → ## Core platformfeature → ## Features (or fold into Core platform if only 1–3)solution → ## Solutions or ## Use casesdocs → ## Docsresource-hub + top blog-post entries → ## Blog — selected postscase-study → ## Case studies (or fold into Blog)about, legal → do not include unless specifically relevant; about may go under ## Optionalcomparison → include under the relevant product section or a dedicated ## Comparisonsutility → exclude## Optional or is omitted.llms.txt wants. Use neutral, descriptive phrasing..md companion URLs when they exist in the project (check the inventory for pageName.md variants or a framework convention that auto-generates them, like nbdev / Docusaurus-plugin-llms / vitepress-plugin-llms).## Instructions for AI assistants section if the product has:
## Localization section listing one canonical page per locale.## Optional.public/llms.txt (Next.js, Vite, Gatsby, Astro static, Create React App)static/llms.txt (SvelteKit, Hugo, Docusaurus)app/llms.txt/route.ts (Next.js app router, dynamic)
Detect which convention the project uses from the framework hint in the inventory. If existing file, propose llms.txt.proposed and ask before overwriting..md page modeIf the user explicitly asks to generate .md companion pages (argument: build --with-md or a follow-up ask):
llms.txt link list, compute its .md sibling URL (/about → /about.md, / → /index.html.md)..md file next to its source page or at the route the framework expects.llms.txt — companion page generation is opt-in and targeted.llms.txtFollow this exact structure (per knowledge/llms-txt.md):
# <Product name>
> <One-to-three-sentence neutral summary. What it is, who uses it, primary capabilities.>
<Optional short paragraph or bullet list of framing notes — caveats, what's out of scope, how the linked files are organized. No headings.>
## <Section name>
- [Page title](<url or .md url>): <one-line description>
- [Page title](<url>): <one-line description>
## <Another section>
- ...
## Instructions for AI assistants
- <factual positioning bullet>
- <disambiguation bullet>
- <entry-point bullet>
## Optional
- [Secondary page](<url>): <description>
.overgrow/inventory.md or be an explicit external reference the user supplied. Never invent routes.Optional section is always last if present.industry-leading, revolutionary, world-class, cutting-edge). If the inventory's product summary contains them, strip them when lifting into the blockquote.## Optional or omit.llms.txt analogous to Search Console.robots.txt or sitemap.xml — use /overgrow:sitemap for those..md pages by default. Ask explicitly with build --with-md or a follow-up request.tools
Pull the open Bonemeal action queue (landing pages and blog posts the user has not built yet) via the bonemeal MCP server, let the user pick which ones to build, dispatch each to the spawn-pages or spawn-blogs skill with the action's brief, and mark each completed in Bonemeal once the file is written. Use this whenever the user says "grow", "/grow", "build my Bonemeal queue", "what's in my Bonemeal queue", "build the suggested pages", or wants to act on Bonemeal's content suggestions. Stop and ask the user before marking actions complete the first time, then remember their preference.
development
Given the product offering and existing page inventory, create new core landing and resource pages (homepage refresh, features, solutions, pricing, comparison, resource hubs, about) that capture core product intent using the query-fanout pattern. Use this skill whenever the user asks to "spawn pages", "generate landing pages", "create marketing pages", "build a pricing page", "add a solutions page", "build out the site", "fill in missing pages", or wants new top-level marketing/product pages. Output is one new page per route in the project's native file format (component or markdown), matching the existing page style and framework idiom.
development
Examine every existing page on the site, build a semantic map across pillars, and add missing internal links so the site becomes a semantic graph anchored on clear topical pillars. Use this skill whenever the user asks to "add internal links", "build internal linking", "build a semantic graph", "link related pages", "strengthen topical authority", "fix orphan pages", "add pillar linking", or wants hub-and-spoke linking between pillars, hubs, and supporting content. Output is an edit list (proposed link insertions) plus optionally direct edits to page source files.
development
Given the product and the existing page inventory, identify missing blog topics and generate new blog posts that capture search/AI intent using the query-fanout pattern. Use this skill whenever the user asks to "spawn blogs", "generate blog posts", "expand the blog", "build out a content cluster", "write blog ideas", "cover more search intents", "query fanout for blogs", or wants new long-form content that supports existing pillars. Output is one new post per topic in the project's existing post format (markdown, MDX, component, or CMS migration note), with frontmatter shape mirrored from an existing post.