claude-code/skills/llms-txt-creator/SKILL.md
Create or fix llms.txt and llms-full.txt files for a documentation project, following the llmstxt.org specification. Use this skill whenever someone needs to create an llms.txt file, generate a full documentation text dump (llms-full.txt), or fix a malformed llms.txt. Also use when optimizing a docs site for AI crawlers, when setting up AI discoverability files, or when the user mentions making their docs readable by LLMs, ChatGPT, Perplexity, or other AI systems.
npx skillsauth add kubical-ai/aeo-geo-optimization llms-txt-creatorInstall 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.
Creates spec-compliant llms.txt and llms-full.txt files for documentation projects.
Read
references/llms-txt-spec.mdfor the full specification, format details, and directory submission information.
Explore the docs project to gather:
src/content/, src/pages/, docs/) to understand sections and hierarchyFormat requirements (see references/llms-txt-spec.md for full spec):
# [Project Name]
> [One-paragraph description of what the project is, who it's for, and what the docs cover. Should be 2-4 sentences.]
## [Section Name]
- [Link text](https://full-url/path): Brief 5-10 word description
- [Link text](https://full-url/path): Brief description
## [Section Name]
...
Curation guidelines:
: Description after each linkWhere to place it:
public/llms.txtstatic/llms.txtValidate before saving:
>) ✓Option A — Build script (recommended for maintained docs):
Create scripts/generate-llms-full.js (or .mjs):
import { glob } from 'glob';
import { readFile, writeFile } from 'fs/promises';
import matter from 'gray-matter';
import path from 'path';
const SITE_URL = 'https://YOUR_SITE_URL'; // update this
const CONTENT_DIR = 'src/content'; // update this
const files = (await glob(`${CONTENT_DIR}/**/*.{md,mdx}`)).sort();
const parts = [
`# [Project Name] — Full Documentation`,
`Generated: ${new Date().toISOString()}`,
`Source: ${SITE_URL}`,
`Pages: ${files.length}`,
'',
];
for (const file of files) {
const raw = await readFile(file, 'utf8');
const { data: fm, content } = matter(raw);
const title = fm.title || path.basename(file, path.extname(file));
const slug = file
.replace(CONTENT_DIR, '')
.replace(/\.(md|mdx)$/, '')
.replace(/\/index$/, '');
parts.push('---');
parts.push(`# ${title}`);
parts.push(`URL: ${SITE_URL}${slug}`);
parts.push('');
parts.push(content.trim());
parts.push('');
}
await writeFile('public/llms-full.txt', parts.join('\n'));
console.log(`✓ Generated llms-full.txt (${files.length} pages)`);
Add to package.json scripts:
{
"scripts": {
"build": "node scripts/generate-llms-full.mjs && [existing build command]"
}
}
Option B — Static generation (for projects without a build pipeline):
Manually concatenate the 10-20 most important pages into a single file using the format above.
For llms.txt:
For llms-full.txt:
Tell the user:
> summaryhttps:// URLs always/llms.txt, not /docs/llms.txtdocumentation
Create llms.txt and llms-full.txt files following the llmstxt.org spec. Use when setting up AI discoverability files for a docs site.
tools
Create AI editor context files (.cursorrules, CLAUDE.md, Copilot instructions) for a project. Use when setting up AI coding tool integration.
development
Submit your site to llms.txt directories and build backlinks from AI-indexed sources. Use to improve visibility in AI search results.
testing
Audit and optimize a docs site for AI citation. Scans 29 AEO/GEO signals, plans fixes, and implements them with approval at each step.