Saltar al contenido principal

Guía del nuevo desarrollador — De cero a primera MR

Bienvenido a Wiedii. Esta guía es un tutorial secuencial: sigue los pasos en orden y al final tendrás la máquina configurada, entenderás el flujo de trabajo del equipo y habrás abierto tu primera Merge Request real.

🎯 Esto es el onboarding — práctica con el repo sandbox wiedii-dev-onboarding. Para crear un proyecto/repositorio real desde cero (paso a paso y qué tener en cuenta), ver repo-setup.

Tiempo estimado: 60–90 minutos en una máquina limpia. Sistema operativo: macOS.

⚠️ Antes de empezar: asegúrate de tener los accesos listados en los prerrequisitos.

📖 Mini-glosario (términos que verás en esta guía):

  • terminal / shell / zsh — la app de línea de comandos y el programa que interpreta lo que escribes (en macOS, zsh).
  • CLI — Command-Line Interface: un programa que se usa desde la terminal.
  • ~ — atajo de "tu carpeta personal" (p. ej. ~/Docker = la carpeta Docker dentro de tu usuario).
  • PATH — la lista de carpetas donde el sistema busca los programas que ejecutas.
  • repo / repositorio — la carpeta de un proyecto versionada con Git.
  • clone — descargar una copia local de un repositorio.
  • commit — guardar un cambio en el historial de Git, con un mensaje que lo describe.
  • push / pull — subir tus commits al servidor / traer los del servidor.
  • branch (rama) — una línea de trabajo paralela dentro del repo.
  • MR (Merge Request) — la propuesta de integrar tu rama; el equipo la revisa antes de fusionarla.
  • runtime — el programa que ejecuta un lenguaje (p. ej. Node ejecuta JavaScript).
  • gestor de paquetes — instala y actualiza las librerías de un proyecto (p. ej. Bun).
  • hook — un programa que Git dispara solo en un momento concreto (p. ej. antes de cada commit); tú no lo ejecutas.
  • lockfile — archivo que fija las versiones exactas de las dependencias para que todos instalen lo mismo.

Prerrequisitos​

AccesoPara quéA quién pedirlo
Cuenta GitLabClonar repos, abrir MRs, CIInfraestructura
Microsoft TeamsCanal del equipo de DesarrolloTI
Correo corporativo (@wiedii.co)Comunicaciones formalesTI

La cuenta de GitLab y cualquier acceso a servidores los entrega el equipo de Infraestructura. Los accesos corporativos (correo y Teams) los gestiona TI.

Confirma acceso a https://gitlab.wiedii.co antes de continuar.

