Pular para o conteúdo
TRILHA 3

🖥️ Telas e comandos

Desenhe no Claude Code: ui.render e as quatro superfícies, a faixa acima do prompt, status e avisos, painéis com botões, comandos de barra que respondem sem modelo e ferramentas que o modelo pode chamar.

4
Módulos
24
Tópicos
~2h20
Duração
Técnico
Nível
0 de 240%
conversa Pane [ a ] abrir [ x ] fechar AbovePrompt · faixa de todos > /meu-comando terminal desktop mobile vscode

Mapa da trilha

Conteúdo detalhado

3.1Fundamento · ~35 min

🎨 ui.render e as superfícies

O que o hook de ui.render recebe, a tabela de elementos de cada superfície e as regras de uma árvore que valida.

0 de 60%
O que é:

O hook de ui.render recebe uma instância de componente: e.component, e.surface, e.requestId, e.props e e.viewport.

Por que aprender:

Com esses campos você decide se desenha, onde desenha e do tamanho certo.

Conceitos-chave:

ui.render, component, surface, requestId, viewport.

O que é:

O $.ui.resolve(e) devolve a tabela de construtores da superfície, que você desestrutura nas tags JSX.

Por que aprender:

O módulo não tem elementos globais; sem resolve não há Box nem Text.

Conceitos-chave:

$.ui.resolve, Box, Text, JSX com h.

O que é:

Cada superfície tem sua tabela: o terminal não tem Svg, mas tem Raster e Image; o mobile não tem Input nem Select.

Por que aprender:

Uma árvore com elemento que a superfície não tem não é desenhada.

Conceitos-chave:

superfície, Elements, diferenças, narrowing por e.surface.

O que é:

O hook de render lê o estado com $.state.get e nunca escreve; quem escreve é um handler ou outro evento.

Por que aprender:

Escrever ao desenhar é negado; ler assina a instância e o redesenho vem sozinho.

Conceitos-chave:

render puro, $.state.get, handler, redesenho.

O que é:

Uma árvore que não valida não é desenhada: o engine desenha a própria e registra o motivo no log.

Por que aprender:

Saber ler essa linha poupa horas de "por que não aparece nada".

Conceitos-chave:

validação, ui.render refused, debug log.

O que é:

Raster desenha uma grade de células coloridas; Image mostra uma figura pelo protocolo gráfico do terminal, com alt nos outros.

Por que aprender:

Gráficos e mapas de calor sem um Box por célula.

Conceitos-chave:

Raster, Image, $.ui.blit, alt.

Ver Completo
3.2Prático · ~35 min

📟 Faixa, status e avisos

A faixa AbovePrompt compartilhada, status, toast e log, com o exemplo oficial band.tsx dissecado.

0 de 60%
O que é:

O componente AbovePrompt é a faixa acima da caixa de prompt; o hook desenha nela com o tamanho de bodyColumns.

Por que aprender:

É o lugar de informação contínua: contadores, avisos, estado do mod.

Conceitos-chave:

AbovePrompt, faixa, bodyColumns.

O que é:

A faixa é uma só e compartilhada: o exemplo oficial band.tsx mostra como desenhar nela sem apagar os vizinhos.

Por que aprender:

Um mod que toma a faixa inteira apaga os vizinhos.

Conceitos-chave:

compartilhar, next, composição.

O que é:

O $.ui.status mostra um estado curto sem abrir painel e sem começar turno.

Por que aprender:

Informação discreta não precisa de tela própria.

Conceitos-chave:

$.ui.status, linha de status, sem turno.

O que é:

O $.ui.toast dá um aviso passageiro e o $.ui.log escreve uma linha no registro, sem chamar o modelo.

Por que aprender:

Avisos certos no lugar certo, sem poluir a conversa.

Conceitos-chave:

$.ui.toast, $.ui.log, aviso, registro.

O que é:

Ler o exemplo oficial da faixa que vem com o Claude Code: estado tipado, resolve, árvore e botão.

Por que aprender:

É o modelo mais curto e correto de faixa que existe para copiar.

Conceitos-chave:

