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,…
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 for any request involving llms.txt, llms-full.txt, serving .md/Markdown versions of pages,
Claude Code
$ npx -y skills add evilmartians/agent-skills --skill llms-visibility --agent claude-code
Codex
$ npx skills add evilmartians/agent-skills --skill llms-visibility -a codex -y
Cursor
$ npx skills add evilmartians/agent-skills --skill llms-visibility -a cursor -y
Gemini CLI
$ npx skills add evilmartians/agent-skills --skill llms-visibility -a gemini-cli -y
GitHub Copilot
$ npx skills add evilmartians/agent-skills --skill llms-visibility -a github-copilot -y
OpenCode
$ npx skills add evilmartians/agent-skills --skill llms-visibility -a opencode -y
Windsurf
$ npx skills add evilmartians/agent-skills --skill llms-visibility -a windsurf -y
name: llms-visibility description: 'Make websites, docs, blogs, or landing pages agent-friendly: visible and readable to LLMs and AI agents like ChatGPT, Perplexity, Claude Code, and Cursor. Use for requests involving llms.txt, llms-full.txt, serving .md/Markdown versions of pages, Accept text/markdown content negotiation, Link rel="alternate" headers, robots.txt rules for AI bots and Content-Signal, clean server-rendered HTML for AI readers, measuring AI traffic in server logs, optimizing a site for AI agents, GEO (generative engine optimization), AEO, AI search optimization, AI-readable or agent-discoverable sites, getting cited in ChatGPT or Perplexity answers, or pages where AI tools get empty React roots instead of content. Also use to push back on debunked patterns: ai.txt, AI meta tags, hidden HTML comments or "for AI" hints, AI toggle buttons, User-Agent sniffing, JSON-LD added for 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 steps below to get a site's content to LLMs and AI agents over standard HTTP. Companion to <https://evilmartians.com/chronicles/how-to-make-your-website-visible-to-llms>. The evidence behind the order: <https://evilmartians.com/chronicles/which-ai-actually-reads-your-site-two-months-of-llm-traffic-measured>.
Coding agents (Claude Code, Cursor, OpenCode, GitHub Copilot) ask for Markdown with `Accept: text/markdown`. Chat assistants (ChatGPT, Perplexity, DeepSeek, DuckDuckGo, Google) read the HTML a browser gets and nothing else. Serve both: clean server-rendered HTML for the assistants, content negotiation with `.md` routes behind it for the agents. If the owner wants one thing, that pair is it. Treat `llms.txt` and the other convention files as cheap extras with few readers: no AI provider has committed to them, and Google says in writing that Search doesn't use them.
Each step is independently shippable. Build in this order.
Confirm the site isn't blocking the AI clients it wants. Know which bot each rule hits; OpenAI alone runs three:
Check the CDN's bot settings too: Cloudflare can block AI crawlers at the edge, separately from `robots.txt`.
Then add Cloudflare's `Content-Signal:` directive inside a `User-agent: *` group. Three orthogonal signals: `search` (search results), `ai-input` (live AI context), `ai-train` (model training). The first two are what this skill is for, so set them to `yes`. `ai-train` is the owner's business decision, so ask before writing it. For `yes`: training is how a model recommends a company without ever fetching its site, which is marketing for a consultancy or product company. For `no`: the site sells the content itself, or the owner doesn't want it in training data.
User-agent: * Content-Signal: search=yes, ai-input=yes, ai-train=<owner's answer>
On Cloudflare, check the managed `robots.txt` first: it already ships `search=yes, ai-train=no`. Ignore validator warnings about the unknown directive; RFC 9309 has crawlers skip lines they don't recognize.
Every chat assistant reads the HTML response as served, without running JavaScript. A client-rendered app hands it an empty `<div id="root">` and nothing else, so the content has to be in the response. Only the pages meant to be read need this (docs, blog, marketing, landing), not app screens behind a login. Take the cheapest route the stack allows:
Then, in the HTML itself:
Agent Skills we build and use at Evil Martians, packaged so you can install them into your own AI coding agent.
Write or improve a README.md for an open source project. Use this for any request to create, rewrite, review, or polish a README,…
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 catalog of agent skills and make it discoverable to AI coding agents and their installers — the way…
Write Tailwind CSS following practices that keep a fast-to-write codebase maintainable — use design tokens instead of magic…
Encode a video for the web with a bundled ffmpeg script: AV1, HEVC, and H.264 MP4s plus a JPEG poster for ordinary video, or VP9…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.