⚠️ Poder clonar no es poder hacer push. Con rol Reporter puedes git clone/pull, pero al publicar tu rama feature/* GitLab responde You are not allowed to push code to this project. Para completar el onboarding —y para trabajar a diario— necesitas al menos rol Developer en el repo, o que el proyecto esté compartido con tu grupo. Si te sale ese error, pídeselo a tu TL/Infra. Ver repo-sandbox.

Antes de nada: la terminal y cómo seguir este tutorial​

Si nunca abriste una terminal, empieza aquí — no hace falta experiencia previa. La terminal (o línea de comandos) es una app donde escribes órdenes de texto y el Mac las ejecuta. Es la herramienta principal de esta guía.

  • Abrirla: pulsa Cmd + Espacio (Spotlight), escribe Terminal y pulsa Enter. Más adelante instalarás Warp, la terminal por defecto de Wiedii, y usarás esa.
  • El prompt: verás una línea que termina en % (o $) esperando tu orden. Ahí escribes.
  • Ejecutar un comando: copia una línea, pégala en la terminal (Cmd + V) y pulsa Enter.
  • Los bloques de código de esta guía suelen tener varias líneas = varios comandos: ejecútalos uno por uno, en orden, salvo que se indique lo contrario. Las líneas que empiezan con # son comentarios (explicaciones), no se ejecutan.
  • Las contraseñas son invisibles: cuando un comando te pida una contraseña o passphrase, no verás nada mientras escribes (ni puntos ni asteriscos). Es normal — escribe y pulsa Enter.

Cómo crear o editar un archivo de configuración​

Varios pasos de esta guía crean o editan archivos de configuración. Muchos empiezan con un punto (~/.zshrc, ~/.ssh/config) y por eso están ocultos por defecto. Tienes dos formas — usa la que te resulte más cómoda:

Opción A — Terminal con nano (recomendada; sirve para todos los archivos de esta guía):

  1. Abre la terminal (Warp).
  2. Escribe nano seguido de la ruta del archivo. Si el archivo no existe, se crea al guardar:
    nano ~/.zshrc
  3. Dentro de nano, escribe o pega el contenido.
  4. Guarda con Ctrl + O y luego Enter.
  5. Sal con Ctrl + X.

Algunos pasos usan en su lugar un bloque cat > archivo << 'EOF' … EOF: eso crea el archivo completo de una sola vez desde la terminal — copia y pega el bloque entero (desde cat hasta el EOF final) y pulsa Enter. Si prefieres, puedes crear ese mismo archivo con nano y pegar solo el contenido de adentro.

Opción B — Finder (con archivos ocultos visibles):

  1. Abre Finder.
  2. Pulsa Cmd + Shift + . (punto) para mostrar los archivos ocultos — los que empiezan con . aparecen, algo más tenues. (Es un interruptor: pulsa otra vez para volver a ocultarlos.)
  3. Para ir directo a una carpeta por su ruta: Cmd + Shift + G, escribe la ruta (p. ej. ~/.config) y pulsa Enter.
  4. Abre el archivo con tu editor (con VS Code: clic derecho → Abrir con → Visual Studio Code). Para crear un archivo nuevo desde cero es más simple la Opción A.

💡 Cuando un paso diga "crea/edita ~/ruta/archivo", vuelve aquí si no recuerdas cómo. Toda esta guía asume la Opción A (terminal + nano).

Validaciones previas (Fase 0)​

Antes de instalar nada, confirma el estado de la máquina:

echo $SHELL # ✅ /bin/zsh
uname -m # ✅ arm64 (Apple Silicon M1/M2/M3/M4) o x86_64 (Intel)
whoami # tu usuario local

💡 Valida antes de seguir. Cada fase termina con una comprobación (# ✅ ...). Si el resultado no se parece al esperado, no avances: resuelve primero (ver Troubleshooting) o pide ayuda compartiendo la salida de diagnóstico del final.


La filosofía de instalación en Wiedii​

Homebrew instala herramientas del sistema. mise gestiona versiones por proyecto. ⚠️ Cualquier versión de herramienta mencionada en esta guía debe verificarse antes de usarse — puede estar desactualizada. Ver politicas-core.

  • Homebrew — gestor de herramientas del sistema: CLIs, apps de escritorio, utilidades. Nada se instala con curl | bash ni descargando instaladores.
  • mise global (~/.config/mise/config.toml) — runtimes de lenguaje disponibles en todo el sistema (bun, node, python, uv). Se replican en cada máquina nueva.
  • mise por proyecto (mise.toml) — versiones exactas por repo. Sobreescriben el global. mise run setup configura el entorno completo.
  • OrbStack — runtime de contenedores y Kubernetes. Reemplaza a Docker Desktop y Podman (ambos no autorizados).

De un vistazo — qué hace cada herramienta:

HerramientaPara qué sirve en Wiedii
HomebrewInstala herramientas del sistema: Git, glab, OrbStack, VS Code, Warp, utilidades CLI.
miseGestiona versiones de runtimes y herramientas por proyecto.
BunRuntime/gestor JS/TS: instala dependencias y corre scripts.
wietoo-cliAsistente y validador de commits (Conventional Commits). Reemplaza a czg/commitlint.
GitControl de versiones.
Git FlowFlujo estándar de ramas: main, develop, feature/*, release/*, hotfix/*.
glabCLI de GitLab: MRs, pipelines, autenticación.
LefthookCorre validaciones automáticas en cada commit (linters, escaneo de secretos).
OrbStackRuntime de contenedores autorizado.

Ver gestion-herramientas-brew-mise y herramientas-por-rol para la guía completa de herramientas.


Fase 1 — Preparar la máquina​

1.1 Homebrew​

brew --version # verificar si ya está

# Si no está (el único curl | bash de Wiedii — no hay alternativa en macOS):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Apple Silicon (M1/M2/M3/M4):
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile && source ~/.zprofile

1.2 Instalar y configurar mise global​

Instalar mise (gestiona versiones por proyecto) y crear el config global con los runtimes estándar de Wiedii. El bloque cat > … << 'EOF' crea el archivo ~/.config/mise/config.toml de una sola vez — copia y pega el bloque entero (ver Cómo crear o editar un archivo):

brew install mise

mkdir -p ~/.config/mise

cat > ~/.config/mise/config.toml << 'EOF'
[tools]
bun = "1.3.14"
node = "24.16.0"
pnpm = "11.6.0"
python = "3.14.6"
uv = "0.11.21"

[settings]
experimental = true
lockfile = true
all_compile = false
EOF

cd ~/.config/mise && mise install --yes # instalar todos los runtimes globales
cd -

⚠️ mise todavía no está activado en esta terminal — la activación permanente (todas las terminales, vía .zprofile) se configura más adelante, en el paso 1.4. Para que los siguientes comandos ya resuelvan por mise en esta sesión, actívalo temporalmente:

eval "$(mise activate zsh --shims)"

Verificar:

bun --version # ✅ 1.3.14
node --version # ✅ v24.16.0
python --version # ✅ Python 3.14.6

Detalle completo (activación permanente, mise.toml por proyecto, hooks): mise y configuracion-zsh (paso 1.4).

1.3 Herramientas esenciales de desarrollo​

# Flujo de trabajo Git
brew install git git-flow-next

# GitLab CLI — interactuar con gitlab.wiedii.co desde terminal
brew install glab

# Herramientas de terminal — Rust CLIs preferidas + zinit (gestor de plugins del shell, se activa en 1.4)
brew install jq yq bat eza fd ripgrep sd tree starship zinit gping tlrc

# Utilidades base del sistema (Nivel 1 "para todos" en [[herramientas-por-rol]])
# coreutils da gtimeout/gsed que algunos hooks y tareas de mise necesitan en macOS
brew install coreutils htop wget rsync git-filter-repo mas mole

# GPG — firma de commits (se configura en 1.5.1; obligatoria en Wiedii)
brew install gnupg pinentry-mac
# Runtime de contenedores (Docker/Kubernetes) — reemplaza Docker Desktop
brew install orbstack

# Fuente con iconos para la terminal
brew install font-jetbrains-mono-nerd-font

⚠️ Abrir OrbStack manualmente al menos una vez (Spotlight → "OrbStack" → Enter) antes de continuar. Sin este paso el socket Docker no queda configurado y docker context show (más abajo) no va a devolver orbstack. Detalle: orbstack.

# Editor y terminal por defecto
brew install visual-studio-code # editor POR DEFECTO (Zed opcional, por rendimiento)
brew install warp # terminal POR DEFECTO

Editor: VS Code es el por defecto; Zed (brew install zed) se recomienda si quieres más rendimiento a cambio de comodidades como el manejo de git dentro del editor. Terminal: Warp es el por defecto. Lista completa por rol en herramientas-por-rol.

⚠️ Selecciona el Nerd Font en Warp (si no, el prompt se verá con cuadros □ en lugar de iconos): abre Warp → Settings → Appearance → Font → elige "JetBrainsMono Nerd Font". Instalar la fuente con brew no la activa sola; hay que seleccionarla. Detalle en configuracion-editores y herramientas-rust.

✏️ VS Code — desactiva "Format on Save". El formato corre en el commit (el hook re-formatea y re-stagea), así que formatear también en local genera diffs de ida y vuelta. En VS Code: Cmd + , → busca "format on save" → desmárcalo. Detalle y settings.json recomendado en configuracion-editores. (Esto no bloquea commits — es solo para diffs limpios.)

✏️ ¿Cómo se edita un archivo de configuración? Varios pasos más abajo editarás archivos como ~/.zshrc o ~/.ssh/config. Con VS Code instalado, ábrelos desde la terminal con code <ruta> (p. ej. code ~/.zshrc), edita y guarda con Cmd + S. Los archivos que empiezan con . están ocultos en Finder, pero el editor los abre sin problema. Detalles en configuracion-editores.

Verificar instalaciones:

git flow version # ✅ git-flow-next x.y.z
mise --version # ✅ mise x.y.z
glab --version # ✅ glab x.y.z
docker context show # ✅ orbstack

Para la lista completa de herramientas por rol (backend, devops, etc.) ver herramientas-por-rol.

1.4 Configurar el shell (zsh)​

Wiedii usa tres archivos de shell, cada uno con una responsabilidad. Créalos/edítalos con nano (ver Cómo crear o editar un archivo) y copia el contenido completo de cada uno desde configuracion-zsh — está listo para pegar tal cual:

ArchivoQué va ahíCómo abrirlo
~/.zshenvPATH base del sistemanano ~/.zshenv
~/.zprofileActivación de brew, mise, OrbStacknano ~/.zprofile
~/.zshrcPrompt (starship), completions (glab, kubectl…), aliases, typeset -U PATH, GPG_TTYnano ~/.zshrc

⚠️ ~/.zprofile es donde queda la activación permanente de mise (eval "$(mise activate zsh --shims)", incluida en el contenido de configuracion-zsh). El paso 1.2 solo la activó temporalmente para esa terminal; al copiar el .zprofile completo aquí, queda activa en todas las terminales nuevas.

Crea también el tema del prompt — ~/.config/starship.toml. Sin este archivo, tu .zshrc apunta a un prompt que no existe y Starship cae a su estilo por defecto (no el de Wiedii):

nano ~/.config/starship.toml # pega el contenido de la sección de starship de [[herramientas-rust]]

El bloque TOML completo (tema Gruvbox powerline) está en herramientas-rust. Cópialo tal cual.

Después de guardar los cambios, los terminales ya abiertos no se actualizan solos. Cada terminal cargó su configuración al abrirse y no vuelve a leer el archivo automáticamente. Para aplicar los cambios:

exec zsh # recarga el shell actual — ejecutar en CADA terminal abierta
# El alias "reload" hace lo mismo una vez que el config esté cargado

Abrir un terminal nuevo (o ejecutar exec zsh en el actual) y verificar:

echo $SHELL # ✅ /bin/zsh
starship --version # ✅ starship x.y.z
echo $STARSHIP_CONFIG # ✅ /Users/<tu-usuario>/.config/starship.toml
bun --version # ✅ 1.3.14 — confirma que mise quedó activo de forma permanente

El prompt debe verse con el tema Wiedii (segmentos de colores con iconos). Si ves cuadros □, falta seleccionar el Nerd Font en Warp (paso 1.3); si el prompt es el genérico, falta crear ~/.config/starship.toml.

Si tienes varias ventanas o pestañas abiertas, ejecuta exec zsh en cada una. Las sesiones SSH activas también necesitan exec zsh o reconectar. Ver configuracion-zsh para la explicación completa.

1.5 Git — configuración global​

# Identidad — el email debe coincidir con el de tu clave GPG (paso 1.5.1) y tu cuenta GitLab
git config --global user.name "Tu Nombre"
git config --global user.email "tunombre@wiedii.co"

# Merge y rebase
git config --global merge.ff false
git config --global pull.rebase false
git config --global fetch.prune true # limpia refs de ramas ya borradas en GitLab

# Normalización de fin de línea (LF en todo)
git config --global core.autocrlf false
git config --global core.eol lf
git config --global core.ignorecase false

# Módulos Go privados de Wiedii (wietoo vive en el grupo interno wiedii-registry):
# reescribe la URL para autenticar por SSH. Una sola vez por máquina.
git config --global url."git@gitlab.wiedii.co:".insteadOf "https://gitlab.wiedii.co/"

⚠️ La línea insteadOf no es opcional. Sin ella, el mise run setup de la Fase 2 (y de cualquier repo Wiedii que use wietoo) falla al descargar el binario con un error de red/autenticación — es un módulo Go de un repo privado. Ver wietoo-cli (sección "wietoo vive en un repositorio privado").

La lista completa de config git de Wiedii (con explicación de cada valor) está en politicas-core. La firma GPG se configura en el paso siguiente.

1.5.1 Firma de commits con GPG (obligatoria)​

En Wiedii todos los commits y tags deben ir firmados con GPG — aparecen con el badge ✅ Verified en GitLab. gnupg y pinentry-mac ya se instalaron en el paso 1.3. Haz esta configuración completa ahora, antes de tu primer commit: si activas la firma sin la clave lista, cada commit falla con gpg failed to sign the data.

El detalle de cada paso, la renovación de la clave y el troubleshooting completo están en configuracion-gpg. Aquí va la secuencia mínima para dejarlo funcionando y verificado.

1. Genera tu clave (es interactivo). Elige RSA y RSA, tamaño 4096, caducidad 2y, tu nombre, y el mismo email que pusiste en user.email (si no coinciden, GitLab marcará los commits como Unverified):

gpg --full-generate-key

2. Copia el ID de tu clave — es la parte después de rsa4096/ en la línea sec:

gpg --list-secret-keys --keyid-format=long

3. Regístrala en git (reemplaza <TU_ID> por el ID del paso 2):

git config --global user.signingkey <TU_ID>

4. Configura el agente GPG. Primero confirma la ruta de pinentry-mac según tu chip:

which pinentry-mac
# Apple Silicon → /opt/homebrew/bin/pinentry-mac · Intel → /usr/local/bin/pinentry-mac

Crea ~/.gnupg/gpg-agent.conf (el bloque cat > … << 'EOF' lo crea de una vez — ver Cómo crear o editar un archivo). Si tu Mac es Intel, corrige la ruta de pinentry-program:

mkdir -p ~/.gnupg && chmod 700 ~/.gnupg

cat > ~/.gnupg/gpg-agent.conf << 'EOF'
pinentry-program /opt/homebrew/bin/pinentry-mac
use-standard-socket
allow-loopback-pinentry
default-cache-ttl 28800
max-cache-ttl 86400
EOF

gpgconf --kill gpg-agent && gpgconf --launch gpg-agent

GPG_TTY ya quedó exportado en tu .zshrc (paso 1.4). Si abriste esta terminal antes de aplicar el .zshrc, corre exec zsh.

5. Activa la firma automática:

git config --global commit.gpgsign true
git config --global tag.gpgsign true

6. Exporta tu clave pública y regístrala en GitLab (necesario para el badge Verified):

gpg --armor --export <TU_ID>

Copia toda la salida (desde -----BEGIN… hasta -----END…) y pégala en gitlab.wiedii.co → tu perfil → Preferences → GPG Keys → Add key.

7. Verifica que firma de verdad (en un repo temporal, aún no has clonado ninguno):

mkdir -p /tmp/gpg-test && cd /tmp/gpg-test && git init -q
git commit --allow-empty -m "test: verificar firma GPG"
git log --show-signature -1 # ✅ "Good signature from Tu Nombre <tunombre@wiedii.co>"
cd ~ && rm -rf /tmp/gpg-test

Si ves Good signature, la firma funciona. Si falla con gpg failed to sign the data, revisa la ruta de pinentry-program (paso 4) y que GPG_TTY esté exportado — troubleshooting en configuracion-gpg.

1.6 Clave SSH para GitLab​

# Generar si no tienes una (te pedirá un passphrase — ponlo, no lo dejes vacío;
# recuerda: al escribir la passphrase la terminal no muestra nada, es normal)
ssh-keygen -t ed25519 -C "tunombre@wiedii.co"

# Copiar al portapapeles
cat ~/.ssh/id_ed25519.pub | pbcopy

Guardar el passphrase en el Keychain de macOS (el passphrase es la contraseña que protege tu llave privada; al guardarlo, no te lo vuelve a pedir en cada reinicio):

# Carga la llave en el agente y guarda el passphrase en el Keychain
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

Crear/actualizar ~/.ssh/config para que la llave se cargue sola desde el Keychain. Ábrelo con nano ~/.ssh/config (ver Cómo crear o editar un archivo) y pega este contenido:

# ~/.ssh/config
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519

--apple-use-keychain es el flag actual (reemplaza al antiguo -K, deprecado). Con esto + el config, el ssh-agent deja la llave lista, y es la misma llave/agente que VS Code reenvía a un dev container → ahí también funciona sin volver a pedir el passphrase.

Añadirla: https://gitlab.wiedii.co → avatar → Edit profile → SSH Keys → pegar → Add key

ssh -T git@gitlab.wiedii.co # ✅ Welcome to GitLab, @tunombre!

1.7 Configurar y autenticar glab​

Configuración estándar Wiedii (antes de autenticar — usa --global, funciona incluso fuera de un repo):

glab config set --global host gitlab.wiedii.co # CRÍTICO: sin esto glab apunta a gitlab.com y da 401
glab config set --global git_protocol ssh
glab config set --global telemetry false # obligatorio
glab config set --global glamour_style dark
glab config set -h gitlab.wiedii.co git_protocol ssh
glab config set -h gitlab.wiedii.co api_protocol https
glab auth login --hostname gitlab.wiedii.co
# Protocolo: HTTPS
# Token: gitlab.wiedii.co → Edit profile → Access Tokens
# Scopes requeridos: api, read_repository, write_repository
# Validez: máximo 3 meses — cada dev es responsable de rotar su token antes de que expire

glab auth status # ✅ Logged in to gitlab.wiedii.co as @tunombre

glab config get host # ✅ gitlab.wiedii.co
glab config get telemetry # ✅ false
glab config get git_protocol # ✅ ssh

🔐 glab guarda el token en el keychain del sistema. Nunca escribas el token en archivos del vault. Configuración completa (completion en zsh, comandos clave, troubleshooting): glab.


Fase 2 — Tu primer repositorio​

Regla de ubicación: todos los repositorios Wiedii deben vivir en ~/Docker/. Nunca en ~/Documents/, ~/Desktop/ ni cualquier carpeta bajo iCloud — iCloud puede corromper el índice de git y generar conflictos silenciosos.

mkdir -p ~/Docker
git clone git@gitlab.wiedii.co:wildcat/wiedii-dev-onboarding.git ~/Docker/wiedii-dev-onboarding
cd ~/Docker/wiedii-dev-onboarding
mise trust && mise run setup

mise trust va primero. En un clon nuevo el mise.toml no es de confianza y mise no ejecuta tareas de un config no confiable — por eso se confía antes de correr la tarea (no puede ir dentro de setup, sería circular).

mise run setup hace en orden: instala todas las herramientas del mise.toml → ejecuta lefthook install automáticamente (via [hooks].postinstall) → mise lock → bun install si hay package.json. Un comando, entorno completo, funciona para cualquier stack.

# Verificar
mise list # herramientas activas en este directorio
lefthook run pre-commit # ✅ sin errores en repo limpio
bun --version # versión del proyecto (no del sistema global)
git remote -v # ✅ origin → git@gitlab.wiedii.co:wildcat/wiedii-dev-onboarding.git

⚠️ mise.lock puede aparecer como modificado tras mise run setup (el paso mise lock lo regenera). Esto significa que si corres git status, Git lo va a listar como un archivo cambiado — aunque tú no lo hayas editado a mano, el comando mise lock sí escribió en él. En el ejercicio de onboarding tu MR solo debe tocar CONTRIBUTORS.md: no incluyas el lockfile → git restore mise.lock (esto deshace el cambio y deja el archivo como estaba). Si dudas si el cambio debe conservarse, consúltalo con tu TL.

⚠️ Si un hook muestra Update available … Run pip3 install -U checkov, no lo ejecutes. Las versiones de herramientas las controla mise + la config del proyecto; actualizar a mano rompe la reproducibilidad. Si hace falta subir de versión, va por el flujo del equipo.


Fase 3 — El flujo de trabajo diario​

Git Flow con MRs. Como parte del equipo integras siempre vía MR — el push directo a main/develop está reservado a los mantenedores del proyecto. Ver branch-protection.

ℹ️ No todos los repos usan Git Flow. El sandbox de onboarding sí. Pero algunos proyectos Wiedii (p. ej. esta wiki) usan GitHub Flow: una sola rama main y ramas feature/* directamente contra ella, sin develop. Si tu repo real no tiene develop, es GitHub Flow — revisa su README/CONTRIBUTING. El criterio completo está en git-flow.

3.1 Ramas​

RamaPropósitoPush directo
mainProducción❌ Solo MR
developIntegración❌ Solo MR
feature/*Nueva funcionalidad✅ Tu rama
release/*Preparación de release❌ Solo MR
hotfix/*Corrección urgente❌ Solo MR

Formato exacto del nombre de feature/*: feature/<número de tarea>-<máx. 3 palabras> (p. ej. feature/441131-fix-null-id). wietoo check lo valida en el pre-push — regex completa y ejemplos de release/*/hotfix/* en wietoo-cli.

3.2 Inicializar git-flow (una vez por clon)​

git flow init --preset=classic --defaults

# Wiedii usa tags sin prefijo 'v' (1.2.0, no v1.2.0) — ajustar tras init:
git config gitflow.branch.release.tagprefix ""
git config gitflow.branch.hotfix.tagprefix ""

3.3 Ciclo completo de una feature​

# 1. Partir de develop actualizado
git switch develop && git pull origin develop

# 2. Crear rama
git flow feature start 0001-max-tres-palabras

# 3. Trabajar y hacer commits
git add . # mejor aún: añade solo lo que tocaste (p. ej. git add src/archivo.ts)
wietoo commit # wizard: tipo → scope → descripción

# 4. Actualizar desde develop (el preset classic hace rebase automáticamente)
git flow update

# 5. Publicar la rama y abrir la MR en un solo comando
git flow publish \
-o merge_request.create \
-o merge_request.target=develop \
-o "merge_request.title=feat(scope): descripción [#0001]"

El pipeline de CI arranca automáticamente. Si falla, corrige, haz commit y repite git flow publish — la MR se actualiza. Nunca squash — Wiedii usa merge commits.

3.4 Comandos shorthand de git-flow-next​

git flow update # actualiza la rama actual desde su padre (rebase)
git flow publish # publica la rama actual al remote
git flow delete # elimina la rama actual
git flow rename nuevo-nombre # renombra la rama actual
git flow overview # estado completo del repo: ramas, ahead/behind, health

⚠️ Nunca git flow feature finish (ni git flow finish). Hace el merge localmente y se salta la protección de ramas y el CI. El flujo correcto siempre termina en MR — git flow publish + revisión. Detalle: git-flow.


Fase 4 — Tu primera contribución​

git switch develop && git pull origin develop
git flow feature start 0002-onboarding-tunombre

echo "- Tu Nombre (@tunombreusuario) — $(date +%Y-%m-%d)" >> CONTRIBUTORS.md
git add CONTRIBUTORS.md
wietoo commit # type: docs | scope: contributors | description: add tunombre

git flow publish \
-o merge_request.create \
-o merge_request.target=develop \
-o "merge_request.title=docs(contributors): add tunombre to contributors list"

Pide a tu TL que apruebe la MR. MR mergeada = bienvenido al equipo. 🎉

Criterio de éxito del onboarding​

El onboarding está completo cuando tienes:

  • ✅ GitLab autenticado por SSH (ssh -T git@gitlab.wiedii.co)
  • ✅ glab autenticado y configurado (glab config get host → gitlab.wiedii.co, telemetry en false)
  • ✅ Prompt con el tema Wiedii — starship + Nerd Font, sin cuadros □ (paso 1.3/1.4)
  • ✅ Firma GPG funcionando: git log --show-signature -1 muestra Good signature y el commit se ve Verified en GitLab (no Unverified)
  • ✅ insteadOf configurado — se confirma solo si mise run setup bajó wietoo sin error de red/auth
  • ✅ Repo clonado en ~/Docker/
  • ✅ mise activo en zsh; bun, lefthook y wietoo funcionando (wietoo version self)
  • ✅ mise run setup sin errores bloqueantes
  • ✅ Rama feature/<id>-slug creada y commit hecho con wietoo commit
  • ✅ Hooks pasando en el commit
  • ✅ Rama publicada y MR abierta contra develop
  • ✅ TL notificado para revisión

Referencia rápida​

AcciónComando
Actualizar developgit switch develop && git pull origin develop
Nueva featuregit flow feature start <id-descripcion>
Commit interactivowietoo commit
Actualizar rama desde padregit flow update
Publicar + crear MRgit flow publish -o merge_request.create -o merge_request.target=develop -o "merge_request.title=..."
Solo publicar (sin MR)git flow publish
Estado del repogit flow overview
Ver mis MRsglab mr list --author @me
Ver estado del pipelineglab pipeline status

Troubleshooting​

mise run setup falla:

mise trust && mise install --yes
bun install
lefthook install
# Reportar el error exacto al líder a cargo

mise run setup falla al descargar wietoo (error de red / autenticación a GitLab): falta el insteadOf del paso 1.5 — wietoo es un módulo Go de un repo privado. Configúralo (una sola vez por máquina) y reintenta:

git config --global url."git@gitlab.wiedii.co:".insteadOf "https://gitlab.wiedii.co/"
mise run setup

Ver wietoo-cli (sección "wietoo vive en un repositorio privado").

command not found: wietoo: mise no instaló las herramientas del proyecto (o falta el insteadOf de arriba):

mise trust && mise run setup
wietoo version self # ✅

gpg failed to sign the data al hacer commit: GPG quedó a medio configurar (paso 1.5.1):

export GPG_TTY=$(tty)
gpgconf --kill gpg-agent && gpgconf --launch gpg-agent
which pinentry-mac # la ruta debe coincidir con la de ~/.gnupg/gpg-agent.conf

Ver configuracion-gpg.

El pre-commit hook rechaza el commit:

lefthook run pre-commit # ver el error exacto → corregir → git add . → wietoo commit

ssh -T git@gitlab.wiedii.co dice "Permission denied":

ssh-add ~/.ssh/id_ed25519 && ssh -T git@gitlab.wiedii.co

glab auth status muestra error de hostname:

glab auth login --hostname gitlab.wiedii.co

docker no funciona / socket no disponible:

open -a OrbStack # asegurarse de que OrbStack está corriendo

bun no se encuentra fuera del proyecto: correcto y esperado — ver gestion-herramientas-brew-mise.

command not found: bun / command not found: lefthook dentro del proyecto: mise no está activado en tu shell. Actívalo de forma permanente (en .zprofile, igual que el config estándar) y recarga:

echo 'eval "$(mise activate zsh --shims)"' >> ~/.zprofile && exec zsh
bun --version && lefthook --version # ✅

Ver configuracion-zsh.

glab da 401 Unauthorized: token inválido, expirado o sin scopes. Reloguéate con un token nuevo (api, read_repository, write_repository):

glab auth logout --hostname gitlab.wiedii.co
glab auth login --hostname gitlab.wiedii.co

failed to write config: not a Git repository al configurar glab: usaste glab config set sin --global fuera de un repo → glab config set --global telemetry false.

You are not allowed to push code to this project: te falta rol Developer en el repo (con Reporter solo se clona). Pídeselo a tu TL/Infra — ver los prerrequisitos.

no pipeline found al ver el pipeline: no siempre es error tuyo; el sandbox puede no tener pipeline, o no dispararse para esa rama/MR. Abre la MR en GitLab y revisa la pestaña de pipelines; si no hay, consúltalo con tu TL:

glab mr list --author @me
glab mr view <numero-mr> --web

Tabla rápida por síntoma​

ProblemaCausa probableSolución
command not found: bun / lefthookmise no activado en zshecho 'eval "$(mise activate zsh --shims)"' >> ~/.zprofile && exec zsh
401 Unauthorized en glabToken inválido o sin scopesReloguear con token (api, read_repository, write_repository)
failed to write config: not a Git repositoryglab config set sin --global fuera de un repoglab config set --global …
mise.lock modificado tras setupmise run setup regeneró el lockfilegit restore mise.lock (consultar TL si aplica)
You are not allowed to push codeFalta rol DeveloperPedir permiso al TL/Infra
no pipeline foundCI no configurado o no disparadoRevisar MR en GitLab; consultar TL
mise run setup falla al bajar wietooFalta el insteadOf (módulo Go privado)git config --global url."git@gitlab.wiedii.co:".insteadOf "https://gitlab.wiedii.co/"
command not found: wietoomise no instaló las tools / falta insteadOfmise trust && mise run setup
gpg failed to sign the dataGPG a medio configurar (paso 1.5.1)export GPG_TTY=$(tty); gpgconf --kill gpg-agent && gpgconf --launch gpg-agent
Commit sale Unverified en GitLabEmail de la clave ≠ user.email, o falta registrar la públicaRevisar email de la clave + registrarla en GitLab → GPG Keys
Prompt con cuadros □Nerd Font no seleccionado en WarpWarp → Settings → Appearance → Font → JetBrainsMono Nerd Font
Prompt genérico (no el tema Wiedii)Falta ~/.config/starship.tomlCrearlo con el contenido de herramientas-rust
Passphrase SSH "no coincide"Se escribieron dos passphrases distintasReintentar; la terminal no muestra lo que escribes
ssh -T da Permission deniedLlave no cargada o no añadida a GitLabssh-add ~/.ssh/id_ed25519; verificar SSH Keys en GitLab

Antes de pedir ayuda, comparte esta salida​

Esto permite a tu TL o compañero diagnosticar rápido en qué carpeta y rama estás, qué cambios tienes y si mise/glab están listos:

pwd; git status; git branch --show-current; git log --oneline -3
git remote -v
mise list; bun --version; lefthook --version; wietoo version self
glab auth status --hostname gitlab.wiedii.co
git config --global --get user.signingkey; git log --show-signature -1 2>&1 | head -3

Referencia por herramienta​

Esta guía es un script secuencial para el primer día. Si algo se rompe después — ya no estás siguiendo el onboarding paso a paso — esta tabla es la fuente de verdad de cada herramienta, en un solo lugar:

HerramientaPara quéNota de referencia
Homebrew + mise (filosofía)Cuándo usar cada unogestion-herramientas-brew-mise
miseConfig completa, activación, mise.toml por proyectomise
Shell (zsh, zinit, PATH, starship)Los 3 archivos, orden de carga, troubleshootingconfiguracion-zsh
Git — config globalFuente de verdad de cada valor (pull.rebase, GPG, etc.)politicas-core
Firma de commits (GPG)Generar clave, gpg-agent, badge Verifiedconfiguracion-gpg
OrbStackPrimer arranque, dominios .orb.local, Kubernetesorbstack
glab (GitLab CLI)Config estándar, comandos, troubleshootingglab
wietooCommits, validación de ramas, releaseswietoo-cli
Git Flow completoReleases, hotfixes, orden de MRs, GitHub Flowgit-flow
lefthookGit hooks — instalación y configlefthook
Herramientas por rolQué instalar además, según tu rolherramientas-por-rol

Próximos pasos​

RecursoQué aprenderás
herramientas-por-rolHerramientas adicionales según tu rol (backend, devops)
configuracion-zshDetalles completos del setup del shell
SOLID DRY KISSPrincipios de diseño del código Wiedii
gestion-herramientas-brew-miseFilosofía completa de gestión de herramientas
git-flowGit Flow completo: releases, hotfixes, orden de MRs
commitsConventional Commits en profundidad
Catálogo de pluginsSkills de Claude disponibles

Nota para el TL: ver repo-sandbox para preparar el sandbox antes del primer dev.