Arquitectura de Agentes: Construyendo Sistemas de Desarrollo Impulsados por IA
# El sistema completo para construir sistemas de agentes de IA en producción. Skills, hooks, memoria, subagentes, orquestación multiagente y los patrones que convierten a los agentes de codificación con IA en infraestructura confiable.
TL;DR: Claude Code no es una caja de chat con acceso a archivos. Es un runtime programable con 29 eventos de ciclo de vida documentados, cada uno enganchable con scripts de shell que el modelo no puede saltarse. Apila hooks en despachadores, despachadores en skills, skills en agentes, agentes en flujos de trabajo, y obtienes un harness de desarrollo autónomo que aplica restricciones, delega trabajo, persiste memoria entre sesiones y orquesta deliberación multi-agente. Esta guía cubre cada capa de ese stack: desde un solo hook hasta un sistema de consenso de 10 agentes. Cero frameworks requeridos. Todo en bash y JSON.
Andrej Karpathy acuñó un término para lo que crece alrededor de un agente LLM: claws (garras). Los hooks, scripts y orquestación que le permiten al agente aferrarse al mundo más allá de su ventana de contexto.1 La mayoría de los desarrolladores tratan a los agentes de codificación con IA como asistentes interactivos. Escriben un prompt, lo ven editar un archivo, y siguen adelante. Ese encuadre limita la productividad a lo que puedes supervisar personalmente.
El modelo mental de infraestructura es diferente: un agente de codificación con IA es un runtime programable con un kernel LLM. Cada acción que el modelo realiza pasa por hooks que tú controlas. Defines políticas, no prompts. El modelo opera dentro de tu infraestructura de la misma manera que un servidor web opera dentro de las reglas de nginx. No te sientas frente a nginx a escribir solicitudes. Lo configuras, lo despliegas y lo monitoreas.
La distinción importa porque la infraestructura se compone. Un hook que bloquea credenciales en comandos bash protege cada sesión, cada agente, cada ejecución autónoma. Un skill que codifica tu rúbrica de evaluación se aplica de forma consistente, ya sea que lo invoques tú o un agente. Un agente que revisa código por seguridad ejecuta las mismas verificaciones, estés mirando o no.2
Puntos clave
- Los hooks garantizan ejecución; los prompts no. Usa hooks para linting, formateo, verificaciones de seguridad y cualquier cosa que deba ejecutarse cada vez sin importar el comportamiento del modelo. El código de salida 2 bloquea acciones. El código de salida 1 solo advierte.3
- Los skills codifican experticia de dominio que se autoactiva. El campo
descriptionlo determina todo. Claude usa razonamiento LLM (no coincidencia de palabras clave) para decidir cuándo aplicar un skill.4 - Los subagentes previenen la inflación del contexto. Las ventanas de contexto aisladas para exploración y análisis mantienen ligera la sesión principal. Ejecuta subagentes independientes en paralelo, y usa equipos de agentes cuando los workers necesiten coordinación sostenida.5
- La memoria vive en el sistema de archivos. Los archivos persisten a través de las ventanas de contexto. CLAUDE.md, MEMORY.md, los directorios de reglas y los documentos de handoff forman un sistema de memoria externa estructurado.6
- La deliberación multi-agente detecta puntos ciegos. Los agentes individuales no pueden cuestionar sus propias suposiciones. Dos agentes independientes con distintas prioridades de evaluación detectan fallos estructurales que las puertas de calidad no pueden abordar.7
- El patrón harness es el sistema. CLAUDE.md, hooks, skills, agentes y memoria no son funciones independientes. Se componen en una capa determinista entre tú y el modelo que escala con la automatización.
Cómo usar esta guía
| Experiencia | Empieza aquí | Luego explora |
|---|---|---|
| Usas Claude Code a diario, quieres más | The Harness Pattern | Skills System, Hook Architecture |
| Construyes flujos de trabajo autónomos | Subagent Patterns | Multi-Agent Orchestration, Production Patterns |
| Evalúas arquitectura de agentes | Why Agent Architecture Matters | Decision Framework, Security Considerations |
| Configuras un harness de equipo | CLAUDE.md Design | Hook Architecture, Quick Reference Card |
Cada sección se apoya en la anterior. El Decision Framework al final ofrece una tabla de búsqueda para elegir el mecanismo correcto para cada tipo de problema.
La ruta dorada de cinco minutos
Antes de la inmersión profunda, aquí tienes el camino más corto desde cero hasta un harness funcional. Un hook, un skill, un subagent, un resultado.
Paso 1: crea un hook de seguridad (2 minutos)
Crea .claude/hooks/block-secrets.sh:
#!/bin/bash
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
if echo "$CMD" | grep -qEi '(AKIA|sk-|ghp_|password=)'; then
echo "BLOCKED: Potential secret in command" >&2
exit 2
fi
Conéctalo en .claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": ".claude/hooks/block-secrets.sh" }]
}
]
}
}
Resultado: cada comando bash que Claude ejecuta ahora se analiza en busca de credenciales filtradas. El modelo no puede omitir esta verificación.
Paso 2: crea un skill de revisión de código (1 minuto)
Crea .claude/skills/reviewer/SKILL.md con frontmatter (name: reviewer, description: Review code for security issues, bugs, and quality problems. Use when examining changes, reviewing PRs, or auditing code., allowed-tools: Read, Grep, Glob) y una lista de verificación: inyección SQL, XSS, secretos codificados, manejo de errores ausente, funciones de más de 50 líneas.
Resultado: Claude activa automáticamente esta experiencia cada vez que mencionas revisar, verificar o auditar.
Paso 3: genera un subagent (30 segundos)
En cualquier sesión de Claude Code, pídele a Claude que revise los últimos 3 commits en busca de problemas de seguridad usando un agente separado. Claude genera un Explore agent que lee el diff, aplica tu skill de revisión y devuelve un resumen. Tu contexto principal se mantiene limpio.
Lo que ahora tienes
Un harness de tres capas: una puerta de seguridad determinista (hook), experiencia de dominio que se activa automáticamente (skill) y análisis aislado que protege tu contexto (subagent). Cada sección a continuación amplía una de estas tres capas.
Por qué importa la arquitectura de agentes
Simon Willison enmarca el momento actual en torno a una sola observación: escribir código ahora es barato.8 Correcto. Pero el corolario es que la verificación es ahora la parte costosa. El código barato sin infraestructura de verificación produce bugs a escala. La inversión que rinde no es un mejor prompt. Es el sistema que rodea al modelo y atrapa lo que el modelo pasa por alto.
Tres fuerzas hacen que la arquitectura de agentes sea necesaria:
Las ventanas de contexto son finitas y con pérdida. Cada archivo leído, salida de herramienta y turno de conversación consume tokens. Microsoft Research y Salesforce probaron 15 LLMs a través de más de 200.000 conversaciones simuladas y encontraron una caída de rendimiento promedio del 39% de la interacción de un solo turno a la interacción de múltiples turnos.9 La degradación comienza en tan solo dos turnos y sigue una curva predecible: las ediciones precisas de múltiples archivos en los primeros 30 minutos se degradan a una visión de túnel de un solo archivo para el minuto 90. Las ventanas de contexto más largas no arreglan esto. La condición “Concat” del mismo estudio (conversación completa como un único prompt) logró el 95,1% del rendimiento de un solo turno con contenido idéntico. La degradación proviene de los límites entre turnos, no de los límites de tokens.
El comportamiento del modelo es probabilístico, no determinista. Decirle a Claude “ejecuta siempre Prettier después de editar archivos” funciona aproximadamente el 80% del tiempo.3 El modelo podría olvidarlo, priorizar la velocidad o decidir que el cambio es “demasiado pequeño.” Para cumplimiento, seguridad y estándares de equipo, el 80% no es aceptable. Los hooks garantizan la ejecución: cada Edit o Write activa tu formateador, siempre, sin excepciones. Lo determinista gana a lo probabilístico.
Las perspectivas individuales pasan por alto problemas multidimensionales. Un solo agente que revisaba un endpoint API verificó la autenticación, validó el saneamiento de entrada y comprobó los encabezados CORS. Certificado de salud impecable. Un segundo agente, al que se le indicó por separado actuar como pentester, encontró que el endpoint aceptaba parámetros de consulta sin límite que podían provocar denegación de servicio mediante amplificación de consultas a la base de datos.7 El primer agente nunca lo verificó porque nada en su marco de evaluación trataba la complejidad de las consultas como una superficie de seguridad. Esa brecha es estructural. Ninguna cantidad de ingeniería de prompts la soluciona.
La arquitectura de agentes aborda las tres: los hooks imponen restricciones deterministas, los subagents gestionan el aislamiento de contexto y la orquestación multi-agente aporta perspectivas independientes. Juntos forman el harness.
El Patrón Harness
El harness no es un framework. Es un patrón: un conjunto componible de archivos, scripts y convenciones que envuelven a un agente de codificación con IA en infraestructura determinista. Los componentes:
┌──────────────────────────────────────────────────────────────┐
│ THE HARNESS PATTERN │
├──────────────────────────────────────────────────────────────┤
│ ORCHESTRATION │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Agent │ │ Agent │ │ Consensus │ │
│ │ Teams │ │ Spawning │ │ Validation│ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ Multi-agent deliberation, parallel research, voting │
├──────────────────────────────────────────────────────────────┤
│ EXTENSION LAYER │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Skills │ │ Hooks │ │ Memory │ │ Agents │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ Domain expertise, deterministic gates, persistent state, │
│ specialized subagents │
├──────────────────────────────────────────────────────────────┤
│ INSTRUCTION LAYER │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ CLAUDE.md + .claude/rules/ + MEMORY.md │ │
│ └──────────────────────────────────────────────────────┘ │
│ Project context, operational policy, cross-session memory │
├──────────────────────────────────────────────────────────────┤
│ CORE LAYER │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Main Conversation Context (LLM) │ │
│ └──────────────────────────────────────────────────────┘ │
│ Your primary interaction; finite context; costs money │
└──────────────────────────────────────────────────────────────┘
Capa de instrucciones: los archivos CLAUDE.md y los directorios de reglas definen lo que el agente sabe sobre tu proyecto. Se cargan automáticamente al iniciar la sesión y después de cada compactación. Esta es la memoria arquitectónica de largo plazo del agente.
Capa de extensión: las skills aportan experiencia de dominio que se autoactiva según el contexto. Los hooks proporcionan compuertas deterministas que se disparan en cada llamada a herramienta coincidente. Los archivos de memoria persisten el estado entre sesiones. Los agentes personalizados ofrecen configuraciones especializadas de subagents.
Capa de orquestación: los patrones multiagente coordinan agentes independientes para investigación, revisión y deliberación. Los presupuestos de spawn previenen la recursión descontrolada. La validación por consenso asegura la calidad.
La idea clave: la mayoría de los usuarios trabajan exclusivamente en la capa central, observando cómo crece el contexto y suben los costos. Los usuarios avanzados configuran las capas de instrucciones y extensión, y luego usan la capa central solo para orquestación y decisiones finales.2
Harnesses gestionados vs. autoalojados (abril de 2026)
Durante principios de 2026, el camino de “construye tu propio harness” fue la única opción real. En abril de 2026, eso cambió. Anthropic lanzó Claude Managed Agents en beta pública (8 de abril): bucle del harness + ejecución de herramientas + contenedor sandbox + persistencia de estado como una REST API, facturada a tokens estándar más $0,08/hora-sesión. La actualización Agents SDK de OpenAI (16 de abril) formalizó la misma división — harness y cómputo como capas separadas, con proveedores nativos de sandbox (Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel) y snapshot/rehydrate para sobrevivir a la pérdida de contenedores.2324
La superficie más profunda del SDK del lado de OpenAI llegó en openai-agents Python v0.14.0 (lanzado el 15 de abril de 2026; anunciado el 16 de abril): una subclase SandboxAgent de Agent con default_manifest, instrucciones de sandbox y capacidades; un Manifest que describe el contrato de espacio de trabajo limpio (archivos, directorios, archivos locales, repositorios Git, env, usuarios, mounts); un SandboxRunConfig para el cableado por ejecución del cliente de sandbox, inyección de sesión en vivo, sobreescrituras del manifest, snapshots y límites de concurrencia de materialización. Las capacidades integradas cubren acceso a shell, edición de sistema de archivos, inspección de imágenes, skills, memoria de sandbox y compactación. La memoria del sandbox persiste las lecciones extraídas entre ejecuciones y las divulga progresivamente; los workspaces admiten archivos locales, entradas de repositorios Git y mounts remotos (S3, R2, GCS, Azure Blob, S3 Files); los snapshots son portables entre proveedores. Backends: UnixLocalSandboxClient, DockerSandboxClient y clientes alojados para Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop y Vercel mediante extras opcionales.24
Para proyectos en Python que quieren incrustar el runtime de Claude Code como librería — entre “ejecutar claude en un shell” y “REST API a Managed Agents” — claude-agent-sdk-python es la tercera opción. La serie del 28 al 29 de abril (v0.1.69 → v0.1.71) actualizó el CLI incluido a v2.1.123, elevó el piso de la dependencia mcp a >=1.19.0 (las versiones anteriores descartaban silenciosamente los retornos CallToolResult de las herramientas MCP en proceso, dejando al modelo con un blob de error de validación) y llevó SandboxNetworkConfig a paridad de schema con el SDK de TypeScript (allowedDomains, deniedDomains, allowManagedDomainsOnly, allowMachLookup).30
La bifurcación arquitectónica ya es real:
| Dimensión | Harness autoalojado (predeterminado de esta guía) | Harness gestionado (Claude Managed Agents / OpenAI Agents SDK) |
|---|---|---|
| Carga operativa | Tú ejecutas todo | El proveedor ejecuta el bucle, el sandbox y el estado |
| Personalización | Total — tus hooks, tus skills, tu memoria | Acotada — puntos de extensión definidos por el proveedor |
| Modelo de costos | Token + cómputo autoalojado | Token + recargo por hora de runtime |
| Durabilidad del estado | Tú la diseñas | El proveedor hace checkpoints entre desconexiones |
| Orquestación de equipos de agentes | Constrúyela tú | Coordinación multiagente proporcionada por el proveedor |
Cuándo elegir cuál: el autoalojado sigue siendo lo correcto para equipos que ya tienen músculo de infraestructura, quieren skills/hooks que controlan o están optimizando profundamente un flujo de trabajo específico. El gestionado es lo correcto para equipos sin ingenieros de plataforma dedicados, cuando el tiempo hasta el valor importa más que la personalización, o cuando las ejecuciones del agente necesitan sobrevivir de forma confiable al cierre del laptop sin que tengas que construir esa capa de persistencia. Los dos son compatibles — puedes ejecutar un harness autoalojado que delegue tareas específicas de larga duración a Managed Agents mediante su REST API.
Cómo se ve el harness en disco
~/.claude/
├── CLAUDE.md # Personal global instructions
├── settings.json # User-level hooks and permissions
├── skills/ # Personal skills (44+)
│ ├── code-reviewer/SKILL.md
│ ├── security-auditor/SKILL.md
│ └── api-designer/SKILL.md
├── agents/ # Custom subagent definitions
│ ├── security-reviewer.md
│ └── code-explorer.md
├── rules/ # Categorized rule files
│ ├── security.md
│ ├── testing.md
│ └── git-workflow.md
├── hooks/ # Hook scripts
│ ├── validate-bash.sh
│ ├── auto-format.sh
│ └── recursion-guard.sh
├── configs/ # JSON configuration
│ ├── recursion-limits.json
│ └── deliberation-config.json
├── state/ # Runtime state
│ ├── recursion-depth.json
│ └── agent-lineage.json
├── handoffs/ # Session handoff documents
│ └── deliberation-prd-7.md
└── projects/ # Per-project memory
└── {project}/memory/MEMORY.md
.claude/ # Project-level (in repo)
├── CLAUDE.md # Project instructions
├── settings.json # Project hooks
├── skills/ # Team-shared skills
├── agents/ # Team-shared agents
└── rules/ # Project rules
Cada archivo en esta estructura cumple un propósito. El árbol ~/.claude/ es infraestructura personal que aplica a todos los proyectos. El árbol .claude/ en cada repositorio es específico del proyecto y se comparte vía git. Juntos, conforman el harness completo.
Sistema de Skills
Las skills son extensiones invocadas por el modelo. Claude las descubre y las aplica automáticamente según el contexto, sin que tengas que llamarlas explícitamente.4 El momento en que te descubres reexplicando el mismo contexto sesión tras sesión es el momento en que deberías construir una skill.
Cuándo construir una skill
| Situación | Construye un… | Por qué |
|---|---|---|
| Pegas la misma checklist en cada sesión | Skill | Experiencia de dominio que se autoactiva |
| Ejecutas la misma secuencia de comandos explícitamente | Slash command | Acción invocada por el usuario con un disparador predecible |
| Necesitas un análisis aislado que no debería contaminar el contexto | Subagent | Ventana de contexto separada para trabajo enfocado |
| Necesitas un prompt único con instrucciones específicas | Nada | Solo escríbelo. No todo necesita abstracción. |
Las skills son para conocimiento que Claude siempre tiene disponible. Los slash commands son para acciones que activas explícitamente. Si estás decidiendo entre los dos, pregúntate: “¿Debería Claude aplicar esto automáticamente, o debería decidir yo cuándo ejecutarlo?”
Crear una skill
Las skills viven en cuatro ubicaciones posibles, desde el alcance más amplio al más estrecho:4
| Alcance | Ubicación | Se aplica a |
|---|---|---|
| Empresa | Configuración gestionada | Todos los usuarios de la organización |
| Personal | ~/.claude/skills/<name>/SKILL.md |
Todos tus proyectos |
| Proyecto | .claude/skills/<name>/SKILL.md |
Solo este proyecto |
| Plugin | <plugin>/skills/<name>/SKILL.md |
Donde el plugin esté habilitado |
Cada skill requiere un archivo SKILL.md con frontmatter YAML:
---
name: code-reviewer
description: Review code for security vulnerabilities, performance issues,
and best practice violations. Use when examining code changes, reviewing
PRs, analyzing code quality, or when asked to review, audit, or check code.
allowed-tools: Read, Grep, Glob
---
# Code Review Expertise
## Security Checks
When reviewing code, verify:
### Input Validation
- All user input sanitized before database operations
- Parameterized queries (no string interpolation in SQL)
- Output encoding for rendered HTML content
### Authentication
- Session tokens validated on every protected endpoint
- Permission checks before data mutations
- No hardcoded credentials or API keys in source
Referencia de frontmatter
| Campo | Requerido | Propósito |
|---|---|---|
name |
Sí | Identificador único (minúsculas, guiones, máx. 64 caracteres) |
description |
Sí | Disparador de descubrimiento (máx. 1024 caracteres). Claude lo usa para decidir cuándo aplicar la skill |
allowed-tools |
No | Restringe las capacidades de Claude (p. ej., Read, Grep, Glob para solo lectura) |
disable-model-invocation |
No | Impide la autoactivación; la skill solo se activa mediante /skill-name |
user-invocable |
No | Configúralo en false para ocultarla por completo del menú / |
model |
No | Anula qué modelo usar cuando la skill está activa |
context |
No | Configúralo en fork para ejecutarse en una ventana de contexto aislada |
agent |
No | Ejecuta como subagent con su propio contexto aislado |
hooks |
No | Define hooks de ciclo de vida con alcance a esta skill |
$ARGUMENTS |
No | Sustitución de cadena: se reemplaza con la entrada del usuario después de /skill-name |
El campo description lo es todo
Al inicio de la sesión, Claude Code extrae el name y la description de cada skill y los inyecta en el contexto de Claude. Cuando envías un mensaje, Claude usa razonamiento del modelo de lenguaje para decidir si alguna skill es relevante. Un análisis independiente del código fuente de Claude Code confirma el mecanismo: las descripciones de las skills se inyectan en una sección available_skills del system prompt, y el modelo usa comprensión del lenguaje estándar para seleccionar las skills relevantes.10
Descripción mala:
description: Helps with code
Descripción efectiva:
description: Review code for security vulnerabilities, performance issues,
and best practice violations. Use when examining code changes, reviewing
PRs, analyzing code quality, or when asked to review, audit, or check code.
La descripción efectiva incluye: qué hace (revisar código en busca de tipos específicos de problemas), cuándo usarla (examinar cambios, PRs, análisis de calidad) y frases disparadoras (review, audit, check) que los usuarios escriben de forma natural.
Presupuesto de contexto
Todas las descripciones de skills comparten un presupuesto de contexto que escala dinámicamente al 1 % de la ventana de contexto, con un valor de respaldo de 8.000 caracteres.4 Si tienes muchas skills, mantén cada descripción concisa y pon primero el caso de uso clave. Puedes anular el presupuesto mediante la variable de entorno SLASH_COMMAND_TOOL_CHAR_BUDGET,11 pero la mejor solución son descripciones más cortas y precisas. Ejecuta /context durante una sesión para comprobar si se está excluyendo alguna skill.
Archivos de apoyo y organización
Las skills pueden hacer referencia a archivos adicionales en el mismo directorio:
~/.claude/skills/code-reviewer/
├── SKILL.md # Required: frontmatter + core expertise
├── SECURITY_PATTERNS.md # Referenced: detailed vulnerability patterns
└── PERFORMANCE_CHECKLIST.md # Referenced: optimization guidelines
Haz referencia a ellos desde SKILL.md con enlaces relativos. Claude lee estos archivos bajo demanda cuando la skill se activa. Mantén SKILL.md por debajo de 500 líneas y traslada el material de referencia detallado a archivos de apoyo.12
Compartir skills mediante Git
Las skills de proyecto (.claude/skills/ en la raíz del repo) se comparten mediante control de versiones:4
mkdir -p .claude/skills/domain-expert
# ... write SKILL.md ...
git add .claude/skills/
git commit -m "feat: add domain-expert skill for payment processing rules"
git push
Cuando tus compañeros de equipo hagan pull, obtendrán la skill automáticamente. Sin instalación, sin configuración. Esta es la forma más efectiva de estandarizar la experiencia en un equipo.
Skills como biblioteca de prompts
Más allá de las skills de propósito único, la estructura de directorios funciona como una biblioteca de prompts organizada:
~/.claude/skills/
├── code-reviewer/ # Activates on: review, audit, check
├── api-designer/ # Activates on: design API, endpoint, schema
├── sql-analyst/ # Activates on: query, database, migration
├── deploy-checker/ # Activates on: deploy, release, production
└── incident-responder/ # Activates on: error, failure, outage, debug
Cada skill codifica una faceta diferente de tu experiencia. Juntas, forman una base de conocimiento de la que Claude extrae automáticamente según el contexto. Un desarrollador junior obtiene orientación de nivel senior sin pedirla.
Las skills se componen con hooks
Las skills pueden definir sus propios hooks en el frontmatter que se activan solo mientras la skill está en ejecución. Esto crea comportamiento específico del dominio que no contamina otras sesiones:2
---
name: deploy-checker
description: Verify deployment readiness. Use when preparing to deploy,
release, or push to production.
hooks:
PreToolUse:
- matcher: Bash
hooks:
- type: command
command: "bash -c 'INPUT=$(cat); CMD=$(echo \"$INPUT\" | jq -r \".tool_input.command\"); if echo \"$CMD\" | grep -qE \"deploy|release|publish\"; then echo \"DEPLOYMENT COMMAND DETECTED. Running pre-flight checks.\" >&2; fi'"
---
Las skills de filosofía se autoactivan mediante hooks SessionStart, inyectando restricciones de calidad en cada sesión sin invocación explícita. La skill en sí es conocimiento. El hook es la aplicación. Juntos, forman una capa de política.
Errores comunes con las skills
Descripciones demasiado amplias. Una skill git-rebase-helper que se active ante cualquier prompt relacionado con git (rebases, merges, cherry-picks, incluso git status) contamina el contexto en el 80 % de las sesiones. La solución es ajustar la descripción o añadir disable-model-invocation: true y exigir invocación explícita mediante /skill-name.4
Demasiadas skills compitiendo por el presupuesto. Más skills significa más descripciones compitiendo por el presupuesto de contexto del 1 %. Si notas que algunas skills no se activan, revisa /context para ver cuáles están excluidas. Prioriza menos skills bien descritas frente a muchas imprecisas.
Información crítica enterrada en archivos de apoyo. Claude lee SKILL.md inmediatamente, pero solo accede a los archivos de apoyo cuando los necesita. Si la información crítica está en un archivo de apoyo, puede que Claude no la encuentre. Pon la información esencial directamente en SKILL.md.4
Superficie de skills de SDK (8 de mayo de 2026)
Los harnesses autohospedados sobre claude-agent-sdk-python v0.1.77+ deberían usar la opción skills en ClaudeAgentOptions para declarar las skills disponibles, no el valor heredado "Skill" en allowed_tools.37 El atajo "Skill" está obsoleto y la opción dedicada le da a Claude Code información más estructurada sobre qué skills están disponibles. El CLI incluido en v0.1.77 es v2.1.133.
Arquitectura de hooks
Los hooks son comandos de shell activados por eventos del ciclo de vida de Claude Code.3 Se ejecutan fuera del LLM como scripts simples, no como prompts interpretados por el modelo. ¿El modelo quiere ejecutar rm -rf /? Un script bash de 10 líneas verifica el comando contra una lista de bloqueo y lo rechaza antes de que el shell lo vea siquiera. El hook se dispara independientemente de si el modelo lo desea o no.
Eventos disponibles
Claude Code expone 29 eventos del ciclo de vida documentados en ocho categorías al momento de esta actualización de la guía. La lista de eventos crece con cada versión, así que trata los documentos de referencia como la fuente de verdad y consulta el cheat sheet para ver la tabla completa actual antes de configurar hooks de producción:13
| Categoría | Eventos | ¿Puede bloquear? |
|---|---|---|
| Sesión | SessionStart, Setup, SessionEnd |
No |
| Usuario / finalización | UserPromptSubmit, UserPromptExpansion, Stop, StopFailure, TeammateIdle |
Prompt/expansion/stop/idle pueden bloquear; StopFailure no |
| Herramienta | PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, PostToolBatch |
Pre/permission/batch pueden bloquear; los eventos post no |
| Subagente / tarea | SubagentStart, SubagentStop, TaskCreated, TaskCompleted |
Stop/task pueden bloquear; start no |
| Contexto | PreCompact, PostCompact, InstructionsLoaded |
PreCompact puede bloquear; post/load no |
| Sistema de archivos / espacio de trabajo | CwdChanged, FileChanged, WorktreeCreate, WorktreeRemove |
La creación de worktree puede bloquear; las demás no |
| Configuración / notificación | ConfigChange, Notification |
Los cambios de configuración pueden bloquear excepto las configuraciones de política; las notificaciones no |
| MCP | Elicitation, ElicitationResult |
Sí |
Semántica de los códigos de salida
Los códigos de salida determinan si los hooks bloquean acciones:3
| Código de salida | Significado | Acción |
|---|---|---|
| 0 | Éxito | La operación procede. La salida estándar se muestra en modo detallado. |
| 2 | Error de bloqueo | La operación se detiene. Stderr se convierte en un mensaje de error que se envía a Claude. |
| 1, 3, etc. | Error sin bloqueo | La operación continúa. Stderr se muestra solo en modo detallado (Ctrl+O). |
Crítico: Cada hook de seguridad debe usar exit 2, no exit 1. Exit 1 es una advertencia sin bloqueo. El comando peligroso se sigue ejecutando. Este es el error de hook más común en los equipos.14
Configuración de hooks
Los hooks viven en archivos de configuración. A nivel de proyecto (.claude/settings.json) para hooks compartidos. A nivel de usuario (~/.claude/settings.json) para hooks personales:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/validate-bash.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; fi'"
}
]
}
]
}
}
El campo matcher filtra un valor específico del evento. Para los eventos de herramientas, coincide con valores de tool_name como Bash, Edit, Write, Read, Glob, Grep, nombres de herramientas MCP como mcp__server__tool, o * para todas las herramientas. Los nombres simples y las listas separadas por | son coincidencias exactas; los valores con otros caracteres son expresiones regulares de JavaScript. Algunos eventos no admiten matchers y siempre se disparan cuando están configurados.13
Protocolo de entrada/salida de hooks
Los hooks reciben JSON por stdin con el contexto completo:
{
"tool_name": "Bash",
"tool_input": {
"command": "npm test",
"description": "Run test suite"
},
"session_id": "abc-123",
"agent_id": "main",
"agent_type": "main"
}
Para un control avanzado, los hooks PreToolUse pueden devolver JSON para modificar la entrada de la herramienta, inyectar contexto o tomar decisiones de permisos. Usa el wrapper hookSpecificOutput — el formato anterior decision/reason de nivel superior está obsoleto para PreToolUse:
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"permissionDecisionReason": "Command validated and modified",
"updatedInput": {
"command": "npm test -- --coverage --ci"
},
"additionalContext": "Note: This database has a 5-second query timeout."
}
}
Tres tipos de garantías
Antes de escribir cualquier hook, pregúntate: ¿qué tipo de garantía necesito?14
Las garantías de formato aseguran consistencia después del hecho. Los hooks PostToolUse en Write/Edit ejecutan tu formateador después de cada cambio de archivo. La salida del modelo no importa porque el formateador normaliza todo.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; elif [[ \"$FILE_PATH\" == *.js ]] || [[ \"$FILE_PATH\" == *.ts ]]; then npx prettier --write \"$FILE_PATH\" 2>/dev/null; fi'"
}
]
}
]
}
}
Las garantías de seguridad previenen acciones peligrosas antes de que se ejecuten. Los hooks PreToolUse en Bash inspeccionan los comandos y bloquean los patrones destructivos con código de salida 2:
#!/bin/bash
# validate-bash.sh — block dangerous commands
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE "rm\s+-rf\s+/|git\s+push\s+(-f|--force)\s+(origin\s+)?main|git\s+reset\s+--hard|DROP\s+TABLE"; then
echo "BLOCKED: Dangerous command detected: $CMD" >&2
exit 2
fi
Las garantías de calidad validan el estado en puntos de decisión. Los hooks PreToolUse en comandos git commit ejecutan tu linter o suite de pruebas y bloquean el commit si las verificaciones de calidad fallan:
#!/bin/bash
# quality-gate.sh — lint before commit
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE "^git\s+commit"; then
if ! LINT_OUTPUT=$(ruff check . --select E,F,W 2>&1); then
echo "LINT FAILED -- fix before committing:" >&2
echo "$LINT_OUTPUT" >&2
exit 2
fi
fi
Tipos de hooks más allá de los comandos de shell
Claude Code admite cinco tipos de hooks:13
Hooks de comando (type: "command") ejecutan scripts de shell. Rápidos, deterministas, sin costo de tokens.
Hooks de herramientas MCP (type: "mcp_tool") llaman a una herramienta en un servidor MCP ya conectado. Úsalos cuando la lógica de validación ya vive detrás de un límite MCP y no necesita un script de shell separado.
Hooks de prompt (type: "prompt") envían un prompt de un solo turno a un modelo Claude rápido. El modelo devuelve { "ok": true } para permitir o { "ok": false, "reason": "..." } para bloquear. Úsalos para evaluaciones matizadas que la regex no puede expresar.
Hooks de agente (type: "agent") generan un subagente con acceso a herramientas (Read, Grep, Glob) para verificación multi-turno. Son experimentales; prefiere los hooks de comando para las puertas de producción y reserva los hooks de agente para verificaciones que realmente requieran inspeccionar archivos reales o salidas de pruebas:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "agent",
"prompt": "Verify all unit tests pass. Run the test suite and check results. $ARGUMENTS",
"timeout": 120
}
]
}
]
}
}
Hooks HTTP (type: "http") envían la entrada JSON del evento como una solicitud POST a una URL y reciben JSON de vuelta. Úsalos para webhooks, servicios de notificación externos o validación basada en API (v2.1.63+). No es compatible con eventos SessionStart:
{
"hooks": {
"PostToolUse": [
{
"hooks": [
{
"type": "http",
"url": "https://your-webhook.example.com/hook",
"headers": { "Authorization": "Bearer $WEBHOOK_TOKEN" },
"allowedEnvVars": ["WEBHOOK_TOKEN"],
"timeout": 10
}
]
}
]
}
}
Hooks asíncronos
Los hooks pueden ejecutarse en segundo plano sin bloquear la ejecución. Agrega async: true para operaciones no críticas como notificaciones y logging:13
{
"type": "command",
"command": ".claude/hooks/notify-slack.sh",
"async": true
}
Usa async para notificaciones, telemetría y respaldos. Nunca uses async para formateo, validación o cualquier cosa que deba completarse antes de la siguiente acción.
Despachadores en lugar de hooks independientes
Ejecutar siete hooks que se disparan todos en el mismo evento, cada uno leyendo stdin de forma independiente, crea condiciones de carrera. Dos hooks que escriban al mismo archivo de estado JSON de forma concurrente truncarán el JSON. Cada hook descendente que analice ese archivo se romperá.2
La solución: un despachador por evento que ejecuta los hooks secuencialmente desde stdin en caché:
#!/bin/bash
# dispatcher.sh — run hooks sequentially with cached stdin
INPUT=$(cat)
HOOK_DIR="$HOME/.claude/hooks/pre-tool-use.d"
for hook in "$HOOK_DIR"/*.sh; do
[ -x "$hook" ] || continue
echo "$INPUT" | "$hook"
EXIT_CODE=$?
if [ "$EXIT_CODE" -eq 2 ]; then
exit 2 # Propagate block
fi
done
Depuración de hooks
Cinco técnicas para depurar hooks que fallan silenciosamente:14
- Prueba los scripts de forma independiente. Pasa JSON de muestra por pipe:
echo '{"tool_input":{"command":"git commit -m test"}}' | bash your-hook.sh - Usa stderr para la salida de depuración. El stderr del código de salida 2 se envía de vuelta a Claude como mensaje de error. El stderr sin bloqueo (exit 1, 3, etc.) aparece solo en modo detallado (Ctrl+O).
- Vigila los fallos de jq. Las rutas JSON incorrectas devuelven
nullsilenciosamente. Prueba las expresionesjqcontra la entrada real de la herramienta. - Verifica los códigos de salida. Un hook PreToolUse que usa
exit 1no proporciona ninguna aplicación mientras parece funcionar. - Mantén los hooks rápidos. Los hooks se ejecutan de forma síncrona. Mantén todos los hooks por debajo de 2 segundos, idealmente por debajo de 500 ms.
Streaming de eventos de hooks del lado del SDK
Los harnesses autoalojados construidos sobre claude-agent-sdk-python (v0.1.74+, 6 de mayo de 2026) pueden suscribirse a los eventos de hooks directamente desde el flujo de mensajes en lugar de pasar por callbacks de scripts de shell.36 Configura include_hook_events=True en ClaudeAgentOptions y los objetos HookEventMessage (PreToolUse, PostToolUse, Stop y otros) se entregan desde el mismo iterador que los mensajes del asistente y los resultados de las herramientas. Esto refleja la opción includeHookEvents del SDK de TypeScript; el CLI incluido subió a v2.1.129 en la misma versión.
El patrón de flujo de eventos es la opción adecuada cuando tu harness ya vive en Python y quieres las señales de hooks en el mismo flujo de control que la salida del modelo. El contrato de hooks de scripts de shell (códigos de salida, stdin JSON, despachadores) sigue siendo la respuesta adecuada para harnesses que componen múltiples herramientas, comparten hooks entre Claude Code y Codex, o necesitan semántica de códigos de salida para el bloqueo.
Esfuerzo y procedencia de la sesión (7-8 de mayo de 2026)
Dos adiciones en Claude Code v2.1.132 y v2.1.133 dan a los hooks y subprocesos una mejor señal sobre su contexto de ejecución:3839
effort.levelen la entrada del hook. Los hooks ahora reciben un campo JSONeffort.levelen la misma entrada que llevatool_inputysession_id. El mismo valor se exporta como la variable de entorno$CLAUDE_EFFORT, para que los comandos Bash puedan leerlo sin analizar JSON. Usa esto para escalar el costo del hook con el nivel de esfuerzo: omite la validación costosa enlow, ejecuta la puerta de seguridad completa enxhighomax.- Variable de entorno
CLAUDE_CODE_SESSION_IDen subprocesos Bash. Los subprocesos de la herramienta Bash ahora ven el mismo valor desession_idque ven los hooks, expuesto comoCLAUDE_CODE_SESSION_ID. Esto cierra la brecha de procedencia para herramientas que registran estado por sesión y antes no podían correlacionar eventos de subproceso con eventos de hook.
Ambas señales están disponibles sin cambios de código; los hooks existentes que ignoran los nuevos campos siguen funcionando.
Memoria y contexto
Cada conversación con IA opera dentro de una ventana de contexto finita. A medida que la conversación crece, el sistema comprime los turnos anteriores para hacer espacio al contenido nuevo. La compresión tiene pérdidas. Las decisiones arquitectónicas documentadas en el turno 3 podrían no sobrevivir hasta el turno 15.9
Los tres mecanismos del colapso multi-turno
El estudio de MSR/Salesforce identificó tres mecanismos independientes, cada uno requiere una intervención diferente:9
| Mecanismo | Qué sucede | Intervención |
|---|---|---|
| Compresión de contexto | Información anterior descartada para ajustar contenido nuevo | Checkpointing de estado al sistema de archivos |
| Pérdida de coherencia en el razonamiento | El modelo contradice sus propias decisiones anteriores entre turnos | Iteración con contexto fresco (Ralph loop) |
| Fallo de coordinación | Múltiples agentes mantienen distintas instantáneas de estado | Protocolos de estado compartido entre agentes |
Estrategia 1: el sistema de archivos como memoria
La memoria más confiable a través de los límites de contexto vive en el sistema de archivos. Claude Code lee CLAUDE.md y los archivos de memoria al inicio de cada sesión y después de cada compactación.6
~/.claude/
├── configs/ # 14 JSON configs (thresholds, rules, budgets)
│ ├── deliberation-config.json
│ ├── recursion-limits.json
│ └── consensus-profiles.json
├── hooks/ # 95 lifecycle event handlers
├── skills/ # 44 reusable knowledge modules
├── state/ # Runtime state (recursion depth, agent lineage)
├── handoffs/ # 49 multi-session context documents
├── docs/ # 40+ system documentation files
└── projects/ # Per-project memory directories
└── {project}/memory/
└── MEMORY.md # Always loaded into context
El archivo MEMORY.md captura errores, decisiones y patrones a lo largo de las sesiones. Cuando descubres que ((VAR++)) falla con set -e en bash cuando VAR es 0, lo registras. Tres sesiones después, cuando te encuentras con un caso límite similar de enteros en Python, la entrada de MEMORY.md hace aflorar el patrón.15
Auto Memory (v2.1.32+): Claude Code registra y recuerda automáticamente el contexto del proyecto. Mientras trabajas, Claude escribe observaciones en ~/.claude/projects/{project-path}/memory/MEMORY.md. Auto memory carga las primeras 200 líneas en tu system prompt al inicio de la sesión. Mantenlo conciso y enlaza a archivos de tema separados para notas detalladas.6
Estrategia 2: compactación proactiva
El comando /compact de Claude Code resume la conversación y libera espacio de contexto preservando las decisiones clave, el contenido de los archivos y el estado de las tareas.15
Cuándo compactar: - Después de completar una subtarea distinta (función implementada, bug arreglado) - Antes de comenzar una nueva área del código - Cuando Claude empieza a repetirse o a olvidar contexto anterior - Aproximadamente cada 25-30 minutos durante sesiones intensivas
Instrucciones personalizadas de compactación en CLAUDE.md:
# Summary Instructions
When using compact, focus on:
- Recent code changes
- Test results
- Architecture decisions made this session
Estrategia 3: handoffs entre sesiones
Para tareas que abarcan múltiples sesiones, crea documentos de handoff que capturen el estado completo:
## Handoff: Deliberation Infrastructure PRD-7
**Status:** Hook wiring complete, 81 Python unit tests passing
**Files changed:** hooks/post-deliberation.sh, hooks/deliberation-pride-check.sh
**Decision:** Placed post-deliberation in PostToolUse:Task, pride-check in Stop
**Blocked:** Spawn budget model needs inheritance instead of depth increment
**Next:** PRD-8 integration tests in tests/test_deliberation_lib.py
La estructura Status/Files/Decision/Blocked/Next le da a la sesión sucesora contexto completo a un costo mínimo de tokens. Comenzar una sesión nueva con claude -c (continue) o leer el documento de handoff lleva directo a la implementación.15
Estrategia 4: iteración con contexto fresco (el Ralph Loop)
Para sesiones que exceden los 60-90 minutos, lanza una instancia fresca de Claude por iteración. El estado persiste a través del sistema de archivos, no a través de la memoria conversacional. Cada iteración recibe el presupuesto completo de contexto:16
Iteration 1: [200K tokens] -> writes code, creates files, updates state
Iteration 2: [200K tokens] -> reads state from disk, continues
Iteration 3: [200K tokens] -> reads updated state, continues
...
Iteration N: [200K tokens] -> reads final state, verifies criteria
Compáralo con una sola sesión larga:
Minute 0: [200K tokens available] -> productive
Minute 30: [150K tokens available] -> somewhat productive
Minute 60: [100K tokens available] -> degraded
Minute 90: [50K tokens available] -> significantly degraded
Minute 120: [compressed, lossy] -> errors accumulate
El enfoque de contexto fresco por iteración intercambia un 15-20% de sobrecarga por el paso de orientación (lectura de archivos de estado, escaneo del historial de git) a cambio de recursos cognitivos completos por iteración.16 El cálculo costo-beneficio: para sesiones de menos de 60 minutos, una sola conversación es más eficiente. Más allá de 90 minutos, el contexto fresco produce salidas de mayor calidad pese a la sobrecarga.
Estrategia 5: curación de memoria gestionada (Dreaming)
Los Managed Agents de Anthropic y Claude añadieron Dreaming como Research Preview el 6 de mayo de 2026.35 Según Anthropic: “Dreaming es un proceso programado que revisa las sesiones de tu agente y los almacenes de memoria, extrae patrones y cura las memorias para que tus agentes mejoren con el tiempo.”35
Dreaming se ejecuta en segundo plano entre sesiones, no en la ruta crítica. Complementa, en lugar de reemplazar, el patrón de sistema-de-archivos-como-memoria: tu archivo MEMORY.md sigue siendo la superficie portante; Dreaming escribe entradas de memoria curadas en el almacén de memoria de Managed Agents, que el agente lee al inicio de la sesión. Los dos patrones coexisten para harnesses que mezclan estado autohospedado en sistema de archivos con curación del lado gestionado.
| Memoria del sistema de archivos | Dreaming (gestionado) | |
|---|---|---|
| Dónde vive la memoria | Tu repositorio, controlado por versiones | Almacén de memoria gestionado por Anthropic |
| Cuándo se actualiza | Escribes entradas a mano o vía hooks | Proceso en segundo plano entre sesiones |
| Qué captura | Decisiones, errores, patrones que marcas | Patrones extraídos del historial de sesiones |
| Mejor para | Conocimiento institucional específico del proyecto | Descubrimiento de patrones entre sesiones que no detectarías a mano |
Dreaming está en Research Preview, así que el comportamiento puede cambiar. Los patrones de session-handoffs y CLAUDE.md documentados arriba siguen siendo el mecanismo de memoria autoritativo para harnesses autohospedados.
Los anti-patrones
Leer archivos enteros cuando solo necesitas 10 líneas. Una sola lectura de un archivo de 2.000 líneas consume 15.000-20.000 tokens. Usa offsets de línea: Read file.py offset=100 limit=20 ahorra la gran mayoría de ese costo.15
Mantener salida de error verbosa en el contexto. Después de depurar un bug, tu contexto sostiene más de 40 stack traces de iteraciones fallidas. Un solo /compact después de arreglar el bug libera ese peso muerto.
Empezar cada sesión leyendo cada archivo. Deja que las herramientas glob y grep de Claude Code encuentren los archivos relevantes bajo demanda, ahorrando más de 100.000 tokens de pre-carga innecesaria.15
Patrones de subagentes
Los subagentes son instancias especializadas de Claude que manejan tareas complejas de forma independiente. Comienzan con un contexto limpio (sin contaminación de la conversación principal), operan con herramientas específicas y devuelven los resultados como resúmenes. Los resultados de la exploración no inflan tu conversación principal; solo regresan las conclusiones.5
Tipos de subagentes integrados
| Tipo | Modelo | Modo | Herramientas | Usar para |
|---|---|---|---|---|
| Explore | Haiku (rápido) | Solo lectura | Glob, Grep, Read, bash seguro | Exploración de código, búsqueda de archivos |
| General-purpose | Hereda | Lectura/escritura completas | Todas las disponibles | Investigación compleja + modificación |
| Plan | Hereda (u Opus) | Solo lectura | Read, Glob, Grep, Bash | Planificación antes de ejecutar |
Creación de subagentes personalizados
Define los subagentes en .claude/agents/ (proyecto) o ~/.claude/agents/ (personal):
---
name: security-reviewer
description: Expert security code reviewer. Use PROACTIVELY after any code
changes to authentication, authorization, or data handling.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---
You are a senior security engineer reviewing code for vulnerabilities.
When invoked:
1. Identify the files that were recently changed
2. Analyze for OWASP Top 10 vulnerabilities
3. Check for secrets, hardcoded credentials, SQL injection
4. Report findings with severity levels and remediation steps
Focus on actionable security findings, not style issues.
Campos de configuración del subagente
| Campo | Obligatorio | Propósito |
|---|---|---|
name |
Sí | Identificador único (minúsculas + guiones) |
description |
Sí | Cuándo invocarlo (incluye “PROACTIVELY” para fomentar la auto-delegación) |
tools |
No | Separadas por comas. Hereda todas las herramientas si se omite. Admite Agent(agent_type) para restringir los agentes que se pueden generar |
disallowedTools |
No | Herramientas a denegar, eliminadas de la lista heredada o especificada |
model |
No | sonnet, opus, haiku, inherit (predeterminado: inherit) |
permissionMode |
No | default, acceptEdits, delegate, dontAsk, bypassPermissions, plan |
maxTurns |
No | Turnos agénticos máximos antes de que el subagente se detenga |
memory |
No | Alcance de la memoria persistente: user, project, local |
skills |
No | Carga automáticamente el contenido de un skill en el contexto del subagente al iniciar. A partir de la v2.1.133, los subagentes también descubren skills de proyecto, de usuario y de plugins mediante la herramienta Skill de la misma manera que la sesión principal. Las versiones anteriores los descartaban silenciosamente del contexto del subagente.39 |
hooks |
No | Hooks de ciclo de vida limitados a la ejecución de este subagente |
background |
No | Ejecutar siempre como tarea en segundo plano |
isolation |
No | Establece worktree para una copia aislada del worktree de git |
Aislamiento por worktree
Los subagentes pueden operar en worktrees temporales de git, lo que proporciona una copia aislada y completa del repositorio:5
---
name: experimental-refactor
description: Attempt risky refactoring in isolation
isolation: worktree
tools: Read, Write, Edit, Bash, Grep, Glob
---
You have an isolated copy of the repository. Make changes freely.
If the refactoring succeeds, the changes can be merged back.
If it fails, the worktree is discarded with no impact on the main branch.
El aislamiento por worktree es esencial para trabajo experimental que podría romper el código base.
Subagentes en paralelo
Usa subagentes en paralelo para tareas de investigación independientes que no necesitan coordinarse entre sí:5
> Have three explore agents search in parallel:
> 1. Authentication code
> 2. Database models
> 3. API routes
Cada agente se ejecuta en su propia ventana de contexto, encuentra el código relevante y devuelve un resumen. El contexto principal permanece limpio.
El guard de recursión
Sin límites de generación, los agentes delegan en agentes que delegan en agentes, perdiendo contexto y consumiendo tokens en cada paso. El patrón del guard de recursión impone presupuestos:16
#!/bin/bash
# recursion-guard.sh — enforce spawn budget
CONFIG_FILE="${HOME}/.claude/configs/recursion-limits.json"
STATE_FILE="${HOME}/.claude/state/recursion-depth.json"
MAX_DEPTH=2
MAX_CHILDREN=5
DELIB_SPAWN_BUDGET=2
DELIB_MAX_AGENTS=12
# Read current depth
current_depth=$(jq -r '.depth // 0' "$STATE_FILE" 2>/dev/null)
if [[ "$current_depth" -ge "$MAX_DEPTH" ]]; then
echo "BLOCKED: Maximum recursion depth ($MAX_DEPTH) reached" >&2
exit 2
fi
# Increment depth using safe arithmetic (not ((VAR++)) with set -e)
new_depth=$((current_depth + 1))
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"
Lección crítica: usa presupuestos de generación, no solo límites de profundidad. Los límites por profundidad rastrean cadenas padre-hijo (bloqueadas en profundidad 3) pero pasan por alto el ancho: 23 agentes en profundidad 1 siguen siendo “profundidad 1”. Un presupuesto de generación rastrea el total de hijos activos por padre, con un tope configurable. El modelo de presupuesto se ajusta al modo de fallo real (demasiados agentes en total) en lugar de a una métrica indirecta (demasiados niveles de anidación).7
Agent Teams (Research Preview)
Agent Teams coordina varias instancias de Claude Code que trabajan de forma independiente, se comunican mediante una bandeja de entrada compartida y una lista de tareas, y pueden cuestionar los hallazgos de las demás:5
| Componente | Rol |
|---|---|
| Team lead | Sesión principal que crea el equipo, genera compañeros y coordina el trabajo |
| Teammates | Instancias separadas de Claude Code que trabajan en tareas asignadas |
| Task list | Elementos de trabajo compartidos que los compañeros reclaman y completan (con bloqueo de archivo) |
| Mailbox | Sistema de mensajería para la comunicación entre agentes |
Habilítalo con: export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
Cuándo usar agent teams frente a subagentes:
| Subagentes | Agent Teams | |
|---|---|---|
| Comunicación | Solo informan los resultados | Los compañeros se envían mensajes directamente |
| Coordinación | El agente principal gestiona todo el trabajo | Lista de tareas compartida con autocoordinación |
| Mejor para | Tareas enfocadas donde solo importa el resultado | Trabajo complejo que requiere discusión y colaboración |
| Costo de tokens | Menor | Mayor (cada compañero = ventana de contexto separada) |
Orquestación multiagente
Los sistemas de IA de un solo agente tienen un punto ciego estructural: no pueden cuestionar sus propias suposiciones.7 La deliberación multiagente fuerza una evaluación independiente desde múltiples perspectivas antes de que cualquier decisión quede fijada.
Orquestación entre herramientas (abril de 2026): Google liberó Scion como código abierto el 7 de abril — un hipervisor multiagente que ejecuta Claude Code, Gemini CLI y otros “deep agents” como procesos concurrentes, cada uno con contenedor aislado, git worktree y credenciales propias. Se ejecuta en local, hub o Kubernetes. Filosofía explícita: “aislamiento sobre restricciones” — los agentes operan con alta autonomía dentro de límites impuestos en la capa de infraestructura, no en el prompt.25 Esto extiende directamente el argumento de aislamiento de subagentes a distintos proveedores de herramientas. Si tu flujo de trabajo abarca Claude y modelos de OpenAI, Scion es la primera implementación de referencia real para subagentes entre herramientas con worktree y aislamiento de credenciales por agente.
El debate no es una bala de plata: El cluster de investigación M3MAD-Bench (principios de 2026) descubrió que el debate multiagente se estanca y puede ser subvertido por un consenso engañoso — los argumentos válidos pierden cuando otros agentes afirman con seguridad la respuesta equivocada.26 Tool-MAD mejora esto al dar a cada agente acceso heterogéneo a herramientas y al usar puntajes de Faithfulness/Relevance en la etapa del juez. Si estás construyendo orquestación tipo debate, invierte en (a) heterogeneidad de herramientas por agente y (b) puntuación cuantitativa del juez, en lugar de asumir que más agentes = mejores respuestas.
Orquestación multiagente gestionada y Outcomes (Beta pública)
Si no quieres construir la infraestructura de deliberación descrita a continuación, Multiagent Orchestration entró en Beta pública en Claude Managed Agents el 6 de mayo de 2026.35 Según Anthropic: “Cuando hay demasiado trabajo para que un solo agente lo haga bien, la orquestación multiagente permite que un agente líder divida el trabajo en piezas y delegue cada una a un especialista con su propio modelo, prompt y herramientas”.35 Los especialistas “trabajan en paralelo sobre un sistema de archivos compartido y contribuyen al contexto general del agente líder”.35
El tracing viene incluido. Según Anthropic: “también puedes rastrear cada paso en la Claude Console: qué agente hizo qué, en qué orden y por qué, lo que te da visibilidad completa de cómo se delegó y ejecutó tu tarea”.35
La función complementaria en Beta pública es Outcomes. Según Anthropic: “escribes una rúbrica que describe cómo se ve el éxito y el agente trabaja hacia ella. Un evaluador independiente compara la salida con tus criterios en su propia ventana de contexto, de modo que no se ve influenciado por el razonamiento del agente”.35 Esta es la versión gestionada del patrón de validación de dos puertas documentado más adelante en esta sección: la rúbrica reemplaza la puerta escrita a mano, el evaluador independiente reemplaza el validador de consenso.
| Deliberación autohospedada (esta sección) | Multiagent gestionado + Outcomes | |
|---|---|---|
| Enrutamiento de especialistas | Tú escribes la lógica de spawn | El agente líder divide el trabajo en piezas |
| Validación | Hooks de dos puertas + puntuación de consenso | Rúbrica + evaluador en contexto separado |
| Tracing | Tú lo instrumentas | Claude Console |
| Mejor para | Patrones que necesitan control total o composición específica de herramientas | Patrones de delegación estándar donde la rúbrica de validación es el contrato |
| Precios | Solo costo de tokens + harness | Tokens estándar más la tarifa por hora de sesión de Managed Agents (base de lanzamiento del 8 de abril; ver 23) |
La deliberación autohospedada sigue siendo la respuesta correcta cuando la validación necesita integrarse con tu propia superficie de hooks (bloqueo PreToolUse, semántica de códigos de salida, dispatchers personalizados) o cuando el harness debe ejecutarse sin dependencias externas. Multiagent gestionado es la respuesta correcta cuando la delegación estándar más la evaluación por rúbrica es el contrato que realmente necesitas.
Deliberación mínima viable
Empieza con 2 agentes y 1 regla: los agentes deben evaluar de forma independiente antes de ver el trabajo del otro.7
Decision arrives
|
v
Confidence check: is this risky, ambiguous, or irreversible?
|
+-- NO -> Single agent decides (normal flow)
|
+-- YES -> Spawn 2 agents with different system prompts
Agent A: "Argue FOR this approach"
Agent B: "Argue AGAINST this approach"
|
v
Compare findings
|
+-- Agreement with different reasoning -> Proceed
+-- Genuine disagreement -> Investigate the conflict
+-- Agreement with same reasoning -> Suspect herding
Este patrón cubre el 80% del valor. Todo lo demás aporta una mejora incremental.
El disparador de confianza
No toda tarea necesita deliberación. Un módulo de puntuación de confianza evalúa cuatro dimensiones:17
- Ambigüedad - ¿La consulta tiene múltiples interpretaciones válidas?
- Complejidad del dominio - ¿Requiere conocimiento especializado?
- Riesgo - ¿Es reversible la decisión?
- Dependencia del contexto - ¿Requiere comprender el sistema más amplio?
La puntuación se asigna a tres niveles:
| Nivel | Umbral | Acción |
|---|---|---|
| ALTO | 0,85+ | Proceder sin deliberación |
| MEDIO | 0,70-0,84 | Proceder con nota de confianza registrada |
| BAJO | Menor a 0,70 | Activar deliberación multiagente completa |
El umbral se adapta según el tipo de tarea. Las decisiones de seguridad requieren un consenso de 0,85. Los cambios de documentación solo necesitan 0,50. Esto evita sobreingeniería en tareas simples y a la vez asegura que las decisiones riesgosas reciban escrutinio.7
La máquina de estados
Siete fases, cada una bloqueada por la anterior:7
IDLE -> RESEARCH -> DELIBERATION -> RANKING -> PRD_GENERATION -> COMPLETE
|
(or FAILED)
RESEARCH: Agentes independientes investigan el tema. Cada agente recibe una persona distinta (Arquitecto Técnico, Analista de Seguridad, Ingeniero de Performance, entre otros). El aislamiento de contexto garantiza que los agentes no puedan ver los hallazgos de los demás durante la investigación.
DELIBERATION: Los agentes ven todos los hallazgos de la investigación y generan alternativas. El agente Debate identifica conflictos. El agente Synthesis combina los hallazgos no contradictorios.
RANKING: Cada agente puntúa cada enfoque propuesto a través de 5 dimensiones ponderadas:
| Dimensión | Peso |
|---|---|
| Impacto | 0,25 |
| Calidad | 0,25 |
| Viabilidad | 0,20 |
| Reusabilidad | 0,15 |
| Riesgo | 0,15 |
La arquitectura de validación de dos puertas
Dos puertas de validación capturan problemas en distintas etapas:7
Puerta 1: Validación de consenso (hook PostToolUse). Se ejecuta inmediatamente después de que cada agente de deliberación completa: 1. La fase debe haber alcanzado al menos RANKING 2. Mínimo 2 agentes completados (configurable) 3. La puntuación de consenso cumple el umbral adaptable a la tarea 4. Si algún agente disintió, las preocupaciones deben estar documentadas
Puerta 2: Pride Check (hook Stop). Se ejecuta antes de que la sesión pueda cerrarse: 1. Métodos diversos: múltiples personas únicas representadas 2. Transparencia de contradicciones: los disensos tienen razones documentadas 3. Manejo de complejidad: al menos 2 alternativas generadas 4. Confianza del consenso: clasificada como fuerte (sobre 0,85) o moderada (0,70-0,84) 5. Evidencia de mejora: la confianza final supera la confianza inicial
Dos hooks en distintos puntos del ciclo de vida coinciden con cómo ocurren los fallos en realidad: algunos son instantáneos (mal puntaje) y otros son graduales (baja diversidad, falta de documentación de disenso).7
Por qué el acuerdo es peligroso
Charlan Nemeth estudió el disenso minoritario desde 1986 hasta su libro de 2018 In Defense of Troublemakers. Los grupos con disidentes toman mejores decisiones que los grupos que llegan a un acuerdo rápido. El disidente no necesita tener razón. El acto de discrepar fuerza a la mayoría a examinar suposiciones que de otro modo omitirían.18
Wu et al. probaron si los agentes LLM pueden debatir genuinamente y descubrieron que, sin incentivos estructurales para el desacuerdo, los agentes convergen hacia la respuesta inicial que suena con más confianza, sin importar si es correcta.19 Liang et al. identificaron la causa raíz como “Degeneration-of-Thought”: una vez que un LLM establece confianza en una posición, la autorreflexión no puede generar contraargumentos novedosos, lo que hace estructuralmente necesaria la evaluación multiagente.20
La independencia es la restricción crítica de diseño. Dos agentes evaluando la misma estrategia de despliegue con visibilidad de los hallazgos del otro produjeron puntajes de 0,45 y 0,48. Los mismos agentes sin visibilidad: 0,45 y 0,72. La brecha entre 0,48 y 0,72 es el costo del herding.7
Detección de acuerdo falso
Un módulo de detección de conformidad rastrea patrones que sugieren que los agentes están de acuerdo sin una evaluación genuina:7
Agrupación de puntajes: Que cada agente puntúe dentro de 0,3 puntos en una escala de 10 señala contaminación de contexto compartido en lugar de evaluación independiente. Cuando cinco agentes que evaluaban una refactorización de autenticación puntuaron el riesgo de seguridad entre 7,1 y 7,4, al volver a ejecutarlo con aislamiento de contexto fresco los puntajes se dispersaron a 5,8-8,9.
Disenso boilerplate: Agentes que copian el lenguaje de preocupación de otros en lugar de generar objeciones independientes.
Perspectivas minoritarias ausentes: Aprobación unánime desde personas con prioridades en conflicto (un Analista de Seguridad y un Ingeniero de Performance rara vez coinciden en todo).
El detector de conformidad atrapa los casos obvios (aproximadamente el 10-15% de las deliberaciones donde los agentes convergen demasiado rápido). Para el 85-90% restante, las puertas de consenso y pride check ofrecen validación suficiente.
Lo que no funcionó en la deliberación
Rondas de debate libre. Tres rondas de texto de ida y vuelta para una discusión sobre indexación de bases de datos produjeron 7.500 tokens de debate. Ronda 1: desacuerdo genuino. Ronda 2: posiciones reformuladas. Ronda 3: argumentos idénticos con palabras distintas. La puntuación estructurada por dimensiones reemplazó al debate libre, reduciendo el costo en un 60% mientras mejoraba la calidad del ranking.7
Puerta de validación única. La primera implementación ejecutaba un único hook de validación al final de la sesión. Un agente completó la deliberación con un puntaje de consenso de 0,52 (bajo el umbral) y luego continuó con tareas no relacionadas durante 20 minutos antes de que el hook de fin de sesión marcara el fallo. Dividirlo en dos puertas (una al completar la tarea, otra al final de la sesión) capturó los mismos problemas en distintos puntos del ciclo de vida.7
El costo de la deliberación
Cada agente de investigación procesa aproximadamente 5.000 tokens de contexto y genera 2.000-3.000 tokens de hallazgos. Con 3 agentes, eso son 15.000-24.000 tokens adicionales por decisión. Con 10 agentes, aproximadamente 50.000-80.000 tokens.7
A los precios actuales de Opus, una deliberación de 3 agentes cuesta aproximadamente entre $0,68 y $0,90. Una deliberación de 10 agentes cuesta entre $2,25 y $3,00. El sistema activa deliberación en aproximadamente el 10% de las decisiones, por lo que el costo amortizado sobre todas las decisiones es de $0,23-0,30 por sesión. Si vale la pena o no depende de cuánto cuesta una mala decisión.
Cuándo deliberar
| Deliberar | Omitir |
|---|---|
| Arquitectura de seguridad | Erratas en documentación |
| Diseño de esquema de base de datos | Renombrado de variables |
| Cambios de contrato API | Actualizaciones de mensajes de log |
| Estrategias de despliegue | Reescritura de comentarios |
| Actualizaciones de dependencias | Actualizaciones de fixtures de prueba |
Diseño de CLAUDE.md
CLAUDE.md es una política operativa para un agente de IA, no un README para humanos.21 El agente no necesita entender por qué usas conventional commits. Necesita saber el comando exacto que debe ejecutar y cómo se ve “terminado”.
La jerarquía de precedencia
| Ubicación | Alcance | Compartido | Caso de uso |
|---|---|---|---|
| Configuración gestionada empresarial | Organización | Todos los usuarios | Estándares de la empresa |
./CLAUDE.md o ./.claude/CLAUDE.md |
Proyecto | Vía git | Contexto del equipo |
~/.claude/CLAUDE.md |
Usuario | Todos los proyectos | Preferencias personales |
./CLAUDE.local.md |
Local del proyecto | Nunca | Notas personales del proyecto |
.claude/rules/*.md |
Reglas del proyecto | Vía git | Políticas categorizadas |
~/.claude/rules/*.md |
Reglas del usuario | Todos los proyectos | Políticas personales |
Los archivos de reglas se cargan automáticamente y proporcionan contexto estructurado sin saturar CLAUDE.md.6
Lo que se ignora
Estos patrones producen consistentemente cambios no observables en el comportamiento del agente:21
Párrafos de prosa sin comandos. “Valoramos código limpio y bien probado” es documentación, no operaciones. El agente lo lee y procede a escribir código sin pruebas porque no hay una instrucción accionable.
Directivas ambiguas. “Ten cuidado con las migraciones de base de datos” no es una restricción. “Ejecuta alembic check antes de aplicar migraciones. Aborta si falta la ruta de downgrade.” sí lo es.
Prioridades contradictorias. “Muévete rápido y entrega rápido” más “Asegura una cobertura de pruebas exhaustiva” más “Mantén el tiempo de ejecución por debajo de 5 minutos” más “Ejecuta pruebas de integración completas antes de cada commit.” El agente no puede satisfacer las cuatro simultáneamente y por defecto omite la verificación.21
Guías de estilo sin aplicación. “Sigue la Google Python Style Guide” sin ruff check --select D no le da al agente ningún mecanismo para verificar el cumplimiento.
Lo que funciona
Instrucciones que priorizan los comandos:
## Build and Test Commands
- Install: `pip install -r requirements.txt`
- Lint: `ruff check . --fix`
- Format: `ruff format .`
- Test: `pytest -v --tb=short`
- Type check: `mypy app/ --strict`
- Full verify: `ruff check . && ruff format --check . && pytest -v`
Definiciones de cierre:
## Definition of Done
A task is complete when ALL of the following pass:
1. `ruff check .` exits 0
2. `pytest -v` exits 0 with no failures
3. `mypy app/ --strict` exits 0
4. Changed files have been staged and committed
5. Commit message follows conventional format: `type(scope): description`
Secciones organizadas por tarea:
## When Writing Code
- Run `ruff check .` after every file change
- Add type hints to all new functions
## When Reviewing Code
- Check for security issues: `bandit -r app/`
- Verify test coverage: `pytest --cov=app --cov-fail-under=80`
## When Releasing
- Update version in `pyproject.toml`
- Run full suite: `pytest -v && ruff check . && mypy app/`
Reglas de escalación:
## When Blocked
- If tests fail after 3 attempts: stop and report the failing test with full output
- If a dependency is missing: check `requirements.txt` first, then ask
- Never: delete files to resolve errors, force push, or skip tests
Orden de escritura
Si comienzas desde cero, agrega secciones en este orden de prioridad:21
- Comandos de build y test (el agente los necesita antes de poder hacer cualquier cosa útil)
- Definición de terminado (previene falsas finalizaciones)
- Reglas de escalación (previene workarounds destructivos)
- Secciones organizadas por tarea (reduce el parsing de instrucciones irrelevantes)
- Alcance de directorios (monorepos: mantiene aisladas las instrucciones por servicio)
Omite las preferencias de estilo hasta que las primeras cuatro estén funcionando.
Importación de archivos
Referencia otros archivos dentro de CLAUDE.md:
See @README.md for project overview
Coding standards: @docs/STYLE_GUIDE.md
API documentation: @docs/API.md
Personal preferences: @~/.claude/preferences.md
Sintaxis de importación: relativa (@docs/file.md), absoluta (@/absolute/path.md), o directorio home (@~/.claude/file.md). Profundidad máxima: 5 niveles de imports.6
Compatibilidad de instrucciones entre herramientas
AGENTS.md es un estándar abierto reconocido por todas las principales herramientas de codificación con IA.21 Si tu equipo usa múltiples herramientas, escribe AGENTS.md como la fuente canónica y replica las secciones relevantes a archivos específicos de cada herramienta:
| Herramienta | Archivo nativo | ¿Lee AGENTS.md? |
|---|---|---|
| Codex CLI | AGENTS.md | Sí (nativo) |
| Cursor | .cursor/rules |
Sí (nativo) |
| GitHub Copilot | .github/copilot-instructions.md |
Sí (nativo) |
| Amp | AGENTS.md | Sí (nativo) |
| Windsurf | .windsurfrules |
Sí (nativo) |
| Claude Code | CLAUDE.md | No (formato separado) |
Los patrones de AGENTS.md (priorizar comandos, definir cierre, organizar por tarea) funcionan en cualquier archivo de instrucciones independientemente de la herramienta. No mantengas conjuntos de instrucciones paralelos que diverjan. Escribe una sola fuente autoritativa y replícala.
Notas de paridad con Codex
Codex ahora tiene equivalentes de primera clase para las principales capas del harness, pero la migración es una traducción de patrones, no una copia de archivos. Codex lee AGENTS.md antes de comenzar el trabajo, superponiendo guía global de ~/.codex con instrucciones del proyecto y de repositorios anidados.31 Las skills de Codex usan el mismo modelo mental de SKILL.md con divulgación progresiva: Codex comienza con el nombre, descripción y ruta del archivo de la skill, y luego carga la skill completa solo cuando decide usarla.32 Codex también tiene hooks nativos, hooks empaquetados en plugins, hooks gestionados, soporte de MCP, y workflows explícitos de subagents.3334
El mapeo práctico:
| Capa del harness de Claude Code | Equivalente en Codex | Regla de migración |
|---|---|---|
CLAUDE.md / .claude/rules/ |
AGENTS.md / AGENTS.override.md anidado |
Mantén canónicos los comandos y reglas de finalización; divide solo cuando el alcance del directorio realmente difiera |
.claude/skills/<name>/SKILL.md |
.agents/skills/<name>/SKILL.md o skill de plugin |
Porta workflows reutilizables, pero reescribe las descripciones para la redacción de activación y el presupuesto de Codex |
Hooks de .claude/settings.json |
config.toml de Codex, hooks de plugins, o hooks de requisitos gestionados |
Porta primero los gates determinísticos; prueba cada hook con eventos reales de herramientas antes de habilitarlo ampliamente |
.claude/agents/*.md |
~/.codex/agents/*.toml, .codex/agents/*.toml, o worker / explorer integrados |
Porta solo los agentes con valor recurrente; prefiere la delegación explícita porque los subagents de Codex son explícitos |
| Plugins | Plugins de Codex | Usa plugins como unidad de distribución después de que los hooks y skills locales estén probados |
La diferencia importante: los subagents de Claude pueden seleccionarse automáticamente a partir de descripciones, mientras que Codex actualmente documenta los workflows de subagents como explícitos. Eso hace que las skills y los hooks sean el valor por defecto correcto para el comportamiento siempre activo del harness en Codex; los subagents son para trabajo paralelo deliberado, revisión y exploración.
Probando tus instrucciones
Verifica que el agente realmente lee y sigue tus instrucciones:
# Check active instructions
claude --print "What instructions are you following for this project?"
# Verify specific rules are active
claude --print "What is your definition of done?"
La prueba ácida: Pide al agente que explique tus comandos de build. Si no puede reproducirlos textualmente, las instrucciones son demasiado extensas (contenido expulsado del contexto), demasiado vagas (el agente no puede extraer instrucciones accionables), o no se están descubriendo. El análisis de GitHub sobre 2.500 repositorios encontró que la vaguedad causa la mayoría de los fallos.21
Patrones de Producción
Patrones de Horizonte Largo de Opus 4.7 (abril de 2026)
Claude Opus 4.7 (16 de abril de 2026) llegó con capacidades específicas que cambian aquello contra lo que un harness debe defenderse:29
- Resiliencia ante fallos de herramientas: Opus 4.7 continúa a pesar de fallos de herramientas que detenían las sesiones de Opus 4.6. Puedes reducir — pero no eliminar — los wrappers defensivos de reintento en el código de los subagentes. Mantén las protecciones a nivel de hooks; recorta el andamiaje en el prompt de “si la herramienta falla, intenta de nuevo tres veces”.
- Nivel de esfuerzo
xhigh(solo Opus-4.7): Se sitúa entrehighymax. Recomendado por defecto para cargas de trabajo de código y agénticas. En subagentes de larga duración,xhighsupera significativamente ahighcon un costo de tokens sub-proporcional.maxsigue siendo la opción correcta para razonamiento difícil de un solo disparo;xhighes mejor para tareas sostenidas. - Techo de presupuesto de tokens: Configurable por ejecución de agente mediante
output_config.task_budget(header betatask-budgets-2026-03-13). El modelo ve una cuenta regresiva activa y delimita el alcance del trabajo al presupuesto con elegancia, en lugar de quedarse sin tokens de forma inesperada. Úsalo para bucles agénticos donde quieras un gasto predecible de tokens sin sacrificar calidad en prompts cortos. - Conciencia de necesidades implícitas: Primer modelo de Claude que pasa las pruebas de “necesidad implícita” — reconociendo cuándo la solicitud literal del usuario subespecifica lo que realmente necesita. Esto hace que la sección de “reglas de aclaración” del CLAUDE.md sea menos necesaria. Si tu CLAUDE.md tiene 200 líneas de barreras del tipo “considera también X cuando el usuario pida Y”, recorta las que ahora están cubiertas de forma nativa.
Base del Worktree, Rutas del Sandbox y Configuraciones de Admin (7 de mayo de 2026)
Claude Code v2.1.133 añade cuatro configuraciones de nivel admin que vale la pena conocer para harnesses de producción:39
| Configuración | Valores | Qué hace |
|---|---|---|
worktree.baseRef |
fresh (predeterminado) | head |
Los nuevos worktrees vuelven a derivarse de origin/<default>. Reversión de comportamiento predeterminado de v2.1.128, que había usado HEAD local. Establece worktree.baseRef: "head" si tu equipo depende de que los commits no enviados estén disponibles en los nuevos worktrees. |
sandbox.bwrapPath |
ruta absoluta | Fija la ubicación del binario Bubblewrap en hosts Linux/WSL donde no esté en $PATH o donde envíes una versión vendida. |
sandbox.socatPath |
ruta absoluta | Misma idea para el binario socat que usa la red del sandbox. |
parentSettingsBehavior |
'first-wins' (predeterminado) | 'merge' |
Control de nivel admin sobre cómo SDK managedSettings se compone con la configuración de empresa/equipo padre. 'merge' permite que una sesión hija herede y extienda; 'first-wins' mantiene al padre como autoritativo. |
La reversión de worktree.baseRef es la que hay que señalar a los usuarios: los agentes que dependían del comportamiento de v2.1.128-v2.1.132 (worktrees derivándose del HEAD local) pierden acceso al trabajo no enviado en worktrees nuevos a menos que opten por reactivarlo.
El Quality Loop
Un proceso de revisión obligatorio para todos los cambios no triviales:
- Implementar - Escribir el código
- Revisar - Releer cada línea. Detectar erratas, errores de lógica, secciones poco claras
- Evaluar - Ejecutar el evidence gate. Verificar patrones, casos límite, cobertura de pruebas
- Refinar - Corregir cada problema. Nunca dejar para “después”
- Hacer Zoom Out - Verificar puntos de integración, imports, código adyacente en busca de regresiones
- Repetir - Si algún criterio del evidence gate falla, volver al paso 4
- Reportar - Listar lo que cambió, cómo se verificó, citar evidencia específica
El Evidence Gate
“Creo que” y “debería” no son evidencia. Cita rutas de archivos, salida de pruebas o código específico.
| Criterio | Evidencia Requerida |
|---|---|
| Sigue patrones del codebase | Nombra el patrón y el archivo donde existe |
| Solución funcional más simple | Explica qué alternativas más simples se rechazaron y por qué |
| Casos límite manejados | Lista casos límite específicos y cómo se maneja cada uno |
| Pruebas pasan | Pega la salida de pruebas mostrando 0 fallos |
| Sin regresiones | Nombra los archivos/funciones verificados |
| Resuelve el problema real | Indica la necesidad del usuario y cómo esto la aborda |
Si no puedes producir evidencia para alguna fila, vuelve a Refinar.22
Patrones de Manejo de Errores
Escrituras atómicas de archivos. Múltiples agentes escribiendo al mismo archivo de estado simultáneamente corrompen JSON. Escribe a archivos .tmp, luego haz mv atómicamente. El SO garantiza que mv es atómico en el mismo sistema de archivos.17
# Atomic state update
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"
Recuperación ante corrupción de estado. Si el estado se corrompe, el patrón de recuperación recrea desde valores predeterminados seguros en lugar de fallar:16
if ! jq -e '.depth' "$RECURSION_STATE_FILE" &>/dev/null; then
# Corrupted state file, recreate with safe defaults
echo '{"depth": 0, "agent_id": "root", "parent_id": null}' > "$RECURSION_STATE_FILE"
echo "- Recursion state recovered (was corrupted)"
fi
La trampa de ((VAR++)) en bash. ((VAR++)) retorna código de salida 1 cuando VAR es 0 porque 0++ evalúa a 0, lo cual bash trata como falso. Con set -e activado, esto mata el script. Usa VAR=$((VAR + 1)) en su lugar.16
Clasificación por Radio de Impacto
Clasifica cada acción del agente por radio de impacto y aplica gates en consecuencia:2
| Clasificación | Ejemplos | Gate |
|---|---|---|
| Local | Escrituras de archivos, ejecución de pruebas, linting | Auto-aprobar |
| Compartido | Commits de git, creación de ramas | Advertir + proceder |
| Externo | Git push, llamadas a API, despliegues | Requerir aprobación humana |
Remote Control (conectarse a Claude Code local desde cualquier navegador o app móvil) convierte el gate “Externo” de una espera bloqueante a una notificación asíncrona. El agente sigue trabajando en la siguiente tarea mientras tú revisas la anterior desde tu teléfono.2
Especificación de Tareas para Ejecuciones Autónomas
Las tareas autónomas efectivas incluyen tres elementos: objetivo, criterios de finalización y punteros de contexto:16
OBJECTIVE: Implement multi-agent deliberation with consensus validation.
COMPLETION CRITERIA:
- All tests in tests/test_deliberation_lib.py pass (81 tests)
- post-deliberation.sh validates consensus above 70% threshold
- recursion-guard.sh enforces spawn budget (max 12 agents)
- No Python type errors (mypy clean)
CONTEXT:
- Follow patterns in lib/deliberation/state_machine.py
- Consensus thresholds in configs/deliberation-config.json
- Spawn budget model: agents inherit budget, not increment depth
Los criterios deben ser verificables por máquina: pase/fallo de pruebas, salida del linter, códigos de estado HTTP, verificaciones de existencia de archivos. Una tarea inicial que pidió al agente “escribir pruebas que pasen” produjo assert True y assert 1 == 1. Técnicamente correcto. Prácticamente inútil.16
| Calidad de los Criterios | Ejemplo | Resultado |
|---|---|---|
| Vago | “Las pruebas pasan” | El agente escribe pruebas triviales |
| Medible pero incompleto | “Las pruebas pasan Y la cobertura >80%” | Las pruebas cubren líneas pero no prueban nada significativo |
| Integral | “Todas las pruebas pasan Y la cobertura >80% Y sin errores de tipo Y linter limpio Y cada clase de pruebas evalúa un módulo distinto” | Salida de calidad de producción |
Modos de Fallo a Vigilar
| Modo de Fallo | Descripción | Prevención |
|---|---|---|
| Espiral de Atajos | Saltarse pasos del quality loop para terminar más rápido | El evidence gate requiere prueba para cada criterio |
| Espejismo de Confianza | “Estoy seguro” sin ejecutar verificación | Prohibir lenguaje evasivo en los reportes de finalización |
| Verificación Fantasma | Afirmar que las pruebas pasan sin haberlas ejecutado en esta sesión | El Stop hook ejecuta las pruebas de forma independiente |
| Deuda Diferida | TODO/FIXME/HACK en código commiteado | El hook PreToolUse en git commit escanea el diff |
| Contaminación del Sistema de Archivos | Artefactos sin propósito de iteraciones abandonadas | Paso de limpieza en los criterios de finalización |
Una Traza Concreta de Sesión
Una traza de sesión de una ejecución autónoma procesando un PRD con 5 historias:2
-
Se dispara SessionStart. El dispatcher inyecta: fecha actual, detección del proyecto, restricciones de filosofía, inicialización del seguimiento de costos. Cinco hooks, 180ms en total.
-
El agente lee el PRD, planea la primera historia. Se dispara
UserPromptSubmit. El dispatcher inyecta: contexto del proyecto activo, línea base de deriva de sesión. -
El agente llama a Bash para ejecutar pruebas. Se dispara
PreToolUse:Bash. Verificación de credenciales, validación del sandbox, detección del proyecto. 90ms. Las pruebas se ejecutan. Se disparaPostToolUse:Bash: latido de actividad registrado, verificación de deriva. -
El agente llama a Write para crear un archivo. Se dispara
PreToolUse:Write: verificación del alcance del archivo. Se disparaPostToolUse:Write: verificación de lint, seguimiento de commits. -
El agente termina la historia. Se dispara
Stop. El quality gate verifica: ¿el agente citó evidencia? ¿Lenguaje evasivo? ¿Comentarios TODO en el diff? Si alguna verificación falla, exit 2 y el agente continúa. -
Verificación independiente: Un agente nuevo ejecuta la suite de pruebas sin confiar en el auto-reporte del agente anterior.
-
Tres agentes de revisión de código se generan en paralelo. Cada uno revisa el diff de forma independiente. Si algún revisor marca CRITICAL, la historia regresa a la cola.
-
La historia pasa. Se carga la siguiente historia. El ciclo se repite para las 5 historias.
Total de hooks disparados a través de 5 historias: ~340. Tiempo total en hooks: ~12 segundos. Esa sobrecarga previno tres fugas de credenciales, un comando destructivo y dos implementaciones incompletas en una sola ejecución nocturna.
Caso de Estudio: Procesamiento Nocturno de PRD
Un harness de producción procesó 12 PRDs (47 historias) a lo largo de 8 sesiones nocturnas. Las métricas comparan los primeros 4 PRDs (harness mínimo: solo CLAUDE.md) contra los últimos 8 (harness completo: hooks, skills, quality gates, revisión multi-agente).
| Métrica | Mínimo (4 PRDs) | Harness Completo (8 PRDs) | Cambio |
|---|---|---|---|
| Fugas de credenciales | 2 filtradas a git | 7 bloqueadas pre-commit | Reactivo a preventivo |
| Comandos destructivos | 1 force-push a main | 4 bloqueados | Aplicación de exit 2 |
| Tasa de finalización falsa | 35% pruebas fallidas | 4% | Evidence gate + Stop hook |
| Rondas de revisión/historia | 2,1 | 0,8 | Skills + quality loop |
| Degradación de contexto | 6 incidentes | 1 incidente | Memoria del sistema de archivos |
| Sobrecarga de tokens | 0% | ~3,2% | Insignificante |
| Tiempo de hooks/historia | 0s | ~2,4s | Insignificante |
Las dos fugas de credenciales requirieron rotar claves de API y auditar servicios downstream: aproximadamente 4 horas de respuesta a incidentes. La sobrecarga del harness que previno el equivalente fue de 2,4 segundos de bash por historia. La tasa de finalización falsa cayó del 35% al 4% porque el Stop hook ejecutó las pruebas de forma independiente antes de permitir que el agente reportara como hecho.
Consideraciones de seguridad
Los cinco principios de los agentes confiables (Anthropic, abril de 2026)
Anthropic publicó un marco formal sobre la confiabilidad de los agentes el 9 de abril de 2026.27 Los cinco principios son paralelos —y extienden— el pensamiento del Evidence Gate de esta guía:
| Principio | Qué significa | Cómo lo satisface este harness |
|---|---|---|
| Control humano | Capacidad significativa de anulación humana en cada punto de decisión | Los hooks controlan las llamadas a herramientas; bloqueo PreCompact; clasificador Auto Mode como capa de verificación |
| Alineación de valores | Las acciones del agente siguen la intención del usuario, no objetivos adyacentes | CLAUDE.md como especificación explícita de intención; skills como acotación de capacidades |
| Seguridad | Resistencia a entradas adversariales e inyección de prompts | Sandbox + reglas de denegación + validación de entrada en la capa de hooks |
| Transparencia | Registros auditables de decisiones y acciones | Registro de hooks; transcripciones de sesión; trazas de invocación de skills |
| Privacidad | Manejo y gobernanza apropiados de datos | Limpieza de variables de entorno con credenciales; detección de secretos en la capa de hooks |
Anthropic también donó MCP a la Agentic AI Foundation de la Linux Foundation, sumándose a AGENTS.md (ahora administrado conjuntamente con OpenAI, Google, Cursor, Factory, Sourcegraph). Los estándares de interoperabilidad de agentes ahora son neutrales respecto al proveedor.27
Herramientas de sandbox para skills: Para los equipos que tratan los skills como una superficie de ataque, SandyClaw de Permiso (lanzado el 2 de abril de 2026) ejecuta los skills en un sandbox dedicado y entrega veredictos respaldados por evidencia provenientes de detecciones Sigma/YARA/Nova/Snort. Es el primer producto en la categoría de sandbox para skills.28
El sandbox
Claude Code admite un modo sandbox opcional (habilitado mediante settings.json o el comando /sandbox) que restringe el acceso a la red y las operaciones del sistema de archivos usando aislamiento a nivel del SO (seatbelt en macOS, bubblewrap en Linux). Cuando está habilitado, el sandbox impide que el modelo realice solicitudes arbitrarias a la red o acceda a archivos fuera del directorio del proyecto. Sin sandbox, Claude Code usa un modelo basado en permisos donde tú apruebas o deniegas llamadas individuales a herramientas.13
Límites de permisos
El sistema de permisos controla las operaciones en múltiples niveles:
| Nivel | Controla | Ejemplo |
|---|---|---|
| Permisos de herramientas | Qué herramientas se pueden usar | Restringir un subagente a Read, Grep, Glob |
| Permisos de archivos | Qué archivos se pueden modificar | Bloquear escrituras en .env, credentials.json |
| Permisos de comandos | Qué comandos bash pueden ejecutarse | Bloquear rm -rf, git push --force |
| Permisos de red | A qué dominios se puede acceder | Lista de permitidos para conexiones del servidor MCP |
Defensa contra inyección de prompts
Los skills y hooks proporcionan defensa en profundidad contra la inyección de prompts:
Los skills con restricciones de herramientas evitan que un prompt comprometido obtenga acceso de escritura:
allowed-tools: Read, Grep, Glob
Los hooks PreToolUse validan cada llamada a herramienta sin importar cómo se le indicó al modelo:
# Block credential file access regardless of prompt
if echo "$FILE_PATH" | grep -qE "\.(env|pem|key|credentials)$"; then
echo "BLOCKED: Sensitive file access" >&2
exit 2
fi
El aislamiento de subagentes limita el radio de impacto. Un subagente con permissionMode: plan no puede realizar cambios incluso si su prompt está comprometido.
Seguridad de los hooks
Los hooks HTTP que interpolan variables de entorno en las cabeceras requieren una lista explícita allowedEnvVars para evitar la exfiltración arbitraria de variables de entorno:13
{
"type": "http",
"url": "https://api.example.com/notify",
"headers": {
"Authorization": "Bearer $MY_TOKEN"
},
"allowedEnvVars": ["MY_TOKEN"]
}
La división de responsabilidades entre humano y agente
La seguridad en las arquitecturas de agentes requiere una división clara entre las responsabilidades del humano y del agente:17
| Responsabilidad humana | Responsabilidad del agente |
|---|---|
| Definición del problema | Ejecución del pipeline |
| Umbrales de confianza | Ejecución dentro de los umbrales |
| Requisitos de consenso | Cómputo del consenso |
| Criterios del quality gate | Aplicación del quality gate |
| Análisis de errores | Detección de errores |
| Decisiones de arquitectura | Opciones de arquitectura |
| Inyección de contexto del dominio | Generación de documentación |
El patrón: los humanos son dueños de las decisiones que requieren contexto organizacional, juicio ético o dirección estratégica. Los agentes son dueños de las decisiones que requieren búsqueda computacional en grandes espacios de posibilidades. Los hooks hacen cumplir el límite.
Aplicación recursiva de hooks
Los hooks también se activan para las acciones de los subagentes.13 Si Claude genera un subagente mediante la herramienta Agent, tus hooks PreToolUse y PostToolUse se ejecutan para cada herramienta que use el subagente. Sin la aplicación recursiva de hooks, un subagente podría sortear tus controles de seguridad. El evento SubagentStop te permite ejecutar limpieza o validación cuando un subagente termina.
Esto no es opcional. Un agente que genera un subagente sin tus hooks de seguridad es un agente que puede hacer force-push a main, leer archivos de credenciales o ejecutar comandos destructivos mientras tus controles observan cómo la conversación principal no hace nada.
El costo como arquitectura
El costo es una decisión arquitectónica, no una ocurrencia operativa tardía.2 Tres niveles:
Nivel de tokens. Compresión del system prompt. Elimina ejemplos de código tutoriales (el modelo conoce los APIs), colapsa reglas duplicadas entre archivos y reemplaza explicaciones por restricciones. “Rechaza llamadas a herramientas que coincidan con rutas sensibles” hace el mismo trabajo que una explicación de 15 líneas sobre por qué no se deben leer las credenciales.
Nivel de agente. Spawns nuevos en lugar de conversaciones largas. Cada historia en una ejecución autónoma recibe un nuevo agente con un contexto limpio. El contexto nunca se infla porque cada agente parte de cero. Briefing en lugar de memoria: los modelos ejecutan mejor un briefing claro que navegar por 30 pasos de contexto acumulado.
Nivel de arquitectura. CLI-first sobre MCP cuando la operación es sin estado. Una llamada claude --print para una evaluación de un solo disparo cuesta menos y no añade sobrecarga de conexión. MCP tiene sentido cuando la herramienta necesita estado persistente o streaming.
Marco de decisión
Cuándo usar cada mecanismo:
| Problema | Usa | Por qué |
|---|---|---|
| Formatear el código tras cada edición | Hook PostToolUse | Debe ocurrir cada vez, de forma determinista |
| Bloquear comandos bash peligrosos | Hook PreToolUse | Debe bloquear antes de la ejecución, código de salida 2 |
| Aplicar patrones de revisión de seguridad | Skill | Experiencia de dominio que se auto-activa según el contexto |
| Explorar el codebase sin contaminar el contexto | Subagente Explore | Contexto aislado, devuelve solo un resumen |
| Ejecutar refactorizaciones experimentales con seguridad | Subagente aislado por worktree | Los cambios pueden descartarse si fallan |
| Revisar código desde múltiples perspectivas | Subagentes paralelos o Agent Team | La evaluación independiente evita puntos ciegos |
| Decidir sobre arquitectura irreversible | Deliberación multiagente | Activador de confianza + validación por consenso |
| Persistir decisiones entre sesiones | MEMORY.md | El sistema de archivos sobrevive a los límites de contexto |
| Compartir estándares del equipo | CLAUDE.md del proyecto + .claude/rules/ | Distribuido por git, se carga automáticamente |
| Definir comandos de build/test del proyecto | CLAUDE.md | Instrucciones orientadas a comandos que el agente puede verificar |
| Ejecutar desarrollo autónomo prolongado | Loop Ralph (iteración con contexto nuevo) | Presupuesto completo de contexto por iteración, estado en sistema de archivos |
| Notificar a Slack cuando termina la sesión | Hook Stop asíncrono | No bloqueante, no ralentiza la sesión |
| Validar la calidad antes del commit | Hook PreToolUse en git commit | Bloquea el commit si fallan lint/tests |
| Hacer cumplir criterios de finalización | Hook Stop | Evita que el agente se detenga antes de que la tarea esté terminada |
Skills vs hooks vs subagentes
| Dimensión | Skills | Hooks | Subagentes |
|---|---|---|---|
| Invocación | Automática (razonamiento de LLM) | Determinista (orientada a eventos) | Explícita o auto-delegada |
| Garantía | Probabilística (decide el modelo) | Determinista (siempre se activa) | Determinista (contexto aislado) |
| Costo de contexto | Inyectado en el contexto principal | Cero (se ejecuta fuera de LLM) | Ventana de contexto separada |
| Costo en tokens | Presupuesto de descripción (2 % de la ventana) | Cero | Contexto completo por subagente |
| Mejor para | Experiencia de dominio | Aplicación de políticas | Trabajo enfocado, exploración |
Preguntas frecuentes
¿Cuántos hooks son demasiados?
La restricción es el rendimiento, no la cantidad. Cada hook se ejecuta de forma sincrónica, por lo que el tiempo total de ejecución de los hooks se suma a cada llamada de herramienta que coincida. 95 hooks distribuidos entre la configuración a nivel de usuario y de proyecto se ejecutan sin latencia perceptible cuando cada uno se completa en menos de 200 ms. El umbral a vigilar: si un hook PostToolUse añade más de 500 ms a cada edición de archivo, la sesión se siente lenta. Perfila tus hooks con time antes de desplegarlos.14
¿Pueden los hooks impedir que Claude Code ejecute un comando?
Sí. Los hooks PreToolUse bloquean cualquier acción de herramienta al salir con el código 2. Claude Code cancela la acción pendiente y muestra al modelo la salida de stderr del hook. Claude ve el motivo del rechazo y sugiere una alternativa más segura. El código de salida 1 es una advertencia no bloqueante donde la acción procede de todos modos.3
¿Dónde debo colocar los archivos de configuración de hooks?
Las configuraciones de hooks van en .claude/settings.json para hooks a nivel de proyecto (incluidos en tu repositorio, compartidos con tu equipo) o en ~/.claude/settings.json para hooks a nivel de usuario (personales, aplicados a cada proyecto). Los hooks a nivel de proyecto tienen prioridad cuando ambos existen. Usa rutas absolutas para los archivos de script y evitar problemas con el directorio de trabajo.14
¿Toda decisión necesita deliberación?
No. El módulo de confianza puntúa las decisiones en cuatro dimensiones (ambigüedad, complejidad, riesgo, dependencia del contexto). Solo las decisiones que puntúan por debajo de 0,70 en confianza general activan la deliberación, aproximadamente el 10 % del total. Las correcciones de documentación, los cambios de nombre de variables y las ediciones rutinarias se saltan la deliberación por completo. La arquitectura de seguridad, los cambios de esquema de base de datos y los despliegues irreversibles la activan de manera consistente.7
¿Cómo pruebas un sistema diseñado para producir desacuerdo?
Prueba tanto los caminos de éxito como los de fallo. Éxito: los agentes discrepan de forma productiva y alcanzan el consenso. Fallo: los agentes convergen demasiado rápido, nunca convergen o exceden los presupuestos de spawn. Las pruebas de extremo a extremo simulan cada escenario con respuestas de agente deterministas, verificando que ambas puertas de validación detecten cada modo de fallo documentado. Un sistema de deliberación en producción ejecuta 141 pruebas distribuidas en tres capas: 48 pruebas de integración bash, 81 pruebas unitarias Python y 12 simulaciones de pipeline de extremo a extremo.7
¿Cuál es el impacto de latencia de la deliberación?
Una deliberación de 3 agentes añade entre 30 y 60 segundos de tiempo real (los agentes se ejecutan secuencialmente a través del Agent tool). Una deliberación de 10 agentes añade entre 2 y 4 minutos. Los hooks de consenso y pride check se ejecutan cada uno en menos de 200 ms. El cuello de botella principal es el tiempo de inferencia de LLM por agente, no la sobrecarga de orquestación.7
¿Qué tan largo debe ser un archivo CLAUDE.md?
Mantén cada sección por debajo de 50 líneas y el archivo total por debajo de 150 líneas. Los archivos largos quedan truncados por las ventanas de contexto, así que coloca al principio las instrucciones más críticas: comandos y definiciones de cierre antes que las preferencias de estilo.21
¿Puede esto funcionar con herramientas distintas a Claude Code?
Los principios arquitectónicos (hooks como puertas deterministas, skills como experticia de dominio, subagents como contextos aislados, sistema de archivos como memoria) se aplican conceptualmente a cualquier sistema agéntico. La implementación específica usa los eventos del ciclo de vida, los patrones de matcher y el Agent tool de Claude Code. AGENTS.md lleva los mismos patrones a Codex, Cursor, Copilot, Amp y Windsurf.21 El patrón de harness es agnóstico de la herramienta, aunque los detalles de implementación sean específicos de cada una.
Tarjeta de referencia rápida
Configuración de hooks
{
"hooks": {
"PreToolUse": [{"matcher": "Bash", "hooks": [{"type": "command", "command": "script.sh"}]}],
"PostToolUse": [{"matcher": "Write|Edit", "hooks": [{"type": "command", "command": "format.sh"}]}],
"Stop": [{"matcher": "", "hooks": [{"type": "agent", "prompt": "Verify tests pass. $ARGUMENTS"}]}],
"SessionStart": [{"matcher": "", "hooks": [{"type": "command", "command": "setup.sh"}]}]
}
}
Frontmatter de skill
---
name: my-skill
description: What it does and when to use it. Include trigger phrases.
allowed-tools: Read, Grep, Glob
---
Definición de subagent
---
name: my-agent
description: When to invoke. Include PROACTIVELY for auto-delegation.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---
Instructions for the subagent.
Códigos de salida
| Código | Significado | Para qué se usa |
|---|---|---|
| 0 | Éxito | Permitir la operación |
| 2 | Bloquear | Puertas de seguridad, puertas de calidad |
| 1 | Advertencia no bloqueante | Registro, mensajes informativos |
Comandos clave
| Comando | Propósito |
|---|---|
/compact |
Comprimir el contexto, preservar las decisiones |
/context |
Ver la asignación de contexto y las skills activas |
/agents |
Gestionar subagents |
claude -c |
Continuar la sesión más reciente |
claude --print |
Invocación única de CLI (sin conversación) |
# <note> |
Añadir nota al archivo de memoria |
/memory |
Ver y gestionar la memoria automática |
Ubicaciones de archivos
| Ruta | Propósito |
|---|---|
~/.claude/CLAUDE.md |
Instrucciones globales personales |
.claude/CLAUDE.md |
Instrucciones del proyecto (compartidas en git) |
.claude/settings.json |
Hooks y permisos del proyecto |
~/.claude/settings.json |
Hooks y permisos del usuario |
~/.claude/skills/<name>/SKILL.md |
Skills personales |
.claude/skills/<name>/SKILL.md |
Skills del proyecto (compartidas en git) |
~/.claude/agents/<name>.md |
Definiciones de subagents personales |
.claude/agents/<name>.md |
Definiciones de subagents del proyecto |
.claude/rules/*.md |
Archivos de reglas del proyecto |
~/.claude/rules/*.md |
Archivos de reglas del usuario |
~/.claude/projects/{path}/memory/MEMORY.md |
Memoria automática |
Changelog
| Fecha | Cambio |
|---|---|
| 2026-05-08 | Guía v1.6: Seguimiento del día 2 sobre Claude Code v2.1.132/v2.1.133 + SDK v0.1.77. Se agregó la subsección de Skill Surface de SDK a Skills System, que cubre la opción skills en ClaudeAgentOptions y la deprecación de "Skill" en allowed_tools.37 Se agregó la subsección Effort and Session Provenance a Hook Architecture, que cubre el nuevo campo JSON effort.level + la variable de entorno $CLAUDE_EFFORT en la entrada del hook, y la variable de entorno CLAUDE_CODE_SESSION_ID en los subprocesos de Bash.3839 Se agregó la corrección de descubrimiento de skills de subagentes a la tabla Subagent Configuration Fields (los subagentes ahora descubren skills de proyecto, usuario y plugin a través de la herramienta Skill, eliminados silenciosamente antes de v2.1.133).39 Se agregó la subsección Worktree Base, Sandbox Paths y Admin Settings a Production Patterns, que cubre worktree.baseRef (reversión predeterminada con cambio importante de regreso a origin/<default> desde HEAD local), sandbox.bwrapPath, sandbox.socatPath y parentSettingsBehavior.39 |
| 2026-05-07 | Guía v1.5: Claude Managed Agents, expansión de SF del 6 de mayo. Se agregó la Estrategia 5 (Managed Memory Curation: Dreaming, Research Preview) a Memory and Context con una tabla que contrasta filesystem-as-memory vs. Dreaming.35 Se agregó Managed Multiagent Orchestration (Public Beta) y Outcomes (Public Beta) en la parte superior de Multi-Agent Orchestration con citas literales de Anthropic sobre especialistas de filesystem compartido y trazado en Claude Console, además de una tabla comparativa frente a la deliberación autoalojada. Se agregó la subsección de transmisión de eventos de hook del lado de SDK, que cubre include_hook_events y HookEventMessage de claude-agent-sdk-python v0.1.74.36 Solo en el changelog: Claude Code v2.1.124-v2.1.131 (claude project purge, --dangerously-skip-permissions para directorios de proyecto, skill_activated invocation_trigger, corrección de format-on-save de PostToolUse, corrección de bloqueo de JSON+exit-2 de PreToolUse, configuraciones skillOverrides); claude-agent-sdk-python v0.1.72 (CLI 2.1.126), v0.1.73 (session_store_flush), v0.1.75 (CLI 2.1.131), v0.1.76 (api_error_status); openai-agents-python v0.15.0-v0.16.1 con v0.16.0 (7 de mayo) que usa gpt-5.4-mini de forma predeterminada, elimina el techo implícito de max_turns y agrega concurrencia de ejecución de herramientas del lado de SDK. |
| 2026-05-07 | Guía v1.4: Se actualizaron las mecánicas de hook y skill de Claude Code con respecto a la documentación oficial actual y la evidencia de runtime local (claude --version 2.1.132, codex --version devolvió codex-cli 0.128.0). Se actualizó la superficie de hooks de 22/26+ a 29 eventos documentados, se corrigió el presupuesto de skill-description de 2%/16.000 a 1%/8.000, se cambió el conteo de tipos de hook de cuatro a cinco con mcp_tool, se eliminó la afirmación fija no soportada de “10 subagentes en paralelo” y se agregó una sección de paridad de Codex segura para el público que cubre AGENTS.md, skills, hooks, plugins y flujos de trabajo explícitos de subagentes. |
| 2026-04-29 | Guía v1.3: Se expandió la cobertura de OpenAI Agents SDK en la sección Managed vs. Self-Hosted Harnesses con la superficie nombrada de SDK del Python openai-agents v0.14.0 (15 de abril) — SandboxAgent, Manifest, SandboxRunConfig, memoria de sandbox con divulgación progresiva, montajes de workspace (S3/R2/GCS/Azure), snapshots portátiles y los backends de cliente local/Docker/alojado (Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel). Se reemplazó la cita secundaria de Help Net Security con la cita primaria de las notas de versión de v0.14.0. Se agregó una nota breve sobre claude-agent-sdk-python v0.1.69-v0.1.71 (28-29 de abril) como la tercera opción autoalojada (incrustar el runtime de Claude Code como un Python de Python): CLI de Claude empaquetado actualizado a v2.1.123, se elevó el piso de la dependencia mcp a >=1.19.0 (las versiones anteriores eliminaban silenciosamente CallToolResult de las herramientas MCP en proceso), corrección de cancelación de Trio nursery y paridad del campo allowlist de SandboxNetworkConfig con el SDK de TS. Refinamientos de SDK v0.14.7-v0.14.8 documentados en [^58]. |
| 2026-04-25 | Guía v1.2: Google Cloud Next 2026 (22-24 de abril) — Vertex AI fue renombrado como Gemini Enterprise Agent Platform; Agentspace fue absorbido en Gemini Enterprise unificado; Workspace Studio (constructor de agentes sin código); más de 200 modelos en Model Garden, incluido Anthropic Claude; agentes asociados de Box, Workday, Salesforce, ServiceNow; ADK v1.0 estable en cuatro lenguajes; Project Mariner (agente de navegación web); servidores MCP administrados con Apigee como puente API-a-agente; A2A protocol v1.0 en producción en 150 organizaciones. Microsoft Agent Framework 1.0 (abril de 2026): APIs estables, compromiso LTS, soporte MCP completo, .NET + Python. El DevUI basado en navegador que visualiza la ejecución del agente y las llamadas a herramientas en tiempo real se lanza como preview junto con la superficie estable 1.0. Salesforce Headless 360 (15 de abril, TDX): cada capacidad de Salesforce (CRM, servicio, marketing, comercio electrónico) expuesta como herramienta API/MCP/comando CLI para que agentes como Claude Code, Cursor y Codex puedan construir sobre la plataforma sin un navegador. (TDX 2026 se realizó del 15 al 16 de abril; el anuncio de Headless 360 está fechado el 15 de abril.) MetaComp StableX KYA (21 de abril): marco de gobernanza Know Your Agent para servicios financieros regulados (pagos, cumplimiento, gestión patrimonial) — el primero en su tipo de una institución financiera con licencia; disponible en Claude, Claude Code, OpenClaw y otras plataformas de IA compatibles. Precios de Claude Managed Agents: $0,08 por hora-sesión mientras una sesión está en ejecución, sin cargo de runtime mientras está inactiva — además de las tarifas normales de tokens del modelo Claude. (Según la página de precios de Claude de Anthropic; el lanzamiento de la beta pública fue el 8 de abril de 2026.) Memory para Managed Agents entró en beta pública el 23 de abril de 2026 bajo el encabezado beta managed-agents-2026-04-01. Todos los endpoints de Managed Agents ahora requieren este encabezado beta. |
| 2026-04-16 | Guía v1.1: Se agregó la sección Managed vs. Self-Hosted Harnesses que cubre Claude Managed Agents (beta del 8 de abril) y la separación harness/cómputo de OpenAI Agents SDK (16 de abril). Se agregó Scion, el hipervisor multi-agente entre herramientas (7 de abril, Google). Se documentó el hallazgo de la meseta de debate de M3MAD-Bench. Se agregaron Los Cinco Principios de los Agentes Confiables (Anthropic, 9 de abril) + gobernanza de MCP/AGENTS.md por Linux Foundation. Referencia de skill-sandbox de Permiso SandyClaw. Nuevos Patrones de Largo Horizonte de Opus 4.7: resiliencia ante fallas de herramientas, nivel de esfuerzo xhigh, techo de presupuesto de tokens (task_budget beta), conciencia de necesidad implícita que reduce el andamiaje de CLAUDE.md. |
| 2026-03-24 | Publicación inicial |
Referencias
-
Andrej Karpathy sobre las “garras” como una nueva capa sobre los agentes LLM. Discusión en HN (406 puntos, 917 comentarios). ↩
-
Implementación del autor. 84 hooks, 48 skills, 19 agentes, ~15.000 líneas de orquestación. Documentado en Claude Code as Infrastructure. ↩↩↩↩↩↩↩↩
-
Anthropic, “Claude Code Hooks: Exit Codes.” code.claude.com/docs/en/hooks. Salida 0 permite, salida 2 bloquea, salida 1 advierte para la mayoría de los eventos;
WorktreeCreatees más estricto. ↩↩↩↩↩ -
Anthropic, “Extend Claude with Skills.” code.claude.com/docs/en/skills. Estructura de skills, campos del frontmatter, coincidencia basada en LLM y presupuesto de descripción del 1 % / 8.000 caracteres. ↩↩↩↩↩↩↩
-
Anthropic, “Claude Code Sub-agents.” code.claude.com/docs/en/sub-agents. Contexto aislado, soporte de worktree, equipos de agentes. ↩↩↩↩↩
-
Anthropic, “Claude Code Documentation.” docs.anthropic.com/en/docs/claude-code. Archivos de memoria, CLAUDE.md, auto-memoria. ↩↩↩↩↩
-
Sistema de deliberación multiagente del autor. 10 personas de investigación, máquina de estados de 7 fases, 141 pruebas. Documentado en Multi-Agent Deliberation. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Simon Willison, “Writing code is cheap now.” Agentic Engineering Patterns. ↩
-
Laban, Philippe, et al., “LLMs Get Lost In Multi-Turn Conversation,” arXiv:2505.06120, mayo de 2025. Microsoft Research y Salesforce. 15 LLMs, más de 200.000 conversaciones, caída de rendimiento promedio del 39 %. ↩↩↩
-
Mikhail Shilkov, “Inside Claude Code Skills: Structure, Prompts, Invocation.” mikhail.io. Análisis independiente del descubrimiento de skills, la inyección de contexto y la sección de prompt
available_skills. ↩ -
Claude Code Source,
SLASH_COMMAND_TOOL_CHAR_BUDGET. github.com/anthropics/claude-code. ↩ -
Anthropic, “Skill Authoring Best Practices.” platform.claude.com. Límite de 500 líneas, archivos de soporte, convenciones de nomenclatura. ↩
-
Anthropic, “Claude Code Hooks: Lifecycle Events.” code.claude.com/docs/en/hooks. 29 eventos del ciclo de vida documentados, tipos de hooks, comportamiento de matchers, hooks asíncronos, hooks HTTP, hooks de prompt, hooks de agente y hooks de herramientas MCP. ↩↩↩↩↩↩↩
-
Tutorial de hooks de Claude Code del autor. 5 hooks de producción desde cero. Documentado en Claude Code Hooks Tutorial. ↩↩↩↩↩
-
Gestión de la ventana de contexto del autor a lo largo de 50 sesiones. Documentado en Context Window Management. ↩↩↩↩↩
-
Implementación del Ralph Loop del autor. Iteración con contexto fresco usando estado en sistema de archivos, presupuestos de spawn. Documentado en The Ralph Loop. ↩↩↩↩↩↩↩
-
Arquitectura del sistema de deliberación del autor. 3.500 líneas de Python, 12 módulos, disparador por confianza, validación de consenso. Documentado en Building AI Systems: From RAG to Agents. ↩↩↩
-
Nemeth, Charlan, In Defense of Troublemakers: The Power of Dissent in Life and Business, Basic Books, 2018. ↩
-
Wu, H., Li, Z., y Li, L., “Can LLM Agents Really Debate?” arXiv:2511.07784, 2025. ↩
-
Liang, T. et al., “Encouraging Divergent Thinking in Large Language Models through Multi-Agent Debate,” EMNLP 2024. ↩
-
Análisis del autor sobre AGENTS.md en repositorios reales. Documentado en AGENTS.md Patterns. Véase también: Blog de GitHub, “How to Write a Great agents.md: Lessons from Over 2,500 Repositories.” ↩↩↩↩↩↩↩↩
-
Metodología del quality loop y evidence gate del autor. Parte del sistema Jiro Craftsmanship. ↩
-
Anthropic, “Claude Managed Agents Overview”. Beta pública lanzada el 8 de abril de 2026. Harness-as-a-service con checkpointing de sesión, sandbox empaquetado y API REST. Precios: tokens estándar + 0,08 USD por hora-sesión. Cabecera beta
managed-agents-2026-04-01. ↩↩ -
OpenAI, “openai-agents Python v0.14.0 release notes”. Lanzado el 15 de abril de 2026; el anuncio se cubrió el 16 de abril. Introduce la superficie SDK Sandbox Agents como capa beta sobre el flujo existente
Agent/Runner:SandboxAgent,Manifest(contrato de workspace),SandboxRunConfig, capacidades (shell, edición de sistema de archivos, inspección de imágenes, skills, memoria de sandbox, compactación), montajes de workspace (locales, Git, remotos: S3, R2, GCS, Azure Blob, S3 Files), snapshots portables con normalización de rutas y preservación de symlinks, y serialización de estado de ejecución para reanudar. Backends:UnixLocalSandboxClient,DockerSandboxClienty clientes alojados para Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel mediante extras opcionales. El anuncio del 16 de abril se resume en Help Net Security. ↩↩ -
Google Cloud, “Scion: Multi-Agent Hypervisor”. Liberado como código abierto el 7 de abril de 2026. Orquesta Claude Code, Gemini CLI y otros deep agents como procesos aislados con contenedor por agente, git worktree y credenciales propias. Modos de despliegue local/hub/Kubernetes. Cobertura de InfoQ. ↩
-
Cluster de investigación sobre debate multiagente, Q1–Q2 2026. Wu et al., “Can LLM Agents Really Debate?” (arXiv 2511.07784); M3MAD-Bench: benchmark multi-modelo y multi-agente que muestra mesetas de rendimiento y susceptibilidad al consenso engañoso; Tool-MAD: asignación de herramientas heterogéneas por agente + puntuaciones de juez de Faithfulness/Relevance. ↩
-
Anthropic, “Our framework for developing safe and trustworthy agents”. 9 de abril de 2026. Cinco principios: control humano, alineación de valores, seguridad, transparencia y privacidad. Donación de MCP a la Agentic AI Foundation de la Linux Foundation. ↩↩
-
Permiso Security, “SandyClaw: First Dynamic Sandbox for AI Agent Skills”. 2 de abril de 2026. Sandbox de ejecución de skills con detección Sigma/YARA/Nova/Snort y veredictos respaldados por evidencia. ↩
-
Anthropic, “Introducing Claude Opus 4.7”. 16 de abril de 2026. Mejoras para agentes de horizonte largo: 3× la resolución de tareas de producción de SWE-Bench frente a Opus 4.6, resiliencia ante fallos de herramientas, nivel de esfuerzo
xhigh, presupuestos de tarea (beta), conciencia de necesidades implícitas. Véase también What’s new in Opus 4.7 para los cambios disruptivos en la API Messages. ↩ -
Referencia compuesta — OpenAI
openai-agents-pythonv0.14.7 (28 de abril de 2026) y v0.14.8 (29 de abril de 2026); Anthropicclaude-agent-sdk-pythonv0.1.69 (28 de abril), v0.1.70 (28 de abril) y v0.1.71 (29 de abril). Aspectos destacados de v0.14.7: propiedades de convenienciatool_name/call_iden los items de herramienta, aumento del límite de turnos de consolidación de memoria de Fase 2, alias GPT-5.5 para compactación de sandbox, endurecimiento de validación de miembros tar/zip, rechazo de symlinks en fuentesLocalFile, eliminación de campos sin definir de las llamadas a la API Responses. Aspectos destacados de v0.14.8: preservar errores de importación de la reexportación de MCP, delimitar las secciones de instrucciones de prompt del sandbox. claude-agent-sdk-python v0.1.69 añadió docstrings a los campos deClaudeAgentOptionsy elevó el CLI empaquetado a v2.1.121; v0.1.70 elevó el piso de la dependenciamcpa>=1.19.0(versiones anteriores descartaban silenciosamente los retornosCallToolResultde los handlers de herramientas MCP in-process), corrigió la corrupción de Trio nursery ante cancelación temprana al iterarquery()conoptions.stderrdefinido (ahora se usaspawn_detached()para el lector de stderr) y elevó el CLI empaquetado a v2.1.122; v0.1.71 añadió campos de allowlist de dominios (allowedDomains,deniedDomains,allowManagedDomainsOnly,allowMachLookup) aSandboxNetworkConfigpara alcanzar paridad con el esquema TypeScript y elevó el CLI empaquetado a v2.1.123. ↩ -
OpenAI, “Custom instructions with AGENTS.md”. Codex lee los archivos
AGENTS.md/AGENTS.override.mdglobales y de proyecto antes de trabajar, fusiona la guía desde la raíz hasta el directorio actual y limita los docs de proyecto medianteproject_doc_max_bytes. ↩ -
OpenAI, “Agent Skills”. Las skills de Codex usan
SKILL.md, divulgación progresiva, invocación explícita con$skilly activación implícita a partir de descripciones. ↩ -
OpenAI, “Codex Hooks”. Los hooks de Codex admiten hooks de comando en la configuración, hooks de plugin, hooks gestionados, matchers para los eventos soportados, entrada JSON por stdin y campos de salida JSON. ↩
-
OpenAI, “Codex Subagents” y “Codex CLI 0.128.0 changelog”. Codex admite flujos explícitos de subagentes en paralelo, agentes integrados
default,workeryexplorer, agentes personalizados en TOML, política de sandbox heredada, hooks empaquetados con plugins, estado de habilitación de hooks y flujos/goalpersistentes en 0.128.0. ↩ -
Anthropic, “New in Claude Managed Agents”. 6 de mayo de 2026. Dreaming (Research Preview): proceso programado en segundo plano que revisa sesiones de agente y almacenes de memoria, extrae patrones y cura memorias. Outcomes (Public Beta): evaluación basada en rúbricas en la que un evaluador independiente puntúa la salida frente a la rúbrica en su propia ventana de contexto, de modo que no se vea influido por el razonamiento del agente. Multiagent Orchestration (Public Beta): un agente líder delega partes de una tarea en especialistas, cada uno con su propio modelo, prompt y herramientas; los especialistas trabajan en paralelo sobre un sistema de archivos compartido y contribuyen al contexto global del agente líder, con trazabilidad completa por paso en la Claude Console. ↩↩↩↩↩↩↩↩
-
Anthropic,
claude-agent-sdk-pythonv0.1.74. 6 de mayo de 2026. Añadeinclude_hook_eventsaClaudeAgentOptions; cuando se activa, el CLI emite eventos de hook (PreToolUse, PostToolUse, Stop, entre otros) y los entrega desde el flujo de mensajes comoHookEventMessage, reflejandoincludeHookEventsdel SDK TypeScript. CLI Claude empaquetado actualizado a v2.1.129. ↩↩ -
Anthropic,
claude-agent-sdk-pythonv0.1.77. 8 de mayo de 2026. Deprecación del valor"Skill"enallowed_toolsen favor de una opciónskillsdedicada enClaudeAgentOptions, ofrece a Claude Code una señal más estructurada sobre las skills disponibles, mejora los mensajes de error en las excepcionesCommand failedy empaqueta CLI Claude v2.1.133. ↩↩ -
Anthropic, Claude Code v2.1.132. 6 de mayo de 2026. Añade la variable de entorno
CLAUDE_CODE_SESSION_IDen los subprocesos de la herramienta Bash (coincide con elsession_idque ya ven los hooks),CLAUDE_CODE_DISABLE_ALTERNATE_SCREENpara mantener la conversación en el scrollback nativo, banner de inicio renovado en/tui fullscreen(menor uso de memoria, soporte de ratón, copia automática al seleccionar) y aproximadamente veinte correcciones de errores que abarcan apagado elegante con SIGINT, corrupción de--resumepor emojis surrogate, flag--permission-modeen plan-mode, manejo de cursor en escrituras índicas y ZWJ, operaciones vim NFD, absorción de pegado que comienza con/, memoria sin límites de MCP, reintento detools/listde MCP, error 400 conENABLE_PROMPT_CACHING_1Hen Bedrock + Vertex y la línea de estadocontext_windowmostrando tokens acumulados. ↩↩ -
Anthropic, Claude Code v2.1.133. 7 de mayo de 2026. Los hooks ahora reciben la entrada JSON
effort.level+ la variable de entorno$CLAUDE_EFFORT(también legible desde comandos Bash). Los subagentes descubren skills de proyecto, usuario y plugin mediante la herramientaSkill(corrección de regresión). Nuevos ajustes administrativos:worktree.baseRef(fresh|head) revierte la base del worktree aorigin/<default>, deshaciendo el cambio aHEADlocal introducido en v2.1.128;sandbox.bwrapPathysandbox.socatPathfijan los binarios del sandbox en Linux/WSL;parentSettingsBehavior('first-wins' | 'merge') controla cómo losmanagedSettingsdel SDK se componen con los ajustes padre. Otras correcciones: condición de carrera de 401 tras refresh-token en sesiones paralelas, alcance de reglas de permiso en raíces de unidad, soporte OAuth de proxy/mTLS para MCP, finalización del cancel en stop/interrupt de Remote Control, fuga de/effortentre sesiones, listado de--remote-controlen--help. ↩↩↩↩↩↩