Files
repo_Claude/.claude/commands/git-branch.md
T
egutierrez ffb3f9b270 fix(commands): path portable + invocación bash en /git-push y /git-branch
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).
2026-06-13 14:47:52 +02:00

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

  1. 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.
  2. 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-readme
    

    La función:

    • Verifica que el working tree esté limpio (aborta si dirty).
    • Cambia a master/main (autodetecta).
    • git pull --rebase desde 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.