Agentic OS (Sistema Operativo Multi-Agente)
Trata a Claude Code como un runtime / sistema operativo persistente en lugar de una sesión de chat. Este skill codifica la arquitectura utilizada por configuraciones agentivas de producción: un núcleo (kernel) que enruta tareas a agentes especialistas, memoria persistente basada en archivos, automatización programada y una capa de datos JSON/markdown.
Cuándo Activarlo
- Construir un flujo de trabajo multi-agente dentro de Claude Code
- Configurar automatización persistente de Claude Code que sobreviva a reinicios de sesión
- Crear un "sistema operativo personal" o "sistema operativo agéntico" para tareas recurrentes
- El usuario dice "Agentic OS", "sistema operativo personal", "multi-agente", "coordinador de agentes", "agente persistente"
- Estructurar proyectos de larga duración donde el contexto debe sobrevivir entre sesiones
Resumen de Arquitectura
El Agentic OS tiene cuatro capas. Cada capa es un directorio en la raíz de tu proyecto.
project-root/
├── CLAUDE.md # Núcleo: identidad, reglas de enrutamiento, registro de agentes
├── agents/ # Definiciones de agentes especialistas (prompts en markdown)
├── .claude/commands/ # Comandos slash: CLI orientado al usuario
├── scripts/ # Scripts daemon: tareas programadas o basadas en eventos
└── data/ # Estado: sistema de archivos JSON/markdown, sin BD externa
Responsabilidades de las Capas
| Capa | Propósito | Persistencia |
|---|---|---|
Núcleo (CLAUDE.md) | Identidad, enrutamiento, políticas de modelo, registro de agentes | Rastreado por Git |
Agentes (agents/) | Identidades especialistas con herramientas y memoria limitadas | Rastreado por Git |
Comandos (.claude/commands/) | Comandos slash para el usuario (/daily-sync, /outreach) | Rastreado por Git |
Scripts (scripts/) | Daemons Python/JS activados por cron o webhooks | Rastreado por Git |
Estado (data/) | Registros de solo anexar, estado del proyecto, registros de decisiones | Ignorado por Git o rastreado |
El Núcleo
CLAUDE.md es el núcleo. Actúa como el COO / orquestador. Claude lo lee al inicio de la sesión y lo usa para enrutar el trabajo.
Estructura del Núcleo
# CLAUDE.md - Núcleo del Agentic OS
## Identidad
Eres el COO de [nombre-del-proyecto]. Enrutas tareas a agentes especialistas.
Nunca escribes código directamente. Delegas en el agente correcto y sintetizas los resultados.
## Registro de Agentes
| Agente | Rol | Disparador |
|---|---|---|
| @dev | Código, arquitectura, depuración | El usuario dice "construir", "arreglar", "refactorizar" |
| @writer | Documentación, contenido, correos | El usuario dice "escribir", "borrador", "blog" |
| @researcher | Investigación, análisis, verificación de hechos | El usuario dice "investigar", "analizar", "comparar" |
| @ops | DevOps, despliegue, infraestructura | El usuario dice "desplegar", "CI", "servidor" |
## Reglas de Enrutamiento
1. Analizar la solicitud del usuario en busca de palabras clave de intención
2. Coincidir con la columna de disparador del Registro de Agentes
3. Cargar el archivo de agente correspondiente desde `agents/<nombre>.md`
4. Transferir la ejecución con contexto completo
5. Sintetizar y presentar el resultado al usuario
## Políticas de Modelo
- Modelo predeterminado: usar el predeterminado del repositorio o del entorno.
- Tareas @dev: preferir un modelo de mayor razonamiento para arquitectura compleja.
- Tareas @researcher: usar el modelo con capacidad de investigación configurado y herramientas de búsqueda aprobadas.
- Límite de coste: advertir antes de exceder el umbral de gasto configurado del proyecto.
Principio Clave
El núcleo debe ser pequeño y declarativo. La lógica de enrutamiento reside en tablas markdown simples, no en código. Esto hace que el sistema sea inspeccionable y editable sin depuración.
Agentes Especialistas
Cada agente es un archivo markdown independiente en agents/. Claude carga el archivo de agente relevante al enrutar una tarea.
Formato de Definición de Agente
# @dev - Ingeniero de Software
## Identidad
Eres un ingeniero de software senior. Escribes código limpio, probado y de calidad de producción.
Prefieres soluciones simples. Haces preguntas aclaratorias cuando los requisitos son ambiguos.
## Alcance de Memoria
- Leer `data/projects/<proyecto-actual>.md` para contexto
- Leer `data/decisions/` para decisiones arquitectónicas
- Añadir registros de ejecución a `data/logs/<fecha>[email protected]`
## Acceso a Herramientas
- Acceso completo al sistema de archivos dentro de la raíz del proyecto
- Operaciones Git (status, diff, commit, branch)
- Acceso al ejecutor de pruebas
- Servidores MCP según lo configurado en `.claude/mcp.json`
## Restricciones
- Siempre escribir pruebas para nuevas funcionalidades
- Nunca confirmar directamente en `main`; usar ramas de funcionalidades
- Preferir editar archivos existentes antes que crear nuevos
- Mantener funciones por debajo de 50 líneas cuando sea posible
Patrón de Colaboración Multi-Agente
Cuando una tarea abarca múltiples agentes, el núcleo los ejecuta secuencialmente o en paralelo:
Usuario: "Construye una página de aterrizaje y escribe la publicación de blog de lanzamiento"
Enrutamiento del núcleo:
1. @dev - "Construye una página de aterrizaje con [requisitos]"
2. @writer - "Escribe una publicación de blog de lanzamiento para [producto] usando el texto de la página de aterrizaje"
3. El núcleo sintetiza ambos resultados en una respuesta unificada
Para ejecución en paralelo, usa la capacidad de tareas en segundo plano de Claude Code o scripts de shell que invoquen Claude Code con contextos de agente específicos.
Comandos y Flujos de Trabajo Diarios
Los comandos slash son archivos markdown en .claude/commands/. Definen flujos de trabajo reutilizables.
Estructura de Comando
# /daily-sync
Ejecutar la reunión matutina:
1. Leer `data/logs/ultima-sincronizacion.md` para contexto
2. Verificar el estado del proyecto: `git status`, PRs pendientes, salud del CI
3. Revisar `data/inbox/` para nuevas tareas o decisiones necesarias
4. Generar un resumen de bloqueos, prioridades y próximas acciones
5. Añadir el informe a `data/logs/diario/<fecha>.md`
Conjunto Estándar de Comandos
| Comando | Propósito |
|---|---|
/daily-sync | Informe matutino: estado, bloqueos, prioridades |
/outreach | Ejecutar flujo de trabajo de divulgación (correo, LinkedIn, etc.) |
/research <tema> | Investigación profunda con seguimiento de citas |
/apply-jobs | Adaptar currículum + carta de presentación para un puesto objetivo |
/analytics | Obtener métricas de Stripe, GitHub o fuentes personalizadas |
/interview-prep | Generar tarjetas didácticas o preguntas de entrevista simulada |
/decision <tema> | Registrar una decisión con pros/contra y camino elegido |
Activación de Comandos
Coloca los archivos de comando en .claude/commands/<nombre-comando>.md. Claude Code los descubre automáticamente. Los usuarios los invocan con /<nombre-comando>.
Memoria Persistente
La memoria se basa en archivos. Sin BD vectorial, sin Redis, sin PostgreSQL. Los archivos JSON y markdown en data/ son la base de datos.
Estructura del Directorio de Memoria
data/
├── daily-logs/ # Registros de actividad diarios de solo anexar
├── projects/ # Archivos de contexto por proyecto
├── decisions/ # Decisiones arquitectónicas y de negocio (formato ADR)
├── inbox/ # Nuevas tareas o ideas pendientes de clasificación
├── contacts/ # Personas, empresas, notas de relaciones
└── templates/ # Prompts y formatos reutilizables
Formato de Registro Diario
# 2026-04-22 - Registro Diario
## Sesiones
- 09:00 - Sesión 1: Refactorización del módulo de autenticación (@dev)
- 11:30 - Sesión 2: Redacción de actualización para inversores (@writer)
## Decisiones
- Cambiado de JWT a cookies de sesión (ver `data/decisions/2026-04-22-auth.md`)
## Bloqueos
- Esperando clave API del proveedor (seguimiento 2026-04-24)
## Próximas Acciones
- [ ] Fusionar PR de refactorización de autenticación
- [ ] Enviar actualización para inversores para revisión
Patrón de Auto-Reflexión
Al final de cada sesión, el núcleo añade una reflexión:
## Reflexión - Sesión 3
- Lo que funcionó: La ejecución paralela de agentes ahorró 20 minutos
- Lo que no funcionó: @researcher encontró una fuente con muro de pago, se necesita mejor clasificación de fuentes
- Lo que cambiar: Añadir campo `nivel-fuente` a las notas de investigación (credibilidad A/B/C)
Esto crea un bucle de retroalimentación que mejora el sistema con el tiempo sin cambios de código.
Automatización Programada
Las tareas del Agentic OS se ejecutan según un horario usando cron externo, no el cron integrado de Claude Code (que muere cuando la sesión termina).
macOS: LaunchAgent
<!-- ~/Library/LaunchAgents/com.agentic.daily-sync.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" ...>
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.agentic.daily-sync</string>
<key>ProgramArguments</key>
<array>
<string>/claude</string>
<string>--cwd</string>
<string>/ruta/al/proyecto</string>
<string>--command</string>
<string>/daily-sync</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/tmp/agentic-daily-sync.log</string>
</dict>
</plist>
Linux: systemd Timer
# ~/.config/systemd/user/agentic-daily-sync.service
[Unit]
Description=Sincronización Diaria Agentic OS
[Service]
Type=oneshot
ExecStart=/usr/local/bin/claude --cwd /ruta/al/proyecto --command /daily-sync
# ~/.config/systemd/user/agentic-daily-sync.timer
[Unit]
Description=Ejecutar sincronización diaria cada mañana
[Timer]
OnCalendar=*-*-* 8:00:00
Persistent=true
[Install]
WantedBy=timers.target
Multiplataforma: pm2
# ecosystem.config.js
module.exports = {
apps: [{
name: 'agentic-daily-sync',
script: 'claude',
args: '--cwd /ruta/al/proyecto --command /daily-sync',
cron_restart: '0 8 * * *',
autorestart: false
}]
};
Capa de Datos
La capa de datos es tu sistema de archivos. Usa JSON para datos estructurados y markdown para contenido narrativo.
JSON para Estado Estructurado
// data/projects/website-v2.json
{
"name": "Website v2",
"status": "en-progreso",
"milestone": "lanzamiento-beta",
"agents_involved": ["@dev", "@writer"],
"files": {
"spec": "docs/website-v2-spec.md",
"design": "designs/website-v2.fig"
},
"metrics": {
"commits": 47,
"last_session": "2026-04-22T11:30:00Z"
}
}
Markdown para Narrativa
Usa markdown para cualquier cosa que lea un humano: decisiones, registros, notas de investigación, registros de contactos.
Evolución del Esquema
Nunca renombres campos existentes. Añade nuevos campos y marca los antiguos como obsoletos:
{
"name": "Website v2",
"status": "en-progreso",
"milestone": "lanzamiento-beta",
"_deprecated_priority": "alta",
"priority_v2": { "level": "alta", "rationale": "Bloquea demo de inversores" }
}
Esto mantiene los datos históricos legibles sin scripts de migración.
Anti-Patrones
Agente Único Monolítico
# MALO - Un solo agente hace todo
Eres desarrollador full-stack, escritor, investigador e ingeniero DevOps.
Divide en agentes especialistas. El núcleo maneja el enrutamiento.
Sesiones Sin Estado
# MALO - Sin memoria entre sesiones
Empezando desde cero cada vez que Claude Code se abre.
Siempre lee data/ al inicio de la sesión y escribe al final.
Credenciales Hardcodeadas
# MALO - Claves API en archivos de agente o CLAUDE.md
Tu clave de API de OpenAI es sk-xxxxxxxx
Usa variables de entorno o un archivo .env cargado por scripts. Los agentes referencian process.env.API_KEY.
Base de Datos Externa para Estado Simple
# MALO - PostgreSQL para el sistema operativo agéntico de un solo usuario
Usa archivos JSON/markdown hasta que tengas múltiples usuarios concurrentes o GB de datos.
Enrutamiento Sobrepensado
# MALO - Lógica de enrutamiento en código en lugar de tablas markdown
if (intent.includes('deploy')) { agent = opsAgent; }
Mantén el enrutamiento declarativo en tablas markdown de CLAUDE.md. Es inspeccionable, editable y depurable.
Mejores Prácticas
-
CLAUDE.mdtiene menos de 200 líneas y cabe en la ventana de contexto - Cada archivo de agente tiene menos de 100 líneas y se centra en un dominio
-
data/está en gitignore para registros sensibles, rastreado por Git para decisiones y especificaciones - Los comandos usan nombres imperativos:
/daily-sync, no/run-daily-sync - Los registros son de solo anexar; nunca edites registros diarios pasados
- Cada agente tiene una sección
Alcance de Memoriaque define qué archivos lee - Las reflexiones se escriben al final de cada sesión
- Las tareas programadas usan cron externo (LaunchAgent, systemd, pm2), no el cron de sesión de Claude Code
- Seguimiento de costes: registrar gasto de API por sesión en
data/logs/<fecha>-costs.json - Un proyecto = un Agentic OS. No compartas un único
CLAUDE.mdentre proyectos no relacionados.