Escribir la documentación
Cómo se organiza y se escribe la documentación de una app de Remy con Fumadocs: carpetas, frontmatter, medios, componentes, traducciones y la CLI.
Todas las apps de Remy guardan su documentación de la misma manera, de modo que las tareas compartidas y la CLI de Fumadocs funcionan en cada una.
Hay dos sitios de documentación, servidos por el Worker de documentación (la app docs/, aparte del Worker de la app): la guía
para los usuarios de la app en /docs, y esta documentación para desarrolladores en /dev.
Cada uno tiene sus propios idiomas, búsqueda, llms.txt y carpeta de Ask AI.
A quién se dirige cada parte
La documentación tiene tres partes, y cada una está escrita desde el punto de vista de un solo lector. El modo IA de Google, Gemini y cualquier otro asistente solo las distinguen por lo que dicen las páginas, así que mantenlas separadas:
| Parte | Lector | Trata de | Nunca |
|---|---|---|---|
Guía del producto, content/users/ (/docs) | alguien que usa la app | lo que ve y hace en la app | código, herramientas, el repositorio, despliegues |
Documentación para desarrolladores, content/dev/ (/dev) | un desarrollador que construye Remy o una app sobre él | código, tareas, herramientas, reglas | cómo usar la app, más allá de un enlace a la guía |
Referencia de la API (/reference) | un desarrollador que llama a la API | endpoints, generados a partir del contrato | prosa; está generada |
- Una página que necesita a la otra parte enlaza a ella en una sola línea («¿La estás construyendo? La documentación para desarrolladores.»).
- La página de inicio de cada parte empieza diciendo a quién se dirige; sus títulos terminan con el nombre de la parte (
docs.config.ts,titles), y lo mismo ocurre con sullms.txty su servidor MCP (Documentación en tus herramientas de IA). - Las partes, sus lectores, los archivos llms y los servidores MCP forman una sola lista,
src/lib/sections.ts.
Estructura
i18n.jsoncontiene los idiomas del sitio:defaultLanguageylanguages. Las URL del sitio, el menú de idiomas, la búsqueda y las tareas de traducción lo leen. Las listas de los dos sitios difieren: la documentación para desarrolladores se traduce solo a los idiomas en los que ofrecemos soporte a desarrolladores.meta.jsones la navegación del sitio:pagesfija el orden,"---Heading---"inicia una sección y"[Title](https://…)"es un enlace externo.- Una traducción está junto a su página:
index.es.mdjunto aindex.md, en/dev/es/. - Las imágenes y vídeos de la guía están en
docs/public/mediay se referencian por URL (/media/formats.png); la documentación para desarrolladores tiene diagramas Mermaid y tablas de tipos; la referencia de la API es una sección propia en/reference, generada a partir del contrato de oRPC.
Cómo llega una página al lector
flowchart LR A["docs/content/*.md, *.mdx"] --> B["fumadocs-mdx macro"] B --> C["loader: src/lib/source.ts"] C --> D["Docs pages: /docs, /dev"] C --> E["Search: /api/search/dev"] C --> F["/dev/llms.txt and .md pages"] C --> G["MCP server: /api/mcp/dev"] C --> H["Social images: /og/dev/..."] I["oRPC contract"] --> J["fumadocs-openapi"] --> K["API reference: /reference"]
Frontmatter
Toda página empieza con un título y una descripción. La descripción es el resumen de la página en los resultados
de búsqueda, en llms.txt y en las vistas previas de enlaces.
---
title: "Formats"
description: "How dates, numbers, currency and direction change with the language you choose."
---Imágenes y vídeos
Captúralos con la herramienta del propio proyecto, para que muestren la app real:
npm run shots -- /formats --out docs/public/media para una imagen, y añade --video
para una grabación corta de la página.
Fumadocs ajusta el tamaño, y al hacer clic se amplía.
Componentes
En páginas .mdx: <Callout> (o :::note, :::warning en cualquier página), <Cards> y <Card>, <Tabs>
y <Tab>, <Steps> y <Step>, <Accordions> y <Accordion>, <Files>, <Folder> y
<File>, un diagrama ```mermaid y una tabla de tipos leída de nuestro TypeScript:
Prop
Type
La CLI de Fumadocs
npm run docs:cli -- feature <name> (solo en remy-auth) ejecuta la CLI de Fumadocs fijada en el Worker
compartido de documentación, packages/ui/src/docs; su cli.json asigna las carpetas de allí, y lo que
escribe es un cambio en el paquete, revisado como cualquier otro. Las apps toman el Worker del paquete y
nunca lo ejecutan.
| Función | Lo que aportó a este sitio |
|---|---|
llms | /<site>/llms.txt, /<site>/<lang>/llms-full.txt, /<site>/<lang>/<page>.md |
mcp | un servidor MCP por parte, /api/mcp/docs, /api/mcp/dev, /api/mcp/reference (Documentación en tus herramientas de IA) |
og | una imagen social por página |
webmcp | la documentación como herramientas para agentes en el navegador |
Traducciones
Escribe solo en inglés. dev:land traduce en main después del landing, un solo escritor a la vez
(traducciones: un solo escritor); npx remy i18n check docs enumera lo que aún
necesita cada idioma.
La línea de comandos
remy, la herramienta que toda app de Remy instala con el paquete: los scripts, la estructura que leen, una app nueva, la publicación de paquetes, las traducciones, Cloudflare y los planes.
Los docs en tus herramientas de IA
Todos los servidores MCP y archivos llms.txt disponibles, para quién es cada uno, cómo añadirlos a ChatGPT, Claude, Cursor, VS Code o Gemini, y cómo ve los docs el Modo IA de Google.