diff --git a/bash/functions/infra/launch_kittyclaude.md b/bash/functions/infra/launch_fleetclaude.md similarity index 87% rename from bash/functions/infra/launch_kittyclaude.md rename to bash/functions/infra/launch_fleetclaude.md index 83d0d72e..00641a99 100644 --- a/bash/functions/infra/launch_kittyclaude.md +++ b/bash/functions/infra/launch_fleetclaude.md @@ -1,11 +1,11 @@ --- -name: launch_kittyclaude +name: launch_fleetclaude kind: function lang: bash domain: infra version: "1.1.0" purity: impure -signature: "launch_kittyclaude [--cwd ] [--bin ] [--session ] [--cols ]" +signature: "launch_fleetclaude [--cwd ] [--bin ] [--session ] [--cols ]" description: "Entrypoint de FleetView: abre una ventana kitty con una sesion tmux (socket aislado -L fleet) de dos panes (TUI fleetview a la izquierda, claude --dangerously-skip-permissions a la derecha) para centralizar la flota de Claudes. Instala atajos alt+flechas/alt+enter/alt+n que controlan la TUI desde cualquier pane, y fija el ancho del sidebar con hooks." tags: [claude-fleet, infra, kitty, tmux, claude, fleetview, launcher] params: @@ -27,20 +27,20 @@ imports: [] tested: false tests: [] test_file_path: "" -file_path: "bash/functions/infra/launch_kittyclaude.sh" +file_path: "bash/functions/infra/launch_fleetclaude.sh" --- ## Ejemplo ```bash # Via fn run (resuelve por nombre o ID): -fn run launch_kittyclaude +fn run launch_fleetclaude # Directo, con cwd explicito: -launch_kittyclaude --cwd ~/fn_registry +launch_fleetclaude --cwd ~/fn_registry # Sesion y ancho de pane personalizados: -launch_kittyclaude --session fleet --cols 50 +launch_fleetclaude --session fleet --cols 50 ``` Tras invocarlo aparece una ventana kitty titulada `FleetView` con dos panes @@ -51,7 +51,7 @@ sesion: reusa la existente y solo abre otra kitty adjunta. ## Cuando usarla Usala cuando quieras un unico punto de entrada a la flota de Claudes en vez de -N ventanas kitty sueltas: lanzas `kittyclaude` y tienes la TUI de control y un +N ventanas kitty sueltas: lanzas `fleetclaude` y tienes la TUI de control y un Claude listo para trabajar en la misma ventana. Tipico al empezar la jornada o al retomar el trabajo en el repo `fn_registry`. @@ -87,6 +87,11 @@ al retomar el trabajo en el repo `fn_registry`. ## Capability growth log +- v1.3.0 (2026-06-17) — renombrada de `launch_kittyclaude` a `launch_fleetclaude` + (comando `fleetclaude`). Atajos: `alt+0` (= alt+n, abrir Claude nuevo), `alt+k` + (kill con confirmacion), `alt+r` (picker de reanudar sesiones cerradas) y + `alt+flecha-izquierda` (volver atras desde el picker). Cierra la window al salir + el Claude (`remain-on-exit off`). - v1.2.0 (2026-06-16) — ancho del sidebar por defecto 47 columnas; `ctrl+0` como atajo alterno para abrir Claude nuevo; `mouse on` (clic/rueda enrutados a la TUI) y `extended-keys on` (para que `ctrl+0` llegue distinguible por el diff --git a/bash/functions/infra/launch_kittyclaude.sh b/bash/functions/infra/launch_fleetclaude.sh similarity index 87% rename from bash/functions/infra/launch_kittyclaude.sh rename to bash/functions/infra/launch_fleetclaude.sh index ea6978ee..4f5fdcfe 100644 --- a/bash/functions/infra/launch_kittyclaude.sh +++ b/bash/functions/infra/launch_fleetclaude.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# launch_kittyclaude — Entrypoint MVP de FleetView. +# launch_fleetclaude — Entrypoint MVP de FleetView. # # Abre UNA ventana kitty corriendo una sesion tmux de dos panes: # - pane izquierdo: la TUI 'fleetview' (la flota de Claudes centralizada). @@ -16,7 +16,7 @@ set -euo pipefail IFS=$' \t\n' -launch_kittyclaude() { +launch_fleetclaude() { local cwd="" local bin="" local session="fleet" @@ -46,7 +46,7 @@ launch_kittyclaude() { ;; -h|--help) cat <<'USAGE' -Uso: launch_kittyclaude [opciones] +Uso: launch_fleetclaude [opciones] Abre una ventana kitty con una sesion tmux de dos panes: la TUI fleetview a la izquierda y 'claude --dangerously-skip-permissions' a la derecha. @@ -61,14 +61,14 @@ Opciones: -h, --help Muestra esta ayuda. Ejemplos: - launch_kittyclaude - launch_kittyclaude --cwd ~/fn_registry - launch_kittyclaude --session fleet --cols 50 + launch_fleetclaude + launch_fleetclaude --cwd ~/fn_registry + launch_fleetclaude --session fleet --cols 50 USAGE return 0 ;; *) - echo "launch_kittyclaude: opcion desconocida: '$1' (usa -h)" >&2 + echo "launch_fleetclaude: opcion desconocida: '$1' (usa -h)" >&2 return 2 ;; esac @@ -100,7 +100,7 @@ USAGE # Validar cwd: si no existe, caer al repo_root. if [[ ! -d "$cwd" ]]; then - echo "launch_kittyclaude: --cwd '$cwd' no existe; usando '$repo_root'." >&2 + echo "launch_fleetclaude: --cwd '$cwd' no existe; usando '$repo_root'." >&2 cwd="$repo_root" fi @@ -108,11 +108,11 @@ USAGE # Comprobar herramientas necesarias. # ----------------------------------------------------------------------- if ! command -v tmux >/dev/null 2>&1; then - echo "launch_kittyclaude: tmux no esta instalado." >&2 + echo "launch_fleetclaude: tmux no esta instalado." >&2 return 1 fi if ! command -v kitty >/dev/null 2>&1; then - echo "launch_kittyclaude: kitty no esta instalado." >&2 + echo "launch_fleetclaude: kitty no esta instalado." >&2 return 1 fi @@ -133,9 +133,9 @@ USAGE # Montar la sesion tmux SOLO si no existe (idempotencia). Socket aislado $T. # ----------------------------------------------------------------------- if $T has-session -t "$session" 2>/dev/null; then - echo "launch_kittyclaude: la sesion tmux '$session' ya existe; reutilizandola." + echo "launch_fleetclaude: la sesion tmux '$session' ya existe; reutilizandola." else - echo "launch_kittyclaude: creando sesion tmux '$session' en '$cwd'." + echo "launch_fleetclaude: creando sesion tmux '$session' en '$cwd'." # Sesion detached con ventana 'console', pane 0 en el cwd objetivo. $T new-session -d -s "$session" -n console -c "$cwd" @@ -167,12 +167,21 @@ USAGE $T bind -n M-0 send-keys -t "$session":console.0 n $T bind -n M-k send-keys -t "$session":console.0 k $T bind -n M-r send-keys -t "$session":console.0 r + $T bind -n M-Left send-keys -t "$session":console.0 Escape + $T bind -n M-q send-keys -t "$session":console.0 Q # Raton: enruta clicks/rueda al pane bajo el cursor; la TUI los interpreta. $T set -g mouse on # Al salir un Claude (exit / Ctrl-D / kill), cerrar su window en vez de # dejarla muerta ("dead" pane) en la sesion. $T set -g remain-on-exit off + # Estetica neutra: sin el verde fosforo por defecto de tmux. Status bar gris y + # bordes de pane gris tenue, iguales en activo e inactivo (separacion simple, + # sin resaltado de enfoque). + $T set -g status-style "bg=colour236,fg=colour250" + $T set -g pane-border-style "fg=colour238" + $T set -g pane-active-border-style "fg=colour240" + # Mantener el ancho del sidebar (pane 0) cuando kitty redimensiona la ventana # tras el attach, o cuando se conmuta de Claude (window-linked / layout change). $T set-hook -g client-resized "resize-pane -t $session:console.0 -x $cols" @@ -186,11 +195,11 @@ USAGE setsid kitty --title "FleetView" -e tmux -L fleet attach -t "$session" /dev/null 2>&1 & disown 2>/dev/null || true - echo "launch_kittyclaude: ventana kitty 'FleetView' adjunta a la sesion tmux '$session'." + echo "launch_fleetclaude: ventana kitty 'FleetView' adjunta a la sesion tmux '$session'." return 0 } # Permitir ejecutar el archivo directamente (no solo como funcion sourced). if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then - launch_kittyclaude "$@" + launch_fleetclaude "$@" fi diff --git a/docs/capabilities/INDEX.md b/docs/capabilities/INDEX.md index 84093f32..0f5f45d4 100644 --- a/docs/capabilities/INDEX.md +++ b/docs/capabilities/INDEX.md @@ -24,7 +24,7 @@ Indice de grupos de capacidades del registry. Cada grupo agrupa >=3 funciones qu | [docker](docker.md) | 38 | Operar Docker desde Go/Bash: build/run/stop, compose, networks, volumes, logs, deploys | | [android](android.md) | 37 | Toolbelt Android desde WSL2: adb, emuladores AVD, APK build/install, Capacitor, logcat | | [web-proxy](web-proxy.md) | 5 | Captura de trafico HTTP/HTTPS liviana (mitmproxy): proxy con rotacion, navegador proxeado, consulta de capturas, tee del SSE de claude. Alternativa ligera a ZAP/Burp | -| [claude-fleet](claude-fleet.md) | 5 | Orquestar la flota de procesos Claude Code vivos: panel TUI (fleetview) + comando kittyclaude que centraliza N Claudes en una ventana kitty/tmux (socket -L fleet), conmuta cual esta embebido (alt+flechas/enter/n) y los lista desde ~/.claude/sessions+goals | +| [claude-fleet](claude-fleet.md) | 5 | Orquestar la flota de procesos Claude Code vivos: panel TUI (fleetview) + comando fleetclaude que centraliza N Claudes en una ventana kitty/tmux (socket -L fleet), conmuta cual esta embebido (alt+flechas/enter/n) y los lista desde ~/.claude/sessions+goals | | [flow-replay](flow-replay.md) | 3 | Guardar un flujo web (login, reiniciar server, formulario) como funcion reproducible: destila un HAR a call specs y lo reproduce sin navegador (HTTP puro), con fallback a chromium headless/visible. Consume las capturas de web-proxy | | [hoppscotch](hoppscotch.md) | 7 | Operar Hoppscotch SELF-HOSTED (docker en selfhost/) via API GraphQL: login (magic link headless via mailpit), CRUD de requests (create/update/delete/list), set_environment (idempotente, resuelve secretos pass:). El agente crea/edita y el humano lo ve en vivo en su GUI (subscriptions). build es helper interno de serializacion. Modo .json local ELIMINADO | | [dav](dav.md) | 9 | Cliente CardDAV/CalDAV (Python, solo stdlib) para Xandikos: parte un .vcf/.ics export de Google en recursos individuales (split puro), extrae/sintetiza UID, sube por HTTP PUT con Basic auth, lista (PROPFIND) y descarga (GET) recursos. Dos pipelines de import (vcf->carddav, ics->caldav). Formaliza la migracion ad-hoc de contactos/calendario | diff --git a/docs/capabilities/claude-fleet.md b/docs/capabilities/claude-fleet.md index d1932ac5..d48a2ae6 100644 --- a/docs/capabilities/claude-fleet.md +++ b/docs/capabilities/claude-fleet.md @@ -5,14 +5,14 @@ unidad: descubrirlos, listarlos en un panel TUI y centralizarlos en una ventana kitty con tmux donde se conmuta cuál está embebido a la derecha. Reemplaza el caos de N ventanas kitty dispersas por un único punto de entrada. -Pieza visible: la app `fleetview` (TUI). Entrypoint: el comando `kittyclaude`. +Pieza visible: la app `fleetview` (TUI). Entrypoint: el comando `fleetclaude`. ## Funciones | ID | Firma | Qué hace | |---|---|---| | `list_claude_fleet_go_infra` | `ListClaudeFleet() ([]ClaudeFleet, error)` | Escanea `~/.claude/sessions/*.json` + `goals/`, valida procesos vivos (anti-PID-reciclado), join por `sessionId` → lista tipada con status/objetivo/cwd/target. | -| `launch_kittyclaude_bash_infra` | `launch_kittyclaude [--cwd ] [--bin

] [--session ] [--cols ]` | Entrypoint: abre kitty con sesión tmux (socket aislado `-L fleet`) de dos panes (TUI izq + Claude der). Instala atajos `alt+*` e hijos del sidebar. | +| `launch_fleetclaude_bash_infra` | `launch_fleetclaude [--cwd ] [--bin

] [--session ] [--cols ]` | Entrypoint: abre kitty con sesión tmux (socket aislado `-L fleet`) de dos panes (TUI izq + Claude der). Instala atajos `alt+*` e hijos del sidebar. | | `tmux_new_claude_window_go_infra` | `TmuxNewClaudeWindow(socket, session, cwd string) (string, error)` | Crea una window tmux nueva con `claude --dangerously-skip-permissions`. Devuelve el `window_id`. | | `tmux_swap_window_into_console_go_infra` | `TmuxSwapWindowIntoConsole(socket, session, windowID string) error` | Trae el Claude de `windowID` al pane derecho de `console` (junto a la TUI), parkea el anterior, re-fija el ancho del sidebar. | | `tmux_map_claude_panes_go_infra` | `TmuxMapClaudePanes(socket string) (map[int]string, error)` | Mapa `claudePID → window_id` de los Claude que viven en la sesión (vía `list-panes` + descendencia `/proc`). Permite a la TUI saber cuáles son conmutables. | @@ -26,7 +26,7 @@ App relacionada: `fleetview_go_infra` (`apps/fleetview/`) — la TUI Bubble Tea cd ~/fn_registry/apps/fleetview && go build -o fleetview . # 2. Abrir la flota (una ventana kitty: panel izq + Claude der). -fn run launch_kittyclaude +fn run launch_fleetclaude # 3. Dentro de la ventana, desde CUALQUIER pane (incluido escribiendo en Claude): # alt+↑/↓ mueve el cursor de la lista