+ "content": "## Én URL til enhver AI\n\nNår en udvikler beder en AI-kodningsassistent (Claude Code, Cursor, Copilot, Gemini, Windsurf) om at bygge et website med **@webhouse/cms**, kan de nu bare sige:\n\n> \"Brug https://ai.webhouse.app til at bygge det.\"\n\nAI'en henter den URL og får en **selvstændig Step 0–9 walkthrough**: tjek miljø → scaffold → plan med brugeren → rediger `cms.config.ts` → opret indhold → wire rendering → SEO → deploy → aflever tilbage. Siden leveres som `text/markdown` uden visuel pynt — skræddersyet til LLM-forbrug.\n\nAlle 21 dybdemoduler ligger på `ai.webhouse.app/ai/{slug}` hvis AI'en har brug for mere om et specifikt emne.\n\n## Hvad findes på ai.webhouse.app\n\n| URL | Formål |\n|-----|--------|\n| `/ai` | Selvguidet Step 0–9 walkthrough. **Start her.** |\n| `/ai/01-getting-started` | Scaffolding + første kørsel |\n| `/ai/02-config-reference` | `defineConfig`, `defineCollection`, options |\n| `/ai/03-field-types` | Alle 21 felttyper |\n| `/ai/04-blocks` | Bloksystem (hero, features, CTA-sektioner) |\n| `/ai/05-richtext` | TipTap-editor, indlejret medie |\n| `/ai/06-storage-adapters` | Filsystem, GitHub, SQLite |\n| `/ai/07-content-structure` | Dokument-JSON-format, content-layout |\n| `/ai/08-nextjs-patterns` | Sider, layouts, loader-funktioner |\n| `/ai/09-cli-reference` | Alle CLI-kommandoer |\n| `/ai/10-config-example` | Komplet real-world `cms.config.ts` |\n| `/ai/11-api-reference` | Programmatisk ContentService-brug |\n| `/ai/12-admin-ui` | CMS admin setup, Docker, npx |\n| `/ai/13-site-building` | Almindelige fejl, mønstre, rendering |\n| `/ai/14-relationships` | Indholdsrelationer, opløsning, reverse lookups |\n| `/ai/15-seo` | Metadata, JSON-LD, AI SEO |\n| `/ai/16-images` | Billedhåndtering, responsive, next/image |\n| `/ai/17-i18n` | Flersproget, locale-routing, oversættelse |\n| `/ai/18-deployment` | Vercel, Netlify, GitHub Pages, Fly.io, Cloudflare |\n| `/ai/19-troubleshooting` | Almindelige fejl, debugging, FAQ |\n| `/ai/20-interactives` | Datadrevet interaktivt indhold |\n| `/ai/21-framework-consumers` | Non-TS backends (Java, .NET, PHP, Python, Ruby, Go) |\n| `/ai/llms.txt` | llms.txt-standard (til LLM-crawlere) |\n| `/ai/manifest.json` | JSON-manifest med alle moduler + beskrivelser |\n| `/ai/index.json` | Sorteret modulliste |\n\nAlle svar sætter `X-Robots-Tag: noindex` — AI-sitet indekseres ikke af traditionelle søgemaskiner. Det er lavet til maskiner.\n\n## Hvorfor et dedikeret AI-site?\n\nDe 21 moduler findes allerede på [GitHub raw](https://raw.githubusercontent.com/webhousecode/cms/main/docs/ai-guide/index.md), men det er ikke nok:\n\n1. **Discoverability** — én pæn URL er lettere at huske og skrive end en dyb GitHub-sti.\n2. **Rate-limits** — GitHub raw throttler ved 60 requests/time uden auth. En ny AI-session der henter flere moduler rammer det hurtigt.\n3. **Platform-forskelle** — ikke alle AI-værktøjer har ergonomisk URL-fetch til GitHub-stier, men stort set alle kan hente en almindelig URL som `ai.webhouse.app`.\n4. **Selvguidet startpunkt** — det eksisterende indeks er en modulliste. Det antager AI'en allerede ved hvad `@webhouse/cms` er. Den nye `/ai`-walkthrough er skrevet til en blank AI-session — **\"du er en AI, følg disse skridt, hvis du mangler X så hent Y\"**.\n5. **Maskinlæsbare endpoints** — AI-platforme forventer i stigende grad `llms.txt`, struktureret manifest-JSON og versioning. GitHub raw markdown giver ikke noget af det.\n\n## Walkthrough'en (`/ai`)\n\nWalkthrough'en er struktureret som en **procedure**, ikke en reference:\n\n```\nStep 0 — Tjek miljø\nStep 1 — Scaffold projektet (npm create @webhouse/cms@latest)\nStep 2 — Forstå modellen (dokument-JSON, cms.config.ts, felttyper)\nStep 3 — Plan sitet med brugeren (5 spørgsmål)\nStep 4 — Rediger cms.config.ts (kind + description kræves per collection)\nStep 5 — Opret startindhold\nStep 6 — Wire rendering (Next.js / statisk / non-TS consumer)\nStep 7 — SEO (hvis relevant)\nStep 8 — Deploy\nStep 9 — Aflever tilbage til brugeren\n\nTroubleshooting — førstegangsløsninger\nDybdemodul-indeks\nIkke-forhandlelige regler (8 regler fra CLAUDE.md kritiske regler)\n```\n\nAI'en kan gennemføre en basis-build **fra ende til anden uden at hente andre moduler**. Dybere moduler er kun til specifikke emner (i18n, kompleks SEO, non-TS backend).\n\n## Sådan bruger du det\n\nI ethvert AI-kodningsværktøj indsæt:\n\n```\nByg mig et website med @webhouse/cms. Start med at hente https://ai.webhouse.app\n```\n\nAI'en vil:\n\n1. Hente `/ai` og følge Step 0 (tjekker `node --version`, spørger hvor den skal scaffolde)\n2. Køre `npm create @webhouse/cms@latest` (Step 1)\n3. Forklare modellen og planlægge med dig (Step 2–3)\n4. Redigere `cms.config.ts`, oprette indhold, wire rendering (Step 4–6)\n5. Hente specifikke dybdemoduler efter behov (SEO, i18n, deployment)\n6. Aflevere et kørende lokalt site med deploy-hooks konfigureret\n\nIngen manuel CLAUDE.md-opsætning, ingen copy-paste-konfiguration fra Stack Overflow, ingen \"hvor skal jeg starte?\"-forvirring.\n\n## Virker med enhver AI-platform\n\nHele sitet er almindelig `text/markdown` og `application/json` — alle AI-kodningsassistenter forstår det:\n\n- **Claude Code** — `WebFetch`-værktøjet henter URL'en; det lange kontekstvindue klarer hele walkthrough'en\n- **Cursor / Windsurf** — indsæt URL'en; inline-chatten henter den\n- **GitHub Copilot** — chatten understøtter URL-kontekst; hent `/ai` ind i prompten\n- **Gemini (IDE-udvidelser)** — URL-bevidst chat henter markdown'en\n- **Enhver fremtidig platform** — så længe den understøtter URL-fetch, virker det\n\n## Maskinlæsbare endpoints\n\nTil programmatisk brug (MCP-servere, agent-frameworks, CI-pipelines):\n\n```bash\n# Fuldt JSON-manifest med alle moduler + beskrivelser + endpoints\ncurl https://ai.webhouse.app/ai/manifest.json\n\n# Almindelig sorteret modulliste\ncurl https://ai.webhouse.app/ai/index.json\n\n# llms.txt-standard (til LLM-crawlere)\ncurl https://ai.webhouse.app/ai/llms.txt\n```\n\nEksempel på `manifest.json`:\n\n```json\n{\n \"name\": \"@webhouse/cms AI Builder Site\",\n \"version\": \"0.1.0\",\n \"entry\": \"https://ai.webhouse.app/ai\",\n \"modules\": [\n { \"slug\": \"01-getting-started\", \"url\": \"...\", \"description\": \"New project, first setup\" },\n ...\n ],\n \"endpoints\": {\n \"walkthrough\": \"https://ai.webhouse.app/ai\",\n \"llms_txt\": \"https://ai.webhouse.app/ai/llms.txt\",\n \"manifest\": \"https://ai.webhouse.app/ai/manifest.json\"\n }\n}\n```\n\n## Kanonisk kilde + fallbacks\n\nHvis `ai.webhouse.app` ikke er tilgængelig, ligger den kanoniske markdown i CMS-monorepoet og serveres fra GitHub raw:\n\n```\nhttps://raw.githubusercontent.com/webhousecode/cms/main/docs/ai-guide/index.md\nhttps://raw.githubusercontent.com/webhousecode/cms/main/docs/ai-guide/01-getting-started.md\n...\n```\n\nEthvert scaffoldet projekt leveres også med `packages/cms/CLAUDE.md` (slank indeks, ~180 linjer) der refererer de samme moduler. AI'en har derfor tre redundante stier til samme indhold:\n\n1. `https://ai.webhouse.app` (dette site — primær)\n2. GitHub raw (fallback, rate-limited)\n3. Lokal `packages/cms/CLAUDE.md` i `node_modules/@webhouse/cms` (offline)\n\n## Dogfooding\n\nAI Builder Site er selv bygget med `@webhouse/cms` — det ligger som en route-gruppe (`src/app/ai/*`) på [docs.webhouse.app](https://docs.webhouse.app), som er fuldstændigt CMS-drevet. Ét site, to målgrupper: `/docs` for mennesker, `/ai` for AI-agenter. Samme indholdsmodel, samme deploy-pipeline.\n\nDenne side (den du læser lige nu) er et dokument i `docs`-collection'en, gemt som JSON i `content/docs/ai-builder-guide.json`. Den forklarer det companion-AI-site der ligger ved siden af. Selvrefererende, fuldt editerbar via admin-UI'et og tilgængelig på både engelsk og dansk.\n\n## Ikke-forhandlelige regler\n\nWalkthrough'en indprenter otte regler AI-sessioner skal følge når de bygger med `@webhouse/cms`:\n\n1. Hver collection SKAL have `kind` og `description`\n2. `cms.config.ts` SKAL erklære `storage` eksplicit (standard er SQLite)\n3. NAVNGIV ALDRIG en collection `site-settings`, `settings`, `config`, `admin`, `media`, `interactives`\n4. `image-gallery`-værdier SKAL være `{ url, alt }[]` — aldrig plain strings\n5. Dokumenter SKAL have `_fieldMeta: {}`\n6. Slug SKAL matche filnavnet\n7. Filtrér altid på `status === \"published\"` ved rendering\n8. BRUG ALDRIG CDN-scripts (Tailwind, Bootstrap) i statiske builds — kun inline CSS\n\nDe regler forebygger de mest almindelige AI-genererede fejl vi har set i tidlige builds.",
0 commit comments