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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user