Flightdeck: un panel de agentes de Claude Code en tu terminal
Un panel en vivo para Claude Code: modelo y contexto, cada comprobación de permisos, subagentes y recibo del turno.
Permisos
- Intercepta llamadas a herramientasVe cada llamada a herramienta que hace Claude (tool.call / tool.check) y podría bloquearla o modificarla.
- Lee tus promptsPuede ver lo que escribes y la transcripción de la conversación (prompt.* / session.append / session.messages).
- Modifica la interfazDibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
- Añade comandos/herramientasRegistra nuevos comandos de barra o herramientas invocables por ti o por Claude ($.command.register / $.tool.register).
- probado con
- v2.1.303
- última prueba
- requiere
- Claude Code ≥ 2.1.287
- superficies
- panel, sobre el prompt, estado
- código fuente
- Stephen Casella (scasella) (MIT)
Instalar dentro de Claude Code:
/plugin install flightdeck --marketplace scasella/claude-flightdeck¿Qué hace este mod?
Flightdeck es un mod de la comunidad de Stephen Casella (scasella) que funciona como un panel de agentes de Claude Code: un único panel que muestra qué están haciendo ahora tu sesión y sus agentes. Reúne el nombre del modelo y su esfuerzo, un medidor de contexto, el coste de la sesión, las ventanas de límite de uso cuando tu plan las informa, cada comprobación de permisos, tarjetas de subagentes y un recibo del último turno.
Los paneles son: main (modelo, esfuerzo, modo, número de solicitudes, contexto, coste y velocidad de la última solicitud), architect (consultas de un agente asesor o una herramienta del servidor, detectadas con una expresión regular), gate (una celda por comprobación de permisos: permitida, decidida por el clasificador o por ti, pendiente o denegada), agents (tarjetas que pasan a carriles con más de tres agentes), loops (bucles del modelo que no coinciden con ninguna tarjeta), receipt (duración, agentes, ediciones, errores y coste del turno) y un log breve. Los paneles sin nada que mostrar no ocupan espacio. El README del autor dice que cada número procede de un evento real de la sesión; los «momentos» del architect son inferidos y están marcados como tales.
Demo
La grabación inicia Claude Code con el mod cargado en el pequeño proyecto de demostración. El terminal es más estrecho que 144 columnas, así que abrimos el panel con /flightdeck. Sobre el prompt aparece un resumen con borde que muestra idle y $0.00. Después pedimos a Claude que lea README.md y describa el proyecto en una frase. Mientras corre el turno, el panel cambia a working y una fila gate muestra 1 allowed · 0 classifier · 0 denied. Cuando termina el turno, muestra el medidor de contexto (4 %), el coste y una línea de recibo: last turn 47s · 0 agents · 0 edits · 0 errors.
Instalación
Usa cualquiera de los métodos del bloque de instalación; instalan directamente desde el marketplace del propio autor. Ejecuta /reload-plugins y luego /flightdeck. El autor señala que el instalador puede decir que las opciones de configuración no están definidas; los valores por defecto funcionan.
$ install flightdeck
Requiere Claude Code ≥ 2.1.287
Se instala desde el marketplace del autor: scasella/claude-flightdeck
1.Una línea, dentro de Claude Code
/plugin install flightdeck --marketplace scasella/claude-flightdeckPégala en una sesión abierta (v2.1.275+). Claude Code te pedirá primero añadir el marketplace.
2.Desde tu shell
claude plugin marketplace add scasella/claude-flightdeck claude plugin install flightdeck@claude-flightdeckDespués ejecuta /reload-plugins en cualquier sesión que ya esté abierta.
3.Pruébalo sin instalarlo
git clone https://github.com/scasella/claude-flightdeck claude --plugin-dir ./claude-flightdeckCarga el mod solo para una sesión. No se añade nada a tu configuración.
Cómo funciona
Todo se guarda en átomos de $.state, y cada hook los actualiza y pasa el evento. Una comprobación de permisos se registra así, desde hooks/register.tsx:
on('tool.check', async ($, e, next) => {
const verdict = await next(e)
if (e.tool_use_id) {
const check: Check = {
id: e.tool_use_id,
tool: e.tool,
bucket: bucketOf(e.tool),
verdict: verdict.decision === 'allow' ? 'rule' : verdict.decision,
detail: shorten(describeInput(e.tool, e.input), 90),
// ...
}
await update($, gate, g => recordCheck(normalizeGate(g), check))
}
return verdict
})El veredicto se devuelve tal como llegó. El panel se dibuja en el sitio de renderizado Pane. El diseño depende de dónde esté: un resumen de como máximo 8 filas en línea sobre el prompt, una columna junto a la transcripción y dos columnas desde 110 columnas. Dos pequeños módulos de cliente, rail.tsx y elapsed.tsx, dibujan los conectores animados y los relojes en marcha con el reloj de fotogramas de la propia superficie, de modo que el panel no necesita redibujarse. Los reductores y formateadores son funciones puras en hooks/core.ts.
Personalízalo
Las opciones están en /config: panels (qué paneles se muestran y en qué orden), layout (auto, compact, wide o mini), maxCards (1 a 6), motion (while-active u off), palette (theme o pastel), architectPattern, architectLabel, gateLabel, matchDescriptions, moments, openOnStart y statusLine. El comando /flightdeck acepta open, close, reset y layout auto|compact|wide|mini. Enfoca el panel con ctrl+x tab; las teclas 1 a 6 expanden una tarjeta y f, s, o abren las filas de archivos, shell y otros del gate.
Permisos y seguridad
Antes de ejecutar nada leímos cada archivo que el plugin puede ejecutar: plugin.json, marketplace.json, hooks/hooks.json, hooks/register.tsx, hooks/core.ts, hooks/rail.tsx, hooks/elapsed.tsx, las declaraciones de tipos y las pruebas. No hay package.json, script de instalación, binario ni código empaquetado. Una búsqueda de red, procesos, eval, importación dinámica y Unicode oculto no encontró nada.
- Red, procesos, archivos, entorno: ninguno. El mod no hace solicitudes, no ejecuta comandos, no lee ni escribe archivos, no lee variables de entorno y no llama al modelo.
- Qué observa: el nombre y la entrada de cada llamada a herramienta, cada veredicto de permisos, los inicios de subagentes, el uso de tokens y las respuestas finales, y los primeros 70 caracteres de cada prompt para el registro. Solo conserva resúmenes cortos en el estado de la sesión, con las credenciales enmascaradas por un filtro de expresiones regulares. El filtro es de mejor esfuerzo, así que considera que el panel muestra tus comandos.
- Hooks de control:
tool.check,tool.call,agent.spawn,agent.offer,session.append,session.compactyclassic.UserPromptSubmitson todos de paso: esperan anext(e)y devuelven su resultado.claude plugin validateseñala que no tienen.catch; los hooks classic y compact tampoco se ejecutan donde una organización gestiona Claude Code. - Telemetría, demonios, otras escrituras: ninguno; nada persiste tras la sesión.
- Licencia: MIT, con archivo LICENSE.
claude plugin validate no informó de errores ni advertencias. Las 28 pruebas del autor pasaron en Claude Code 2.1.303.
- Intercepta llamadas a herramientas
- Ve cada llamada a herramienta que hace Claude (tool.call / tool.check) y podría bloquearla o modificarla.
- Lee tus prompts
- Puede ver lo que escribes y la transcripción de la conversación (prompt.* / session.append / session.messages).
- Modifica la interfaz
- Dibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
- Añade comandos/herramientas
- Registra nuevos comandos de barra o herramientas invocables por ti o por Claude ($.command.register / $.tool.register).
Compatibilidad y solución de problemas
Comprobado con Claude Code 2.1.303 en macOS (validate y pruebas); el README del autor pide 2.1.287 o posterior. Si el panel no aparece:
- Ejecuta
/reload-pluginsy luego/flightdeck. Por debajo de 144 columnas el panel no se abre solo. - Busca en la transcripción una línea atenuada que empiece por
flightdeck:; nombra el hook que falló o el motivo por el que se rechazó el panel. - Si los colores se ven mal, pon
paletteenpastel. Si los contadores parecen obsoletos tras una actualización, ejecuta/flightdeck reset. - En VS Code y en el móvil, los conectores y los relojes son estáticos.
Preguntas frecuentes
- ¿Flightdeck envía algo fuera de mi máquina?
- No. En el código no encontramos llamadas de red, lanzamiento de procesos ni lectura o escritura de archivos. Solo llama a las propias API de Claude Code para el reloj, el uso, el estado y el panel. Su estado vive en el estado de la sesión y termina con ella.
- ¿Puede bloquear o cambiar mis llamadas a herramientas?
- No. Se engancha a tool.check, tool.call, agent.spawn y otros, pero cada hook espera al siguiente manejador y devuelve su resultado sin cambios. No deniega, reescribe ni retrasa nada.
- ¿Guarda mis comandos, incluidos los secretos?
- Por cada comprobación de permisos conserva en el estado de la sesión un resumen de una línea (nombre de la herramienta más una ruta, comando o patrón, cortado a 90 caracteres). Antes se enmascaran las formas habituales de credenciales, como tokens bearer, claves de API y contraseñas. El resumen solo se muestra en el panel y no se guarda entre sesiones.
- El panel no se abrió al iniciar Claude Code. ¿Por qué?
- openOnStart solo abre el panel en terminales de al menos 144 columnas. En un terminal más estrecho, ejecuta /flightdeck. En línea sobre el prompt muestra un resumen de 8 filas.
- ¿En qué se diferencia de Agent Radar?
- Agent Radar dibuja una línea en vivo por cada subagente en ejecución sobre el prompt. Flightdeck es un panel más amplio con el modelo, el medidor de contexto, el coste, una franja de comprobaciones de permisos, tarjetas de subagentes que pasan a carriles y el recibo del último turno.
# Mods relacionados
DestacadoAgent Radar
Una línea en vivo sobre el prompt por subagente en ejecución: tiempo, herramientas y acción actual, más un panel /radar.
- sobre el prompt
- panel
- aviso
- Intercepta llamadas a herramientas
- Lee tus prompts
- Modifica la interfaz
- Añade comandos/herramientas
probado con v2.1.291
DestacadoContext Bar
La ventana de contexto de Claude Code como una barra apilada sobre el prompt, un color por categoría, con tokens.
- sobre el prompt
- Modifica la interfaz
- Añade comandos/herramientas
- Guarda datos
probado con v2.1.291
DestacadoMedidor de contexto
Contexto ocupado, uso del plan en 5 h y 7 días y coste de la sesión en la barra de estado, con aviso cerca del límite.
- estado
- aviso
- Modifica la interfaz
probado con v2.1.310
Más en Paneles y dashboards, Temporizadores, tareas y standups.