docs: documentar TBD, feature flags y convenciones de commits en reglas

Añade documentación completa del flujo trunk-based development a todos
los archivos de reglas y comandos del proyecto:

- CLAUDE.md: sección completa de TBD con flujo, commits, ramas y feature flags
- git-branch.md: sección de features multi-issue y reglas de commits
- git-push.md: reglas críticas de commits (no WIP, no squash, no rebase -i)
- create_issue.md: guía de desglose en sub-issues con feature flags
- fix_issue.md: cuándo usar/no usar feature flags, flujo multi-issue
- index.md: resumen expandido del flujo TBD con commits y flags

Impacto: todas las reglas ahora documentan consistentemente el flujo
de desarrollo, convenciones de commits y uso de feature flags.
This commit is contained in:
2026-03-07 18:55:09 +00:00
parent 982c210fca
commit abfd04420f
6 changed files with 207 additions and 13 deletions
+94
View File
@@ -167,6 +167,100 @@ ANTHROPIC_API_KEY # Anthropic/Claude
Nunca commitear `.env`. Plantilla en `.env.example`.
## Trunk-based development (TBD)
El proyecto usa trunk-based development estricto. **master** es el único branch estable y siempre deployable.
### Flujo de trabajo
```
master (trunk) ← siempre deployable, único branch permanente
└── issue/<NNNN>-<slug> ← rama efímera (horas, no días)
├── commit: feat: ...
├── commit: test: ...
└── commit: docs: ...
merge --no-ff → master → push → delete branch
```
1. **`/git-branch`** — crea rama `issue/<NNNN>-<slug>` desde master actualizado
2. Implementar en la rama con commits granulares por bloque lógico
3. **`/git-push`** — tests → merge `--no-ff` a master → push → eliminar rama
### Convención de commits
Dentro de la rama, cada commit es **atómico por bloque lógico** (no mezclar feat + test en uno):
| Prefijo | Uso |
|---------|-----|
| `feat:` | nueva funcionalidad |
| `fix:` | corrección de error |
| `refactor:` | cambio estructural sin cambio funcional |
| `docs:` | documentación |
| `chore:` | mantenimiento |
| `test:` | tests nuevos o modificados |
| `merge:` | commit de merge (generado por `--no-ff`) |
- **Título** (`-m` corto): resumen del bloque
- **Cuerpo** (`-m` largo): en español, explica qué, por qué, impacto y alcance
- **No hacer commits WIP**: nada de "wip", "tmp", "fix fix" — cada commit debe tener mensaje real
- **No squash**: `--no-ff` preserva los commits individuales; `git log --first-parent master` da la vista limpia (un merge = un issue)
### Reglas de ramas
- **Nunca trabajar directamente en master** — siempre crear rama con `/git-branch`
- **Una rama por issue** — no mezclar issues en la misma rama
- **Ramas cortas** — idealmente horas, no días
- **Nunca pushear la rama** — solo se pushea master después del merge
- **No rebase interactivo** — si los commits ya son limpios, no hay nada que reescribir
### Feature flags — features grandes en TBD
En TBD no existen ramas largas. Para features que no caben en una sola rama, se usan **feature flags**: código completo y testeado que se mergea a master pero desactivado hasta que todas las piezas estén listas.
**Feature flag ≠ WIP.** Un flag protege código terminado; un WIP es código a medias. Nunca commitear código incompleto.
**Cuándo usar feature flags:**
- Feature multi-issue que requiere varias ramas para completarse
- Cambio con riesgo que necesita poder desactivarse en producción
- Despliegue gradual (activar para un agente primero, después para todos)
**Cuándo NO usarlos:**
- Issue autocontenido que se completa en una rama → mergear directo
- Bug fix, refactor, docs → no necesitan flag
**Flujo para features multi-issue:**
```
Feature grande (ej: 0015 Telegram)
├── issue/0015a-telegram-types → pkg/ types, flag OFF → merge
├── issue/0015b-telegram-client → shell/ client, flag OFF → merge
├── issue/0015c-telegram-listener → integration, flag OFF → merge
└── issue/0015d-telegram-enable → flag ON, cleanup → merge
```
Cada rama es corta, cada merge es seguro, master nunca se rompe.
**Archivo:** `dev/feature_flags.json`
```json
{
"flags": {
"telegram-support": {
"enabled": false,
"issue": "0015",
"description": "Soporte multi-plataforma Telegram",
"added": "2026-03-07"
}
}
}
```
### Comandos disponibles
- `/git-branch` — crear rama de trabajo (`.claude/commands/git-branch.md`)
- `/git-push` — integrar rama a master y publicar (`.claude/commands/git-push.md`)
## Preferencias del usuario
- **Idioma**: español en configs/comentarios de dominio, inglés en código Go