9.5 KiB
version, updated, tags
| version | updated | tags | ||||
|---|---|---|---|---|---|---|
| 2.0.0 | 2026-03-11 |
|
Command: fix-issue
Ejecuta de punta a punta el flujo de implementación/cierre de un issue siguiendo estrictamente la regla fix_issue.md.
Para el usuario
Cuándo usar este comando
Usar cuando quieras implementar un issue completo desde inicio hasta fin con confirmación antes de integrar. El comando maneja todo el ciclo: crear rama, implementar, testear, cerrar issue, pedir confirmación, e integrar a master.
Sintaxis
/issues:fix-issue <NNNN>
/issues:fix-issue <NNNN>-<slug>
Ejemplos
Ejemplo 1: Por número
/issues:fix-issue 0013
Busca dev/issues/0013-*.md, implementa todas las tareas, cierra el issue, pide confirmación, e integra.
Ejemplo 2: Por slug completo
/issues:fix-issue 0013-hot-reload
Usa exactamente dev/issues/0013-hot-reload.md.
Para Claude
Precondiciones
Verificar antes de ejecutar:
- Directorio
dev/issues/existe - Directorio
dev/issues/completed/existe - Archivo
dev/issues/README.mdexiste - Tests configurados (go test disponible)
- Working tree limpio
Inputs
Se necesita el issue objetivo. Si no se proporciona, preguntar:
issue: número o nombre (ej:0010o0010-access-control)
Flujo obligatorio
1. Resolver el issue objetivo
Si viene solo número (0010):
ls dev/issues/0010-*.md
Si viene slug completo (0010-access-control):
ls dev/issues/0010-access-control.md
Validaciones:
- Si no existe en
dev/issues/→ ✗ STOP: "Issue no encontrado" - Si ya está en
dev/issues/completed/→ ✗ STOP: "Issue ya completado"
2. Leer completo el issue y extraer información
cat dev/issues/<NNNN>-<slug>.md
Extraer:
- Objetivo: qué se quiere lograr
- Tareas/fases: lista completa de pasos
- Arquitectura: archivos a crear/modificar
- Patrón pure/impure: límites entre core/, shell/, app/
- Tests requeridos: criterios de aceptación
3. Crear rama de trabajo (inline)
{{include: git-verify-clean}}
Verificar rama actual:
git branch --show-current
Si ya estamos en issue/<NNNN>-<slug> que coincide:
- ✓ Continuar directamente a paso 4
Si estamos en master o cualquier otra rama:
{{include: git-update-master}}
git checkout master
git pull --rebase
git checkout -b issue/<NNNN>-<slug>
⚠️ IMPORTANTE: Nunca trabajar directamente en master.
4. Planificar con TodoWrite
Crear plan basado en las tareas del issue:
- [ ] Fase 1: <descripción>
- [ ] Tarea 1.1
- [ ] Tarea 1.2
- [ ] Fase 2: <descripción>
- [ ] Tarea 2.1
- [ ] Tarea 2.2
- [ ] Fase N: Tests y validación
- [ ] Cerrar issue
Principios:
- Respetar el orden de fases del issue
- Incluir siempre fase de tests
- Marcar progreso al completar cada bloque
5. Implementar el issue completo
Ejecutar tareas en orden:
Para cada tarea:
- Implementar cambios requeridos
- Seguir patrón pure core / impure shell:
core/→ funciones puras, sin side effectsshell/→ I/O, filesystem, network, APIsapp/→ orquestación de core + shell
- Compilar frecuentemente:
go build -tags goolm ./...
- Marcar progreso en TodoWrite
- Crear commits atómicos por bloque lógico (no al final, durante la implementación)
Commits durante implementación:
git add <archivos_del_bloque>
git commit -m "<tipo>: <resumen>" -m "<descripción larga en español>"
Tipos: feat:, fix:, refactor:, test:, docs:, chore:
6. Tests obligatorios
{{include: run-tests}}
go test -tags goolm ./...
Casos:
- Tests pasan → ✓ Continuar a paso 7
- Tests fallan → ✗ STOP: corregir antes de continuar
go test -v -tags goolm ./... # Ver detalles # Corregir errores # Crear commit con fix # Re-ejecutar tests - No hay tests aplicables → ℹ Indicar al usuario, continuar
⚠️ CRÍTICO: No cerrar el issue sin tests pasando.
7. Feature flags (si aplica)
Evaluar si es feature multi-issue o despliegue gradual:
Si aplica feature flag:
- Actualizar
dev/feature_flags.json:
{
"<nombre-del-flag>": {
"enabled": false, // o true si es el último sub-issue
"issue": "<NNNN>",
"description": "<descripción>",
"updated": "2026-03-11"
}
}
- Incluir en commit correspondiente (no commit separado solo para flags)
Si NO aplica:
- Feature autocontenida que no necesita coordinación
- ✓ Saltar este paso
⚠️ Recordatorio: Feature flag ≠ WIP. Los flags protegen código terminado y testeado, no código a medias.
8. Cerrar el issue
Mover issue a completed:
mv dev/issues/<NNNN>-<slug>.md dev/issues/completed/
Actualizar índice en dev/issues/README.md:
Cambiar la línea del issue:
- Link: de
[<NNNN>-<slug>.md](<NNNN>-<slug>.md)a[completed/<NNNN>-<slug>.md](completed/<NNNN>-<slug>.md) - Estado: de
pendienteoen progresoacompletado
Crear commit:
git add dev/issues/completed/<NNNN>-<slug>.md dev/issues/README.md
git commit -m "docs: cerrar issue <NNNN>-<slug>" -m "Issue <NNNN> completado y movido a completed/
Todas las tareas implementadas y tests pasando.
Ready to merge to master."
9. Mostrar resumen de cambios y confirmar
{{include: ask-user-confirm}}
Mostrar al usuario un resumen completo:
git status --short
git diff --stat master
git log --oneline master..HEAD
Mostrar tareas completadas del TodoWrite.
Pausar y preguntar:
✓ Issue <NNNN>-<slug> completado
Resumen de cambios:
- <N> archivos modificados/creados
- <N> commits realizados
- Tests: [pasando / no aplica]
- Issue movido a completed/
Commits:
- <commit 1>
- <commit 2>
- ...
¿Está todo bien para integrar a master?
- Si es correcto: se hará merge y push automáticamente
- Si necesitas ajustes: puedes hacer cambios adicionales antes
Esperar respuesta del usuario:
- Si responde SI / afirmativo → continuar a paso 10
- Si responde NO / necesita cambios → STOP: "Haz los ajustes necesarios y cuando estés listo ejecuta
/git:push"
10. Ejecutar /git:push automáticamente
Una vez confirmado por el usuario, ejecutar /git:push para:
- Verificar que estamos en la rama correcta
- Re-ejecutar tests (verificación final)
- Checkout a master y actualizar
- Merge --no-ff:
git merge --no-ff issue/<NNNN>-<slug> -m "merge: issue/<NNNN>-<slug> — <título del issue>"
- Push a remoto
- Limpiar rama local
El comando /git:push maneja todo el flujo de integración automáticamente.
Verificación final
Informar al usuario:
✓ Issue <NNNN>-<slug> completado e integrado a master
Rama: issue/<NNNN>-<slug> (mergeada y limpiada)
Commits integrados: <N>
Tests: pasando
Issue: movido a dev/issues/completed/
Master actualizado y sincronizado con remoto.
Convenciones
- Issue completo: implementar todas las tareas, no parcial
- Commits atómicos: durante implementación, no al final
- Tests obligatorios: no cerrar sin tests pasando
- Pure core / impure shell: respetar arquitectura estrictamente
- Feature flags solo si aplica: no usar para ocultar trabajo incompleto
- Confirmación obligatoria: siempre pedir antes de integrar
Troubleshooting
Error: "Issue not found"
Causa: El archivo del issue no existe en dev/issues/
Solución:
ls dev/issues/
# Verificar número o slug correcto
# O crear el issue primero con /issues:create-issue
Error: "Issue already completed"
Causa: El issue ya está en dev/issues/completed/
Solución: El issue ya fue implementado. Si necesitas modificarlo:
- Crear nuevo issue que referencia el anterior
- O mover de vuelta a
dev/issues/si realmente no estaba completo
Error: "Tests failing during implementation"
Causa: Los cambios rompieron tests existentes
Solución:
- Ver detalles:
go test -v -tags goolm ./...
- Identificar qué test falló y por qué
- Corregir el código o actualizar el test si es legítimo
- Crear commit con el fix
- Continuar implementación
Error: "Cannot create branch, working tree not clean"
Causa: Hay cambios sin commitear
Solución:
git status
# Opción 1: Commitear cambios primero
git add . && git commit -m "mensaje"
# Opción 2: Hacer stash
git stash
# Luego ejecutar /issues:fix-issue nuevamente
Error: "go build failed"
Causa: Errores de compilación en el código
Solución:
- Leer el error de compilación cuidadosamente
- Corregir el error en el código
- Intentar compilar de nuevo
- No continuar hasta que compile correctamente
Advertencia: "Feature flag needed but not found"
Causa: El issue es parte de feature multi-issue pero no tiene flag
Solución:
- Revisar si realmente necesita feature flag
- Si sí: agregar a
dev/feature_flags.json - Si no: continuar sin flag
Reglas críticas
- Seguir fix_issue.md estrictamente: no saltear pasos
- NO saltear tareas del issue: implementar todas
- NO hacer commits WIP: cada commit debe ser atómico y completo
- SIEMPRE usar -tags goolm: en build y test
- SIEMPRE ejecutar tests: antes de cerrar issue
- Confirmación obligatoria: esperar aprobación del usuario antes de integrar
- Flujo automático post-confirmación: ejecutar
/git:pushpara integrar - Respetar arquitectura: core/ puro, shell/ impuro, app/ orquestación
- NO inventar soluciones: seguir las tareas del issue al pie de la letra