--- name: tbd_branch_create kind: function lang: bash domain: infra version: "1.0.0" purity: impure signature: "tbd_branch_create(mode: string, ...args: string) -> void" description: "Crea una rama TBD (trunk-based development) desde master/main actualizado. Soporta modos 'issue ' y 'quick '. Autodetecta la rama base (master/main), verifica working tree limpio, hace pull --rebase y crea la rama. Valida formato de numero de issue (4 digitos) y slug (kebab-case ASCII)." tags: [git, tbd, branch, trunk-based-development, workflow, pendiente-usar] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] params: - name: mode desc: "Modo de creacion: 'issue' para ramas issue/- o 'quick' para ramas quick/." - name: args desc: "Para mode=issue: NNNN (4 digitos) + slug (kebab-case). Para mode=quick: solo slug (kebab-case)." output: "Crea la rama y cambia a ella. Imprime confirmacion a stdout. Exit 1 en caso de error (dirty tree, formato invalido, repo inexistente)." tested: true tests: - "issue branch created" - "quick branch created" - "issue number must be 4 digits" - "slug must be kebab-case" - "invalid mode exits 1" - "no args exits 1" - "dirty tree exits 1" - "existing branch exits 1" - "works with main as base" test_file_path: "bash/functions/infra/tbd_branch_create.sh" file_path: "bash/functions/infra/tbd_branch_create.sh" --- ## Ejemplo ```bash # Crear rama para un issue tbd_branch_create issue 0042 add-auth # Crear rama para cambio rapido tbd_branch_create quick fix-typo-readme # Ejecutar suite de tests bash bash/functions/infra/tbd_branch_create.sh --test ``` ## Notas La funcion autodetecta la rama base probando primero `master` y luego `main` con `git show-ref --verify`. Si el directorio actual no es un repo git, sale con error. Si el working tree tiene cambios no commiteados, sale con error antes de hacer pull. Los tests internos se ejecutan con `--test` y crean repos temporales aislados con `mktemp -d`.