## Slash commands por project (namespaced) Cada `projects/

/` puede tener su propio `.claude/commands/*.md`. Para invocarlos desde la raiz de `fn_registry` sin que pisen los comandos globales, se exponen via **symlink namespaced** en `fn_registry/.claude/commands//`. ### Patron canonico ``` projects/aurgi/.claude/commands/foo.md # archivo real (viaja con el sub-repo del project) fn_registry/.claude/commands/aurgi -> symlink -> ../../projects/aurgi/.claude/commands ``` Resultado: | cwd | Invocacion | |---|---| | `cd projects/aurgi && claude` | `/foo` (sin namespace) | | `cd fn_registry && claude` | `/aurgi:foo` (namespaced, no colisiona con `/foo` global) | Subdirs dentro de `.claude/commands/` se exponen como namespace en el slash command. Por eso `aurgi/foo.md` -> `/aurgi:foo`. ### Como anadir un project nuevo 1. `mkdir -p projects/

/.claude/commands/`. 2. Crear `.md` con frontmatter `description:` + cuerpo. 3. Symlink: `ln -sf ../../projects/

/.claude/commands /home/egutierrez/fn_registry/.claude/commands/

`. 4. Versionar el `.claude/commands/` del project en su propio sub-repo (NO en fn_registry — projects estan gitignored). 5. Versionar SOLO el symlink en fn_registry (`git add .claude/commands/

`). ### Reglas - Cada project mantiene autonomia: sus commands viajan con el sub-repo y funcionan tanto en `cd projects/

` como desde la raiz. - El symlink en fn_registry da acceso global con namespace — sin colision con commands del registry. - NO duplicar contenido: archivo real solo en `projects/

/.claude/commands/`. fn_registry solo guarda el symlink. - Si el project se mueve/elimina, borrar el symlink en fn_registry. ### Listado actual | Project | Symlink | Commands disponibles desde fn_registry | |---|---|---| | aurgi | `.claude/commands/aurgi` | `/aurgi:aumentar_task`, `/aurgi:contexto_aurgi`, `/aurgi:anadir_contexto_aurgi` | Anadir filas aqui al introducir un project nuevo con commands. ### Catalogo dinamico Para listado en tiempo real (sin tener que actualizar esta tabla a mano): `/commands` escanea `.claude/commands/` recursivo y agrupa por namespace. Filtros: `/commands `, `/commands --ns `, `/commands --json`. ### Gotchas - Claude Code lista los commands disponibles al inicio de sesion. Si un symlink apunta a un directorio inexistente, los commands no aparecen — verificar con `ls -L .claude/commands//`. - El namespace usa el nombre del subdirectorio (`aurgi/`), no del project en `projects/`. Mantenerlos iguales para evitar confusion. - Los commands del project se ejecutan con el cwd de la sesion actual. Un `/aurgi:aumentar_task` invocado desde `fn_registry/` corre con cwd `fn_registry/` — paths relativos en el `.md` deben asumir esto (siempre usar paths relativos al repo, ej. `projects/aurgi/vaults/...`).