Ask AI

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:

ParteLectorTrata deNunca
Guía del producto, content/users/ (/docs)alguien que usa la applo que ve y hace en la appcódigo, herramientas, el repositorio, despliegues
Documentación para desarrolladores, content/dev/ (/dev)un desarrollador que construye Remy o una app sobre élcódigo, tareas, herramientas, reglascó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 APIendpoints, generados a partir del contratoprosa; 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 su llms.txt y 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.json
meta.json
index.mdx
formats.mdx
  • i18n.json contiene los idiomas del sitio: defaultLanguage y languages. 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.json es la navegación del sitio: pages fija 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.md junto a index.md, en /dev/es/.
  • Las imágenes y vídeos de la guía están en docs/public/media y 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.

docs/content/users/formats.mdx
---
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.

![The Formats page in English](/media/formats.png)

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ónLo que aportó a este sitio
llms/<site>/llms.txt, /<site>/<lang>/llms-full.txt, /<site>/<lang>/<page>.md
mcpun servidor MCP por parte, /api/mcp/docs, /api/mcp/dev, /api/mcp/reference (Documentación en tus herramientas de IA)
oguna imagen social por página
webmcpla 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.

On this page