PTENES
RUTA 3

🟣 Anatomía de Codex

AGENTS.md, .codex/ con config.toml, agentes en TOML, .agents/skills/ y el sidecar openai.yaml.

2
Módulos
14
Temas
~70min
Duración
Inter.
Nivel

Mapa de la ruta

Contenido detallado

3.1~35 min

📕 AGENTS.md, .codex/ y agentes en TOML

La configuración de Codex en un proyecto, pieza por pieza.

Qué es:

Archivo Markdown en la raíz del proyecto que Codex inyecta en el prompt del sistema al inicio de la sesión. Cumple la misma función que CLAUDE.md; solo cambia el nombre.

Por qué aprender:

Quien migra desde Claude Code copia el CLAUDE.md y le cambia el nombre. Funciona en el 90% de los casos. El 10% restante son detalles problemáticos: la sintaxis backtick-bang (inyección dinámica) no funcionará y las descripciones demasiado largas pueden truncarse.

Conceptos clave:

Jerarquía global (~/.codex/AGENTS.md) frente al proyecto, ausencia de inyección dinámica nativa, tamaño ideal más conservador que Claude.

Qué es:

Codex separa lo que es específico tuyo (.codex/ — config.toml, agents/) en lugar de lo que es spec abierta (.agents/skills/ — sigue el estándar Agent Skills). Convención que respeta la separación entre configuración y extensión.

Por qué aprender:

Quien espera «todo en una sola carpeta», como en Claude, se confunde. Las skills de Codex están en ~/.agents/skills/ globalmente y en ./.agents/skills/ por proyecto.

Conceptos clave:

Estándar «config en .codex, extensiones en .agents», interoperabilidad con otras tools que usan .agents/, separación de responsabilidades.

Qué es:

Archivo en ~/.codex/config.toml o ./.codex/config.toml: modelo predeterminado, perfil de aprobación, modo sandbox, servidores MCP, proveedores de modelos, acceso a la red.

Por qué aprender:

Codex usa TOML en lugar de JSON. La sintaxis es diferente: las claves van en [section], arrays en [[array.section]]. No es más difícil, pero es DIFERENTE.

Conceptos clave:

Sintaxis TOML básica, profiles ([profiles.work]), niveles de sandbox, sobrescritura del proveedor del modelo, interpolación de env.

Qué es:

Los subagentes en Codex son archivos .toml en .codex/agents/. Tienen campos como name, description, model, tools e instructions (cadena multilínea con el system prompt).

Por qué aprender:

Quien viene de Claude espera markdown. El agente de Codex se define con estructura: no escribes un «system prompt en prosa», completas los campos de una struct.

Conceptos clave:

Cadena multilínea en TOML ("""..."""), invocación EXPLÍCITA (sin despacho automático), espacio de nombres por archivo, paralelismo manual.

Qué es:

En Codex, sub-agents NO se activan automáticamente por la descripción. Tienes que llamarlos por su nombre: "use o agent code-reviewer para revisar X". Sin esto, el agente simplemente no se ejecuta.

Por qué aprender:

Es el error n.º 1 de quienes migran. "¿Por qué no se llama a mi agent?" — porque no lo llamaste. Escribes la descripción pensando que lo activa, pero no lo activa. Compensación: previsibilidad vs. conveniencia.

Conceptos clave:

Invocación por nombre, ventaja de control (sin sorpresas), desventaja de ergonomía, patrón "menciono el agent en el prompt".

Qué es:

Codex tiene un sandbox configurable en config.toml: read-only (solo lee), workspace-write (escribe en el proyecto), full (libre). Y modos de aprobación que controlan cuándo pedir confirmación.

Por qué aprender:

Es el nivel de granularidad de seguridad de Codex. Más explícito que el de Claude Code y configurado vía toml. Confuso al principio, pero robusto una vez que lo entiendes.

Conceptos clave:

Sandbox por sesión vs. global, alcance de escritura en el filesystem, control de acceso a la red, perfiles que se combinan (danger-full-access, safe-readonly).

Qué es:

Codex también admite slash commands personalizados, generalmente como archivos en .codex/commands/ o mediante skills con prefijo. La sintaxis de argumentos y el namespacing difieren de Claude.

Por qué aprender:

Para portar tus comandos slash favoritos. La mayoría se convierte 1:1; algunos necesitan adaptación (especialmente si usan inyección dinámica de Claude).

