Arquitectura del universo
Identidad
Section titled “Identidad”ai-os es el orquestador raíz de todos los proyectos del universo
LADDER/Amed. Cada subdirectorio en worlds/ es un mundo autónomo que
hereda las convenciones globales definidas en la raíz.
Metodología: Context-First Development (CFD)
Section titled “Metodología: Context-First Development (CFD)”CFD es la disciplina de construir el contexto (docs, ADRs, convenciones, memoria de decisiones) antes que el código, para que un agente de IA en CLI tenga siempre la información correcta cargada sin tener que re-explorar el repo desde cero en cada sesión. En este universo se aplica así:
- Cada mundo arranca con
docs/, ADRs yCLAUDE.mdantes de escribir código — elCLAUDE.mdde cada mundo hereda del global vía@../../CLAUDE.mdy añade solo el contexto específico de ese mundo. - Decisiones arquitectónicas de un mundo →
docs/adr/NNNN-titulo.md. - Decisiones reutilizables entre mundos →
_shared/memory/decisions.md(ADRs globales, capturados con/learn). - Antes de empezar un mundo nuevo, se consulta
_shared/memory/registry.json— el inventario vivo de todos los mundos, su stack, repo y estado. - El sidebar “Proyectos” de este sitio existe por la misma razón:
README.md+docs/adr/de cada mundo son ya el contexto que un agente necesita, así que se publican tal cual en vez de re-escribirse a mano.
Más info sobre la metodología: Context-First Development (CFD): ingeniería de contexto para desarrollo asistido por IA en CLI.
Stack por defecto
Section titled “Stack por defecto”- Backend: Supabase (RLS, Edge Functions, pgvector, Storage, Realtime)
— no todo mundo lo usa; algunos productos (p. ej.
ladder-api) tienen backend propio con Hono + Drizzle + PostgreSQL. - Web: Next.js 15 + TypeScript, o Astro cuando el mundo es principalmente contenido/documentación.
- Mobile: Flutter.
Estructura del universo
Section titled “Estructura del universo”ai-os/├── CLAUDE.md Constitución global├── _shared/│ ├── agents/ Catálogo fuente único de subagentes│ ├── commands/ 27 slash commands compartidos│ ├── mcp/ Grupos de MCP por stack (web, backend...)│ ├── scripts/ attach-skills, link-world-agents, attach-mcp...│ ├── token-stack/ Stack de telemetría de tokens compartido│ ├── memory/ registry.json + decisions.md (ADRs globales)│ ├── contracts/ Contratos de API entre mundos front/backend│ └── templates/ Plantillas para mundos nuevos├── mcp-orchestrator/ MCP server: expone mundos entre sesiones└── worlds/ └── <mundo>/ ├── CLAUDE.md Hereda @../../CLAUDE.md + contexto propio ├── TASKS.md Kanban (backlog/doing/review/done) ├── COWORK.md Briefing para Claude Cowork Desktop ├── .mcp.json Servidores propios + grupo(s) fusionados ├── docs/ │ ├── adr/ Decisiones arquitectónicas locales │ └── design-system.md Tokens para Claude Design └── ... código específico del mundoInstalación inicial (al clonar el repo)
Section titled “Instalación inicial (al clonar el repo)”- Clonar con symlinks reales — el repo trackea symlinks (
.claude/agents/,.claude/commands/), Git para Windows solo los materializa sicore.symlinksestá entrueal clonar:Requiere además Developer Mode de Windows activado (o terminal como administrador). Si ya clonaste antes de saber esto, correTerminal window git config --global core.symlinks truegit clone --recurse-submodules https://github.com/Ledder-Dev/ai-os.git_shared/scripts/materialize-symlinks.ps1en vez de re-clonar. - Stack de telemetría de tokens →
_shared/token-stack/SETUP.md. - Variable de sistema
AI_OS_ROOTapuntando a la raíz del repo — la usan todos los scripts.ps1de_shared/scripts/para resolver rutas sin depender del cwd. - Secretos MCP — copiar
.env.examplea.enven la raíz y rellenarGITHUB_PAT,VIKUNJA_URL,VIKUNJA_API_TOKENcomo variables de usuario de Windows (setx), nunca literales en.mcp.json. - Enlazar agentes y comandos del universo:
Terminal window .\_shared\scripts\link-universe-agents.ps1.\_shared\scripts\link-universe-commands.ps1
Comandos principales
Section titled “Comandos principales”| Comando | Qué hace |
|---|---|
/new-world* |
Crea un mundo nuevo (scaffold + TASKS + COWORK + design-system + registry), una variante por stack (-react, -astro, -shipfree, -vanilla, -supabase, -import…) |
/sync-context |
Actualiza registry.json desde el estado real |
/cross-search |
Busca cómo se resolvió un problema similar en otro mundo |
/learn |
Captura un patrón reutilizable como ADR global |
/link-contract |
Registra el contrato de API del mundo backend con sus fronts |
/tasks |
Lee/edita TASKS.md desde el chat |
/standup |
Estado diario: git + tareas + tokens + cowork |
/session-start / /session-end |
Abre/cierra sesión de trabajo con contexto completo |
/cowork-brief |
Genera/actualiza COWORK.md |
/design-handoff |
Integra bundle de Claude Design con ADR y tarea |
/semgrep-scan, /sonar-audit |
Seguridad y calidad de código |
/site-check, /web-check, /audit-clients |
Análisis de sitios de clientes |
Catálogo completo y detalle de cada uno en el README.md de la raíz del repo.
Multi-usuario: cómo funcionan los worlds
Section titled “Multi-usuario: cómo funcionan los worlds”ai-os es solo el orquestador. Los mundos NO viven en este repo — cada
uno es su propio repo git independiente, y worlds/* está en .gitignore
por defecto:
- Mundo personal — vive solo en la máquina de quien lo trabaja + su propio repo remoto. El universo no lo referencia.
- Mundo colaborativo (varias personas) — se registra como git
submodule en
ai-os, con!worlds/<mundo>des-ignorado en.gitignore, para que cualquiera que clone el universo lo traiga congit clone --recurse-submodules. - Cada mundo registra su
repoen_shared/memory/registry.json(nullsi aún no tiene repo propio).
Telemetría de tokens compartida
Section titled “Telemetría de tokens compartida”Un único stack de observabilidad de coste de tokens sirve a todo el
universo, en _shared/token-stack/ (guía completa de instalación y
troubleshooting: Token Stack):
- Headroom (
:8787) — proxy de prefix-cache: cachea el prefijo repetido de los prompts (system prompt,CLAUDE.md, definiciones de herramientas) para no re-facturarlo en cada request. - Stats server (
:8788) — agrega uso y coste por sesión, leyendo los logs locales hacia~/.headroom/stats.db. - CodeBurn — no es un servidor persistente: lee los logs de sesión que
ya existen en disco y se levanta on-demand vía
npxpara visualizar el burn rate de tokens. - Dashboard (
_shared/token-stack/dashboard.html) — vista general con pestañas de overview, sesiones, y catálogo de agentes/skills instalados.
Contratos de API entre mundos
Section titled “Contratos de API entre mundos”Cuando un par de mundos front/backend comparte contrato, este vive en
_shared/contracts/<producto>/api-contract.yaml como symlink al artefacto
real del mundo backend (nunca una copia), registrado en
_shared/contracts/registry.json.
Cómo se genera este sitio
Section titled “Cómo se genera este sitio”Este sitio de documentación (universe-docs/) no contiene contenido
editado a mano sobre los mundos, las convenciones, el token stack ni el
catálogo: npm run sync (script scripts/sync-worlds.mjs) recorre
worlds/*/README.md (o CLAUDE.md si no hay README) y
worlds/*/docs/adr/*.md (publicado como “Decisiones” dentro de cada mundo),
copia _shared/CONVENTIONS.md a Convenciones compartidas y
_shared/token-stack/SETUP.md a Token Stack, y genera el
catálogo de agentes, comandos y skills leyendo el
frontmatter de _shared/agents/, _shared/commands/ y _shared/skills/ —
todo con el frontmatter que Starlight necesita. Corre automáticamente antes
de dev y build.