examples/band.tsx, band-state.d.ts, referência oficial.

O que é:

Montar a faixa num teste para terminal e desktop, com o mesmo corpo num laço.

Por que aprender:

Prova que o mod não depende de uma superfície só.

Conceitos-chave:

claude plugin test, mount, terminal, desktop.

Ver Completo
3.3Prático · ~35 min

🪟 Painéis e botões

Painéis abertos por comando, dimensionados pelo bodyColumns, com botões, hotkeys, campos e modo diálogo.

0 de 60%
O que é:

O $.ui.open abre um painel, o componente Pane, que o hook de ui.render desenha.

Por que aprender:

Painel é a tela própria do mod: listas, detalhes, formulários.

Conceitos-chave:

$.ui.open, Pane, requestId.

O que é:

O painel desenha no bodyColumns, mais estreito que a tela quando fica ao lado da conversa.

Por que aprender:

Árvore dimensionada pelo viewport quebra quando o painel está encaixado.

Conceitos-chave:

bodyColumns, viewport, isFullscreen.

O que é:

Botões com label, variant e hotkey de uma letra ou dígito, que funcionam quando o painel tem o teclado.

Por que aprender:

Atalho de uma tecla torna o painel usável sem mouse.

Conceitos-chave:

Button, hotkey, variant, foco.

O que é:

Os handlers ficam no plugin e disparam os eventos ui.press, ui.input e ui.select com a chave do elemento.

Por que aprender:

É assim que um clique vira ação e um texto digitado vira dado.

Conceitos-chave:

ui.press, ui.input, ui.select, key.

O que é:

Abrir o painel com focus, closeOnEscape e holdToasts faz ele se comportar como diálogo.

Por que aprender:

Diálogo prende a atenção do usuário; deixar holdToasts num painel fixo trava os avisos.

Conceitos-chave:

diálogo, focus, closeOnEscape, holdToasts.

O que é:

Fechar o painel por botão de dispensa ou por Esc e limpar o estado ligado a ele.

Por que aprender:

Painel que não fecha ou estado que sobra confunde a próxima abertura.

Conceitos-chave:

role dismiss, Esc, limpeza de estado.

Ver Completo
3.4Prático · ~35 min

⌨️ Comandos, ferramentas e configuração

Comandos de barra que respondem sem modelo, ferramentas para o modelo, opções do /config e nomes sem colisão.

0 de 60%
O que é:

Registrar um comando de barra com nome e descrição, normalmente no session.start.

Por que aprender:

Comando de mod roda na hora e não precisa de modelo.

Conceitos-chave:

$.command.register, session.start, /comando.

O que é:

Responder o evento command.run, filtrado pelo nome do comando, com { text } e, se quiser, context.

Por que aprender:

text é a linha que aparece e o modelo também lê; context só o modelo lê.

Conceitos-chave:

command.run, { text }, context.

O que é:

Desenhar a saída do comando como árvore na conversa hookando o componente CommandOutput.

Por que aprender:

A resposta vira tabela ou card em vez de texto cru.

Conceitos-chave:

CommandOutput, ui.render, matcher por props.

O que é:

Declarar uma ferramenta com nome, descrição e schema, servida por um hook de tool.call; ela aparece como mcp__<plugin>__<nome>.

Por que aprender:

O modelo passa a usar uma capacidade que só o seu mod oferece.

Conceitos-chave:

$.tool.register, tool.call, schema, mcp__plugin__nome.

O que é:

Ler os valores que o usuário ajustou no /config pelo options do register, com padrões do manifesto.

Por que aprender:

Mudar uma opção recarrega o módulo; o mod nunca lê config velha.

Conceitos-chave:

userConfig, options, picker, /config.

O que é:

Escolher nomes de comandos, ferramentas e chaves de estado que não batam com os de outros mods.

Por que aprender:

Dois mods com o mesmo comando brigam, e o usuário não sabe qual respondeu.

Conceitos-chave:

colisão, prefixo, nome do plugin.

Ver Completo
← Voltar ao início Próxima trilha: Controlar e distribuir →