Ejercicio 02: Ejecuta un skill sin la UI
Objetivo
Usa claude -p para invocar el skill summarize-changes desde la terminal sin abrir la interfaz interactiva de Claude Code.
Requisitos previos
- El skill
summarize-changesinstalado en~/.claude/skills/summarize-changes/SKILL.md(cópialo desde../lesson-05-invoking/examples/summarize-changes/) - Un repository de git con al menos un cambio sin commitear
claudedisponible en tu PATH
Paso 1: prepara un repository con cambios
Encuentra un repository de git en el que estés trabajando, o crea uno desechable:
mkdir /tmp/skill-test && cd /tmp/skill-testgit initecho "hello" > hello.txtgit add hello.txtgit commit -m "initial"echo "world" >> hello.txtAhora hello.txt tiene un cambio sin stagear. El skill lo resumirá.
Paso 2: ejecuta el skill en modo headless
Desde dentro del directorio del repository:
claude -p "/summarize-changes"Claude Code arranca, activa el skill, inyecta la salida del diff, produce un resumen y termina. Deberías ver el resumen impreso por stdout.
Paso 3: captura la salida en un archivo
claude -p "/summarize-changes" > summary.txtcat summary.txtLa salida ahora está en summary.txt. Esto es útil en pipelines de CI donde quieres un resumen del diff guardado como artefacto.
Paso 4: ejecuta el skill commit-message y usa la salida
Instala el skill commit-message si aún no lo has hecho:
cp -r path/to/lesson-03-repetitive-tasks/examples/commit-message ~/.claude/skills/Stagea un cambio y ejecuta:
git add hello.txtCOMMIT_MSG=$(claude -p "/commit-message")echo "$COMMIT_MSG"Si la salida tiene buena pinta, úsala:
git commit -m "$COMMIT_MSG"Qué hace claude -p de forma distinta
claude -p termina tras un turno. No hay ida y vuelta. Esto significa:
- Los skills que hacen preguntas para aclarar no funcionan bien en modo headless — Claude hará una pregunta y el proceso terminará antes de que puedas responder
- La salida se imprime por stdout, así que puede canalizarse o capturarse con herramientas estándar de shell
- El exit code es 0 si hay éxito y distinto de cero en caso de error, así que puedes usar
&&y||en scripts - Es seguro usarlo en CI/CD porque el proceso siempre termina
Reto adicional
Escribe un alias de shell que stagee todos los cambios y genere un commit message en un solo comando:
alias smart-commit='git add -A && git commit -m "$(claude -p "/commit-message")"'Añádelo a tu perfil de shell para hacerlo permanente. Nota: ten cuidado con git add -A en proyectos reales — revisa lo que está staged antes de comitear.