Formación › Programar con Claude Code en 12 horas › Hora 12
Programar con Claude Code en 12 horas · hora 12 de 12
Automatizar y entregar
Hasta ahora has trabajado con Claude Code en una conversación. El último paso es sacarlo de ella: un script que revisa datos cada noche, una comprobación en la integración continua o un cambio repartido entre muchos ficheros. Verás una ejecución real con salida JSON y cómo hacerla segura.
Al terminar sabrásEjecutar Claude Code sin conversación con claude -p, obtener una salida que un script pueda leer, limitar sus permisos para que trabaje desatendido y decidir cuándo repartir un cambio grande.
60 minutos· 1 esquema· 6 preguntas· 1 ejercicio· entregable
Repaso
Comprueba De la hora 10: tu hook PreToolUse detecta una edición prohibida. ¿Cómo la bloquea?
No. El texto solo no bloquea nada.
No. El 1 es un error que no bloquea: la acción sigue.
Correcto. Su mensaje de error le llega a Claude como motivo.
Comprueba De la hora 7: ¿qué modo deniega, sin preguntar, lo que en modo manual te preguntaría?
No. Plan impide editar, pero no es el modo para ejecuciones sin nadie.
No. El automático deja hacer y bloquea lo arriesgado.
Correcto. Por eso es el de las ejecuciones desatendidas.
Comprueba De la hora 11: en claude -p, ¿qué pasa con los servidores de un .mcp.json del proyecto?
Correcto. Por eso hay que revisarlos antes de automatizar.
No. Se cargan: precisamente no hay a quién preguntar.
No. Los de proyecto también se cargan.
Vocabulario
- claude -p
- Claude Code sin conversación: recibe la petición, trabaja y devuelve el resultado.
- --output-format json
- Devuelve el resultado como JSON, para que lo lea otro programa.
- --allowedTools
- Las herramientas o comandos que puede usar sin preguntar en esa ejecución.
- /batch
- Una skill incluida que reparte un cambio grande entre varios subagentes, cada uno en su worktree.
El ejemplo: una revisión que un script puede leer
Antes y después Una ejecución sin conversación
La petición
claude -p --permission-mode plan "Revisa datos/paradas.csv y devuelve SOLO un JSON válido, sin texto antes ni después, con esta forma: {\"problemas\": [{\"id\": \"...\", \"tipo\": \"duplicado|horas_negativas|otro\", \"detalle\": \"...\"}]}. No cambies nada."La ejecución real
Salida real Claude Sonnet 5.5 · 24 de octubre de 2026 · sin editar · Claude Code en modo plan sobre el repositorio de práctica
Para repetirla, en el repositorio: claude --permission-mode plan y pega la petición. Se grabó con claude -p, sin conversación: lo que aquí se deniega, a ti te lo preguntaría.
Lo que hizo: 1 acciones
Read: datos/paradas.csv
{"problemas": [{"id": "P-106", "tipo": "duplicado", "detalle": "El id P-106 aparece dos veces (líneas 7 y 8 del archivo) con datos idénticos: 2025-03-06, L3, Encajadora, 09:00-11:30."}, {"id": "P-104", "tipo": "horas_negativas", "detalle": "La hora de fin (01:15) es anterior a la de inicio (23:30), lo que da una duración negativa. Probablemente la parada cruza la medianoche y falta la fecha de fin, pero tal como está registrada es inconsistente."}]}
Qué ha pasado
Devolvió exactamente un JSON válido, sin texto alrededor, con los dos problemas sembrados del repositorio de práctica y el tipo correcto en cada uno. Leyó solo el fichero necesario. Ese JSON lo puede leer otro programa: un script que pare la publicación del parte si la lista de problemas no está vacía.
Aun así, un script serio valida el JSON antes de usarlo: si algún día llega texto antes o después, el programa debe detectarlo y avisar, no romperse en silencio.
Los ejemplos de esta hora están escritos para Bash: en Windows, ejecútalos en Git Bash o en WSL. Más abajo tienes el bucle también en PowerShell.
Claude Code sin conversación
Según la documentación, claude -p "petición" ejecuta Claude Code sin conversación interactiva, y es la forma de integrarlo en scripts, ganchos de Git o la integración continua. Con --output-format json devuelve un objeto con el resultado; con stream-json, un evento por línea.
claude -p "Explica qué hace este proyecto"
claude -p "Lista los endpoints de la API" --output-format json
cat error.log | claude -p "explica este error"Desatendido, pero con permisos justos
Desde la versión 2.1.302, claude -p sin modo indicado empieza en manual y deniega lo que necesitaría confirmación. Para que haga lo que necesita y nada más:
--allowedToolscon lo justo, por ejemplo--allowedTools "Edit,Bash(git commit *)".--permission-mode dontAsk, para que deniegue todo lo demás sin preguntar.- Revisa antes el
.mcp.jsondel proyecto: en-psus servidores se cargan sin aprobación.
Repartir un cambio grande
Para migraciones o análisis sobre cientos de ficheros, la documentación propone dos caminos:
/batch <instrucción>: reparte el cambio entre varios subagentes, cada uno en su worktree.- Un bucle propio: genera la lista de ficheros y llama a
claude -ppara cada uno. La recomendación oficial es probar primero con dos o tres ficheros, afinar la petición con lo que falle y solo entonces lanzar el resto.
for f in $(cat ficheros.txt); do
claude -p "Migra $f al formato nuevo. Responde OK o FALLO." --allowedTools "Edit,Bash(git commit *)" --permission-mode dontAsk
doneGet-Content ficheros.txt | ForEach-Object {
claude -p "Migra $_ al formato nuevo. Responde OK o FALLO." --allowedTools "Edit,Bash(git commit *)" --permission-mode dontAsk
}Practica
Ordena Ordena cómo poner en marcha una automatización con claude -p
- Probar con dos o tres casos y afinarLo que falle en pequeño, falla en grande.
- Elegir la salida que leerá tu script (texto o JSON)El formato decide cómo lo usará el resto del proceso.
- Escribir la petición y probarla a mano en una sesiónPrimero comprobar que hace lo que quieres.
- Lanzarlo en el script o en la integración continuaCon la validación de la salida incluida.
- Limitar permisos con --allowedTools y dontAskDesatendido, nadie va a leer una pregunta.
Comprueba lo que has aprendido
Comprueba Tu script lanza claude -p sin modo ni permisos y Claude necesita editar un fichero. ¿Qué pasa?
Correcto. Desde la 2.1.302 empieza en manual y deniega lo que pediría confirmación.
No. No: por defecto deniega.
No. En
-pno hay a quién preguntar.
Comprueba Vas a migrar 2.000 ficheros con un bucle de claude -p. ¿Qué haces primero?
No. Solo en entornos aislados; mejor permisos justos con dontAsk.
Correcto. Es la recomendación oficial: lo que falle, que falle en pequeño.
No. Un error en la petición se multiplica por 2.000.
Comprueba La ejecución real devolvió un JSON limpio. ¿Por qué validarlo igualmente en el script?
No. La validación no cambia lo que genera Claude.
Correcto. Un script desatendido debe fallar con aviso, no en silencio.
No. Esta vez llegó limpio; la validación es por si algún día no.
Entregable Tu automatización
Mínimo: escribe un script que use claude -p sobre el repositorio de práctica para revisar los datos y devolver un JSON con los problemas, con permisos limitados y validando la salida. Ampliación: llévalo a un caso tuyo o a la integración continua. Pega aquí el script, la salida de una ejecución y qué hace el script si la salida no es válida.
Está bien si: el script usa --permission-mode dontAsk o plan y nada más amplio; valida el JSON y sale con error si no lo es; y lo has probado con dos o tres casos, uno de ellos con datos sin problemas. Tiempo: unos 35 minutos el mínimo.
Lo esencial
claude -plleva Claude Code a scripts y a la integración continua;--output-format jsonda una salida que un programa puede leer.- Desatendido, permisos justos:
--allowedToolsydontAsk, y revisa el.mcp.json. - Valida siempre la salida antes de usarla.
- Para cambios grandes,
/batcho un bucle, probando antes con dos o tres casos.
Fuentes y para seguir
- Modo no interactivo (claude -p) (se abre en otra pestaña) (documentación oficial, consultada el 24/10/2026).
- Buenas prácticas: automatizar y escalar (se abre en otra pestaña).
- Modos de permiso: dontAsk y claude -p (se abre en otra pestaña).
Lección revisada el 24/10/2026 con la documentación oficial enlazada en sus fuentes. Revisamos los cursos cada trimestre.