Skip to content

Repository files navigation

dotfiles

Configuración local extraída de cortex: terminal, shell, prompt, helpers de AI CLI y herramientas de desarrollo para macOS, con un primer perfil Home Manager para Linux headless.

CI

GitHub Actions ejecuta un smoke check mínimo en pull requests y pushes a main: sintaxis Zsh/Fish/Bash, el harness aislado de Fish, JSON con jq, TOML con python3/tomllib, y ./install.sh --check cuando el instalador lo soporte.

Stack

  • Terminal: Ghostty y Alacritty
  • Shell: Zsh nativo de macOS + profile Fish core opt-in (W2)
  • Prompt: Starship — tema Gruvbox Dark
  • Multiplexor: tmux + helpers de sesión
  • Barra macOS: SketchyBar con tema Gruvbox
  • Window manager macOS: yabai + skhd opcional y gradual
  • Keyboard remaps macOS: Karabiner-Elements con profile cortex
  • Editor terminal: Neovim basado en LazyVim/Gentleman.Dots con overlay RefactorIA
  • Ls: eza
  • AI CLI UX: Claude Code statusline, OpenCode helpers y cmux local/remoto
  • Workflow docs: cmux workflow, Herdr workflow y keymaps prácticos
  • Supply-chain guardrails: defaults globales para uv, npm, pnpm y bun
  • Fuente: FiraCode Nerd Font + variante custom RefactorIA

Instalación

macOS

mkdir -p ~/.cortex
git clone <repo-url> ~/.cortex/cortex-dotfiles
cd ~/.cortex/cortex-dotfiles
bash install.sh

Para auditar el entorno sin instalar paquetes ni modificar archivos:

bash install.sh --check

Para previsualizar lo que haría la instalación sin mutar archivos, instalar paquetes, arrancar servicios ni crear local/env.zsh:

bash install.sh --dry-run

El instalador macOS:

  1. Instala dependencias via Homebrew (cmux, starship, tmux, lazygit, neovim, eza, sketchybar, yabai, skhd, Karabiner-Elements, FiraCode Nerd Font)
  2. Hace backup de configs existentes con timestamp
  3. Crea symlinks de los dotfiles y guardrails globales (.npmrc, pnpm/rc, .bunfig.toml, uv.toml)
  4. Intenta seleccionar el profile cortex de Karabiner si karabiner_cli está disponible
  5. Intenta arrancar/recargar sketchybar, yabai y skhd sin cortar la instalación si macOS requiere permisos
  6. Crea local/env.zsh desde el template

Home Manager: límites y validación

La Flake declara configuraciones puras para macOS y Linux como parte de cortex-dotfiles #58. Esta unidad no instala Nix, no activa Home Manager, no cambia el login shell y no modifica archivos del host. flake.lock ya está versionado y las comprobaciones no lo escriben.

Camino rápido para Linux headless

Objetivo: Ubuntu 24.04 x86_64 con el perfil homeConfigurations.jbarbat-linux.

  1. Use un checkout limpio; no actualice un checkout remoto existente en el lugar.

  2. Instale Nix fuera de este repositorio y verifique sus inputs ya bloqueados localmente.

  3. Ejecute las comprobaciones de solo lectura:

    bash scripts/nix-preflight.sh
    bash scripts/test-nix-preflight.sh
    bash -n scripts/nix-preflight.sh scripts/test-nix-preflight.sh
  4. Espere la verificación independiente antes de cualquier activación. La instalación, home-manager switch, nix run ... switch, chsh y servicios quedan fuera de esta entrega.

El preflight selecciona solamente Darwin arm64 o Linux x86_64, usa --offline y --no-write-lock-file. En una máquina sin Nix termina con estado no cero de forma esperada y sin cambios. Rechaza sistemas o arquitecturas no soportados.

Configuraciones y ownership

Área Decisión
macOS homeConfigurations.jbarbat conserva aarch64-darwin, /Users/jbarbat y la compatibilidad existente.
Linux La configuración pura para Linux es homeConfigurations.jbarbat-linux: usa x86_64-linux, /home/jbarbat y declara solo fish y starship como runtime mínimo.
Fish compartido Home Manager mapea cada archivo declarado de forma explícita; no gestiona el directorio completo, historial ni variables Fish.
Override privado ~/.config/fish/conf.d/99-local.fish sigue siendo del host, queda fuera del store y no se lee ni crea.
Links no declarados Los links o archivos previos sin declarar permanecen bajo ownership del host; esta entrega no elimina nada.
Zsh Permanece disponible como rollback; no se cambia el shell de login.

