Pular para o conteúdo
claudemods

Flightdeck: um painel de agentes do Claude Code no seu terminal

Um painel ao vivo para o Claude Code: modelo e contexto, cada verificação de permissão, subagentes e recibo do turno.

Permissões

  • Intercepta chamadas de ferramentasVê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
  • Lê seus promptsPode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
  • Altera a interfaceDesenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
  • Adiciona comandos/ferramentasRegistra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
testado com
v2.1.303
último teste
requer
Claude Code ≥ 2.1.287
superfícies
painel, acima do prompt, status

Instale dentro do Claude Code:

/plugin install flightdeck --marketplace scasella/claude-flightdeck
Todas as opções de instalação ↓

O que este mod faz?

O Flightdeck é um mod da comunidade de Stephen Casella (scasella) que funciona como um painel de agentes do Claude Code: um único painel que mostra o que sua sessão e seus agentes estão fazendo agora. Ele reúne o nome do modelo e o esforço, um medidor de contexto, o custo da sessão, as janelas de limite de uso quando seu plano as informa, cada verificação de permissão, cartões de subagentes e um recibo do último turno.

Os painéis são: main (modelo, esforço, modo, número de requisições, contexto, custo e velocidade da última requisição), architect (consultas a um agente consultor ou a uma ferramenta do servidor, identificados por uma expressão regular), gate (uma célula por verificação de permissão: permitida, decidida pelo classificador ou por você, pendente ou negada), agents (cartões que viram raias com mais de três agentes), loops (laços do modelo que não correspondem a nenhum cartão), receipt (duração, agentes, edições, erros e custo do turno) e um log curto. Painéis sem nada para mostrar não ocupam espaço. O README do autor diz que cada número vem de um evento real da sessão; os «momentos» do architect são inferidos e marcados como tal.

Demonstração

A gravação inicia o Claude Code com o mod carregado no pequeno projeto de demonstração. O terminal é mais estreito que 144 colunas, então abrimos o painel com /flightdeck. Acima do prompt aparece um resumo com borda mostrando idle e $0.00. Depois pedimos ao Claude que leia README.md e descreva o projeto em uma frase. Enquanto o turno roda, o painel muda para working e uma linha gate mostra 1 allowed · 0 classifier · 0 denied. Quando o turno termina, ele mostra o medidor de contexto (4%), o custo e uma linha de recibo: last turn 47s · 0 agents · 0 edits · 0 errors.

Instalação

Use qualquer um dos métodos do bloco de instalação; eles instalam direto do marketplace do próprio autor. Execute /reload-plugins e depois /flightdeck. O autor observa que o instalador pode dizer que as opções de configuração não foram definidas; os valores padrão funcionam.

$ install flightdeck

Requer Claude Code ≥ 2.1.287

Instala a partir do marketplace do autor: scasella/claude-flightdeck

  1. 1.Uma linha, dentro do Claude Code

    /plugin install flightdeck --marketplace scasella/claude-flightdeck

    Cole em uma sessão em andamento (v2.1.275+). O Claude Code pede primeiro para adicionar o marketplace.

  2. 2.Pelo seu shell

    claude plugin marketplace add scasella/claude-flightdeck
    claude plugin install flightdeck@claude-flightdeck

    Depois execute /reload-plugins em qualquer sessão que já esteja aberta.

  3. 3.Experimente sem instalar

    git clone https://github.com/scasella/claude-flightdeck
    claude --plugin-dir ./claude-flightdeck

    Carrega o mod só para uma sessão. Nada é adicionado às suas configurações.

Como funciona

Tudo fica em átomos de $.state, e cada hook os atualiza e repassa o evento. Uma verificação de permissão é registrada assim, a partir de 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
})

O veredicto é devolvido como chegou. O painel em si é desenhado no ponto de renderização Pane. O layout depende de onde ele está: um resumo de no máximo 8 linhas em linha acima do prompt, uma coluna ao lado da transcrição e duas colunas a partir de 110 colunas. Dois pequenos módulos de cliente, rail.tsx e elapsed.tsx, desenham os conectores animados e os relógios em andamento com o relógio de quadros da própria superfície, de modo que o painel não precisa ser redesenhado. Redutores e formatadores são funções puras em hooks/core.ts.

Personalize

As opções ficam em /config: panels (quais painéis aparecem e em que ordem), layout (auto, compact, wide ou mini), maxCards (1 a 6), motion (while-active ou off), palette (theme ou pastel), architectPattern, architectLabel, gateLabel, matchDescriptions, moments, openOnStart e statusLine. O comando /flightdeck aceita open, close, reset e layout auto|compact|wide|mini. Dê foco ao painel com ctrl+x tab; as teclas 1 a 6 expandem um cartão e f, s, o abrem as linhas de arquivos, shell e outros do gate.

Permissões e segurança

