Files
fn_registry/.claude/commands/fleet.md
T
egutierrez 7fb00defdf fix(fleetclaude): reusar contexto dentro de la flota tmux en vez de abrir kitty nueva
Lanzar `fleetclaude` estando ya dentro de una flota tmux viva abría una ventana
kitty nueva (y creaba un perfil/socket nuevo fleetN+1) en vez de mostrar la flota
en el pane actual. Causa: con $TMUX definido el launcher saltaba el `exec tmux
attach` y caía a la rama `setsid kitty`.

Cambio: cuando se invoca sin --new desde dentro de una flota fleetview viva (el
socket actual, derivado de $TMUX, tiene una sesión homónima con window 'console'),
se trae la TUI al contexto/pane actual (`fleetview show`, o `tmux select-window`
de la window console como fallback sin binario) y se retorna 0 antes de las ramas
kitty/wt.exe. Nuevo flag --new para forzar el comportamiento clásico (flota+ventana
nueva) aun dentro de tmux; pasar --session con un nombre distinto al perfil actual
equivale a --new implícito. Fuera de tmux el comportamiento es intacto (exec tmux
attach reutiliza la terminal).

Fix incidental: `local left_pane="" right_pane=""` (antes `local left_pane
right_pane` reventaba con "unbound variable" bajo `set -u` al reutilizar una sesión
existente, p. ej. con --reuse/--session sobre una flota viva).

Verificación e2e con sockets aislados fctest* (sin tocar la flota del humano):
golden (reuse, exit 0, kitty invariante), --new y --session-distinto (no reuse,
ruta ventana-nueva), fuera de tmux (salta reuse, ruta attach). bash -n limpio.

Docs: launch_fleetclaude.md (signature, params --new, ejemplo, cuando usarla,
gotchas, growth log v1.7.0) + /fleet show en .claude/commands/fleet.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 17:56:41 +02:00

4.1 KiB

description, argument-hint
description argument-hint
Muestra la flota de Claudes vivos (sessionId + objetivo + estado) y, con argumento, salta con foco a esa conversación dentro de la sesión tmux fleet. `/fleet show` trae la TUI al contexto tmux actual. [show | texto|sessionId|PID para saltar — vacío = listar la flota]

/fleet — ver y navegar la flota de Claudes

Inspecciona la flota de procesos Claude Code vivos de este PC y, opcionalmente, salta con foco a cualquiera de ellos dentro de la interfaz tmux (perfil fleetview).

Se apoya en el modo CLI de la app fleetview (fleetview list / fleetview focus), que opera sobre el socket tmux del perfil desde el que se invoca el comando ($FLEET_SOCKET, default fleet). Es decir, lista y enfoca solo los Claudes del mismo perfil en el que corres.

Binario

Ruta: ${FN_REGISTRY_ROOT:-$HOME/fn_registry}/apps/fleetview/fleetview

Si el binario no existe, compílalo antes de usarlo:

cd "${FN_REGISTRY_ROOT:-$HOME/fn_registry}/apps/fleetview" && go build -o fleetview .

Comportamiento según $ARGUMENTS

Sin argumentos → listar la flota

  1. Ejecuta:
    "${FN_REGISTRY_ROOT:-$HOME/fn_registry}/apps/fleetview/fleetview" list --json
    
  2. Presenta el resultado como una tabla legible para el usuario, una fila por Claude, con: estado (idle/busy/waiting/shell), objetivo (goal), sessionId corto (primeros 8 caracteres), PID y window tmux.
  3. Marca con claridad:
    • el Claude activo (active: true) — el que está embebido en el pane derecho de la window console.
    • la sesión actual / orquestador si la puedes identificar (su session_id coincide con el de quien invoca).
  4. Si la lista está vacía, indícalo y sugiere que el perfil fleet podría no estar activo (revisar $FLEET_SOCKET y que la sesión tmux exista).

show → traer la TUI al contexto tmux actual

Si $ARGUMENTS es exactamente show (alias open/attach), el usuario quiere volver a ver el panel FleetView en el contexto/pane actual sin abrir ninguna ventana ni arrancar una flota nueva. Ejecuta:

"${FN_REGISTRY_ROOT:-$HOME/fn_registry}/apps/fleetview/fleetview" show

Comportamiento (decidido por la app, no abre terminal externa):

  • dentro de tmux con la flota vivaselect-window de la window console del socket fleet (trae la TUI al frente; no abre nada).
  • fuera de tmuxattach a la sesión fleet en la terminal actual (la reutiliza).
  • sin flota viva → error claro, exit 1, no abre nada (sugiere arrancarla con fleetclaude).

Es el equivalente del comportamiento de fleetclaude sin args invocado dentro de una flota viva (reuse de contexto): úsalo cuando ya tengas una flota corriendo y solo quieras recuperar la vista del panel. Para abrir una flota NUEVA aparte, usa fleetclaude --new (no este comando).

Con argumentos → saltar con foco

El usuario quiere que la interfaz tmux salte a una conversación concreta. $ARGUMENTS es el query: texto del objetivo, prefijo de sessionId, o PID (cualquier valor que no sea show).

  1. Ejecuta:
    "${FN_REGISTRY_ROOT:-$HOME/fn_registry}/apps/fleetview/fleetview" focus "$ARGUMENTS"
    
  2. Interpreta el exit code:
    • 0: salto hecho. Confirma al usuario a qué Claude saltó (usa la línea → ... de stdout).
    • 2: query ambiguo. El binario lista los candidatos por stderr; muéstralos y pide al usuario que afine (por sessionId o PID).
    • 1: sin match o sin window tmux. Ejecuta fleetview list y muestra las opciones disponibles para que elija.

Notas

  • El salto usa el modelo de la TUI: trae el Claude elegido al pane derecho de la window console (con el sidebar fleetview siempre visible a la izquierda) y enfoca esa window. No es destructivo — el Claude que estuviera antes se aparca en su propia window, sigue vivo.
  • El comando opera solo sobre el perfil tmux desde el que se invoca ($FLEET_SOCKET). Si pides un Claude que vive en otro perfil/socket, no aparecerá en la lista ni se podrá enfocar desde aquí.
  • Para reabrir sesiones cerradas (claude --resume) usa la TUI fleetview (tecla u); este comando solo lista y enfoca Claudes vivos.