ffb3f9b270
Los comandos hardcodeaban /home/lucas/fn_registry y hacían 'source' del script TBD, lo que fallaba en otros PCs (path inexistente) y bajo zsh (BASH_SOURCE sin definir).
- Path portable: ${FN_REGISTRY_ROOT:-$HOME/fn_registry} — usa la env var si está, si no ~/fn_registry. Válido en cualquier PC del ecosistema.
- Invocación con 'bash <script> <args>' en vez de 'source': los scripts tbd_branch_finish.sh y tbd_branch_create.sh tienen un entry point (if BASH_SOURCE[0] == $0) que llama a la función con los argumentos al ejecutarse directamente. Así funciona aunque la shell de la sesión sea zsh.
No se renombra el archivo del comando; solo se corrige la invocación interna. No incluye .claude/settings.json (cambio ajeno a esta tarea).
2.3 KiB
2.3 KiB
Command: git branch (TBD)
Wrapper sobre tbd_branch_create_bash_infra. La función del registry maneja toda la lógica determinista (verificar limpio, autodetectar master/main, pull --rebase, validar slug + número de issue, crear rama). Este comando solo decide los inputs.
Uso
/git-branch # preguntar al usuario
/git-branch issue 0021 hot-reload
/git-branch quick fix-typo-readme
Pasos del asistente
-
Decidir modo e inputs:
- Preguntar si el cambio está asociado a un issue o no.
- Si es issue: pedir
<NNNN>(4 dígitos) y<slug>kebab-case. - Si es quick: pedir
<slug>kebab-case descriptivo.
-
Llamar la función del registry:
# Path portable (cualquier PC): FN_REGISTRY_ROOT si está, si no ~/fn_registry. # Se invoca con `bash` (no `source`): el script llama a tbd_branch_create con # los argumentos al ejecutarse directamente, y así funciona aunque la shell de # la sesión sea zsh (evita el fallo de BASH_SOURCE). FN_TBD="${FN_REGISTRY_ROOT:-$HOME/fn_registry}/bash/functions/infra/tbd_branch_create.sh" bash "$FN_TBD" issue 0021 hot-reload # o bash "$FN_TBD" quick fix-typo-readmeLa función:
- Verifica que el working tree esté limpio (aborta si dirty).
- Cambia a master/main (autodetecta).
git pull --rebasedesde la rama base.- Valida
<NNNN>(regex 4 dígitos) y<slug>(kebab-case ASCII). git checkout -b <rama>.- Imprime confirmación.
Convenciones
- Formato issue:
issue/<NNNN>-<slug>(4 dígitos siempre). - Formato quick:
quick/<slug>(sin número). - Ramas cortas: idealmente horas, no días.
- Una rama por issue: no mezclar issues en la misma rama.
- Nunca pushear la rama al remoto: el push se hace desde master después del merge (ver
/git-push). - No commits WIP: cada commit atómico con mensaje real.
Features multi-issue
Para features que no caben en una sola rama, sub-issues con sufijo letra:
issue/0015a-telegram-types
issue/0015b-telegram-client
issue/0015c-telegram-listener
Cada sub-rama sigue el mismo flujo. El código parcial se protege con feature flags en dev/feature_flags.json.
Para tocar la lógica
Editar tbd_branch_create_bash_infra en bash/functions/infra/tbd_branch_create.sh, no este wrapper.