Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ jobs:
- name: Check Cortex shell integration
run: ./scripts/check-cortex-shell-integration.sh

- name: Check navigation shortcuts
run: ./scripts/check-navigation-shortcuts.sh

- name: Validate TOML configs
shell: bash
run: |
Expand Down
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ Seguimiento: [cortex-dotfiles #31](https://github.com/barbatdev/cortex-dotfiles/
|---------|-------------|
| `gs`, `ga`, `gc`, `gp`, `gl` | Git shortcuts |
| `dev`, `barbat`, `cowork`, `personal`, `tools`, `worktrees` | Navegación rápida en `~/dev` |
| `work`, `work-apis`, `work-mobile`, `work-webs`, `work-pcsoft` | Navegación rápida de trabajo |
| `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 |
Expand All @@ -145,11 +145,15 @@ Seguimiento: [cortex-dotfiles #31](https://github.com/barbatdev/cortex-dotfiles/
Editá `local/env.zsh` (gitignored) para configurar:
- `SCREENSHOTS_DIR` — directorio de screenshots
- `WORKSPACE_DIR` — directorio raíz de tus proyectos
- `CORTEX_DOTFILES_DIR` — repo dotfiles, por defecto `$BARBATDEV_DIR/cortex/cortex-dotfiles`
- `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_SHELL_ENTRYPOINT` — override del entrypoint propio, por defecto `~/.config/cortex-dotfiles/shell/cortex-dotfiles.zsh`
- `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` — navegación rápida de subdirectorios
- `INNIT_DIR` y overrides `INNIT_*_DIR` — raíz y subdirectorios `apis`, `mobile`, `webs` y `pcsoft`
- Aliases y paths personales

## Herdr remoto
Expand Down
18 changes: 10 additions & 8 deletions local/env.zsh.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,19 @@
# export WORKSPACE_DIR="$HOME/dev"

# Raíz real de repos en Linux/agent-dev.
# export BARBATDEV_DIR="$WORKSPACE_DIR/barbatdev"
# export BARBATDEV_DIR="${WORKSPACE_DIR:-$HOME/dev}/barbatdev"

# Configuración propia de cortex-dotfiles.
# export CORTEX_DOTFILES_DIR="$BARBATDEV_DIR/cortex/cortex-dotfiles"
# export CORTEX_DOTFILES_SHELL_ENTRYPOINT="$HOME/.config/cortex-dotfiles/shell/cortex-dotfiles.zsh"

# Proyectos personales
# export PERSONAL_PROJECTS_DIR="$BARBATDEV_DIR/products"
# export PERSONAL_PROJECTS_DIR="${WORKSPACE_DIR:-$HOME/dev}/local"
# export TOOLS_DIR="$PERSONAL_PROJECTS_DIR/tools"
# export WORKTREES_DIR="${WORKSPACE_DIR:-$HOME/dev}/worktrees"

# Proyectos de empresa/org
# export WORK_PROJECTS_DIR="$BARBATDEV_DIR/innit"
# export WORK_PROJECTS_DIR="${WORKSPACE_DIR:-$HOME/dev}/innit-sas"

# Directorio de screenshots
# export SCREENSHOTS_DIR="$HOME/Screenshots"
Expand All @@ -27,11 +29,11 @@
# export CORTEX_DOTFILES_MULTIPLEXER="cmux"

# Navegación rápida para proyectos de una organización/equipo
# export INNIT_DIR="$BARBATDEV_DIR/innit"
# export INNIT_APIS_DIR="$INNIT_DIR"
# export INNIT_MOBILE_DIR="$INNIT_DIR"
# export INNIT_WEBS_DIR="$INNIT_DIR"
# export INNIT_PCSOFT_DIR="$INNIT_DIR"
# export INNIT_DIR="$WORK_PROJECTS_DIR"
# export INNIT_APIS_DIR="$INNIT_DIR/apis"
# export INNIT_MOBILE_DIR="$INNIT_DIR/mobile"
# export INNIT_WEBS_DIR="$INNIT_DIR/webs"
# export INNIT_PCSOFT_DIR="$INNIT_DIR/pcsoft"

# Tokens y API keys para cualquier LLM (nunca en el repo)
# export ANTHROPIC_API_KEY="tu-key-aqui"
Expand Down
60 changes: 60 additions & 0 deletions scripts/check-navigation-shortcuts.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash
set -euo pipefail

repo_root="$(cd "$(dirname "$0")/.." && pwd)"
tmp_dir="$(mktemp -d)"
trap 'rm -rf "$tmp_dir"' EXIT

workspace="$tmp_dir/dev"
mkdir -p \
"$workspace/barbatdev/cortex/cortex-dotfiles" \
"$workspace/innit-sas/apis" \
"$workspace/innit-sas/mobile" \
"$workspace/innit-sas/webs" \
"$workspace/innit-sas/pcsoft" \
"$workspace/local/tools" \
"$workspace/worktrees"

env -u BARBATDEV_DIR -u WORK_PROJECTS_DIR -u PERSONAL_PROJECTS_DIR \
-u TOOLS_DIR -u WORKTREES_DIR -u INNIT_DIR -u INNIT_APIS_DIR \
-u INNIT_MOBILE_DIR -u INNIT_WEBS_DIR -u INNIT_PCSOFT_DIR \
-u CORTEX_DOTFILES_DIR WORKSPACE_DIR="$workspace" zsh -f -c '
source "$1" >/dev/null
check_navigation() {
local command="$1"
local expected="$2"
"$command"
[[ "$PWD" == "$expected" ]]
}

check_navigation dev "$WORKSPACE_DIR"
check_navigation barbat "$BARBATDEV_DIR"
check_navigation cowork "$WORK_PROJECTS_DIR"
check_navigation work "$WORK_PROJECTS_DIR"
check_navigation innit "$INNIT_DIR"
check_navigation personal "$PERSONAL_PROJECTS_DIR"
check_navigation tools "$TOOLS_DIR"
check_navigation worktrees "$WORKTREES_DIR"
check_navigation innit-apis "$INNIT_APIS_DIR"
check_navigation innit-mobile "$INNIT_MOBILE_DIR"
check_navigation innit-webs "$INNIT_WEBS_DIR"
check_navigation innit-pcsoft "$INNIT_PCSOFT_DIR"
check_navigation dotfiles "$CORTEX_DOTFILES_DIR"
' _ "$repo_root/zsh/cortex-dotfiles.zsh"

fixture="$tmp_dir/fixture"
mkdir -p "$fixture/zsh" "$fixture/local"
cp "$repo_root/zsh/cortex-dotfiles.zsh" "$fixture/zsh/cortex-dotfiles.zsh"
printf 'export WORKSPACE_DIR=%q\n' "$tmp_dir/custom-workspace" > "$fixture/local/env.zsh"

env -u WORKSPACE_DIR -u BARBATDEV_DIR -u WORK_PROJECTS_DIR \
-u PERSONAL_PROJECTS_DIR -u TOOLS_DIR -u WORKTREES_DIR \
zsh -f -c '
source "$1" >/dev/null
[[ "$WORKSPACE_DIR" == "$2" ]]
[[ "$BARBATDEV_DIR" == "$2/barbatdev" ]]
[[ "$WORK_PROJECTS_DIR" == "$2/innit-sas" ]]
[[ "$PERSONAL_PROJECTS_DIR" == "$2/local" ]]
[[ "$TOOLS_DIR" == "$2/local/tools" ]]
[[ "$WORKTREES_DIR" == "$2/worktrees" ]]
' _ "$fixture/zsh/cortex-dotfiles.zsh" "$tmp_dir/custom-workspace"
80 changes: 41 additions & 39 deletions zsh/cortex-dotfiles.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,6 @@ fi
export VISUAL="$EDITOR"
#endregion

#region Environment Variables
# Workspace principal de desarrollo
export WORKSPACE_DIR="${WORKSPACE_DIR:-$HOME/dev}"
export BARBATDEV_DIR="${BARBATDEV_DIR:-$WORKSPACE_DIR/barbatdev}"
export CLAUDE_CODE_EFFORT_LEVEL=high
export CORTEX_DOTFILES_DIR="${CORTEX_DOTFILES_DIR:-$BARBATDEV_DIR/cortex/cortex-dotfiles}"

# Proyectos de la organización
export WORK_PROJECTS_DIR="${WORK_PROJECTS_DIR:-$BARBATDEV_DIR/innit}"
export PERSONAL_PROJECTS_DIR="${PERSONAL_PROJECTS_DIR:-$BARBATDEV_DIR/products}"
export INNIT_DIR="${INNIT_DIR:-$BARBATDEV_DIR/innit}"

# Screenshots (configurable en local/env.zsh)
export SCREENSHOTS_DIR="${SCREENSHOTS_DIR:-$HOME/Screenshots}"
#endregion

#region Git Aliases
alias g="git"
gs() { git status "$@" }
Expand Down Expand Up @@ -111,19 +95,19 @@ _go_first_existing_dir() {
return 1
}

dev() { _go_dev_dir "$HOME/dev"; }
dev() { _go_dev_dir "$WORKSPACE_DIR"; }
barbat() { _go_dev_dir "$BARBATDEV_DIR"; }
cowork() { _go_first_existing_dir "$WORK_PROJECTS_DIR" "$BARBATDEV_DIR/innit"; }
personal() { _go_first_existing_dir "$PERSONAL_PROJECTS_DIR" "$BARBATDEV_DIR/products"; }
tools() { _go_dev_dir "$BARBATDEV_DIR/tools"; }
worktrees() { _go_dev_dir "$HOME/dev/worktrees"; }
work() { _go_first_existing_dir "$WORK_PROJECTS_DIR" "$BARBATDEV_DIR/innit"; }
innit() { _go_first_existing_dir "$INNIT_DIR" "$BARBATDEV_DIR/innit"; }
innit-apis() { _go_first_existing_dir "${INNIT_APIS_DIR:-$INNIT_DIR}" "$INNIT_DIR"; }
innit-mobile(){ _go_first_existing_dir "${INNIT_MOBILE_DIR:-$INNIT_DIR}" "$INNIT_DIR"; }
innit-webs() { _go_first_existing_dir "${INNIT_WEBS_DIR:-$INNIT_DIR}" "$INNIT_DIR"; }
innit-pcsoft(){ _go_first_existing_dir "${INNIT_PCSOFT_DIR:-$INNIT_DIR}" "$INNIT_DIR"; }
dotfiles() { _go_dev_dir "${_DOTFILES_DIR:-$CORTEX_DOTFILES_DIR}"; }
cowork() { _go_dev_dir "$WORK_PROJECTS_DIR"; }
personal() { _go_dev_dir "$PERSONAL_PROJECTS_DIR"; }
tools() { _go_dev_dir "$TOOLS_DIR"; }
worktrees() { _go_dev_dir "$WORKTREES_DIR"; }
work() { _go_dev_dir "$WORK_PROJECTS_DIR"; }
innit() { _go_dev_dir "$INNIT_DIR"; }
innit-apis() { _go_dev_dir "$INNIT_APIS_DIR"; }
innit-mobile(){ _go_dev_dir "$INNIT_MOBILE_DIR"; }
innit-webs() { _go_dev_dir "$INNIT_WEBS_DIR"; }
innit-pcsoft(){ _go_dev_dir "$INNIT_PCSOFT_DIR"; }
dotfiles() { _go_first_existing_dir "$CORTEX_DOTFILES_DIR" "$_DOTFILES_DIR"; }
#endregion

#region System Aliases
Expand Down Expand Up @@ -252,6 +236,24 @@ _LOCAL_ENV="$_DOTFILES_DIR/local/env.zsh"
[[ -f "$_LOCAL_ENV" ]] && source "$_LOCAL_ENV"
#endregion

#region Environment Variables
# Los overrides locales se cargan antes de calcular rutas derivadas.
export WORKSPACE_DIR="${WORKSPACE_DIR:-$HOME/dev}"
export BARBATDEV_DIR="${BARBATDEV_DIR:-$WORKSPACE_DIR/barbatdev}"
export WORK_PROJECTS_DIR="${WORK_PROJECTS_DIR:-$WORKSPACE_DIR/innit-sas}"
export PERSONAL_PROJECTS_DIR="${PERSONAL_PROJECTS_DIR:-$WORKSPACE_DIR/local}"
export TOOLS_DIR="${TOOLS_DIR:-$PERSONAL_PROJECTS_DIR/tools}"
export WORKTREES_DIR="${WORKTREES_DIR:-$WORKSPACE_DIR/worktrees}"
export INNIT_DIR="${INNIT_DIR:-$WORK_PROJECTS_DIR}"
export INNIT_APIS_DIR="${INNIT_APIS_DIR:-$INNIT_DIR/apis}"
export INNIT_MOBILE_DIR="${INNIT_MOBILE_DIR:-$INNIT_DIR/mobile}"
export INNIT_WEBS_DIR="${INNIT_WEBS_DIR:-$INNIT_DIR/webs}"
export INNIT_PCSOFT_DIR="${INNIT_PCSOFT_DIR:-$INNIT_DIR/pcsoft}"
export CORTEX_DOTFILES_DIR="${CORTEX_DOTFILES_DIR:-$BARBATDEV_DIR/cortex/cortex-dotfiles}"
export SCREENSHOTS_DIR="${SCREENSHOTS_DIR:-$HOME/Screenshots}"
export CLAUDE_CODE_EFFORT_LEVEL="${CLAUDE_CODE_EFFORT_LEVEL:-high}"
#endregion

#region Atuin
# Historial de shell con búsqueda avanzada (reemplaza Ctrl+R)
if command -v atuin &>/dev/null; then
Expand Down Expand Up @@ -301,18 +303,18 @@ help-profile() {

echo "\n${T}Navegación${R}"
echo " ${C}dev ${R}cd ~/dev"
echo " ${C}barbat ${R}cd ~/dev/barbat"
echo " ${C}cowork ${R}cd ~/dev/cowork"
echo " ${C}personal ${R}cd ~/dev/personal"
echo " ${C}tools ${R}cd ~/dev/tools"
echo " ${C}barbat ${R}cd ~/dev/barbatdev"
echo " ${C}cowork ${R}cd ~/dev/innit-sas"
echo " ${C}personal ${R}cd ~/dev/local"
echo " ${C}tools ${R}cd ~/dev/local/tools"
echo " ${C}worktrees ${R}cd ~/dev/worktrees"
echo " ${C}work ${R}cd ~/dev/work"
echo " ${C}innit ${R}cd ~/dev/innit"
echo " ${C}innit-apis ${R}cd ~/dev/innit/apis"
echo " ${C}innit-mobile ${R}cd ~/dev/innit/mobile"
echo " ${C}innit-webs ${R}cd ~/dev/innit/webs"
echo " ${C}innit-pcsoft ${R}cd ~/dev/innit/pcsoft"
echo " ${C}dotfiles ${R}cd ~/dev/personal/dotfiles"
echo " ${C}work ${R}cd ~/dev/innit-sas"
echo " ${C}innit ${R}cd ~/dev/innit-sas"
echo " ${C}innit-apis ${R}cd ~/dev/innit-sas/apis"
echo " ${C}innit-mobile ${R}cd ~/dev/innit-sas/mobile"
echo " ${C}innit-webs ${R}cd ~/dev/innit-sas/webs"
echo " ${C}innit-pcsoft ${R}cd ~/dev/innit-sas/pcsoft"
echo " ${C}dotfiles ${R}cd ~/dev/barbatdev/cortex/cortex-dotfiles"
echo " ${C}.., ..., .... ${R}Subir 1, 2 o 3 niveles"

echo "\n${T}Claude Code${R}"
Expand Down
Loading