Codex avanzado para perfiles técnicos
Webs, análisis de datos, dashboards y aplicaciones con el agente de programación de OpenAI. Seis horas para trabajar con Codex con método: especificar, construir, verificar y guardar en GitHub. Actualizado a octubre de 2026.
Doce bloques, dos sesiones
La primera sesión es para crear; la segunda, para trabajar como un equipo de desarrollo. Cada bloque tiene explicación, demostración y práctica en tu ordenador.
Sesión 1 · Crear con Codex
1 · Codex, el agente
Dónde vive, cómo trabaja, modelos GPT-6, razonamiento, planes y límites.
Ir a la práctica2 · Puesta a punto
App y CLI, AGENTS.md con /init, modos de permisos, Local y Worktree.
Ir a la práctica3 · Landing page
Del brief al plan con /plan, navegador integrado, anotaciones y Markdown.
Ir a la práctica4 · Análisis de datos
Un script reproducible con comprobaciones, gráficos SVG e informe.
Ir a la práctica5 · Dashboard
SPEC.md en modo Plan, construcción contra criterios y commit.
Ir a la práctica6 · Contexto y uso
/status, /compact, /new, /resume y hábitos que ahorran límite.
Ir a la prácticaSesión 2 · Repositorios, calidad y automatización
7 · Git y GitHub
Subir el repositorio, entender un proyecto y corregir un error empezando por una prueba.
Ir a la práctica8 · Paralelo y revisión
Worktrees, conflictos, /review, @codex review y tareas en la nube.
Ir a la práctica9 · Personalizar
AGENTS.md por niveles, skills, config.toml, perfiles y hooks.
Ir a la práctica10 · MCP y plugins
Playwright para probar la web en un navegador real, Context7 y plugins.
Ir a la práctica11 · Automatizar
codex exec con esquema JSON, tareas programadas, GitHub Action y Pages.
Ir a la práctica12 · Criterio
Seguridad, datos, costes y cuándo hace falta una revisión experta.
Ir a la prácticaPara perfiles técnicos y semitécnicos
Perfiles
- Desarrolladores y desarrolladoras
- Analistas de datos
- IT y sistemas
- Maquetación y diseño web
- Producto y emprendimiento
Requisitos
- Haber hecho «Trabaja con ChatGPT y Codex» o experiencia equivalente
- Manejarte con una terminal y un editor de código
- Cuenta gratuita en GitHub
- Recomendado: ChatGPT Plus o superior
Qué instalar antes
- App de escritorio de ChatGPT
- Codex CLI
- Git y Node.js 20 o posterior
- GitHub CLI (gh)
- Ordenador propio con permiso para instalar
Sin plan de pago también se puede seguir: el plan gratuito incluye Codex en la app de escritorio con GPT-6 Luna, aunque el límite se acaba pronto. Cada práctica tiene su resultado en el repositorio y el formador la hace en directo.
Sesión a sesión, con todos los prompts
Explicaciones, prácticas guiadas, prompts y comandos con botón de copiar, comprobaciones con las cifras exactas y enlaces a la documentación oficial de OpenAI. Las casillas de «hecho» se guardan en este navegador.
Crear con Codex
De una idea a algo que funciona: una landing desde un brief, un análisis de datos reproducible y un dashboard, todo con método y guardado en Git.
Cómo se organiza la sesión 1
Método de trabajo, caso y repositorio.
Cada práctica sigue el mismo ciclo: explorar, planificar, implementar, verificar y guardar con un commit. Codex escribe el código; tú decides qué se construye, revisas el plan, compruebas el resultado y aceptas o rechazas cada cambio.
| Paso | Qué haces tú | Qué hace Codex |
|---|---|---|
| Explorar | Le pides que lea el proyecto y te lo explique | Abre ficheros, ejecuta comandos de lectura y resume |
| Planificar | Activas /plan, respondes sus preguntas y corriges el plan | Propone pasos, ficheros afectados y cómo comprobarlo |
| Implementar | Apruebas lo que pide permiso | Edita ficheros y ejecuta comandos dentro del sandbox |
| Verificar | Miras el resultado en el navegador y contrastas cifras | Ejecuta pruebas, abre la página y corrige |
| Guardar | Revisas el diff y haces el commit | Prepara el mensaje del commit y, si se lo pides, la rama y la PR |
El caso: Cafès Roca
Una cadena ficticia de tres cafeterías de barrio en Barcelona: Gràcia, Poblenou y Sants. Es el mismo caso del curso básico, ahora con un repositorio de código: datos de ventas del primer semestre, opiniones de clientes, el brief de la web y una aplicación interna de gestión de estoc.
| Carpeta | Contenido |
|---|---|
dades/ | Ventas de enero a junio de 2026 (CSV, 2.487 líneas), opiniones de clientes, brief web y acta de reunión |
estoc/ | Aplicación de estoc en Node.js sin dependencias, con pruebas e incidencias abiertas en ISSUES.md |
web/ | Carpeta de la landing. Dos artículos en Markdown esperando a convertirse en páginas |
p1-posada-a-punt … p9-automatitzar) en la rama referencia. Si te quedas atrás o se te acaba el límite de uso, sigues desde el punto del grupo con git switch -c mi-p4 p4-dashboard.Bloque 1 · Codex: el agente para proyectos de software
Dónde vive, cómo trabaja, modelos y planes.
Codex es el agente de programación de OpenAI. Lee un proyecto, planifica los cambios, edita ficheros, ejecuta comandos y pruebas en un entorno aislado y trabaja con Git y GitHub. Desde el 9 de julio de 2026 es uno de los tres modos de la aplicación de escritorio de ChatGPT: Chat, Work y Codex.
Dónde vive
| Superficie | Para qué | Dónde se ejecuta |
|---|---|---|
| App de escritorio de ChatGPT, modo Codex (Alt+3 en Windows y Linux; ⌘3 en Mac) | La forma principal de trabajar en el curso: proyectos, diffs, navegador integrado, worktrees, commits y tareas programadas | En tu ordenador, o en la nube si eliges «Cloud» |
Codex CLI (codex en la terminal) | Scripts, servidores, automatización con codex exec, trabajo remoto por SSH | En tu ordenador |
| Extensión para VS Code (también Cursor y Windsurf) | Trabajar al lado del código, con los ficheros abiertos como contexto | En tu ordenador o delegando en la nube |
| Codex cloud | Tareas largas o en paralelo sobre un repositorio de GitHub, con varios intentos y pull requests | En una máquina virtual de OpenAI |
| Móvil (iOS) | Lanzar tareas en la nube y seguir desde la pestaña Remote los chats del escritorio | Nube o tu ordenador |
AGENTS.md, decide qué herramienta usar (leer un fichero, ejecutar un comando, aplicar un parche, buscar en la web), mira el resultado y vuelve a decidir, hasta que considera la tarea terminada. Cada comando se ejecuta dentro de un sandbox: un perímetro que limita qué carpetas puede escribir y si puede salir a internet. Cuando necesita salir de ese perímetro, te pide permiso.Modelos y razonamiento (octubre de 2026)
| Modelo | Cuándo usarlo | Planes |
|---|---|---|
| GPT-6.1 Sol | El recomendado para programar y para tareas agénticas. Rendimiento cercano a Astra con menos coste | Plus, Pro, Business, Enterprise, Edu |
| GPT-6 Astra | El más capaz, para problemas difíciles. Gasta el límite mucho más rápido | Limitado en Plus; amplio en Pro |
| GPT-6 Sol | Alternativa equilibrada | Plus y superiores |
| GPT-6 Luna | Rápido y eficiente para tareas acotadas y de volumen | Todos, también Free y Go |
El nivel de razonamiento decide cuánto piensa el modelo antes de actuar: Light, Medium, High, Extra High, Max y Ultra. Medium va bien para casi todo. Sube a High o Extra High para depurar un error difícil o planificar una arquitectura; Ultra reparte el trabajo entre subagentes en paralelo. Más razonamiento significa más tiempo y más consumo. GPT-5.5 se retira de Codex el 14 de octubre de 2026.
Planes y límites
| Plan | Codex | Precio |
|---|---|---|
| Free y Go | App de escritorio con GPT-6 Luna, límites pensados para tareas cortas | 0 $ y 8 $/mes |
| Plus (recomendado para el curso) | App, web, CLI, IDE, iOS y nube; revisión automática de código en GitHub; GPT-6.1 Sol, GPT-6 Sol, Luna y Astra limitado | 20 $/mes |
| Pro | Todo lo de Plus con mucho más uso; actualmente sin límite de cinco horas | Desde 100 $/mes |
| Business, Enterprise y Edu | Administración, SSO y no entrenan con tus datos por defecto. El administrador puede limitar funciones | Desde 20 $/usuario/mes |
El uso se mide en mensajes por ventanas de cinco horas, con un máximo semanal. Lo local y lo que se ejecuta en la nube salen de la misma bolsa, que también comparten Work y ChatGPT for Excel. Como referencia, en Plus OpenAI estima entre 15 y 160 mensajes locales cada cinco horas con GPT-6.1 Sol y entre 350 y 3.000 con Luna: depende del tamaño del proyecto y de la duración de cada tarea.
Bloque 2 · Puesta a punto y primera sesión
Práctica 1 · instalar, abrir el proyecto, AGENTS.md y permisos.
Dejamos Codex instalado en la app de escritorio y en la terminal, abrimos el repositorio de Cafès Roca, generamos AGENTS.md con /init y elegimos el modo de permisos.
1. Instalar
| Pieza | Windows (PowerShell) | Mac (Terminal) |
|---|---|---|
| App de ChatGPT | Microsoft Store, o winget install --id 9PLM9XGG6VKS -s msstore | chatgpt.com/download |
| Codex CLI | powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex" | curl -fsSL https://chatgpt.com/codex/install.sh | sh |
| Git | winget install --id Git.Git -e | xcode-select --install |
| Node.js 20 o posterior | winget install OpenJS.NodeJS.LTS | nodejs.org (instalador LTS) |
| GitHub CLI | winget install --id GitHub.cli | brew install gh |
Con npm también funciona: npm install -g @openai/codex. Para actualizar la CLI, codex update.
codex --version git --version node --version gh --version
2. Iniciar sesión y abrir el proyecto
cafes-roca, que ya es un repositorio de Git.cafes-roca como proyecto (Add new project o Ctrl+O). Si te pregunta si confías en la carpeta, di que sí: es tuya.codex. La primera vez elige Sign in with ChatGPT.Explícame este repositorio: qué hay en cada carpeta, cómo se arranca la aplicación de estoc, cómo se ejecutan las pruebas y qué incidencias hay abiertas. Ejecuta las pruebas para ver si pasan. No modifiques ningún fichero.
dades/, estoc/ y web/, encuentra npm test y npm start, informa de que pasan 5 pruebas y lista las incidencias #12, #13 y #14 de estoc/ISSUES.md.3. AGENTS.md con /init
~/.codex/AGENTS.md) con los de cada carpeta, desde la raíz del repositorio hasta donde trabajas; el más cercano manda. Límite: 32 KiB./init en el chat. Codex lee el proyecto y propone un AGENTS.md.Revisa el AGENTS.md y añade estas normas: - Responde en castellano y escribe los textos para el usuario en catalán, que es el idioma de Cafès Roca. - No modifiques nunca los ficheros de dades/: son el origen. Si hay que transformarlos, guarda el resultado en otra carpeta. - Antes y después de cambiar código de estoc/, ejecuta las pruebas. - No instales paquetes npm sin preguntarme. - Formato de números en catalán: coma decimal y punto de millares. Incluye una sección «Dades» que describa vendes_cafes_roca_2026.csv: separador punto y coma, coma decimal, UTF-8 y saltos de línea CRLF.
4. Permisos: qué puede hacer sin preguntarte
| Modo en la app | Qué permite | Cuándo |
|---|---|---|
| Pedir aprobación (Ask for approval) | Lee y edita dentro del proyecto; pregunta para salir a internet o tocar ficheros externos | Por defecto y en todo el curso |
| Aprobar por mí (Approve for me) | Lo mismo, pero un agente revisor aprueba o deniega en tu lugar las peticiones | Tareas largas cuando ya confías en el proyecto |
| Acceso completo (Full access) | Sin sandbox: cualquier fichero del ordenador e internet | Casi nunca. Solo en entornos aislados |
| Personalizado | Lo que digas en config.toml | Equipos con normas propias |
En la terminal es lo mismo con dos opciones: --sandbox (read-only, workspace-write, danger-full-access) y --ask-for-approval (on-request, never). En una sesión abierta, /permissions. La opción antigua --full-auto está obsoleta.
5. Local, Worktree y deshacer
- Local: Codex trabaja en tu carpeta. Ves los cambios al momento.
- Worktree: trabaja en una copia aislada del repositorio (un git worktree) para no pisar lo que tienes a medias. La usaremos en la sesión 2.
- Cada cambio aparece como diff. Puedes aceptarlo, pedir que lo rehaga o revertirlo. Con Git, nada es irreversible:
git restore .deshace lo que no has guardado.
-ExecutionPolicy ByPass. Si la app no ve Git, cierra y vuelve a abrir la app después de instalarlo. Si la CLI no te deja iniciar sesión en un ordenador compartido, usa codex login --device-auth.Bloque 3 · Una landing page a partir de un brief
Práctica 2 · plan, construcción, navegador integrado y Markdown.
El brief de Cafès Roca pide una página con los tres locales, la carta destacada y un formulario de càtering. Primero el plan; después la página; después la revisamos en el navegador integrado de la app, como lo haría un cliente.
/plan para activar el modo Plan.web/index.html en el navegador integrado de la app y revísala en escritorio y en móvil.Lee dades/brief_web_cafes_roca.txt. Quiero la landing que describe dentro de web/: index.html y una hoja de estilos aparte, sin frameworks ni librerías externas, que funcione bien en el móvil. Antes de escribir nada, hazme las preguntas que necesites y propón un plan con las secciones, los ficheros y cómo comprobaremos que está bien.
Adelante con el plan. Textos en catalán, tomados del brief sin inventar datos. El formulario de càtering valida los campos obligatorios y, al enviarlo, abre el correo del usuario dirigido a hola@cafesroca.cat con los datos rellenados. Cuando acabes, ábrela en el navegador integrado y revisa que no haya desplazamiento horizontal a 390 px de ancho.
Iterar con capturas y anotaciones
En el navegador integrado, activa el modo de anotación, marca lo que no te guste (un botón que no se ve, un espacio excesivo) y envía la captura con un comentario. Codex recibe la imagen con tus marcas.
En la captura que te adjunto, el botón de càtering de la cabecera queda demasiado pegado al texto y las tarjetas de los locales tienen alturas distintas en el móvil. Corrígelo sin cambiar los colores.
Artículos en Markdown convertidos en páginas
En web/articles/ hay dos artículos en Markdown. Pedimos un script que los convierta en páginas con el mismo estilo; así, quien escriba artículos no tendrá que tocar HTML.
Crea web/build.mjs: un script de Node sin dependencias que convierta cada .md de web/articles/ en un .html con la cabecera, el pie y los estilos de la landing (títulos, párrafos, listas, negritas y enlaces). Añade a la landing una sección «Del nostre torrador» con enlaces a los dos artículos. Ejecuta el script y comprueba que las páginas se abren.
node web/build.mjs
web/.Bloque 4 · Análisis técnico de datos
Práctica 3 · un script reproducible, gráficos e informe.
En el curso básico ChatGPT calculaba las cifras dentro del chat. Aquí pedimos un script que se queda en el repositorio: cualquiera puede volver a ejecutarlo el mes que viene con datos nuevos y obtener el mismo informe.
Crea analisi/analisi.mjs, un script de Node sin dependencias que: 1. Lea dades/vendes_cafes_roca_2026.csv sin modificarlo (punto y coma, coma decimal, CRLF) y avise si alguna fila tiene un formato incorrecto. 2. Calcule la facturación total, por local, por categoría con su peso en %, por mes y local, las bebidas frías por mes y los cinco productos que más facturan. 3. Compruebe que las sumas por local, categoría, mes y producto coinciden con el total, y se detenga con un error si no cuadran. 4. Guarde los resultados en analisi/resultats.json. Ejecútalo y enséñame las cifras.
Añade al script tres gráficos en SVG, sin librerías, en analisi/grafics/: ventas mensuales por local (líneas), ventas por categoría (barras horizontales con importe y %) y bebidas frías por mes (columnas, con mayo y junio destacados). Colores de la marca: Gràcia #3B2A1F, Poblenou #C8553D, Sants #B08B5B. Para cada gráfico, explícame por qué ese tipo responde mejor a la pregunta.
Genera analisi/informe.md en catalán a partir de resultats.json: cifras principales, una tabla por local, una por categoría, la evolución de las bebidas frías y el top 5 de productos, con los gráficos insertados. Cada cifra tiene que salir del JSON; no escribas ningún número a mano.
Bloque 5 · Un dashboard interactivo
Práctica 4 · especificar antes de construir.
Un dashboard tiene muchas decisiones pequeñas: qué indicadores, qué filtros, de dónde salen los datos. Las escribimos en un SPEC.md antes de construir, con la ayuda de Codex en modo Plan, y después le pedimos que lo construya contra esa especificación.
SPEC.md se queda en el repositorio. Sirve de contrato con el agente (si se desvía, le señalas el punto), de documentación para quien venga después y de lista de comprobación: los criterios de aceptación dicen exactamente qué cifras tiene que mostrar./plan y pega el prompt.Quiero un dashboard de ventas de Cafès Roca que la dirección y los encargados puedan abrir desde el navegador sin servidor. Hazme las preguntas que necesites sobre usuarios, indicadores, filtros, gráficos y diseño. Con mis respuestas, escribe dashboard/SPEC.md con objetivo, datos, contenido, diseño y criterios de aceptación con cifras que se puedan comprobar con analisi/resultats.json.
Respuestas de referencia, por si quieres ir rápido: filtros por local y por intervalo de meses; cuatro indicadores (facturación, unidades, precio medio por unidad y peso de las bebidas frías); facturación por mes en columnas apiladas por local; facturación por categoría; tabla de productos ordenable con el top 5 destacado; colores de la marca; un solo HTML sin librerías.
Implementa dashboard/SPEC.md. Los datos agregados los genera un script dashboard/genera-dades.mjs que lee el CSV y escribe dashboard/dades.js; el dashboard no lee el CSV directamente. Al acabar, abre el dashboard en el navegador integrado, prueba los filtros y comprueba uno por uno los criterios de aceptación. Dime cuáles se cumplen y cuáles no.
node dashboard/genera-dades.mjs
analisi/resultats.json.Bloque 6 · Contexto, uso y buenas prácticas
Cómo trabajar muchas horas sin perder el hilo ni el límite.
La ventana de contexto es todo lo que Codex tiene presente en un hilo: tus mensajes, los ficheros que ha leído, la salida de los comandos. Cuando se llena, responde peor y gasta más. Hay comandos para controlarlo.
| Comando | Qué hace | Cuándo |
|---|---|---|
/status | Modelo, uso del contexto y límites restantes | Antes de una tarea larga |
/usage | Uso de la cuenta y, si tienes, reinicios de límite guardados | Cuando vas justo |
/compact | Resume la conversación para liberar contexto | Hilos largos que quieres continuar |
/new | Chat nuevo en el mismo proyecto | Cada tarea nueva |
codex resume · /resume | Retoma un chat guardado (en la CLI) | Al día siguiente |
/fork | Copia el chat en otro hilo o worktree para probar otra vía | Comparar dos soluciones |
/model · /reasoning | Cambia el modelo o el nivel de razonamiento | Bajar a Luna para tareas mecánicas |
/fast | Respuestas más rápidas a cambio de consumir 2,5 veces más | Raramente |
Hábitos que funcionan
- Una tarea por hilo. Al acabar,
/new. - Peticiones verificables: di cómo sabrás que está bien («las pruebas pasan», «el total es 104.827,00 €»).
- Para y corrige en cuanto veas que va por mal camino: es más barato que dejar que acabe.
- Lo que repites, a AGENTS.md; lo que es un procedimiento, a una skill (sesión 2).
- Commit después de cada paso bueno: es tu punto de retorno.
Antes de seguir: ¿cuánto contexto llevamos en este hilo y cuánto límite me queda? Si conviene, resume lo hecho en cinco líneas para que pueda abrir un chat nuevo y continuar.
Repaso de la sesión 1
Lo que tienes que tener hecho antes de la sesión 2.
| Práctica | Resultado | Etiqueta de rescate |
|---|---|---|
| P1 · Puesta a punto | AGENTS.md revisado | p1-posada-a-punt |
| P2 · Landing | web/index.html y artículos | p2-landing |
| P3 · Análisis | analisi/ con script, gráficos e informe | p3-analisi |
| P4 · Dashboard | dashboard/ con SPEC.md | p4-dashboard |
gh auth login en la terminal para conectar GitHub CLI con tu cuenta. Trae el repositorio con todos tus commits: lo subiremos a GitHub al empezar.Repositorios, calidad y automatización
Trabajamos como un equipo de desarrollo: GitHub, pruebas, pull requests y revisión; adaptamos Codex al proyecto, lo conectamos con otras herramientas y automatizamos tareas.
Cómo se organiza la sesión 2
Del repositorio local a GitHub.
Partimos del repositorio con tus commits de la sesión 1 (o de la etiqueta p4-dashboard). Primero lo subimos a GitHub; a partir de ahí, cada cambio va por rama, pull request y revisión.
| Concepto | En palabras llanas |
|---|---|
| Repositorio | La carpeta del proyecto con todo su historial de cambios |
| Commit | Una foto guardada de los cambios, con un mensaje que explica qué y por qué |
| Rama (branch) | Una línea de trabajo paralela para no tocar la versión buena mientras pruebas |
| Pull request (PR) | La propuesta de juntar una rama con la principal, con su diff, comentarios y revisión |
| Worktree | Una segunda carpeta del mismo repositorio, con otra rama, para trabajar dos cosas a la vez |
| Merge | Juntar una rama con otra. Si dos ramas cambian las mismas líneas, hay un conflicto que alguien decide |
Bloque 7 · Git y GitHub con Codex
Práctica 5 · subir el repositorio, entender la app de estoc y corregir un error empezando por una prueba.
Subimos el repositorio a GitHub, exploramos la aplicación de estoc antes de tocarla y resolvemos la incidencia #12 con el método de los equipos profesionales: primero una prueba que falla, después la corrección.
1. Conectar con GitHub y subir el repositorio
gh auth login
gh repo create cafes-roca --public --source . --remote origin --push
Lo creamos público porque en la práctica 9 publicaremos la web con GitHub Pages, que en cuentas gratuitas necesita un repositorio público. Los datos son ficticios.
2. Entender antes de tocar
Explícame cómo funciona la aplicación de estoc/: de dónde salen los datos, cómo se calcula el estoc a partir de los movimientos, cuándo un producto entra en alertas y cómo se calcula la comanda sugerida. Hazme un esquema del flujo desde que llega una petición a /api/comanda hasta que se pinta la tabla. No cambies nada.
cd estoc npm start
Ábrela en http://localhost:3000 desde el navegador integrado. Hay 4 productos en alerta y una comanda de 770,70 €.
3. Incidencia #12: primero la prueba
Lee la incidencia #12 de estoc/ISSUES.md. Crea una rama codex/incidencia-12. Escribe en estoc/test/estoc.test.js una prueba que reproduzca exactamente el caso (leche de avena en Gràcia, 6 l, mínimo 6) y que compruebe que sale en alertas y en la comanda. Ejecuta las pruebas y enséñame que la nueva falla. Todavía no corrijas nada.
Ahora corrige el error con el cambio mínimo. No toques los datos ni las otras pruebas. Ejecuta todas las pruebas, explícame la causa en una frase y haz un commit por cada paso: uno con la prueba y otro con la corrección, mensajes en catalán con «(#12)».
estaSotaMinim comparaba con < en lugar de <=. En la app, ahora hay 8 alertas y la comanda sube a 872,20 €.4. Push y pull request
Desde el panel de cambios de la app: push de la rama y Create pull request. O desde la terminal:
git push -u origin codex/incidencia-12 gh pr create --fill gh pr view --web
Revisa el diff en GitHub y fusiona la PR (Merge pull request). Después, en local: git switch main y git pull.
gh repo create dice que el nombre existe, usa otro (cafes-roca-2). Si el push pide usuario y contraseña, vuelve a ejecutar gh auth login y elige HTTPS. Si Codex corrige el error cambiando el mínimo en los datos, recházalo: es justo lo que prohíbe AGENTS.md.Bloque 8 · Trabajar en paralelo y revisar
Práctica 6 · dos mejoras a la vez en worktrees, conflicto y revisión.
Las incidencias #13 (filtro por local) y #14 (exportar la comanda en CSV) son independientes. Las lanzamos a la vez, cada una en su worktree, revisamos el código y las juntamos.
$CODEX_HOME/worktrees con su propia rama. Los dos chats trabajan sin pisarse, y tu carpeta principal queda intacta. Cuando el trabajo está bien, lo pasas a una rama (Create branch here, con prefijo codex/) o lo traes a Local con Handoff.Resuelve la incidencia #14 de estoc/ISSUES.md: función comandaCsv en src/estoc.js con su prueba, endpoint /api/comanda.csv con BOM para que Excel lea bien los acentos, y botón «Descarrega la comanda (CSV)». Ejecuta las pruebas.
Resuelve la incidencia #13 de estoc/ISSUES.md: selector de local que filtre el resumen, las alertas, la tabla y la comanda, y que recuerde la última opción en localStorage. Solo cambios en public/. Comprueba en el navegador integrado que funciona con cada local.
Revisar antes de juntar
En cada chat, escribe /review. Codex revisa los cambios sin aplicarlos, como lo haría otra persona del equipo, y marca problemas por prioridad. Lee el diff tú también: la revisión del agente no sustituye la tuya.
codex review --base main
Juntar y resolver el conflicto
Crea una rama en cada worktree (Create branch here), súbelas y abre dos PR. Al fusionar la segunda, es probable que GitHub avise de un conflicto en style.css: las dos ramas han añadido reglas al final del mismo fichero.
Estoy fusionando codex/filtre-local en main y hay un conflicto en estoc/public/style.css. Enséñame las dos versiones, explícame qué quería cada rama y resuélvelo conservando las dos. Ejecuta las pruebas y abre la aplicación para comprobar que el botón y el selector se ven bien.
Revisión automática en GitHub
- Conecta Codex con GitHub desde la configuración de Codex en chatgpt.com y activa la revisión de código para tu repositorio.
- En cualquier PR, escribe un comentario
@codex review, o activa la revisión automática para que revise todas las PR. - Codex solo señala problemas importantes (P0 y P1). Las reglas de revisión del equipo van en
AGENTS.md, bajo## Code Review Rules(bloque 9).
Demostración: varios intentos en la nube
Con un entorno cloud configurado, Codex puede probar la misma tarea varias veces en paralelo y dejarte elegir la mejor solución. Desde la terminal: codex cloud exec --env ID --attempts 3 "...", y después codex cloud diff y codex apply.
main, 7 pruebas en verde, el CSV se descarga con la cabecera local;codi;producte;lots;quantitat;unitat;import_eur y el filtro recuerda el local al recargar.main actualizado. Si no puedes conectar GitHub con Codex (cuentas de empresa con restricciones), haz la revisión con /review en local.Bloque 9 · Personalizar el agente
Práctica 7 · AGENTS.md de equipo, skills, config.toml, perfiles y hooks.
Cuatro piezas para que Codex trabaje como quiere tu equipo sin repetírselo cada vez. Cada una resuelve un problema distinto.
| Pieza | Problema que resuelve | Dónde vive |
|---|---|---|
| AGENTS.md | Normas que valen para todas las tareas | Raíz del repo y carpetas; global en ~/.codex/ |
| Skill | Un procedimiento que se repite (con scripts si hace falta) | .agents/skills/<nombre>/SKILL.md; personales en ~/.agents/skills |
| config.toml y perfiles | Modelo, razonamiento, permisos y servidores MCP | ~/.codex/config.toml; perfiles en ~/.codex/<nombre>.config.toml; del proyecto en .codex/config.toml |
| Hook | Algo que tiene que pasar siempre, sin depender de que el agente se acuerde | .codex/hooks.json o ~/.codex/hooks.json |
1. AGENTS.md para todo el equipo y por carpetas
Amplía el AGENTS.md de la raíz con dos secciones: - «Flux de treball»: una rama por tarea con prefijo codex/, commits en catalán en imperativo con el número de incidencia, y antes de una PR pruebas en verde y /review sin problemas graves. - «Code Review Rules»: grave modificar dades/, grave cualquier clave o token escrito en el código, toda función nueva de estoc/src/ con su prueba, importes en euros redondeados al final. Y crea estoc/AGENTS.md con las normas propias de la aplicación: Node 20 con módulos ES, sin dependencias, lógica en funciones puras en src/estoc.js, pruebas con node:test y, para un error, primero la prueba que lo reproduce.
codex --ask-for-approval never "Resume las instrucciones que tienes para la carpeta estoc/"
2. Una skill para el informe semanal de estoc
SKILL.md: arriba, un nombre y una descripción; debajo, los pasos. Codex solo carga la descripción de cada skill; si tu petición encaja, lee el resto. Por eso la descripción tiene que decir cuándo usarla. Puede llevar scripts que hacen la parte mecánica. Se invoca con $nombre, desde /skills o, en la app, con @.$skill-creator Crea una skill de proyecto llamada informe-estoc en .agents/skills/. Tiene que generar el informe semanal de estoc de Cafès Roca en informes/estoc_AAAA-MM-DD.md: primero ejecuta las pruebas (si fallan, se detiene), después un script scripts/informe.mjs que calcula alertas y comanda con las funciones de estoc/src/estoc.js, y al final añade tres líneas de observaciones. No modifica estoc/data/ ni envía nada. La descripción tiene que activarla cuando pidan el informe de estoc o qué hay que pedir al proveedor.
$informe-estoc
informes/estoc_2026-…md con 8 alertas y comanda de 872,20 €. Añade informes/ al .gitignore.3. config.toml y perfiles
model = "gpt-6.1-sol" model_reasoning_effort = "medium" approval_policy = "on-request" sandbox_mode = "workspace-write" web_search = "cached" [sandbox_workspace_write] network_access = false
Un perfil es otro fichero de configuración que se activa cuando lo pides. Desde la versión 0.134 los perfiles van en ficheros aparte. En el repositorio tienes config/revisio.config.toml: cópialo a ~/.codex/.
model = "gpt-6.1-sol" model_reasoning_effort = "high" sandbox_mode = "read-only" approval_policy = "on-request"
codex --profile revisio "Revisa estoc/src/estoc.js y dime qué casos límite no cubren las pruebas"
4. Un hook que ejecuta las pruebas después de cada cambio
PreToolUse), después (PostToolUse), al enviar un prompt, al terminar el turno (Stop)… Si el comando sale con código 2, lo que escribe en la salida de error vuelve a Codex como respuesta, y tiene que corregirlo. Por seguridad, un hook nuevo o modificado no se ejecuta hasta que lo revisas y confías en él con /hooks.{
"hooks": {
"PostToolUse": [
{
"matcher": "apply_patch",
"hooks": [
{
"type": "command",
"command": "node .codex/hooks/proves-estoc.mjs",
"timeout": 120,
"statusMessage": "Executant les proves de l'estoc"
}
]
}
]
}
}Crea un hook de proyecto en .codex/hooks.json que, después de cada edición de ficheros (PostToolUse con matcher apply_patch), ejecute node .codex/hooks/proves-estoc.mjs. El script lee de la entrada estándar el evento; si el cambio afecta a estoc/, ejecuta node --test dentro de estoc/ y, si alguna prueba falla, sale con código 2 y escribe el resultado en stderr. Que funcione en Windows y en Mac: nada de bash.
codex en el proyecto y escribe /hooks: revisa el hook y márcalo como de confianza.~/.codex/rules/ que permiten, piden confirmación o prohíben comandos concretos, como git push --force. Subagentes: agentes con instrucciones propias en .codex/agents/ que Codex lanza en paralelo; se gestionan con /agents.Bloque 10 · Conectar herramientas: MCP y plugins
Práctica 8 · un navegador real para probar la web.
MCP (Model Context Protocol) es el estándar con el que un agente usa herramientas externas: un navegador, la documentación de una librería, Figma, Sentry, GitHub. Conectamos Playwright para que Codex pruebe la landing en un navegador real.
npx) o remoto (una URL con inicio de sesión).codex mcp add playwright -- npx @playwright/mcp@latest
codex mcp list
En la app: Configuración › Servidores MCP. En una sesión, /mcp lista los servidores y sus herramientas. La configuración queda en config.toml:
[mcp_servers.playwright] command = "npx" args = ["@playwright/mcp@latest"] startup_timeout_sec = 30
Con el servidor MCP de Playwright, abre web/index.html y prueba: (1) a 390 × 844 no hay desplazamiento horizontal; (2) enviar el formulario vacío muestra un aviso; (3) con 3 personas (el mínimo es 5) el mensaje dice qué campo está mal; (4) los enlaces a los dos artículos funcionan; (5) no hay errores en la consola. Guarda capturas en web/proves/ y un informe PROVES_NAVEGADOR.md. Si algo falla, corrígelo y vuelve a probar.
web/proves/.Otros servidores útiles
| Servidor | Para qué | Cómo |
|---|---|---|
| Context7 | Documentación actualizada de librerías y frameworks | codex mcp add context7 -- npx -y @upstash/context7-mcp |
| OpenAI Docs | La documentación oficial de OpenAI, para preguntar por Codex con fuentes | Desde Servidores MCP de la app |
| Figma | Leer diseños y convertirlos en código | Servidor remoto: https://mcp.figma.com/mcp |
| Chrome DevTools, GitHub, Sentry | Depurar en el navegador, gestionar incidencias, leer errores de producción | Desde Servidores MCP de la app |
Plugins
Un plugin empaqueta skills, servidores MCP, hooks y conexiones con aplicaciones para instalarlos de una vez. En la terminal, /plugins abre el catálogo (el oficial es openai-curated); en la app, desde el menú de plugins. Los equipos pueden publicar su propio catálogo en un repositorio con codex plugin marketplace add.
enabled_tools si no las necesitas todas, y recuerda que lo que lee de fuera (una web, una incidencia) puede contener instrucciones maliciosas.Bloque 11 · Automatizar y publicar
Práctica 9 · codex exec, tareas programadas, GitHub Action y GitHub Pages.
Codex también trabaja sin que estés delante: dentro de un script, a una hora fija o cada vez que alguien abre una pull request. Y la landing se publica sola cada vez que cambia.
1. codex exec: Codex dentro de un script
--output-schema le das un esquema JSON y la respuesta lo cumple; con --json recibes cada evento en una línea, para procesarlo con otro programa.bash automatitzacio/comanda-setmanal.sh
powershell -ExecutionPolicy Bypass -File automatitzacio\comanda-setmanal.ps1
codex exec \ --sandbox read-only \ --output-schema automatitzacio/comanda.schema.json \ -o informes/comanda_AAAA-MM-DD.json \ "Calcula la comanda setmanal de Cafès Roca amb les funcions de estoc/src/estoc.js …"
Crea en automatitzacio/: un esquema JSON comanda.schema.json (fecha, alertas con local, producto, cantidad y mínimo; líneas de comanda con local, código, lotes, cantidad e importe; total en euros y observaciones; todos los campos obligatorios y sin propiedades adicionales), y dos scripts, comanda-setmanal.sh y comanda-setmanal.ps1, que llamen a codex exec en solo lectura con ese esquema y guarden el resultado en informes/comanda_FECHA.json. Pruébalo.
2. Tareas programadas en la app
cafes-roca, cada lunes a las 8:00, en el proyecto local.En los planes de pago, una tarea también puede dispararse por un evento de Gmail, Slack o GitHub, por ejemplo cuando llega un correo del proveedor.
3. La GitHub Action de Codex (demostración)
openai/codex-action@v1 ejecuta Codex en GitHub Actions. En el repositorio, .github/workflows/codex-revisio.yml revisa cada PR con las instrucciones de .github/codex/revisio.md y deja la revisión como comentario. Funciona con una clave de API de OpenAI guardada como secreto OPENAI_API_KEY, que se factura aparte de la suscripción: por eso la hace el formador.
4. Publicar la landing en GitHub Pages
Crea .github/workflows/pages.yml para publicar la carpeta web/ en GitHub Pages en cada push a main que cambie web/: checkout, Node 20, node web/build.mjs para generar los artículos, y despliegue con las acciones oficiales configure-pages, upload-pages-artifact y deploy-pages. Explícame qué hace cada paso y qué permisos necesita.
https://TU-USUARIO.github.io/cafes-roca/. Ábrela en el móvil.pages: write e id-token: write y que Pages esté en «GitHub Actions». Si codex exec se queja de que no es un repositorio, ejecútalo desde la raíz del proyecto.Bloque 12 · Criterio
Seguridad, datos, costes y cuándo hace falta una revisión experta.
Seguridad
| Riesgo | Qué hacer |
|---|---|
| El agente ejecuta algo destructivo | Sandbox workspace-write y «Pedir aprobación». Acceso completo solo en máquinas aisladas. Commit antes de tareas grandes |
| Salida a internet | Desactivada por defecto en el sandbox. Actívala solo cuando la tarea lo necesite, y en la nube limita los dominios |
| Claves y contraseñas | Nunca en el código ni en el chat. En un fichero .env excluido con .gitignore, o como secretos de GitHub y de los entornos cloud |
| Inyección de prompts | Una web, una incidencia o un PDF pueden llevar instrucciones escondidas. Revisa lo que hace el agente después de leer contenido externo |
| Servidores MCP y plugins | Código de terceros con tus permisos. Solo de origen conocido |
Datos y privacidad
- En Plus y Pro, decides en Configuración › Controles de datos si tus conversaciones sirven para mejorar los modelos.
- Business y Enterprise no entrenan con tus datos por defecto, y el administrador controla qué funciones están disponibles.
- No subas al curso repositorios ni datos reales de la empresa.
Costes
- Plus basta para trabajar a diario con GPT-6.1 Sol y razonamiento Medium.
- Astra, Extra High, Ultra,
/fasty las tareas en la nube gastan el límite mucho más rápido. - La GitHub Action y
codex execcon clave de API se pagan por uso, aparte de la suscripción.
Cuándo basta el vibe coding y cuándo no
| Basta con el agente y tu revisión | Hace falta revisión experta, pruebas y mantenimiento |
|---|---|
| Prototipos, landings, herramientas internas sin datos sensibles | Pagos, datos personales, autenticación, salud |
| Scripts de análisis que se comprueban contra cifras conocidas | Sistemas con muchos usuarios o que no pueden caer |
| Automatizaciones que solo leen | Automatizaciones que escriben, envían o borran |
| Código que entiendes cuando lo lees | Código que nadie del equipo sabría mantener |
/review sin problemas graves · alguien del equipo sabría explicarlo.Reto final: tu proyecto
Quiero empezar un proyecto nuevo con Codex: [describe tu idea en dos líneas]. Antes de escribir código: hazme las preguntas necesarias, propón el stack más sencillo que funcione, escribe un SPEC.md con criterios de aceptación comprobables y un AGENTS.md con las normas del proyecto, y dime cómo lo probaremos. Trabajaremos por pasos pequeños, con un commit por paso.
Repaso de la sesión 2
Estado final del repositorio.
| Práctica | Resultado | Etiqueta de rescate |
|---|---|---|
| P5 · Git y GitHub | Repositorio en GitHub, #12 corregida con prueba | p5-incidencia-12 |
| P6 · Paralelo y revisión | #13 y #14 fusionadas, conflicto resuelto | p6-paral-lel |
| P7 · Personalizar | AGENTS.md por niveles, skill, perfil y hook | p7-agent |
| P8 · MCP | Pruebas de la landing con Playwright | p8-mcp |
| P9 · Automatizar | codex exec, tarea programada, Action y Pages | p9-automatitzar |
Consulta y referencia
Para tener a mano durante el curso y después: cómo funciona Codex, todos los prompts, el glosario y las fuentes oficiales.
Cómo funciona Codex: referencia rápida
Lo esencial en tablas, para consultar durante y después del curso.
El ciclo de una tarea
- Codex reúne el contexto: tu petición,
AGENTS.md(global y del proyecto), las skills disponibles y la configuración. - El modelo decide la siguiente acción: leer, buscar, ejecutar un comando, aplicar un parche, usar una herramienta MCP o preguntarte.
- Si la acción sale del sandbox (escribir fuera del proyecto, internet), pide aprobación según el modo de permisos.
- Lee el resultado (salida del comando, error, prueba) y vuelve al paso 2.
- Cuando cree que ha terminado, te lo resume y deja los cambios como diff para que los revises.
Ficheros que controlan a Codex
| Fichero | Para qué | Ámbito |
|---|---|---|
AGENTS.md | Instrucciones en lenguaje natural | Global (~/.codex/), repositorio y carpetas |
config.toml | Modelo, razonamiento, permisos, MCP, hooks, funciones | ~/.codex/ y .codex/ del proyecto de confianza |
<nombre>.config.toml | Perfil que se activa con --profile | ~/.codex/ |
SKILL.md | Procedimientos reutilizables | .agents/skills/ y ~/.agents/skills/ |
hooks.json | Comandos en eventos del ciclo | .codex/ y ~/.codex/ |
*.rules | Permitir, preguntar o prohibir comandos (experimental) | ~/.codex/rules/ y .codex/rules/ |
Sandbox y aprobaciones
| Sandbox | Lee | Escribe | Internet |
|---|---|---|---|
read-only | Sí | No | No |
workspace-write | Sí | En el proyecto (y /tmp) | No, salvo que lo actives |
danger-full-access | Sí | Todo | Sí |
La política de aprobación decide si te pregunta al salir del sandbox: on-request (pregunta) o never (no pregunta: el sandbox es el único límite). En macOS el sandbox usa Seatbelt; en Linux y WSL2, bubblewrap; en Windows, un sandbox nativo.
Comandos de barra más usados
| Comando | Qué hace |
|---|---|
/init | Genera un AGENTS.md para el proyecto |
/plan | Activa o desactiva el modo Plan: pregunta y propone sin editar |
/review | Revisa los cambios sin commit o respecto a una rama |
/model · /reasoning | Modelo y nivel de razonamiento |
/permissions | Modo de permisos (CLI) |
/status · /usage | Contexto, límites y uso de la cuenta |
/compact · /new · /fork | Gestionar el hilo |
/worktree · /local · /cloud | Dónde se ejecuta el chat (app) |
/mcp · /plugins · /skills · /hooks | Extensiones |
/goal | Objetivo persistente para una tarea larga |
/side | Conversación lateral temporal sin ensuciar el hilo |
/diff | Diff de Git, también de ficheros nuevos (CLI) |
Codex CLI: chuleta
codex # sesión interactiva en la carpeta actual codex "explica este repo" # empieza con un prompt codex -m gpt-6-luna # elegir modelo codex --profile revisio # usar un perfil codex -s read-only -a on-request # sandbox y aprobaciones codex resume --last # retomar el último chat codex exec "..." # sin interacción (scripts) codex exec --json "..." # eventos en JSONL codex review --base main # revisar cambios respecto a main codex mcp add NOMBRE -- COMANDO codex mcp list codex cloud exec --env ID --attempts 3 "..." codex apply ID_TAREA # traer a local el diff de una tarea cloud codex login status codex update
Todos los prompts del curso
Filtra por tipo y cópialos.
Explícame este repositorio: qué hay en cada carpeta, cómo se arranca la aplicación de estoc, cómo se ejecutan las pruebas y qué incidencias hay abiertas. Ejecuta las pruebas para ver si pasan. No modifiques ningún fichero.
Revisa el AGENTS.md y añade estas normas: - Responde en castellano y escribe los textos para el usuario en catalán, que es el idioma de Cafès Roca. - No modifiques nunca los ficheros de dades/: son el origen. Si hay que transformarlos, guarda el resultado en otra carpeta. - Antes y después de cambiar código de estoc/, ejecuta las pruebas. - No instales paquetes npm sin preguntarme. - Formato de números en catalán: coma decimal y punto de millares. Incluye una sección «Dades» que describa vendes_cafes_roca_2026.csv: separador punto y coma, coma decimal, UTF-8 y saltos de línea CRLF.
Lee dades/brief_web_cafes_roca.txt. Quiero la landing que describe dentro de web/: index.html y una hoja de estilos aparte, sin frameworks ni librerías externas, que funcione bien en el móvil. Antes de escribir nada, hazme las preguntas que necesites y propón un plan con las secciones, los ficheros y cómo comprobaremos que está bien.
Adelante con el plan. Textos en catalán, tomados del brief sin inventar datos. El formulario de càtering valida los campos obligatorios y, al enviarlo, abre el correo del usuario dirigido a hola@cafesroca.cat con los datos rellenados. Cuando acabes, ábrela en el navegador integrado y revisa que no haya desplazamiento horizontal a 390 px de ancho.
En la captura que te adjunto, el botón de càtering de la cabecera queda demasiado pegado al texto y las tarjetas de los locales tienen alturas distintas en el móvil. Corrígelo sin cambiar los colores.
Crea web/build.mjs: un script de Node sin dependencias que convierta cada .md de web/articles/ en un .html con la cabecera, el pie y los estilos de la landing (títulos, párrafos, listas, negritas y enlaces). Añade a la landing una sección «Del nostre torrador» con enlaces a los dos artículos. Ejecuta el script y comprueba que las páginas se abren.
Crea analisi/analisi.mjs, un script de Node sin dependencias que: 1. Lea dades/vendes_cafes_roca_2026.csv sin modificarlo (punto y coma, coma decimal, CRLF) y avise si alguna fila tiene un formato incorrecto. 2. Calcule la facturación total, por local, por categoría con su peso en %, por mes y local, las bebidas frías por mes y los cinco productos que más facturan. 3. Compruebe que las sumas por local, categoría, mes y producto coinciden con el total, y se detenga con un error si no cuadran. 4. Guarde los resultados en analisi/resultats.json. Ejecútalo y enséñame las cifras.
Añade al script tres gráficos en SVG, sin librerías, en analisi/grafics/: ventas mensuales por local (líneas), ventas por categoría (barras horizontales con importe y %) y bebidas frías por mes (columnas, con mayo y junio destacados). Colores de la marca: Gràcia #3B2A1F, Poblenou #C8553D, Sants #B08B5B. Para cada gráfico, explícame por qué ese tipo responde mejor a la pregunta.
Genera analisi/informe.md en catalán a partir de resultats.json: cifras principales, una tabla por local, una por categoría, la evolución de las bebidas frías y el top 5 de productos, con los gráficos insertados. Cada cifra tiene que salir del JSON; no escribas ningún número a mano.
Quiero un dashboard de ventas de Cafès Roca que la dirección y los encargados puedan abrir desde el navegador sin servidor. Hazme las preguntas que necesites sobre usuarios, indicadores, filtros, gráficos y diseño. Con mis respuestas, escribe dashboard/SPEC.md con objetivo, datos, contenido, diseño y criterios de aceptación con cifras que se puedan comprobar con analisi/resultats.json.
Implementa dashboard/SPEC.md. Los datos agregados los genera un script dashboard/genera-dades.mjs que lee el CSV y escribe dashboard/dades.js; el dashboard no lee el CSV directamente. Al acabar, abre el dashboard en el navegador integrado, prueba los filtros y comprueba uno por uno los criterios de aceptación. Dime cuáles se cumplen y cuáles no.
Antes de seguir: ¿cuánto contexto llevamos en este hilo y cuánto límite me queda? Si conviene, resume lo hecho en cinco líneas para que pueda abrir un chat nuevo y continuar.
Explícame cómo funciona la aplicación de estoc/: de dónde salen los datos, cómo se calcula el estoc a partir de los movimientos, cuándo un producto entra en alertas y cómo se calcula la comanda sugerida. Hazme un esquema del flujo desde que llega una petición a /api/comanda hasta que se pinta la tabla. No cambies nada.
Lee la incidencia #12 de estoc/ISSUES.md. Crea una rama codex/incidencia-12. Escribe en estoc/test/estoc.test.js una prueba que reproduzca exactamente el caso (leche de avena en Gràcia, 6 l, mínimo 6) y que compruebe que sale en alertas y en la comanda. Ejecuta las pruebas y enséñame que la nueva falla. Todavía no corrijas nada.
Ahora corrige el error con el cambio mínimo. No toques los datos ni las otras pruebas. Ejecuta todas las pruebas, explícame la causa en una frase y haz un commit por cada paso: uno con la prueba y otro con la corrección, mensajes en catalán con «(#12)».
Resuelve la incidencia #14 de estoc/ISSUES.md: función comandaCsv en src/estoc.js con su prueba, endpoint /api/comanda.csv con BOM para que Excel lea bien los acentos, y botón «Descarrega la comanda (CSV)». Ejecuta las pruebas.
Resuelve la incidencia #13 de estoc/ISSUES.md: selector de local que filtre el resumen, las alertas, la tabla y la comanda, y que recuerde la última opción en localStorage. Solo cambios en public/. Comprueba en el navegador integrado que funciona con cada local.
Estoy fusionando codex/filtre-local en main y hay un conflicto en estoc/public/style.css. Enséñame las dos versiones, explícame qué quería cada rama y resuélvelo conservando las dos. Ejecuta las pruebas y abre la aplicación para comprobar que el botón y el selector se ven bien.
Amplía el AGENTS.md de la raíz con dos secciones: - «Flux de treball»: una rama por tarea con prefijo codex/, commits en catalán en imperativo con el número de incidencia, y antes de una PR pruebas en verde y /review sin problemas graves. - «Code Review Rules»: grave modificar dades/, grave cualquier clave o token escrito en el código, toda función nueva de estoc/src/ con su prueba, importes en euros redondeados al final. Y crea estoc/AGENTS.md con las normas propias de la aplicación: Node 20 con módulos ES, sin dependencias, lógica en funciones puras en src/estoc.js, pruebas con node:test y, para un error, primero la prueba que lo reproduce.
$skill-creator Crea una skill de proyecto llamada informe-estoc en .agents/skills/. Tiene que generar el informe semanal de estoc de Cafès Roca en informes/estoc_AAAA-MM-DD.md: primero ejecuta las pruebas (si fallan, se detiene), después un script scripts/informe.mjs que calcula alertas y comanda con las funciones de estoc/src/estoc.js, y al final añade tres líneas de observaciones. No modifica estoc/data/ ni envía nada. La descripción tiene que activarla cuando pidan el informe de estoc o qué hay que pedir al proveedor.
$informe-estoc
Crea un hook de proyecto en .codex/hooks.json que, después de cada edición de ficheros (PostToolUse con matcher apply_patch), ejecute node .codex/hooks/proves-estoc.mjs. El script lee de la entrada estándar el evento; si el cambio afecta a estoc/, ejecuta node --test dentro de estoc/ y, si alguna prueba falla, sale con código 2 y escribe el resultado en stderr. Que funcione en Windows y en Mac: nada de bash.
Con el servidor MCP de Playwright, abre web/index.html y prueba: (1) a 390 × 844 no hay desplazamiento horizontal; (2) enviar el formulario vacío muestra un aviso; (3) con 3 personas (el mínimo es 5) el mensaje dice qué campo está mal; (4) los enlaces a los dos artículos funcionan; (5) no hay errores en la consola. Guarda capturas en web/proves/ y un informe PROVES_NAVEGADOR.md. Si algo falla, corrígelo y vuelve a probar.
Crea en automatitzacio/: un esquema JSON comanda.schema.json (fecha, alertas con local, producto, cantidad y mínimo; líneas de comanda con local, código, lotes, cantidad e importe; total en euros y observaciones; todos los campos obligatorios y sin propiedades adicionales), y dos scripts, comanda-setmanal.sh y comanda-setmanal.ps1, que llamen a codex exec en solo lectura con ese esquema y guarden el resultado en informes/comanda_FECHA.json. Pruébalo.
Crea .github/workflows/pages.yml para publicar la carpeta web/ en GitHub Pages en cada push a main que cambie web/: checkout, Node 20, node web/build.mjs para generar los artículos, y despliegue con las acciones oficiales configure-pages, upload-pages-artifact y deploy-pages. Explícame qué hace cada paso y qué permisos necesita.
Quiero empezar un proyecto nuevo con Codex: [describe tu idea en dos líneas]. Antes de escribir código: hazme las preguntas necesarias, propón el stack más sencillo que funcione, escribe un SPEC.md con criterios de aceptación comprobables y un AGENTS.md con las normas del proyecto, y dime cómo lo probaremos. Trabajaremos por pasos pequeños, con un commit por paso.
Explícame este repositorio como si fuera mi primer día: para qué sirve, cómo se arranca, dónde está la lógica principal y qué partes parecen frágiles. Hazme un mapa de carpetas. No cambies nada.
En la carpeta exports/ hay tres CSV de ventas con columnas distintas. Escribe un script que los unifique en un solo CSV con fecha, cliente, producto e importe, que avise de las filas que no puede interpretar y que no toque los originales.
Propón un plan para renombrar los PDF de facturas/ con el formato AAAA-MM-DD_proveedor_importe.pdf leyendo los datos de cada factura. Enséñame la lista de cambios antes de aplicarlos y guarda un registro para poder deshacerlo.
Necesito reducir todos los vídeos MP4 de esta carpeta a 720p y menos de 20 MB para enviarlos por correo. Dame el comando, explícame cada parte y pruébalo con un solo fichero primero.
Escribe pruebas para src/facturacion.js que cubran el comportamiento actual, incluidos los casos límite (importes 0, negativos, redondeos). No cambies el código: si encuentras un error, anótalo en un comentario de la prueba.
Quiero pasar este proyecto de Node 18 a Node 22. Revisa qué dependencias y APIs cambian, propón el plan por pasos pequeños con las pruebas que validan cada uno y empieza solo cuando lo apruebe.
Te pego la traza del error y el log. Encuentra la causa, escribe una prueba que lo reproduzca y propón la corrección mínima. Explícame por qué no lo detectaban las pruebas actuales.
Revisa mis cambios respecto a main con atención especial a seguridad, gestión de errores y rendimiento. Prioriza los problemas y dime cuáles bloquearían la PR.
Crea mi web personal de una sola página con mi presentación, tres proyectos con imagen y enlace, y un formulario de contacto que abra el correo. HTML y CSS sin librerías, adaptable al móvil. Después prepara el workflow para publicarla en GitHub Pages.
Escribe un script que lea los CSV de extractos de la carpeta banco/, clasifique cada movimiento en categorías que yo pueda editar en un fichero JSON y genere un informe mensual con un gráfico por categoría. Los datos no salen de mi ordenador.
Quiero una aplicación web para planificar los menús de la semana y generar la lista de la compra. Escribe primero un SPEC.md con lo mínimo que tiene que hacer y pregúntame lo que necesites. Guarda los datos en el navegador.
Quiero aprender Python haciendo un proyecto: un script que descargue el tiempo de mi ciudad cada mañana y me lo resuma. Ve paso a paso, explícame cada concepto nuevo cuando aparezca y déjame escribir yo algunas partes.
Hoy gestionamos las reservas de salas con una hoja de cálculo. Quiero una aplicación interna sencilla con usuarios, reservas y avisos de solapamiento. Hazme las preguntas necesarias y escribe el SPEC.md antes de proponer tecnología.
Crea una skill informe-semanal que lea los CSV de ventas/, calcule los indicadores que te detallo y genere un informe en Markdown. Después prepara una tarea programada para cada lunes a las 8:00.
Genera la documentación para desarrolladores de este repositorio: README con instalación y arranque, arquitectura con un diagrama Mermaid, y un AGENTS.md con las normas que deduces del código. Marca lo que no puedas confirmar.
Escribe en AGENTS.md una sección «Code Review Rules» con nuestras normas: [tus normas]. Prepara un workflow con la GitHub Action de Codex que revise cada PR con esas reglas y deje un comentario.
Glosario
Los términos que salen en las dos sesiones.
codex.on-request o never./plan.~/.codex/<nombre>.config.toml que se activa con --profile nombre.$nombre.--output-schema, la respuesta de Codex la cumple.openai/codex-action: ejecuta Codex en GitHub Actions con una clave de API.node:test.Documentación oficial
Las fuentes de este temario, revisadas en octubre de 2026.
Empezar
| Inicio rápido | learn.chatgpt.com/codex/quickstart |
| App de escritorio | learn.chatgpt.com/codex/app |
| Codex CLI | learn.chatgpt.com/codex/cli |
| Extensión IDE | learn.chatgpt.com/codex/ide |
| Codex cloud | learn.chatgpt.com/codex/cloud |
| Windows | learn.chatgpt.com/codex/windows/windows-app |
| Novedades | learn.chatgpt.com/codex/whats-new |
| Changelog | learn.chatgpt.com/codex/changelog |
Modelos, planes y permisos
| Modelos | learn.chatgpt.com/codex/models |
| Elegir modelo | learn.chatgpt.com/codex/model-selection |
| Precios y límites | learn.chatgpt.com/codex/pricing |
| Modos de permisos | learn.chatgpt.com/codex/permission-modes |
| Sandbox | learn.chatgpt.com/codex/sandboxing |
| Help Center · Codex con tu plan | help.openai.com/en/articles/11369540 |
| Help Center · ChatGPT Work y Codex | help.openai.com/en/articles/20001275 |
| Precios de ChatGPT | chatgpt.com/pricing |
Configurar y ampliar
Git, nube y automatización
| Modos Local, Worktree y Cloud | learn.chatgpt.com/codex/environments/modes |
| Worktrees | learn.chatgpt.com/codex/environments/git-worktrees |
| Entornos cloud | learn.chatgpt.com/codex/environments/cloud-environments |
| Revisión de código | learn.chatgpt.com/codex/code-review |
| Integración con GitHub | learn.chatgpt.com/codex/third-party/github |
| codex exec | learn.chatgpt.com/codex/non-interactive-mode |
| GitHub Action | learn.chatgpt.com/codex/github-action |
| Tareas programadas | learn.chatgpt.com/codex/automations |
Referencia
| Comandos de barra | learn.chatgpt.com/codex/reference/slash-commands |
| Comandos de la CLI | learn.chatgpt.com/codex/reference/commands |
| Glosario oficial | learn.chatgpt.com/codex/glossary |
| Repositorio de Codex en GitHub | github.com/openai/codex |
| Panel de uso | chatgpt.com/codex/settings/usage |
Para qué usar Codex más allá del curso
Ejemplos reales por ámbito, con un prompt para empezar. Cámbialos por tus datos y tu proyecto.
Día a día
Entender un proyecto heredado
Te pasan un repositorio y nadie lo documentó.
Explícame este repositorio como si fuera mi primer día: para qué sirve, cómo se arranca, dónde está la lógica principal y qué partes parecen frágiles. Hazme un mapa de carpetas. No cambies nada.
Limpiar y unir ficheros
Exportaciones de distintos sistemas que hay que juntar cada mes.
En la carpeta exports/ hay tres CSV de ventas con columnas distintas. Escribe un script que los unifique en un solo CSV con fecha, cliente, producto e importe, que avise de las filas que no puede interpretar y que no toque los originales.
Renombrar y ordenar en lote
Cientos de fotos o facturas con nombres sin sentido.
Propón un plan para renombrar los PDF de facturas/ con el formato AAAA-MM-DD_proveedor_importe.pdf leyendo los datos de cada factura. Enséñame la lista de cambios antes de aplicarlos y guarda un registro para poder deshacerlo.
Comandos que no recuerdas
Git, PowerShell, ffmpeg…
Necesito reducir todos los vídeos MP4 de esta carpeta a 720p y menos de 20 MB para enviarlos por correo. Dame el comando, explícame cada parte y pruébalo con un solo fichero primero.
Técnico
Pruebas para código sin pruebas
Antes de tocar algo importante.
Escribe pruebas para src/facturacion.js que cubran el comportamiento actual, incluidos los casos límite (importes 0, negativos, redondeos). No cambies el código: si encuentras un error, anótalo en un comentario de la prueba.
Migración de versión
Actualizar una dependencia o un framework. En modo Plan.
Quiero pasar este proyecto de Node 18 a Node 22. Revisa qué dependencias y APIs cambian, propón el plan por pasos pequeños con las pruebas que validan cada uno y empieza solo cuando lo apruebe.
Depurar con el error delante
Un fallo en producción con su traza.
Te pego la traza del error y el log. Encuentra la causa, escribe una prueba que lo reproduzca y propón la corrección mínima. Explícame por qué no lo detectaban las pruebas actuales.
Revisión antes de la PR
Que otra mirada pase por el código.
Revisa mis cambios respecto a main con atención especial a seguridad, gestión de errores y rendimiento. Prioriza los problemas y dime cuáles bloquearían la PR.
Proyectos personales
Tu web o portafolio
Publicado gratis en GitHub Pages.
Crea mi web personal de una sola página con mi presentación, tres proyectos con imagen y enlace, y un formulario de contacto que abra el correo. HTML y CSS sin librerías, adaptable al móvil. Después prepara el workflow para publicarla en GitHub Pages.
Control de gastos
Con tus extractos del banco en CSV.
Escribe un script que lea los CSV de extractos de la carpeta banco/, clasifique cada movimiento en categorías que yo pueda editar en un fichero JSON y genere un informe mensual con un gráfico por categoría. Los datos no salen de mi ordenador.
Una app pequeña para casa
Lista de la compra, turnos, recetas.
Quiero una aplicación web para planificar los menús de la semana y generar la lista de la compra. Escribe primero un SPEC.md con lo mínimo que tiene que hacer y pregúntame lo que necesites. Guarda los datos en el navegador.
Aprender un lenguaje nuevo
Con un proyecto real y explicaciones.
Quiero aprender Python haciendo un proyecto: un script que descargue el tiempo de mi ciudad cada mañana y me lo resuma. Ve paso a paso, explícame cada concepto nuevo cuando aparezca y déjame escribir yo algunas partes.
Empresa
Herramienta interna
Sustituir una hoja de cálculo que ya no da más de sí. En modo Plan.
Hoy gestionamos las reservas de salas con una hoja de cálculo. Quiero una aplicación interna sencilla con usuarios, reservas y avisos de solapamiento. Hazme las preguntas necesarias y escribe el SPEC.md antes de proponer tecnología.
Informe semanal automático
Datos que alguien copia a mano cada lunes.
Crea una skill informe-semanal que lea los CSV de ventas/, calcule los indicadores que te detallo y genere un informe en Markdown. Después prepara una tarea programada para cada lunes a las 8:00.
Documentación del código
Para que alguien nuevo pueda empezar.
Genera la documentación para desarrolladores de este repositorio: README con instalación y arranque, arquitectura con un diagrama Mermaid, y un AGENTS.md con las normas que deduces del código. Marca lo que no puedas confirmar.
Revisión de cada pull request
Calidad homogénea en el equipo.
Escribe en AGENTS.md una sección «Code Review Rules» con nuestras normas: [tus normas]. Prepara un workflow con la GitHub Action de Codex que revise cada PR con esas reglas y deje un comentario.
Preguntas frecuentes
¿Necesito saber programar?
Basta con moverte con soltura por una terminal y leer código sencillo para revisar lo que hace el agente. Si nunca has abierto una terminal, empieza por «Trabaja con ChatGPT y Codex».
¿Qué cuenta necesito?
ChatGPT Plus o superior para hacer todas las prácticas con tu cuenta. Con el plan gratuito, Codex funciona en la app de escritorio con GPT-6 Luna, pero el límite se acaba pronto; puedes seguir cada práctica desde su etiqueta en el repositorio y rehacerla después.
¿Puedo usar los ordenadores del Cibernàrium?
Sí, siempre que estén habilitados para instalar la app de ChatGPT, Codex CLI, Git, Node.js y GitHub CLI. Recomendamos traer ordenador propio: la configuración queda hecha para seguir trabajando después.
¿App de escritorio o terminal?
Las dos. La app es más cómoda para revisar diffs, usar el navegador integrado, worktrees y tareas programadas. La terminal es imprescindible para codex exec, perfiles, hooks y trabajo en servidores. Comparten configuración.
¿Qué modelo uso?
GPT-6.1 Sol con razonamiento Medium para casi todo. GPT-6 Luna para tareas mecánicas o cuando vas justo de límite. Astra o niveles altos de razonamiento solo para problemas difíciles.
¿Codex puede romper algo en mi ordenador?
Con el sandbox por defecto solo escribe dentro del proyecto y no sale a internet sin preguntarte. Trabaja con Git y haz commits a menudo: cualquier cambio se puede deshacer. No uses Acceso completo fuera de entornos aislados.
¿OpenAI entrena con mi código?
En cuentas personales depende de tu ajuste en Controles de datos. En Business, Enterprise y Edu, no por defecto. En el curso trabajamos con datos ficticios.
¿Qué diferencia hay entre AGENTS.md y una skill?
AGENTS.md son normas que se aplican siempre. Una skill es un procedimiento que se carga solo cuando hace falta, y puede incluir scripts.
¿Funciona en Windows?
Sí. La app, la CLI y la extensión de VS Code funcionan de forma nativa en Windows con PowerShell y un sandbox propio. WSL2 es opcional.
¿Qué pasa si se me acaba el límite en clase?
Cambia a GPT-6 Luna, que gasta mucho menos, o continúa desde la etiqueta de la práctica (git switch -c mi-pX pX-…). El formador hace cada práctica en directo.
¿Tengo que pagar la GitHub Action?
La Action usa una clave de API que se factura por uso, aparte de la suscripción. En el curso la muestra el formador. La revisión con @codex review en GitHub sí entra en el plan Plus.
¿Cuál es la diferencia con Claude Code?
Es el agente equivalente de Anthropic. El Cibernàrium ofrece «Claude Code para perfiles técnicos» con la misma estructura y el mismo caso, para comparar las dos herramientas con criterio.
Material del curso
Todos los datos del caso Cafès Roca son ficticios.

Daniel M. Casas
Formador oficial de Barcelona Activa en el Cibernàrium · Full Stack Developer · Máster en Inteligencia Artificial y Big Data.
Formación en IA para empresasDónde encaja este curso
El orden que propongo para pasar del uso diario de la IA a construir software con agentes. Todos son cursos del Cibernàrium que imparto yo.
Trabaja con ChatGPT y Codex
3 h · IA agéntica para el día a día, sin programar
Ver el cursoPaso 2ChatGPT de cero a expertos/as
8 h · prompts, datos, asistentes e imagen
Ver el cursoPaso 3Estás aquíCodex avanzado para perfiles técnicos
6 h · este curso
Volver arribaPaso 4Claude Code para perfiles técnicos
6 h · el agente de Anthropic con el mismo caso
Ver el cursoCodex en tu empresa
Si quieres este curso adaptado a tu equipo, con vuestro stack y vuestros repositorios, o una sesión para montar AGENTS.md, skills y revisión automática en vuestros proyectos, hablemos.