Conceptos clave:

Convención de carpetas, frontmatter mínimo, ausencia de backtick-bang, alternativas para la inyección dinámica (script + prompt).

Ver completo
3.2~35 min

🎯 Skills en Codex y el sidecar openai.yaml

La particularidad que más confunde a quienes vienen de Claude.

Qué es:

Las Skills de Codex están en ~/.agents/skills/<nome>/ (global) o ./.agents/skills/<nome>/ (proyecto). ¿Por qué? Porque .agents/ es la convención de la spec abierta — funciona con cualquier tool compatible.

Por qué aprender:

Quién lo espera .codex/skills/ coloca la skill allí y no funciona. Un detalle pequeño, una gran consecuencia: la skill es invisible para el agente.

Conceptos clave:

Convención abierta vs. propietaria, portabilidad automática a otras herramientas, recarga manual (Plugins → refresh).

Qué es:

El archivo SKILL.md en sí es prácticamente idéntico: frontmatter YAML con name e description, cuerpo en Markdown. La especificación Agent Skills define exactamente estos 4 elementos como comunes.

Por qué aprender:

Saber EXACTAMENTE qué es común permite escribir la mayor parte de la skill una sola vez. Todo lo que quede fuera de estos 4 elementos requiere un adaptador.

Conceptos clave:

Los 4 pilares (SKILL.md, name, description, body + scripts/references/assets); todo lo demás es específico del runtime.

Qué es:

Archivo opcional agents/openai.yaml dentro de la carpeta de la skill. Carga metadatos específicos de la interfaz (marca, ícono), declaraciones de servidores MCP requeridos y flags de comportamiento.

Por qué aprender:

Sin el sidecar, tu skill funciona, pero pierde algunos refinamientos: aparece sin ícono ni branding, y las dependencias de MCP deben instalarse manualmente. Con el sidecar, la instalación queda lista para usar.

Conceptos clave:

Estructura YAML del sidecar, campos compatibles (mcp_servers, branding, hidden), opt-in (no bloquea el funcionamiento básico).

Qué es:

Codex tiene un límite no documentado (~8K caracteres) para el tamaño de la description de una skill cuando se indexa en el catálogo. Si lo supera, la description se trunca y la skill pierde activadores.

Por qué aprender:

Una skill grande importada de Claude puede tener una descripción larga que funciona bien allí y falla en Codex. Polyskill se adelanta a eso y la reescribe.

Conceptos clave:

Límite oculto, comportamiento silencioso (no da error), técnica de «front-loading» (mover los activadores al principio), polyskill como solución automática.

Qué es:

Codex no interpreta backtick-bang como ejecución de shell antes del prompt. Las skills de Claude que dependen de esto necesitan una adaptación: convertirlo en una instrucción en prosa ("ejecuta `git status` y analiza") o en un script llamado.

Por qué aprender:

Es la diferencia que más rompe la portabilidad de las skills de Claude. Polyskill hace la traducción automática como prosa de respaldo.

Conceptos clave:

Inyección en build-time frente a runtime, prosa de respaldo, script delegado, idempotencia.

Qué es:

Servidores MCP declarados en [mcp_servers.<nome>] dentro del config.toml, o en un sidecar openai.yaml de la skill. La misma especificación MCP, el mismo protocolo, una declaración diferente.

Por qué aprender:

Para conectar Slack, Gmail, GitHub, etc. a Codex. El comando, los args y las env vars son iguales que en Claude; solo cambia el formato del archivo (TOML/YAML en lugar de JSON).

Conceptos clave:

Mapeo JSON↔TOML para MCP, sidecar como ubicación recomendada para las dependencias de una skill, interpolación de variables de entorno en TOML.

Qué es:

Codex usa $nome-skill en lugar de /nome-skill para invocar una skill explícitamente. La misma idea, distinta sigla. Slash sigue existiendo para los comandos integrados.

Por qué aprender:

Reflejo de escribir / en Codex resulta en un comando interno, no en una skill. Pequeña fuente de fricción que desaparece después de 1 día de uso.

Conceptos clave:

Separación entre slash (built-in) y dollar (skill), nomenclatura kebab-case, autocompletado disponible, alias posible.

Ver completo
← Ruta 2: Claude Code Ruta 4: Conversión →