メインコンテンツに移動

LLM ガイド

LLM ガイド

このドキュメントは、Databricks AppKit でコードを生成する AI コーディングアシスタント向けの規範的なガイダンスです。一貫性があり本番環境で使えるコードを生成できるよう、あえて明確な方針を示しています。

note

このファイルに記載されているのは、LLM 向けガイダンスの一部のみです。 完全なガイダンスは、AppKit ドキュメントに基づく llms.txt ファイルを参照してください。

全体的なミッション

以下を使って Databricks 上で フルスタックの TypeScript アプリ を構築します。

  • バックエンド: @databricks/appkit
  • フロントエンド: @databricks/appkit-ui
  • 分析: AppKit の Analytics プラグイン経由で実行される config/queries/*.sql 内の SQL ファイル

本ガイドは、AppKit のソースリポジトリにアクセスできない場合でも利用できるように設計されています。公開パッケージの API と移植性の高いプロジェクト構成のみを使うようにしてください。

厳守すべきルール (LLMガードレール)

  • APIを勝手に作り出さないこと。不明な場合はドキュメントに示されたパターンに従い、@databricks/appkit および @databricks/appkit-ui のドキュメント化されたエクスポートのみを使用してください。
  • createApp() は非同期ですトップレベルの await createApp(...) を推奨します。それができない場合は void createApp(...) を使用し、Promiseのリジェクトを無視しないでください。
  • UIでは必ずローディング/エラー/空の状態を処理してください (Skeleton、エラーテキスト、空状態の表示を使用) 。
  • クエリパラメータには必ず sql.* ヘルパーを使用してください (クエリがパラメータを必要としない場合を除き、生の文字列や数値をそのまま渡さないこと) 。
  • SQL文字列を動的に組み立てないでください:paramName を用いたパラメータ化クエリを使用します。
  • require() は決して使用しないでください。ESMの import/export を使用します。

TypeScript のインポートルール

tsconfig.json"verbatimModuleSyntax": true を設定している場合は、型のみのインポートには必ず import type を使用してください (設定が厳格な環境では、ビルドが失敗することがあります) :

import type { ReactNode } from "react";
import { useMemo } from "react";

API ドキュメント

API リファレンスを表示します (ドキュメント参照用のみ。スキャフォールディングには使用しません) :

# ドキュメントの閲覧専用 - init/スキャフォールディングには使用しないこと
npx @databricks/appkit docs <query>

重要: 必ず最初に npx @databricks/appkit docs (query なし) を実行して、ドキュメントのインデックスを確認してください。パスを推測せず、インデックスから正しいパスを探してください。

例:

  • ドキュメントのインデックス: npx @databricks/appkit docs
  • セクションの表示: npx @databricks/appkit docs "appkit-ui API reference"
  • 完全なインデックス (すべての API エントリ) : npx @databricks/appkit docs --full
  • 特定のドキュメントの表示: npx @databricks/appkit docs ./docs/plugins/analytics.md

LLM チェックリスト (コードを確定する前に)

プロジェクトのセットアップ

  • package.json"type": "module" が設定されている
  • 開発サーバー用に tsx が devDependencies に含まれている
  • dev スクリプトが NODE_ENV=development tsx watch server/server.ts を実行している
  • client/index.html が存在し、<div id="root"></div>client/src/main.tsx を指すスクリプトが記述されている

バックエンド

  • await createApp({ plugins: [...] }) を使用している (または意図的に void createApp を使用している)
  • server() が含まれている (常に必須)
  • SQL を使用する場合: analytics({}) が含まれ、config/queries/*.sql が存在する
  • クエリは :param プレースホルダーを使用し、パラメータは sql.* で UI から渡している
  • クエリをワークスペース単位に絞り込む必要がある場合: :workspaceId を使用している

フロントエンド

  • useMemo でパラメータオブジェクトをラップしている
  • ローディング/エラー/空の状態を明示的に扱っている
  • "json"/"arrow" を強制する理由がない限り、チャートは format="auto" を使用している
  • チャートは children ではなく props (xKeyyKeycolors) を使用している (Recharts ではなく ECharts ベースのため)
  • ツールチップを使う場合:ルートを <TooltipProvider> でラップしている

禁止事項

  • SQL文字列を手動で組み立てない
  • 型注釈付きのクエリに型なしの生パラメータを渡さない
  • createApp() が返すPromiseを無視しない
  • ドキュメントに記載のないUIコンポーネントを勝手に作らない
  • Rechartsの子要素 (<Bar><XAxis> など) をAppKitのチャートコンポーネントに渡さない

Databricks Developer Hub

次のエージェント型アプリを数分でリリースする準備はできていますか?

ドキュメントを読む