Crear commits atómicos y bien redactados desde un agente: revisar el diff real, elegir qué se stagea, seguir el estilo del repositorio y respetar los hooks. Úsala cuando la persona pide commitear, "haz un commit" o entrega un mensaje como guía.
Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Is that skill safe to install?
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
Are you the author of Commit?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/bipbop-labs-commit)
---
name: commit
description: Crear commits atómicos y bien redactados desde un agente: revisar el diff real, elegir qué se stagea, seguir el estilo del repositorio y respetar los hooks. Úsala cuando la persona pide commitear, "haz un commit" o entrega un mensaje como guía.
---
# Commit
Guía para que un agente cree commits que otra persona pueda leer, revisar y revertir sin sorpresas.
## When to use
- La persona pide commitear los cambios en curso.
- La persona entrega un mensaje o contexto para usar como base.
- No usar para push, PR, rebase, amend de commits ya empujados ni reescritura de historia.
## Precondiciones
- La persona pidió commitear. Un agente no commitea por iniciativa propia.
- La rama no es la principal. Si `git branch --show-current` devuelve `main` o `master`, crea una rama antes de commitear.
## Procedure
1. **Leer el estado real, no la memoria de la sesión**
- `git status` para ver qué está modificado, staged y sin trackear.
- `git diff` y `git diff --staged` para revisar el contenido, no solo los nombres.
- `git log --oneline -10` para copiar formato, idioma y convenciones del repositorio.
2. **Decidir el alcance y dividir si hace falta**
- Un commit por unidad lógica: lo que se revierte junto, va junto.
- Divide cuando el árbol mezcla temas: refactor y feature, formateo masivo y lógica, backend y frontend sin relación, o dependencias nuevas y su uso.
- No dividas lo que no compila ni pasa tests por separado. Ante la duda entre dos commits acoplados, deja uno.
- Para dividir, repite el ciclo stagear → commitear por tema, en orden de dependencia: primero lo que el resto necesita (renombres, utilidades, migraciones), después lo que lo usa.
- Si un mismo archivo tiene cambios de dos temas, usa `git add -p` para stagear solo los hunks de uno.
- Deja fuera lo que no pertenece a ningún commit: experimentos, prints de depuración, archivos de scratch, configuración local.
3. **Stagear explícitamente**
- `git add <ruta>` archivo por archivo o por directorio acotado.
- Evita `git add -A`, `git add .` y `git commit -a`: arrastran archivos que nadie revisó.
- Antes de commitear, relee `git diff --staged`. Es lo único que va a quedar en la historia.
4. **Escribir el mensaje**
- Formato del repositorio. Si usa conventional commits: `type(scope): descripción`, con tipos `feat`, `fix`, `refactor`, `test`, `docs`, `style`, `chore`.
- Primera línea bajo 72 caracteres, en imperativo y en el idioma que ya usa el repositorio.
- El cuerpo explica el porqué y las decisiones no obvias. El qué ya está en el diff.
- Viñetas solo si hay varios cambios significativos.
- Sin atribución de agente ni coautoría, salvo que el repositorio o la persona lo pidan.
5. **Commitear**
- `git commit` con el mensaje generado.
## Pitfalls
- **Hooks.** Si un hook falla, el commit no se creó. Corrige la causa, vuelve a stagear lo que el hook modificó y commitea de nuevo. Nunca `--no-verify`.
- **Secretos y ruido.** No commitees `.env`, credenciales, tokens, dumps, artefactos de build, logs ni archivos temporales del agente. Ante la duda, revisa si el archivo debería estar en `.gitignore`.
- **Comandos destructivos.** No uses `git reset --hard`, `git checkout .`, `git clean -fd` ni `git stash drop` para "ordenar" antes de commitear: borran trabajo que no es tuyo.
- **Historia publicada.** No hagas `--amend` ni force push sobre commits que ya están en el remoto, salvo instrucción explícita.
- **Mensaje inflado.** No describas intención, impacto ni motivación que el diff no respalde.
- **Reporte honesto.** Si algo quedó sin commitear, si un test falla o si un hook cambió archivos, dilo en la respuesta.
## Verification
- `git log -1 --stat` muestra el commit con el mensaje esperado y solo los archivos previstos.
- `git status` no deja residuos que se pretendía incluir.