Linux excluye screenshots y clipboard (_screenshots_*, _time_ago, ss, last, ssd, imgclip y ccclip). No instala backends gráficos ni gestiona funciones macOS. También están fuera de alcance Yabai, scripting addition/SIP/Dock, skhd, SketchyBar, Karabiner, tmux, Ghostty, herramientas X11/Wayland y flujos de permisos o servicios macOS.

Rollback

Antes de una activación no existe estado de host que revertir. Después de una futura activación, el límite de rollback es el perfil homeConfigurations.jbarbat-linux y los archivos Fish explícitamente declarados; Zsh y 99-local.fish permanecen fuera de ese límite. No elimine overrides privados ni links no declarados.

Fish core profile (W2)

W2 agrega un profile Fish inerte y opt-in: no cambia el login shell, no activa Home Manager, no toca starship.toml ni crea 99-local.fish.

Uso seguro

  1. Copiá fish/conf.d/99-local.fish.example a ~/.config/fish/conf.d/99-local.fish si necesitás paths o editor locales.
  2. Mantené ese archivo fuera de Git: carga después de los defaults rastreados.
  3. Probá el profile en una sesión Fish; Zsh permanece sin cambios.
Área Owner en W2
fish/conf.d/10-core.fish y fish/functions/*.fish Fuentes rastreadas de Fish
~/.config/fish/conf.d/99-local.fish Host; override privado no gestionado
Home Manager Mapea cada fuente Fish explícitamente; no gestiona el directorio completo, historial ni variables Fish
Starship Inicialización solo interactiva y cuando el comando existe; su TOML sigue fuera de este profile

El core incluye defaults de entorno, selección de editor, aliases Git/navegación y dev, barbat, innit con sus destinos relacionados (innit-apis, innit-mobile, innit-webs, innit-pcsoft), además de la navegación simple con cowork, personal, tools, worktrees y work. La creación, gestión y protecciones de Git worktrees siguen diferidas para W3+, junto con Git/SSH identities, PCSoft, tmux, screenshots, Herdr y helpers de agentes.

Para validar sin tocar configuración real:

/opt/homebrew/bin/fish fish/tests/w2-core.fish

La evaluación Nix permanece diferida: esta unidad no genera flake.lock ni ejecuta activación.

Helpers Fish: Git, PCSoft y worktrees (W3)

W3 suma helpers Fish opt-in para identidades Git, protección de archivos PCSoft y worktrees; no crea ~/.ssh/config, no clona durante la configuración y no modifica la identidad global de Git.

Uso seguro

  1. Copiá fish/conf.d/99-local.fish.example a tu 99-local.fish privado y definí las cuatro variables GIT_*_NAME y GIT_*_EMAIL.
  2. En un repositorio, usá git-workdev o git-personaldev; si falta un valor privado, el helper falla antes de cambiar la configuración local o el remote.
  3. Usá clone-workdev o clone-personaldev solo cuando quieras clonar: enrutan la URL mediante github-workdev o github-personaldev.
Área Interfaz rastreada Estado privado del host
Identidades Git git-workdev, git-personaldev, git-whoami, clone-* y aliases SSH github-workdev / github-personaldev nombre, email, claves y ~/.ssh/config
PCSoft is-pcsoft-forbidden, is-pcsoft-editable, edit IDE Windows y estado del proyecto
Worktrees wtadd, wtlist, wtremove; wtadd bloquea repos PCSoft antes de mutar directorios de worktree y procesos locales

edit rechaza extensiones PCSoft prohibidas y pide confirmación para las editables. wtremove elimina solamente el worktree nombrado: verificá wtlist antes de usarlo. Home Manager mapea cada función explícitamente; no administra el directorio completo, claves, remotes, historial ni variables privadas.

Para validar sin tocar identidades reales ni la red:

/opt/homebrew/bin/fish fish/tests/w3-helpers.fish

Helpers Fish: screenshots (W4b)

W4b agrega ss, last, ssd e imgclip sin capturar la pantalla ni leer el clipboard durante la carga. SCREENSHOTS_DIR usa el override solo si apunta a un directorio existente; si no, conserva el fallback de macOS: ~/Screenshots cuando existe y luego ~/Desktop. Home Manager mapea cada función explícitamente y no administra el directorio, screenshots ni clipboard del host.

Para validar con HOME, PATH y comandos macOS falsos aislados:

/opt/homebrew/bin/fish fish/tests/w4b-screenshots.fish

Helpers Fish de agentes (W6)

ADVERTENCIA: por elección explícita del owner, cc ejecuta Claude Code con --dangerously-skip-permissions y oc/ocb ejecutan OpenCode con --auto; estos shortcuts intencionalmente omiten o autoaprueban permisos. W6 agrega cc, oc, ocb, ccx, ccd y ccclip como helpers Fish opt-in en el directorio validado; ccx entrega el contexto por stdin y ccclip escribe al clipboard solo al invocarse. No incluye ccb.

Área Owner en W6
Helpers y soporte privado fish/functions/{_cortex_resolve_target,_cortex_run_agent,cc,oc,ocb,ccx,ccd,ccclip}.fish
Home Manager Mapea cada una de esas funciones de forma explícita; no administra binarios de agentes, clipboard, worktrees, estado, historial ni configuración de proveedores

Para validar con agentes y clipboard falsos aislados:

/opt/homebrew/bin/fish fish/tests/w6-agent-helpers.fish

Estructura

dotfiles/
├── claude/                   # Claude Code statusline
├── docs/                     # Referencias operativas y keymaps
├── ghostty/                  # Config Ghostty, muxy legado y shaders
├── fonts/                    # Fuente RefactorIA y script de regeneración
├── npm/                      # Global npm defaults (~/.npmrc)
├── pnpm/                     # Global pnpm defaults (~/Library/Preferences/pnpm/rc)
├── bun/                      # Global bun defaults (~/.bunfig.toml)
├── uv/                       # Global uv defaults (~/.config/uv/uv.toml)
├── zsh/
│   ├── zshrc                 # Bootstrap: dotfiles primero, Cortex al final (~/.zshrc)
│   ├── cortex-dotfiles.zsh   # Entrypoint propio del profile de dotfiles
│   └── scripts/
│       ├── claude-helpers.zsh   # Integración Claude Code
│       ├── cmux-sidebar-refresh.sh # Metadata Cortex para cmux
│       ├── ssh-helpers.zsh      # cmux SSH y SSH convencional
│       ├── git-helpers.zsh      # Identidades Git y clone helpers
│       ├── tmux-helpers.zsh     # Helpers tmux
│       ├── worktree-helpers.zsh # Helpers git worktree
│       ├── screenshots.zsh      # Manejo de screenshots macOS
│       └── pcsoft-helpers.zsh   # Protección archivos PCSoft
├── tmux/                     # Config tmux
├── lazygit/                  # Config lazygit
├── karabiner/                # Config Karabiner-Elements (~/.config/karabiner/karabiner.json)
├── nvim/                     # Notas de configuración Neovim RefactorIA
├── sketchybar/               # Barra macOS y plugins
├── yabai/                    # Window manager macOS opcional
├── skhd/                     # Hotkeys macOS para yabai
├── starship/
│   └── starship.toml         # Prompt (~/.config/starship.toml)
├── local/
│   └── env.zsh.example       # Template de config local (gitignored)
└── install.sh

Nota migración cmux: el path legacy ~/Library/Application Support/com.cmuxterm.app/config.ghostty ya no está gestionado por estos dotfiles. Si todavía existe en tu máquina, podés borrarlo manualmente sin afectar la configuración actual.

Boundary con Cortex

Este repo sigue siendo standalone: install.sh no requiere tener Cortex instalado. Administra el entrypoint fijo ~/.config/cortex-dotfiles/shell/cortex-dotfiles.zsh, sus archivos enlazados y las variables CORTEX_DOTFILES_* documentadas acá.

El bootstrap carga dotfiles primero y después intenta cargar ~/.cortex/shell/cortex.zsh. Esa segunda ruta y las variables core que exponga pertenecen a Cortex; este repo solo las consume. Ambos fragments son opcionales y un error en uno no impide intentar cargar el otro.

La coordinación vigente del contrato shell se sigue en cortex #1259. Las migraciones de artefactos actualmente versionados en este repo se tratan por separado en cortex-dotfiles #31.

Especificaciones

  • Cortex Agent State v1: contrato cortex.agent_state.v1 para normalizar estados de agentes hacia Herdr, statuslines, SketchyBar y notificaciones.

Comandos principales

Comando Descripción
gs, ga, gc, gp, gl Git shortcuts
dev, barbat, cowork, personal, tools, worktrees Navegación rápida en ~/dev
work, innit, innit-apis, innit-mobile, innit-webs, innit-pcsoft Navegación rápida de trabajo
dotfiles Navegación rápida al repo de dotfiles
cc [path] Abrir Claude Code
oc [path] Abrir OpenCode
ccclip <files> Copiar código al clipboard
tcc, tdev, ta, tn, tl, tk Helpers tmux (tcc abre Claude Code en tmux)
wtadd, wtlist, wtremove Helpers de git worktrees
sshx, sshc, sshx-doctor cmux SSH persistente, SSH convencional y diagnóstico
cortex.agent_state.v1, agent-state Reportar/listar estado local de agentes Cortex y, dentro de Herdr, actualizar el pane actual
ss [n] Listar últimos screenshots
last [-c|-o] Último screenshot
ll, la, lt Listar archivos (eza)
ep Editar este profile
reload Recargar zsh
refactoria Mostrar el logo RefactorIA en Braille Unicode
help-profile Ver todos los comandos

Personalización

Editá local/env.zsh (gitignored) para configurar:

  • SCREENSHOTS_DIR — directorio de screenshots
  • WORKSPACE_DIR — directorio raíz de tus proyectos
  • BARBATDEV_DIR — repos de barbatdev, por defecto $WORKSPACE_DIR/barbatdev
  • WORK_PROJECTS_DIR — repos de trabajo, por defecto $WORKSPACE_DIR/innit-sas
  • PERSONAL_PROJECTS_DIR — repos locales, por defecto $WORKSPACE_DIR/local
  • TOOLS_DIR y WORKTREES_DIR — herramientas locales y worktrees
  • CORTEX_DOTFILES_DIR — repo fuente de dotfiles, por defecto $BARBATDEV_DIR/cortex/cortex-dotfiles
  • CORTEX_DOTFILES_MULTIPLEXER — fallback standalone para helpers, por defecto cmux; CORTEX_MULTIPLEXER de Cortex tiene precedencia
  • OPENCODE_DEFAULT_FLAGS — flags por defecto para oc
  • INNIT_DIR y overrides INNIT_*_DIR — raíz y subdirectorios apis, mobile, webs y pcsoft
  • Aliases y paths personales

Herdr remoto

Referencia completa: Herdr workflow. Atajos prácticos: keymaps.

El profile Fish también expone h, hs, hl, hhere, hmain, hrole, hnew, hfocus, hside, hscratch, hname, whereami, sshc, sshx y sshx-doctor; Home Manager mapea cada función de forma explícita.

Usá hremote desde tu terminal local en macOS. No hagas ssh primero y después intentes levantar herdr dentro de esa sesión remota.

  • Para pegar una imagen del clipboard local en la terminal remota, usá Ctrl+V por defecto (no Cmd+V).
  • herdr --remote puentea ese pegado copiando la imagen a un archivo temporal remoto y pegando el path resultante en la shell remota.
  • Una sesión SSH normal no puede leer el clipboard del escritorio local de macOS, así que ese flujo depende de Herdr corriendo del lado local.
  • Para archivos que no sean imágenes del clipboard, puede seguir haciendo falta un fallback separado de transferencia.

SketchyBar

La config macOS enlaza sketchybar/ en ~/.config/sketchybar. El diseño es sobrio, notch-safe y usa la paleta dark/green de InnIT.

Layout activo:

Pantalla Uso Layout
Mac Retina (display=1) apps generales: Discord, WhatsApp, Mail, Postman, Zen Browser app activa + network, volumen, calendario, hora, batería
ViewSonic vertical (display=2) auxiliar/random, Ghostty/Herdr y Claude de formato vertical brand + panel/spaces + app activa; derecha: RAM + CPU + hora
LG Ultrawide (display=3) mixto: Ghostty/Herdr, Claude, ChatGPT, Obsidian brand + panel/spaces + app activa; derecha: RAM + CPU + hora
4K derecho (display=4) Ghostty/Herdr exclusivo brand + panel/spaces + app activa; derecha: RAM + CPU + hora

El centro queda libre para evitar el notch y reducir ruido visual.

Interacciones:

Item Acción
Glyph RefactorIA abre ~/dev
Spaces enfocan el space si yabai está corriendo
Volumen mute/unmute
Batería abre Battery Settings
Fecha/hora abre Calendar

La barra asume Mac con notch y varios monitores: el centro queda libre y evita widgets de contexto remoto (git, issue/PR, SDD, brains, timer), porque el trabajo operativo corre en Herdr remoto.

El layout cambia automáticamente al recargar SketchyBar: con un solo display, el Retina mantiene los indicadores de estado útiles; con varios displays, el Retina queda liviano y el layout completo se mueve al externo disponible.

Si macOS deja monitores externos como Online aunque estén desconectados, se puede forzar perfil con:

~/.config/sketchybar/sketchybar-profile.sh portable
~/.config/sketchybar/sketchybar-profile.sh office
~/.config/sketchybar/sketchybar-profile.sh auto

La separación global de ventanas queda desactivada en yabai (top_padding=0, bottom_padding=0, left_padding=0, right_padding=0, window_gap=0) para evitar márgenes persistentes después de reiniciar.

El instalador intenta activarla automáticamente. Si macOS bloquea el servicio o querés hacerlo manualmente:

brew services start sketchybar

Para recargar cambios manualmente:

sketchybar --reload

yabai + skhd

Atajos resumidos junto al resto del stack: keymaps.

La configuración base es gradual: mantiene el tiling y la navegación por teclado sin scripting addition ni preparación parcial de SIP. La integración avanzada mediante scripting addition es opcional; si no está disponible, yabai conserva su configuración normal.

Scripting addition opcional

Cuando la preparación previa está disponible, yabai/yabairc intenta cargar la scripting addition con sudo -n. La preparación parcial de SIP, NVRAM y sudoers es manual y este repositorio deliberadamente no la automatiza ni solicita credenciales. Consulte las instrucciones oficiales de SIP de yabai para los requisitos y comandos vigentes.

Si la carga protegida falla —por ejemplo, porque falta la autorización no interactiva— yabai continúa con la configuración base y no registra la señal de Dock. Solo una carga inicial satisfactoria registra una señal dock_did_restart; cada reinicio posterior de Dock ejecuta una única recarga no interactiva.

Verificación acotada después de cargar yabai:

test -S "/tmp/yabai-sa_${USER}.socket"
yabai -m signal --list | grep 'dock_did_restart'

El socket debe existir y la lista debe incluir una sola señal dock_did_restart con una acción sudo -n de carga. Después de un único reinicio manual de Dock, confirme que la señal sigue siendo única y pruebe una capacidad avanzada reversible dependiente de la scripting addition; restaure inmediatamente el estado previo de esa prueba. Para revertir la integración, restaure la versión anterior de yabai/yabairc, reinicie el servicio de yabai y revierta la preparación manual del sistema siguiendo la documentación oficial.

El instalador crea symlinks en ambas rutas de configuración: ~/.config/yabai/yabairc y ~/.yabairc para yabai, ~/.config/skhd/skhdrc y ~/.skhdrc para skhd. Se mantienen las rutas legacy porque los launch services de yabai/skhd leen esas ubicaciones por defecto.

Decisiones:

Tema Decisión
Leader Option + Command
Scripting addition Opcional; usa autorización no interactiva ya preparada
Raycast Evitar shortcuts con Option + Command para reducir colisiones
Apps flotantes System Settings, Calculator, Activity Monitor y diálogos de Finder
SketchyBar Los spaces de la barra usan yabai si está disponible

El instalador intenta arrancar o recargar estos servicios automáticamente después de enlazar la configuración. Activación manual de fallback:

yabai --start-service
skhd --start-service

Para detenerlos:

yabai --stop-service
skhd --stop-service

Si macOS bloquea los servicios, habilitá permisos en:

System Settings → Privacy & Security → Accessibility

Binarios a permitir:

/opt/homebrew/bin/yabai
/opt/homebrew/bin/skhd

Atajos principales (option + command):

Atajo Acción
Option + Command + Left/Down/Up/Right Focus izquierda/abajo/arriba/derecha
Option + Command + Shift + Left/Down/Up/Right Mover ventana en el layout
Option + Command + 1..9 Ir al space
Option + Command + Shift + 1..9 Mover ventana al space y seguirla
Option + Command + f Flotar/desflotar ventana
Option + Command + b Balancear layout
Option + Command + r Resetear gap a cero + balance + recargar SketchyBar
Option + Command + / Mostrar ayuda de atajos
Option + Command + Shift + r Recargar yabai/skhd/sketchybar

Notas de uso:

  • Option es la tecla que macOS también llama Alt.
  • El bloque dev de SketchyBar también abre la ayuda de atajos con click.
  • Algunos comandos no hacen nada si no hay una ventana gestionada por yabai o si no existe una ventana vecina en esa dirección.
  • Si Raycast usa el mismo shortcut, deshabilitá ese hotkey en Raycast o cambialo para dejar Option + Command a skhd.
  • Para recargar cambios manualmente: skhd --reload && yabai --restart-service && sketchybar --reload.

Karabiner-Elements

La config enlaza karabiner/karabiner.json en ~/.config/karabiner/karabiner.json y define un profile default llamado cortex.

Remap incluido:

Tecla Acción
Caps Lock tap Escape
Caps Lock hold Left Control
Right Command Delete backward

El instalador instala karabiner-elements via Homebrew cask si no encuentra karabiner_cli ni la app, hace backup del JSON existente y crea el symlink. Si karabiner_cli está disponible, intenta seleccionar el profile cortex como best-effort.

macOS puede requerir permisos en:

System Settings → Privacy & Security → Input Monitoring
System Settings → Privacy & Security → Accessibility

Después de instalar o cambiar permisos, puede hacer falta abrir o reiniciar Karabiner-Elements para que cargue la config versionada.

Fuente RefactorIA

El prompt usa una variante local de FiraCode Nerd Font Mono con el glyph de la barba de RefactorIA en el Private Use Area.

Dato Valor
Family FiraCode Nerd Font Mono Beard
Archivo instalado ~/Library/Fonts/FiraCodeNerdFontMonoBeard-Reg.ttf
Codepoint U+F0F00
Glyph test python3 -c 'print("\U000F0F00")'

La config de Starship usa este glyph PUA directamente. Si la terminal no tiene seleccionada FiraCode Nerd Font Mono Beard, el prompt puede mostrar un cuadrado/tofu en lugar de la barba. En macOS, install.sh instala la fuente y deja configurado Ghostty con esa family.

Para regenerar la fuente:

mkdir -p ~/Downloads/refactoria/build
magick ~/Downloads/refactoria/RefactorIA.png -threshold 50% -negate ~/Downloads/refactoria/build/refactoria.bmp
potrace ~/Downloads/refactoria/build/refactoria.bmp -s -o ~/Downloads/refactoria/build/refactoria.svg
fontforge -script fonts/patch_beard.py \
  --font ~/Library/Fonts/FiraCodeNerdFontMono-Regular.ttf \
  --svg ~/Downloads/refactoria/build/refactoria.svg \
  --output-dir ~/Downloads/refactoria/build
cp ~/Downloads/refactoria/build/FiraCodeNerdFontMonoBeard-Reg.ttf ~/Library/Fonts/

One-liner para renderizar el glyph con Pillow:

python3 - <<'PY'
from PIL import Image, ImageDraw, ImageFont
font = ImageFont.truetype('~/Library/Fonts/FiraCodeNerdFontMonoBeard-Reg.ttf', 64)
img = Image.new('RGB', (128, 128), 'black')
draw = ImageDraw.Draw(img)
draw.text((32, 24), '\U000F0F00', font=font, fill='white')
img.save('/tmp/refactoria-glyph.png')
PY

Marca RefactorIA en terminal

El comando refactoria imprime una versión Braille Unicode del logo. Es intencionalmente bajo demanda para no meter ruido visual en cada shell nueva.

refactoria

Uso recomendado:

  • screenshots o demos donde conviene una marca visual sin depender de imágenes
  • intros manuales antes de grabar o compartir una terminal
  • banners puntuales en scripts propios, siempre que no tapen output útil

No usarlo como banner automático del shell por defecto. En sesiones de trabajo largas, el prompt con el glyph 󰼀 ya cumple la función de marca permanente con menos ruido.

Guardrails globales

El setup instala estas protecciones globales para reducir riesgo de supply-chain:

  • ~/.npmrc
    • min-release-age=7
    • ignore-scripts=true
  • ~/Library/Preferences/pnpm/rc
    • minimum-release-age=10080 (7 días en minutos)
    • strict-dep-builds=true
    • block-exotic-subdeps=true
    • trust-policy=no-downgrade
  • ~/.bunfig.toml
    • minimumReleaseAge = 604800
  • ~/.config/uv/uv.toml
    • exclude-newer = "7 days"

Además, la política operativa recomendada es:

  • evitar upgrades accidentales o implícitos de dependencias
  • preferir versiones pinneadas y lockfiles cuando el proyecto lo justifique
  • evitar latest y ejecuciones runtime no revisadas salvo necesidad explícita
  • hacer upgrades de dependencias en cambios/PRs dedicados, no mezclados con features

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages