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
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,22 @@
- Generalized private paths and navigation defaults.
- Removed custom font binary and private brand assets.
- Added MIT license, security policy, third-party notices, release checklist, and OSS audit script.

## 0.1.1 - 2026-07-04

### Breaking

- Renamed `pcsoft-helpers.zsh` → `pc-helpers.zsh` (generic name for broader reuse).

### Added

- `scripts/test-install.sh` — automated installer tests (copy, symlink, stale-opposite scenarios).
- `scripts/check-agent-state.sh` — agent-state validator for release checklist.
- `.oss-audit-denylist.local` — untracked personal denylist for OSS audit (one regex per line).
- `OSS_AUDIT_FORBIDDEN_REGEX` CI variable support — configure repo-level denylist without committing.

### Changed

- OSS audit script — externalized forbidden identifiers to env var + local denylist; no longer hardcodes private terms.
- CI — added installer integration tests step; passes `OSS_AUDIT_FORBIDDEN_REGEX` from repo vars.
- `.gitignore` — added `.oss-audit-denylist.local`.
48 changes: 38 additions & 10 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,17 @@ Dotfiles para terminal: configuración de Ghostty + Zsh + Starship. El instalado
## Instalación y testing

```bash
# Instalar dotfiles (crea symlinks + instala dependencias via Homebrew)
# Instalar dotfiles (crea symlinks + instala dependencias)
./install.sh

# Medir load time del profile zsh
time zsh -i -c exit

# Verificar que los symlinks están correctos
ls -la ~/.zshrc ~/.config/starship.toml ~/.config/ghostty/config

# Validar sintaxis sin instalar
bash install.sh --check
```

No hay tests automatizados. La validación es manual: recargar la shell con `source ~/.zshrc` o `reload` y verificar que los comandos funcionen.
Expand All @@ -28,22 +31,47 @@ dotfiles/
├── zsh/
│ ├── zshrc # Profile principal → symlink a ~/.zshrc
│ └── scripts/ # Scripts sourced desde zshrc
│ ├── claude-helpers.zsh # cc, ccx, ccd, ccclip
│ ├── git-helpers.zsh # git-workdev, git-personaldev, git-whoami, clone-*
│ ├── pc-helpers.zsh # is-pc-forbidden, is-pc-editable
│ ├── screenshots.zsh # ss, last, ssd, imgclip
│ └── herdr-helpers.zsh # ta, tn, tk, tl, tdev
├── starship/starship.toml # Prompt Gruvbox Dark → ~/.config/starship.toml
├── ghostty/config # Terminal → ~/.config/ghostty/config
│ ├── agent-state.sh # Local CLI para cortex.agent_state.v1
│ ├── claude-helpers.zsh # cc, ccb, ccx, ccd, ccclip
│ ├── git-helpers.zsh # git-workdev, git-personaldev, git-whoami, clone-*
│ ├── herdr-helpers.zsh # hhere, hfocus, hside, hscratch, hremote, hname, whereami
│ ├── pc-helpers.zsh # is-pc-forbidden, is-pc-editable
│ ├── screenshots.zsh # ss, last, ssd, imgclip
│ ├── ssh-helpers.zsh # sshx, moshx helpers
│ ├── worktree-helpers.zsh # wtadd, wtlist, wtremove
│ ├── memsave-nudge.sh # Hook UserPromptSubmit para recordar mem_save
│ └── postcompact-hook.sh # Hook PostCompact con orden explícito
├── starship/starship.toml # Prompt → ~/.config/starship.toml
├── ghostty/
│ ├── config # Terminal → ~/.config/ghostty/config
│ ├── muxy.conf # Muxy integration config
│ └── shaders/ # 4 cursor shaders (glsl)
├── herdr/config.toml # Multiplexor → ~/.config/herdr/config.toml
├── claude/
│ ├── statusline.sh # Statusline para Claude Code
│ └── themes/ # Temas Claude Code (cortex.json, cortex-green.json)
├── opencode/
│ ├── tui.json # TUI config → ~/.config/opencode/tui.json
│ └── themes/ # Temas OpenCode
├── lazygit/config.yml # LazyGit → ~/.config/lazygit/config.yml
├── local/
│ └── env.zsh.example # Template para ~/.config/cortex-dots/local/env.zsh
├── fonts/
│ └── FiraCodeNerdFontMonoBeard-Reg.ttf # Terminal font
├── scripts/
│ ├── oss-audit.sh # OSS safety audit
│ ├── test-install.sh # Installation tests
│ └── check-agent-state.sh # Agent state validator
├── bun/bunfig.toml # Bun defaults
├── npm/npmrc # NPM defaults
├── pnpm/rc # PNPM defaults
├── uv/uv.toml # UV defaults
└── install.sh # Instalador
```

**Flujo de carga del zshrc:** Las secciones están separadas por `#region`/`#endregion`. El orden importa: Brew → PATH → Zsh options → Editor → Env vars → Aliases → Source scripts → Local overrides → Starship → Welcome.
**Flujo de carga del zshrc:** Las secciones están separadas por `#region`/`#endregion`. El orden importa: Brew → PATH → Zsh options → Editor → Env vars → Aliases → Source scripts → Local overrides → Starship → Welcome. Scripts en `zsh/scripts/` que son hooks de Claude Code (memsave-nudge.sh, postcompact-hook.sh) no se sourced desde zshrc, se usan directamente como hooks en la config de Claude Code.

