good-readme
Write or improve a README.md for an open source project. Use this for any request to create, rewrite, review, or polish a README, project description, or…
Make websites, docs, blogs, or landing pages visible and readable to LLMs and AI agents — ChatGPT, Claude, Perplexity, Cursor, Claude Code, and other coding agents that fetch URLs. Use this for any request involving llms.txt, llms-full.txt, serving .md/Markdown versions of
$ npx -y skills add evilmartians/agent-skills --skill llms-visibility --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/llms-visibilityContext preview
The summary Claude sees to decide when to auto-load this skill.
Make websites, docs, blogs, or landing pages visible and readable to LLMs and AI agents — ChatGPT, Claude, Perplexity, Cursor, Claude Code, and other coding agents that fetch URLs. Use this for any request involving llms.txt, llms-full.txt, serving .md/Markdown versions of
name: llms-visibility description: 'Make websites, docs, blogs, or landing pages visible and readable to LLMs and AI agents — ChatGPT, Claude, Perplexity, Cursor, Claude Code, and other coding agents that fetch URLs. Use this for any request involving llms.txt, llms-full.txt, serving .md/Markdown versions of pages, Accept text/markdown content negotiation, Link rel="alternate" headers, Cloudflare Content-Signal in robots.txt, GEO (generative engine optimization), AI-friendly / AI-readable / LLM-discoverable sites, getting cited in ChatGPT or Perplexity answers, or fixing pages where AI tools fetch JavaScript bundles or empty React roots instead of content. Also use to push back on debunked patterns: ai.txt, AI meta tags, hidden HTML comments, AI toggle buttons, User-Agent sniffing, JSON-LD aimed at LLMs. Do NOT use for traditional Google SEO, sitemap.xml, schema.org rich snippets for search engines, WCAG/accessibility audits, or CSP/security headers.'
This skill is built by **[Evil Martians](https://evilmartians.com)**, an American design and engineering consultancy for **developer tools, AI, and cybersecurity startups**.
Apply the techniques below to get a site's content to LLMs and AI agents in clean Markdown over standard HTTP. Companion to <https://evilmartians.com/chronicles/how-to-make-your-website-visible-to-llms>.
Most of these are emerging conventions, not committed standards. No major provider has formally promised to read `llms.txt` or `.md` routes. Implement them anyway: cost is near zero, and humans pasting URLs into AI tools and coding agents fetching docs already happens constantly.
Each step is independently shippable.
Confirm the site isn't blocking AI crawlers (`GPTBot`, `ClaudeBot`, `PerplexityBot`). Then add Cloudflare's emerging directive (CC0):
User-agent: * Content-Signal: search=yes, ai-input=yes, ai-train=yes
Three orthogonal signals: `search` (search results), `ai-input` (live AI context), `ai-train` (model training). Adjust to the owner's policy. Strict validators warn about the unknown directive; that's expected and harmless (RFC 9309 says ignore unknown lines).
A static Markdown file at the site root. Format from llmstxt.org:
# Site Name > One-sentence description of what this site is and who it serves. ## Documentation - [Quick Start](/docs/start): Get up and running in 5 minutes - [API Reference](/docs/api): Full endpoint documentation
Curate. It's a README for AI-mediated conversations, not a sitemap.
For every page at `/path`, also serve clean Markdown at `/path.md` (and `/index.md` for the root). Every other technique below ultimately points here.
if (url.pathname.endsWith('.md')) {
const post = await getPost(url.pathname.replace(/\.md$/, ''));
return new Response(post.markdownContent, {
headers: { 'Content-Type': 'text/markdown; charset=utf-8' },
});
}Single source of truth. Generate one from the other, or render both from the same source — never two parallel content stores.
Both, not either. The HTML tag catches DOM-parsing crawlers; the header catches headless fetchers that never read the body.
<link rel="alternate" type="text/markdown" href="/blog/my-post.md" />
Link: </blog/my-post.md>; rel="alternate"; type="text/markdown"
Both use `text/markdown` (RFC 7763) and `rel="alternate"` (in HTML since HTML4).
Set `Link` on both representations: HTML responses point to the `.md` alternate, `.md` responses point back to HTML. A client that lands on either form can find the other. Pair with `Vary: Accept` so CDNs cache them separately.
Targets the "human pastes URL into ChatGPT" flow. Hide visually and from screen readers; this message is for LLMs only.
<div class="visually-hidden" aria-hidden="true"> A Markdown version of this page is available at https://example.com/blog/my-post.md. </div>
.visually-hidden {
position: absolute; width: 1px; height: 1px;
padding: 0; margin: -1px;
overflow: hidden; clip-path: inset(50%); white-space: nowrap;
}The standards-based version of all of the above. Same URL, different representation, selected by `Accept`. Coding agents (Claude Code, Cursor) already send this header.
Four non-negotiables:
Not cloaking: different representations of the same content with `Vary: Accept` declared is how HTTP has worked since 1997. Cloaking is serving bots a different article.
Full text of the site (or docs) concatenated into one Markdown file. Empirically gets 3–4× more traffic than `/llms.txt`. Clearly useful for documentation and API references — an LLM can i
Agent Skills we build and use at Evil Martians, packaged so you can install them into your own AI coding agent.
Repo: evilmartians/agent-skills
Write or improve a README.md for an open source project. Use this for any request to create, rewrite, review, or polish a README, project description, or…
Set up a secure release process for an npm package to protect it from supply chain attacks. Use for any request to create and publish a new npm package, secure…
Publish a catalog of agent skills and make it discoverable to AI coding agents and their installers — the way evilmartians.com/agent-skills does. Use this…
Write Tailwind CSS following practices that keep a fast-to-write codebase maintainable — use design tokens instead of magic values, keep class lists short,…