Construye una habilidad de Claude Code que revise, clasifique y haga commits
Cómo crear una sola skill de Claude Code que revise tus cambios, ejecute verificaciones de calidad, clasifique los TODOs y haga commits a GitHub cada noche.
Existe un tipo específico de culpa de desarrollador que golpea alrededor de las 6 de la tarde. Has estado concentrado todo el día, las cosas más o menos funcionan, pero el historial de Git es un cementerio de commits a medio terminar. Hay un TODO enterrado tres archivos más abajo que marcaste mentalmente a las 10 de la mañana y olvidaste por completo. El README todavía describe la arquitectura de hace tres semanas.
Queríamos solucionar esto sin añadir otra herramienta, otro proceso ni otra cosa que recordar. Escribe un comando al final del día y deja que el compañero de código con IA se encargue del resto.
Así es como construimos /wrapup — una skill de Claude Code que hace exactamente eso.
Cómo es un buen traspaso de fin de día
Un buen wrapup hace cinco cosas:
- Revisa lo que realmente cambió — no solo un
git diff, sino un resumen legible de qué se movió y por qué. - Ejecuta comprobaciones de calidad — lint, tipos, tests, un build rápido. Atrapa las cosas vergonzosas antes de que lleguen a GitHub.
- Mantiene la documentación honesta — actualiza
CLAUDE.md, el README, un changelog si existe. Las cosas que siempre se escapan. - Triaje de issues abiertos — busca
TODOs e issues abiertos en GitHub, ejecuta una Q&A rápida sobre cualquier cosa importante, escribe una agenda priorizada para la mañana siguiente. - Hace commit y push — automáticamente para cambios limpios o de bajo riesgo, con una pausa para revisión humana solo cuando algo crítico queda sin resolver.
El resultado es un historial de Git que cuenta una historia coherente, un CLAUDE.md que se mantiene al día, y un bloque ## Next Session que significa que mañana por la mañana abres el proyecto y ya sabes por dónde empezar.
Cómo funciona la skill
La skill es un archivo Markdown. Eso es genuinamente todo lo que es. Claude Code lo lee, carga las instrucciones en contexto y las sigue cuando invocas el comando.
Esta es la secuencia completa:
Fase 1 — Revisar cambios. Ejecuta git status, git diff HEAD y git log --oneline -10. Produce un resumen en lenguaje natural de lo que cambió hoy.
Fase 2 — Comprobaciones de calidad. Detecta el toolchain del proyecto desde package.json o CLAUDE.md y ejecuta lo que corresponda: ESLint o Ruff para linting, tsc --noEmit o Mypy para tipos, la suite de tests, una comprobación de build. Problemas menores como declaraciones console.log sueltas se corrigen automáticamente. Problemas mayores se marcan y documentan como TODOs en lugar de intentar arreglarlos a mitad del wrapup.
Fase 3 — Actualizar memoria y docs. Comprueba si algo nuevo necesita ir a CLAUDE.md — nuevos comandos, convenciones, variables de entorno. Actualiza el README si algún comportamiento visible para el usuario cambió. Añade al changelog si existe uno.
Fase 3b — Triaje de issues y TODOs. Esta es la parte que más valor nos aporta. Hace grep por todo el codebase buscando TODO, FIXME, HACK y XXX, y obtiene los issues abiertos de GitHub mediante el CLI gh. Para cada elemento importante ejecuta una Q&A breve: cuál es el problema, hay una solución clara, cuál es la estimación de esfuerzo, hay bloqueos. Todo se clasifica en tres categorías — crítico, importante, backlog — y se escribe un bloque ## Next Session en CLAUDE.md con las prioridades de mañana en orden.
Fase 4 — Preparar el commit. Añade los cambios al stage y compone un mensaje de commit convencional. Si existen issues críticos sin resolver, hace una pausa y muestra el diff del stage para revisión. De lo contrario, procede automáticamente.
Fase 5 — Commit y push. Hace commit, push a la rama de tracking actual e imprime un resumen de una pantalla: qué se envió, qué es crítico para mañana, qué docs se actualizaron y el hash del commit.
¿Qué es exactamente una skill de Claude Code?
Claude Code tiene instrucciones persistentes y reutilizables que amplían lo que puede hacer. CLAUDE.md gestiona el contexto de proyecto siempre activo. Las skills gestionan flujos de trabajo repetibles específicos que invocas bajo demanda.
Una skill es un directorio que contiene un archivo SKILL.md. Ese archivo tiene dos partes:
---
name: wrapup
description: End-of-day review, triage, and commit. Run before closing the project.
allowed-tools: Read, Write, Bash(git:*), Bash(gh:*), Bash(grep:*), Bash(npm:*), Bash(ruff:*), Bash(tsc:*)
---
# End-of-Day Wrapup
## Phase 1 — Review changes
Run `git status`, `git diff HEAD`, and `git log --oneline -10`.
Summarise what changed today in plain language.
## Phase 2 — Quality checks
Detect the toolchain from package.json or CLAUDE.md.
Run lint, type checks, tests, and build. Fix minor issues automatically.
Flag larger issues as TODOs rather than attempting repairs mid-wrapup.
## Phase 3 — Update memory and docs
...
El frontmatter YAML le indica a Claude Code el nombre de la skill (que se convierte en el /slash-command), una descripción usada para decidir cuándo cargarla automáticamente, y qué herramientas puede utilizar. El cuerpo en Markdown es el prompt — lenguaje natural, estructurado como tenga sentido para la tarea.
Cuando escribes /wrapup, Claude Code carga la skill en contexto y sigue las instrucciones. Puede ejecutar comandos bash, leer y escribir archivos, llamar al CLI gh, hacer commit en Git — cualquier cosa que la lista allowed-tools permita.
Las skills son parte del estándar abierto Agent Skills, así que funcionan en Claude Code, Claude en la web y Claude Desktop. Define una vez, usa en todas partes.
Tres formas de instalar una skill
Global (disponible en todos los proyectos)
Ideal cuando la skill es de propósito general y la quieres independientemente del repo en el que estés. /wrapup encaja aquí.
mkdir -p ~/.claude/skills/wrapup
nano ~/.claude/skills/wrapup/SKILL.md
Pega el contenido de la skill, guarda. No hace falta reiniciar — Claude Code detecta cambios en las skills en tiempo real.
Ámbito de proyecto (commiteada en el repo)
Ideal cuando la skill es específica del proyecto, o cuando todo el equipo debería tenerla.
mkdir -p .claude/skills/wrapup
nano .claude/skills/wrapup/SKILL.md
Luego haz commit:
git add .claude/skills/wrapup/SKILL.md
git commit -m "chore: add /wrapup end-of-day skill"
git push
Cualquiera que clone el repo obtiene la skill automáticamente.
Override personal de proyecto (sin commitear)
Para skills específicas del proyecto que no pertenecen al codebase compartido — estilos de mensaje de commit con opiniones propias, criterios de triaje personales, atajos específicos de stack que tu equipo no usa.
mkdir -p .claude/commands
echo ".claude/commands/" >> .gitignore
nano .claude/commands/wrapup.md
Invocando la skill
Escribe / en Claude Code y wrapup aparece en la lista de autocompletado:
/wrapup
O con el prefijo de namespace del proyecto si hay un conflicto de nombres:
/project:wrapup
Puedes verificar que se registró ejecutando /help — todas las skills disponibles aparecen con sus descripciones. Si wrapup no aparece, comprueba la ruta del SKILL.md y valida el frontmatter YAML.
Por qué el commit se pausa en issues críticos
Una decisión de diseño que vale la pena explicar: la skill hace commit y push automáticamente para trabajo normal, pero se pausa si existen issues críticos sin resolver.
La lógica en las instrucciones de la skill:
## Phase 4 — Prepare the commit
Stage all changes with `git add -A`.
Compose a conventional commit message summarising today's work.
If any CRITICAL issues remain unresolved:
- Print the staged diff
- Print the proposed commit message
- Wait for explicit confirmation before proceeding
Otherwise:
- Commit and push without interruption
La pausa no es para impedirte hacer deploy. Es para asegurarse de que estás decidiendo conscientemente hacer push en un estado donde algo importante está roto. A menudo harás push de todas formas — el trabajo no está relacionado con el issue crítico — pero lo harás intencionalmente en lugar de accidentalmente.
Una herramienta automatizada que silenciosamente despliega estado roto es peor que no tener automatización. La pausa es la skill reconociendo que no tiene contexto completo, y devolviendo esa decisión específica a ti.
CLAUDE.md como memoria de trabajo
El bloque ## Next Session escrito al final de la Fase 3b merece su propia sección.
Como Claude Code carga CLAUDE.md automáticamente al inicio de cada sesión, mañana por la mañana Claude ya sabe las tres cosas que necesitan ocurrir, en orden de prioridad. No necesitas re-explicar contexto, releer tus propias notas ni pasar quince minutos recordando dónde lo dejaste.
El bloque tiene este aspecto después de un wrapup típico:
## Next Session
**Last updated:** 2025-01-14 18:03
### Critical
- [ ] Fix auth token expiry not being caught in `api/middleware.ts` — users hitting 401s silently
- [ ] The `/export` endpoint times out for datasets > 10k rows — needs investigation
### Important
- [ ] Migrate remaining fetch calls in `dashboard/` to the new API client
- [ ] Write tests for the CSV parser edge cases (empty rows, quoted commas)
### Backlog
- [ ] Update the deployment docs — still references the old Docker setup
- [ ] TODO in `utils/date.ts:47` — handle timezone offsets properly
Cada sesión termina haciendo traspaso a la siguiente. Con el tiempo, CLAUDE.md se convierte en un documento vivo que refleja el estado actual del proyecto — no solo la arquitectura, sino el trabajo en progreso. Cuando incorporas a un nuevo colaborador, o vuelves a un proyecto después de dos semanas, ese archivo cuenta la historia completa.
Cómo es la salida
Después de que /wrapup se ejecuta, el resumen final se imprime en la terminal:
── Wrapup complete ──────────────────────────────────────
Commit: a3f91c2
Branch: main → origin/main
Changed
Modified src/api/middleware.ts
Modified src/dashboard/index.tsx
Added src/utils/csv-parser.ts
Modified README.md
Quality checks
ESLint passed
TypeScript passed
Tests 47 passed, 0 failed
Build passed
Fixed 2 stray console.log statements
Docs updated
CLAUDE.md Next Session block updated
README.md Updated /export endpoint docs
Critical for tomorrow
1. Auth token expiry silent failure — api/middleware.ts
2. /export timeout on large datasets
─────────────────────────────────────────────────────────
Una pantalla. Todo lo que necesitas para cerrar el portátil.
Hazlo tuyo
La skill de wrapup nos llevó alrededor de una hora escribirla y ha sido parte de nuestra rutina diaria desde entonces. El historial de Git es más limpio. Los docs son más precisos. Cada mañana empieza con una lista clara ya cargada en contexto.
También es un buen ejemplo de para qué sirven las skills en general: tomar un flujo de trabajo de múltiples pasos y dependiente de contexto que de otro modo harías manualmente — o te saltarías — y codificarlo una vez en un archivo Markdown. Claude Code se encarga de la ejecución. Tú escribes una palabra.
El coste de una buena rutina de fin de día no es el trabajo en sí. Es la fricción de recordar hacerlo y saber por dónde empezar. Una skill elimina ambas cosas. Copia el archivo, cambia npm test por pytest, cambia ESLint por Ruff, añade las comprobaciones específicas de tu proyecto que importen — y ejecuta /wrapup esta noche.
Si te atascas adaptando la skill a tu stack, pega la URL de este post en Claude Code o en tu asistente de IA preferido. Tendrá todo el contexto para ayudarte a depurar.
Dónde ejecutar esto
Necesitas una máquina donde Claude Code y Git estén disponibles — que es cualquier máquina Linux con una terminal. Si ejecutas entornos de desarrollo en un VPS, Hetzner te da un CX22 a 4,85 €/mes con 10 € de crédito gratis. Es donde corre este blog.
Si prefieres saltarte la gestión del servidor y quieres un entorno alojado para flujos de trabajo con IA, xCloud se encarga de la infraestructura para que puedas centrarte en las skills.
Para equipos que quieren monitorización de los servicios a los que Claude hace commit, UptimeRobot cubre 50 monitores en su tier gratuito con intervalos de 5 minutos — útil para detectar esos problemas de timeout en /export antes que tus usuarios.
(Enlaces de afiliado — nos llevamos una pequeña comisión si te registras, sin coste adicional para ti.)