**`~/.config/cortex-dots/local/env.zsh`** contiene paths personales, tokens y overrides de variables de entorno (`SCREENSHOTS_DIR`, `WORKSPACE_DIR`, `WORK_PROJECTS_DIR`). Se genera desde `env.zsh.example` en la primera instalación.
**`~/.config/cortex-dots/local/env.zsh`** contiene paths personales, tokens y overrides de variables de entorno (`SCREENSHOTS_DIR`, `WORKSPACE_DIR`, `WORK_PROJECTS_DIR`, `CORTEX_HOME`, `CORTEX_ROOT`, `CORTEX_CONFIG_HOME`, `CORTEX_MULTIPLEXER`). Se genera desde `env.zsh.example` en la primera instalación.

## Múltiples identidades GitHub

Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ The shell profile uses safe, env-driven defaults:
| `tools` | `$TOOLS_DIR` (`~/dev/tools`) |
| `worktrees` | `$WORKTREES_DIR` (`~/dev/worktrees`) |
| `cortex` | `$CORTEX_ROOT` (`~/.cortex/cortex`) |
| `dotfiles` | `$CORTEX_DOTFILES_DIR` (`~/.cortex/cortex-dots`) |
| `dotfiles` | `$CORTEX_DOTFILES_DIR` (`~/.config/cortex-dots`) |

Override any of these in `~/.config/cortex-dots/local/env.zsh`.

Expand Down Expand Up @@ -140,6 +140,7 @@ scripts/test-install.sh --seed-stale-opposite
scripts/test-install.sh --symlink --seed-stale-opposite
bash -n install.sh
zsh -n zsh/zshrc
for path in opencode/*.json opencode/**/*.json claude/themes/*.json; do jq . "$path" >/dev/null 2>&1 || echo "invalid: $path"; done
python3 - <<'PY'
import pathlib, tomllib
for path in pathlib.Path('.').rglob('*.toml'):
Expand Down
22 changes: 11 additions & 11 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,39 +4,39 @@ Mejoras identificadas en dotfiles externos de referencia.

---

## Alta prioridad
## Completado

Las siguientes mejoras se han implementado y están activas en los dotfiles:

### Alta prioridad

- [x] **Fuente OSS-safe** — el snapshot usa `FiraCode Nerd Font` oficial y no incluye binarios ni glyphs de marca privada.
- [x] **Statusline custom para Claude Code** — script que muestra barra visual de uso del contexto (verde/amarillo/rojo), modelo activo, rama git y porcentaje exacto.

## Media prioridad
### Media prioridad

- [x] **`right_format` en Starship** — cmd_duration y time alineados al extremo derecho.
- [x] **`atuin`** — historial de zsh con SQLite y TUI avanzada en Ctrl+R.

## Baja prioridad
### Baja prioridad

- [x] **Shaders de cursor en Ghostty** — 4 shaders disponibles en `ghostty/shaders/`. Activo: cursor_smear_soft. Para cambiar: editar `custom-shader` en ghostty/config.

- [x] **`window-padding-balance = true` en Ghostty** — padding balanceado en splits.

---

## Mejoras de memoria — inspiradas en Engram v1.10.5
### Mejoras de memoria — inspiradas en Engram v1.10.5

### Alta prioridad
#### Alta prioridad

- [x] **Nudge de 15 minutos sin mem_save** — Hook `UserPromptSubmit` que revisa el timestamp de la última observación en dev-memory. Si pasaron +15 min y la sesión tiene +5 min de antigüedad, inyecta recordatorio para guardar contexto. Evita pérdida de decisiones en sesiones largas de implementación.

### Media prioridad
#### Media prioridad

- [x] **PostCompact con orden explícito** — Mejorar el hook PostCompact actual (genérico) para que instruya el orden exacto: `mem_session_summary` primero → `mem_context` después, con el nombre del proyecto interpolado. Más determinístico que el mensaje actual.

- [x] **detect_project() con git remote** — Derivar el nombre del proyecto desde `git remote get-url origin` en vez de dirname. Más robusto en worktrees y monorepos donde el nombre del directorio no refleja el proyecto real.

---

## Worktrees — integración natural con Claude
### Worktrees — integración natural con Claude

- [x] **Worktree helpers zsh** — `wtadd`/`wtlist`/`wtremove` en `worktree-helpers.zsh`. Mecánica pura: crear directorio hermano, detectar repos de proyectos PC via `is-pc-forbidden`, abrir workspace automáticamente.

Expand Down
1 change: 0 additions & 1 deletion docs/herdr-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,5 @@ Before detaching long-running work, name important panes and run `whereami` if t
## Related Docs

- [Keymaps](keymaps.md)
- [Practical keymaps](keymaps.md)
- [Cortex Agent State v1](agent-state-v1.md)
- [README](../README.md)
1 change: 1 addition & 0 deletions docs/keymaps.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ This table favors the shortcuts used by these dotfiles and Herdr defaults. It is
| Tool | Shortcut / Command | Action |
|------|--------------------|--------|
| Claude Code | `cc [path]` | Start Claude Code in the current or given directory. |
| Claude Code | `ccd [path]` | Navigate to a workspace subdirectory (cd helper). |
| Claude Code | `ccb [path]` | Start Claude Code with explicit permission bypass. |
| Claude Code | `ccx <context> [path]` | Pipe initial context into Claude Code. |
| Claude Code | `ccclip <files>` | Copy files as fenced code context to the clipboard. |
Expand Down
2 changes: 1 addition & 1 deletion nvim/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Estado documentado el 2026-06-19. La configuración activa vive por ahora en

## Paleta usada para el overlay

Derivada de la paleta Cortex warm/slate usada por Ghostty, Starship y SketchyBar.
Derivada de la paleta Cortex warm/slate usada por Ghostty y Starship.

| Uso | Color |
|-----|-------|
Expand Down
Loading