{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/steipete-me/2025-06-14-llm-codes-make-apple-docs-ai-readable/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "![](https://steipete.me/assets/img/2025/llm-codes-transform-developer-docs/hero.png)\n\n**TL;DR**: [llm.codes](https://llm.codes) converts JavaScript-heavy Apple docs (and 69+ other sites) into a clean llms.txt that AI agents can actually read.\n\n> **Quick Start**: Try it now with Apple’s Foundation Models docs: [llm.codes](https://llm.codes?https://developer.apple.com/documentation/foundationmodels)\n\nEven the smartest models can’t fetch fresh docs - especially when the docs are hidden behind JavaScript. While working on [Vibe Meter](https://vibemeter.ai/), Claude tried to convince me that [it wasn’t possible to make a proper toolbar in SwiftUI](https://x.com/steipete/status/1933819029224931619) and went down to AppKit. Even when I asked it to google for a solution, nothing changed.\n\n## The Real Problem: JavaScript-Heavy Documentation\n\nThe core issue? [Apple’s documentation heavily uses JavaScript](https://developer.apple.com/documentation/swiftui/), and Claude Code (or most AI agents to date) simply cannot parse that. It will fail and see nothing. So if you’re working with a component where documentation only exists on JavaScript-rendered pages, you’re completely stuck.\n\n## Enter llm.codes\n\nThat’s when I built the docs converter. [llm.codes](https://llm.codes) allows you to point to documentation and fetch everything as clean Markdown. While it’s optimized for Apple documentation, it supports a wide range of developer documentation sites. Here’s what you get:\n\n- **Your AI can finally see Apple docs** - No blind spots from JavaScript pages\n- **70% smaller files** - More context space for your actual code\n- **Works with 69+ sites** - AWS, Tailwind, PyTorch, PostgreSQL, and more\n\n**Supported Documentation Sites**\n\n**Mobile Development**\n\n- Apple Developer Documentation\n- Android Developer Documentation\n- React Native\n- Flutter\n- Swift Package Index\n\n**Programming Languages**\n\n- Python, TypeScript, JavaScript (MDN), Rust, Go, Java, Ruby, PHP, Swift, Kotlin\n\n**Web Frameworks**\n\n- React, Vue.js, Angular, Next.js, Nuxt, Svelte, Django, Flask, Express.js, Laravel\n\n**Cloud Platforms**\n\n- AWS, Google Cloud, Azure, DigitalOcean, Heroku, Vercel, Netlify\n\n**Databases**\n\n- PostgreSQL, MongoDB, MySQL, Redis, Elasticsearch, Couchbase, Cassandra\n\n**DevOps & Infrastructure**\n\n- Docker, Kubernetes, Terraform, Ansible, GitHub, GitLab\n\n**AI/ML Libraries**\n\n- PyTorch, TensorFlow, Hugging Face, scikit-learn, LangChain, pandas, NumPy\n\n**CSS Frameworks**\n\n- Tailwind CSS, Bootstrap, Material-UI, Chakra UI, Bulma\n\n**Build Tools & Testing**\n\n- npm, webpack, Vite, pip, Cargo, Maven, Jest, Cypress, Playwright, pytest\n\n**And more**: Any GitHub Pages site (\\*.github.io)\n\nllm.codes uses [Firecrawl](https://www.firecrawl.dev/referral?rid=9CG538BE) under the hood, and I pay for the credits to keep this service free for everyone.\n\n## Real-World Example\n\nRemember my toolbar problem? [Here’s what happened](https://x.com/steipete/status/1933819029224931619): I dragged the generated SwiftUI markdown from [my agent-rules repository](https://github.com/steipete/agent-rules/blob/main/docs/swiftui.md) into the terminal, and suddenly Claude wrote exactly the code I wanted.\n\nThe key insight: When you work on a component, just ask Claude to read the docs. It will load everything it needs into its context and produce vastly better code.\n\nFor people who think [@Context7](https://x.com/Context7AI) is the answer: if you use the context7 mcp for SwiftUI, you get [sample code from 2019](https://context7.com/ivanvorobei/swiftui), which will produce horribly outdated code. You need current documentation, not ancient examples.\n\n## Beyond Just llm.codes\n\nI used this trick before in my post about [migrating 700 tests to Swift Testing](https://steipete.me/posts/2025/migrating-700-tests-to-swift-testing). With llm.codes, you get significantly smaller markdown files, which preserves more token context space for your agent.\n\nI also maintain a [collection of pre-converted Markdown documentation files](https://github.com/steipete/agent-rules/tree/main/docs) in my agent-rules repository, that go beyond just documentation.\n\nThe converter itself? Completely vibe-coded with Claude and [open source](https://github.com/amantus-ai/llm-codes). I chose the stack (Next.js, Tailwind, Vercel) but didn’t write a single line of TypeScript-and it worked beautifully on the first try.\n\n## Try It Out\n\n[Convert a page →](https://llm.codes?https://developer.apple.com/documentation/foundationmodels)\n\n**No sign-up needed**.\n\nAI agents are the future of coding. Until docs catch up, llm.codes is your bridge to that future.\n",
  "authors": [],
  "captured_at": "2026-09-27T19:29:15.293681927+00:00",
  "category": "programming",
  "content_html": "<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://steipete.me/assets/img/2025/llm-codes-transform-developer-docs/hero.png\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><strong>TL;DR</strong>: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://llm.codes\">llm.codes</a> converts JavaScript-heavy Apple docs (and 69+ other sites) into a clean llms.txt that AI agents can actually read.</p>\n<blockquote>\n<p><strong>Quick Start</strong>: Try it now with Apple’s Foundation Models docs: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://llm.codes?https://developer.apple.com/documentation/foundationmodels\">llm.codes</a></p>\n</blockquote>\n<p>Even the smartest models can’t fetch fresh docs - especially when the docs are hidden behind JavaScript. While working on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://vibemeter.ai/\">Vibe Meter</a>, Claude tried to convince me that <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/steipete/status/1933819029224931619\">it wasn’t possible to make a proper toolbar in SwiftUI</a> and went down to AppKit. Even when I asked it to google for a solution, nothing changed.</p>\n<h2>The Real Problem: JavaScript-Heavy Documentation</h2>\n<p>The core issue? <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://developer.apple.com/documentation/swiftui/\">Apple’s documentation heavily uses JavaScript</a>, and Claude Code (or most AI agents to date) simply cannot parse that. It will fail and see nothing. So if you’re working with a component where documentation only exists on JavaScript-rendered pages, you’re completely stuck.</p>\n<h2>Enter llm.codes</h2>\n<p>That’s when I built the docs converter. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://llm.codes\">llm.codes</a> allows you to point to documentation and fetch everything as clean Markdown. While it’s optimized for Apple documentation, it supports a wide range of developer documentation sites. Here’s what you get:</p>\n<ul>\n<li><strong>Your AI can finally see Apple docs</strong> - No blind spots from JavaScript pages</li>\n<li><strong>70% smaller files</strong> - More context space for your actual code</li>\n<li><strong>Works with 69+ sites</strong> - AWS, Tailwind, PyTorch, PostgreSQL, and more</li>\n</ul>\n<p><strong>Supported Documentation Sites</strong></p>\n<p><strong>Mobile Development</strong></p>\n<ul>\n<li>Apple Developer Documentation</li>\n<li>Android Developer Documentation</li>\n<li>React Native</li>\n<li>Flutter</li>\n<li>Swift Package Index</li>\n</ul>\n<p><strong>Programming Languages</strong></p>\n<ul>\n<li>Python, TypeScript, JavaScript (MDN), Rust, Go, Java, Ruby, PHP, Swift, Kotlin</li>\n</ul>\n<p><strong>Web Frameworks</strong></p>\n<ul>\n<li>React, Vue.js, Angular, Next.js, Nuxt, Svelte, Django, Flask, Express.js, Laravel</li>\n</ul>\n<p><strong>Cloud Platforms</strong></p>\n<ul>\n<li>AWS, Google Cloud, Azure, DigitalOcean, Heroku, Vercel, Netlify</li>\n</ul>\n<p><strong>Databases</strong></p>\n<ul>\n<li>PostgreSQL, MongoDB, MySQL, Redis, Elasticsearch, Couchbase, Cassandra</li>\n</ul>\n<p><strong>DevOps &amp; Infrastructure</strong></p>\n<ul>\n<li>Docker, Kubernetes, Terraform, Ansible, GitHub, GitLab</li>\n</ul>\n<p><strong>AI/ML Libraries</strong></p>\n<ul>\n<li>PyTorch, TensorFlow, Hugging Face, scikit-learn, LangChain, pandas, NumPy</li>\n</ul>\n<p><strong>CSS Frameworks</strong></p>\n<ul>\n<li>Tailwind CSS, Bootstrap, Material-UI, Chakra UI, Bulma</li>\n</ul>\n<p><strong>Build Tools &amp; Testing</strong></p>\n<ul>\n<li>npm, webpack, Vite, pip, Cargo, Maven, Jest, Cypress, Playwright, pytest</li>\n</ul>\n<p><strong>And more</strong>: Any GitHub Pages site (*.github.io)</p>\n<p>llm.codes uses <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.firecrawl.dev/referral?rid=9CG538BE\">Firecrawl</a> under the hood, and I pay for the credits to keep this service free for everyone.</p>\n<h2>Real-World Example</h2>\n<p>Remember my toolbar problem? <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/steipete/status/1933819029224931619\">Here’s what happened</a>: I dragged the generated SwiftUI markdown from <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/steipete/agent-rules/blob/main/docs/swiftui.md\">my agent-rules repository</a> into the terminal, and suddenly Claude wrote exactly the code I wanted.</p>\n<p>The key insight: When you work on a component, just ask Claude to read the docs. It will load everything it needs into its context and produce vastly better code.</p>\n<p>For people who think <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/Context7AI\">@Context7</a> is the answer: if you use the context7 mcp for SwiftUI, you get <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://context7.com/ivanvorobei/swiftui\">sample code from 2019</a>, which will produce horribly outdated code. You need current documentation, not ancient examples.</p>\n<h2>Beyond Just llm.codes</h2>\n<p>I used this trick before in my post about <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://steipete.me/posts/2025/migrating-700-tests-to-swift-testing\">migrating 700 tests to Swift Testing</a>. With llm.codes, you get significantly smaller markdown files, which preserves more token context space for your agent.</p>\n<p>I also maintain a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/steipete/agent-rules/tree/main/docs\">collection of pre-converted Markdown documentation files</a> in my agent-rules repository, that go beyond just documentation.</p>\n<p>The converter itself? Completely vibe-coded with Claude and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/amantus-ai/llm-codes\">open source</a>. I chose the stack (Next.js, Tailwind, Vercel) but didn’t write a single line of TypeScript-and it worked beautifully on the first try.</p>\n<h2>Try It Out</h2>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://llm.codes?https://developer.apple.com/documentation/foundationmodels\">Convert a page →</a></p>\n<p><strong>No sign-up needed</strong>.</p>\n<p>AI agents are the future of coding. Until docs catch up, llm.codes is your bridge to that future.</p>\n",
  "content_markdown": "![](https://steipete.me/assets/img/2025/llm-codes-transform-developer-docs/hero.png)\n\n**TL;DR**: [llm.codes](https://llm.codes) converts JavaScript-heavy Apple docs (and 69+ other sites) into a clean llms.txt that AI agents can actually read.\n\n> **Quick Start**: Try it now with Apple’s Foundation Models docs: [llm.codes](https://llm.codes?https://developer.apple.com/documentation/foundationmodels)\n\nEven the smartest models can’t fetch fresh docs - especially when the docs are hidden behind JavaScript. While working on [Vibe Meter](https://vibemeter.ai/), Claude tried to convince me that [it wasn’t possible to make a proper toolbar in SwiftUI](https://x.com/steipete/status/1933819029224931619) and went down to AppKit. Even when I asked it to google for a solution, nothing changed.\n\n## The Real Problem: JavaScript-Heavy Documentation\n\nThe core issue? [Apple’s documentation heavily uses JavaScript](https://developer.apple.com/documentation/swiftui/), and Claude Code (or most AI agents to date) simply cannot parse that. It will fail and see nothing. So if you’re working with a component where documentation only exists on JavaScript-rendered pages, you’re completely stuck.\n\n## Enter llm.codes\n\nThat’s when I built the docs converter. [llm.codes](https://llm.codes) allows you to point to documentation and fetch everything as clean Markdown. While it’s optimized for Apple documentation, it supports a wide range of developer documentation sites. Here’s what you get:\n\n- **Your AI can finally see Apple docs** - No blind spots from JavaScript pages\n- **70% smaller files** - More context space for your actual code\n- **Works with 69+ sites** - AWS, Tailwind, PyTorch, PostgreSQL, and more\n\n**Supported Documentation Sites**\n\n**Mobile Development**\n\n- Apple Developer Documentation\n- Android Developer Documentation\n- React Native\n- Flutter\n- Swift Package Index\n\n**Programming Languages**\n\n- Python, TypeScript, JavaScript (MDN), Rust, Go, Java, Ruby, PHP, Swift, Kotlin\n\n**Web Frameworks**\n\n- React, Vue.js, Angular, Next.js, Nuxt, Svelte, Django, Flask, Express.js, Laravel\n\n**Cloud Platforms**\n\n- AWS, Google Cloud, Azure, DigitalOcean, Heroku, Vercel, Netlify\n\n**Databases**\n\n- PostgreSQL, MongoDB, MySQL, Redis, Elasticsearch, Couchbase, Cassandra\n\n**DevOps & Infrastructure**\n\n- Docker, Kubernetes, Terraform, Ansible, GitHub, GitLab\n\n**AI/ML Libraries**\n\n- PyTorch, TensorFlow, Hugging Face, scikit-learn, LangChain, pandas, NumPy\n\n**CSS Frameworks**\n\n- Tailwind CSS, Bootstrap, Material-UI, Chakra UI, Bulma\n\n**Build Tools & Testing**\n\n- npm, webpack, Vite, pip, Cargo, Maven, Jest, Cypress, Playwright, pytest\n\n**And more**: Any GitHub Pages site (\\*.github.io)\n\nllm.codes uses [Firecrawl](https://www.firecrawl.dev/referral?rid=9CG538BE) under the hood, and I pay for the credits to keep this service free for everyone.\n\n## Real-World Example\n\nRemember my toolbar problem? [Here’s what happened](https://x.com/steipete/status/1933819029224931619): I dragged the generated SwiftUI markdown from [my agent-rules repository](https://github.com/steipete/agent-rules/blob/main/docs/swiftui.md) into the terminal, and suddenly Claude wrote exactly the code I wanted.\n\nThe key insight: When you work on a component, just ask Claude to read the docs. It will load everything it needs into its context and produce vastly better code.\n\nFor people who think [@Context7](https://x.com/Context7AI) is the answer: if you use the context7 mcp for SwiftUI, you get [sample code from 2019](https://context7.com/ivanvorobei/swiftui), which will produce horribly outdated code. You need current documentation, not ancient examples.\n\n## Beyond Just llm.codes\n\nI used this trick before in my post about [migrating 700 tests to Swift Testing](https://steipete.me/posts/2025/migrating-700-tests-to-swift-testing). With llm.codes, you get significantly smaller markdown files, which preserves more token context space for your agent.\n\nI also maintain a [collection of pre-converted Markdown documentation files](https://github.com/steipete/agent-rules/tree/main/docs) in my agent-rules repository, that go beyond just documentation.\n\nThe converter itself? Completely vibe-coded with Claude and [open source](https://github.com/amantus-ai/llm-codes). I chose the stack (Next.js, Tailwind, Vercel) but didn’t write a single line of TypeScript-and it worked beautifully on the first try.\n\n## Try It Out\n\n[Convert a page →](https://llm.codes?https://developer.apple.com/documentation/foundationmodels)\n\n**No sign-up needed**.\n\nAI agents are the future of coding. Until docs catch up, llm.codes is your bridge to that future.\n",
  "dateCreated": "2026-09-27T19:29:15.293681927+00:00",
  "date_created": "2025-06-14T13:22:16+00:00",
  "date_modified": "2025-06-14T13:22:16+00:00",
  "date_published": "2025-06-14T13:22:16+00:00",
  "description": "Built this when Claude couldn't read Apple's docs. Now it converts 69+ documentation sites to clean llms.txt. Free, instant, no BS.",
  "external_url": "https://steipete.me/posts/2025/llm-codes-transform-developer-docs/",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/steipete-me/2025/06/2025-06-14-llm-codes-make-apple-docs-ai-readable.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/steipete-me/2025/06/2025-06-14-llm-codes-make-apple-docs-ai-readable.md"
  },
  "id": "urn:aggr:item:405e124766d1b88cd6685e5b79e32141944db96d",
  "isBasedOn": {
    "@id": "https://steipete.me/posts/2025/llm-codes-transform-developer-docs/"
  },
  "mainEntity": {
    "@id": "https://steipete.me/posts/2025/llm-codes-transform-developer-docs/",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/steipete-me/2025-06-14-llm-codes-make-apple-docs-ai-readable/#webpage"
    },
    "dateModified": "2025-06-14T13:22:16+00:00",
    "datePublished": "2025-06-14T13:22:16+00:00",
    "headline": "llm.codes: Make Apple Docs AI-Readable",
    "timeRequired": "PT3M",
    "url": "https://steipete.me/posts/2025/llm-codes-transform-developer-docs/",
    "wordCount": 557
  },
  "name": "Archived snapshot: llm.codes: Make Apple Docs AI-Readable",
  "preview": null,
  "reading_minutes": 3,
  "replicated_at": null,
  "source": "steipete-me",
  "source_name": "Peter Steinberger",
  "summary": "Built this when Claude couldn't read Apple's docs. Now it converts 69+ documentation sites to clean llms.txt. Free, instant, no BS.",
  "tags": [],
  "temporalCoverage": "2026-09-27T19:29:15.293681927+00:00",
  "title": "llm.codes: Make Apple Docs AI-Readable",
  "url": "https://aggr.aymericbeaumet.com/items/steipete-me/2025-06-14-llm-codes-make-apple-docs-ai-readable/",
  "word_count": 557
}