Antes de executar qualquer coisa, lemos cada arquivo que o plugin pode executar: plugin.json, marketplace.json, hooks/hooks.json, hooks/register.tsx, hooks/core.ts, hooks/rail.tsx, hooks/elapsed.tsx, as declarações de tipos e os testes. Não há package.json, script de instalação, binário nem código empacotado. Uma busca por rede, processos, eval, importação dinâmica e Unicode oculto não encontrou nada.

  • Rede, processos, arquivos, ambiente: nenhum. O mod não faz requisições, não executa comandos, não lê nem escreve arquivos, não lê variáveis de ambiente e não chama o modelo.
  • O que ele observa: o nome e a entrada de cada chamada de ferramenta, cada veredicto de permissão, inícios de subagentes, uso de tokens e respostas finais, e os primeiros 70 caracteres de cada prompt para o log. Ele guarda apenas resumos curtos no estado da sessão, com as credenciais mascaradas por um filtro de expressões regulares. O filtro é de melhor esforço, então considere que o painel mostra seus comandos.
  • Hooks de controle: tool.check, tool.call, agent.spawn, agent.offer, session.append, session.compact e classic.UserPromptSubmit são todos de passagem: esperam next(e) e devolvem o resultado. O claude plugin validate observa que eles não têm .catch; os hooks classic e compact também não rodam onde uma organização gerencia o Claude Code.
  • Telemetria, daemons, outras gravações: nenhum; nada persiste depois da sessão.
  • Licença: MIT, com arquivo LICENSE.

O claude plugin validate não informou erros nem avisos. Os 28 testes do autor passaram no Claude Code 2.1.303.

Intercepta chamadas de ferramentas
Vê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
Lê seus prompts
Pode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
Altera a interface
Desenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
Adiciona comandos/ferramentas
Registra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).

Compatibilidade e solução de problemas

Verificado com o Claude Code 2.1.303 no macOS (validate e testes); o README do autor pede 2.1.287 ou superior. Se o painel não aparecer:

  • Execute /reload-plugins e depois /flightdeck. Abaixo de 144 colunas o painel não abre sozinho.
  • Procure na transcrição uma linha esmaecida que comece com flightdeck:; ela nomeia o hook que falhou ou o motivo de o painel ter sido recusado.
  • Se as cores parecerem erradas, defina palette como pastel. Se os contadores parecerem desatualizados após uma atualização, execute /flightdeck reset.
  • No VS Code e no celular, os conectores e os relógios ficam estáticos.

Perguntas frequentes

O Flightdeck envia algo para fora da minha máquina?
Não. No código não encontramos chamadas de rede, execução de processos nem leitura ou escrita de arquivos. Ele só chama as próprias APIs do Claude Code para relógio, uso, estado e painel. Seu estado fica no estado da sessão e termina com ela.
Ele pode bloquear ou alterar minhas chamadas de ferramentas?
Não. Ele se conecta a tool.check, tool.call, agent.spawn e outros, mas cada hook espera o próximo manipulador e devolve o resultado sem mudanças. Não nega, reescreve nem atrasa nada.
Ele guarda meus comandos, inclusive segredos?
Para cada verificação de permissão, mantém no estado da sessão um resumo de uma linha (nome da ferramenta mais um caminho, comando ou padrão, cortado em 90 caracteres). Antes, as formas comuns de credenciais, como tokens bearer, chaves de API e senhas, são mascaradas. O resumo só aparece no painel e não é salvo entre sessões.
O painel não abriu quando iniciei o Claude Code. Por quê?
openOnStart só abre o painel em terminais com pelo menos 144 colunas. Em um terminal mais estreito, execute /flightdeck. Em linha, acima do prompt, ele mostra um resumo de 8 linhas.
Qual a diferença para o Agent Radar?
O Agent Radar desenha uma linha ao vivo por subagente em execução acima do prompt. O Flightdeck é um painel mais amplo, com o modelo, o medidor de contexto, o custo, uma faixa de verificações de permissão, cartões de subagentes que viram raias e o recibo do último turno.
Agent Radar em execução no Claude CodeDestaque

Agent Radar

Uma linha ao vivo acima do prompt por subagente em execução: tempo, ferramentas e ação atual, mais um painel /radar.

  • acima do prompt
  • painel
  • notificação
  • Intercepta chamadas de ferramentas
  • Lê seus prompts
  • Altera a interface
  • Adiciona comandos/ferramentas

testado com v2.1.291

Context Bar em execução no Claude CodeDestaque

Context Bar

A janela de contexto do Claude Code como uma barra empilhada acima do prompt, uma cor por categoria, com tokens.

  • acima do prompt
  • Altera a interface
  • Adiciona comandos/ferramentas
  • Armazena dados

testado com v2.1.291

Medidor de contexto em execução no Claude CodeDestaque

Medidor de contexto

Uso do contexto, dos limites de 5 horas e 7 dias e custo da sessão na barra de status, com aviso perto do limite.

  • status
  • notificação
  • Altera a interface

testado com v2.1.310

Mais em Painéis e dashboards, Timers, tarefas e standups.