Guia de LLM
Guia de LLM
Este documento fornece orientações prescritivas para assistentes de codificação de IA que geram código com o Databricks AppKit. Ele é intencionalmente opinativo para garantir uma geração de código consistente e pronta para produção.
Este arquivo contém apenas uma parte das orientações de LLM.
Para obter as orientações completas, consulte o arquivo llms.txt, que traz todas as diretrizes baseadas na documentação do AppKit.
Missão de alto nível
Crie aplicativos full-stack em TypeScript no Databricks usando:
- Backend:
@databricks/appkit - Frontend:
@databricks/appkit-ui - Analytics: arquivos SQL em
config/queries/*.sqlexecutados pelo Analytics plugin do AppKit
Este guia foi elaborado para funcionar mesmo que você não tenha acesso ao repositório de código-fonte do AppKit. Dê preferência apenas a APIs públicas dos pacotes e a estruturas de projeto portáveis.
Regras rígidas (guardrails para LLMs)
- Não invente APIs. Em caso de dúvida, siga os padrões apresentados na documentação e use apenas os exports documentados de
@databricks/appkite@databricks/appkit-ui. createApp()é assíncrono. Prefiraawait createApp(...)no nível superior (top-level). Se não for possível, usevoid createApp(...)e não ignore a rejeição da promise.- Sempre trate os estados de carregamento/erro/vazio na UI (use
Skeleton, texto de erro, estado vazio). - Sempre use os helpers
sql.*para parâmetros de query (não passe strings/números brutos, a menos que a query não espere nenhum parâmetro). - Nunca monte strings SQL dinamicamente. Use queries parametrizadas com
:paramName. - Nunca use
require(). Useimport/exportdo ESM.
Regras de importação do TypeScript
Se o seu tsconfig.json usa "verbatimModuleSyntax": true, use sempre import type para importações somente de tipos (caso contrário, os builds podem falhar em configurações estritas):
import type { ReactNode } from "react";
import { useMemo } from "react";Documentação da API
Consulte a referência da API (apenas documentação, NÃO para scaffolding):
# APENAS para consultar a documentação — NÃO use para init/scaffold
npx @databricks/appkit docs <query>IMPORTANTE: SEMPRE execute npx @databricks/appkit docs (sem query) PRIMEIRO para ver o índice da documentação. NÃO adivinhe caminhos — use o índice para encontrar os caminhos corretos.
Exemplos:
- Índice da documentação:
npx @databricks/appkit docs - Ver uma seção:
npx @databricks/appkit docs "appkit-ui API reference" - Índice completo (todas as entradas da API):
npx @databricks/appkit docs --full - Ver um documento específico:
npx @databricks/appkit docs ./docs/plugins/analytics.md
Checklist do LLM (antes de finalizar o código)
Configuração do projeto
- O
package.jsontem"type": "module" - O
tsxestá em devDependencies para o servidor de desenvolvimento - O script
devusaNODE_ENV=development tsx watch server/server.ts - O
client/index.htmlexiste, com<div id="root"></div>e um script apontando paraclient/src/main.tsx
Backend
await createApp({ plugins: [...] })é usado (ouvoid createApp, de forma intencional)server()está incluído (sempre)- Se usar SQL:
analytics({})incluído +config/queries/*.sqlpresente - As queries usam placeholders
:param, e os parâmetros são passados pela UI comsql.* - Se a query precisar de escopo por workspace: usa
:workspaceId
Frontend
useMemoenvolve os objetos de parâmetros- Os estados de carregamento/erro/vazio são explícitos
- Os gráficos usam
format="auto", a menos que haja um motivo para forçar"json"/"arrow" - Os gráficos usam props (
xKey,yKey,colors), e NÃO children (são baseados em ECharts, não em Recharts) - Se usar tooltips: a raiz está envolvida em
<TooltipProvider>
Nunca
- Não construa strings SQL manualmente
- Não passe parâmetros brutos sem tipagem para queries anotadas
- Não ignore a promise retornada por
createApp() - Não invente UI components que não estejam listados na documentação
- Não passe elementos filhos do Recharts (
<Bar>,<XAxis>, etc.) para os componentes de gráfico do AppKit