🎨databricks-app-design
- プラグイン
- databricks
- ソース
- GitHub で見る ↗
説明
カスタムコードの Databricks Apps(AppKit/React)におけるデータ画面の UX を設計します。対象は KPI/概要ページ、レポート、チャート、テーブル、および Genie/チャット型データアシスタントで、具体的な AppKit コンポーネントにマッピングされます。 次のような場合に使用: データを表示したり、データに関する質問に回答する AppKit/React アプリの UI を**構築または레ビューする**場合。具体的には、ジャンル選定、レイアウト、チャート、KPI、セマンティックカラー、必須ステート(ローディング/空/エラー)、IBCS 記法、および AI 結果の信頼性表示(Genie/チャット向けに生成 SQL やソースを提示する方法)の検討が含まれます。 --- **⚠️ 適用範囲に関する注意** - 「ダッシュボードを作成して」という単純なリクエストは、マネージド型の AI/BI(Lakeview)ダッシュボードを意味します → `databricks-aibi-dashboards` を使用してください。**このスキルは対象外です。** - データ表示を伴わないフロントエンド(フォーム、設定画面、認証、マーケティングページ)には対応していません。 - スキャフォールディング・ビルド・デプロイには対応していません(→ `databricks-apps` を使用)。 --- **`databricks-apps` との関係** このスキルは `databricks-apps` を補完するものです。カスタムアプリにチャート、テーブル、KPI、レポート、または Genie/チャット/AI サーフェスが含まれる場合は、`databricks-apps` と**併用**してください。
原文を表示
Design the UX of custom-code Databricks Apps (AppKit/React) data screens — KPI/overview pages, reports, charts, tables, and Genie/chat data assistants — mapped to concrete AppKit components. Use when BUILDING or reviewing the UI of an AppKit/React app that displays data or answers data questions: choosing genre, layout, charts, KPIs, semantic color, required states (loading/empty/error), IBCS notation, and AI-result trust (showing generated SQL/sources for Genie/chat). A plain "create a dashboard" request means a managed AI/BI (Lakeview) dashboard → use databricks-aibi-dashboards, NOT this skill. Also NOT for non-data frontend (forms, settings, auth, marketing) or scaffolding/build/deploy (→ databricks-apps). Complements databricks-apps; use it alongside whenever a custom app has a chart, table, KPI, report, or Genie/chat/AI surface.
ユースケース
- ✓AppKit/ReactアプリのUI構築またはレビューするとき
- ✓KPI/概要ページやレポート、チャートを設計するとき
- ✓テーブルやGenie/チャット型データアシスタントのUXを検討するとき
- ✓ローディング/空/エラーなど必須ステートを設計するとき
- ✓AI結果の信頼性表示方法を検討するとき
本文(日本語訳)
データアプリ設計
Databricks のデータ・AI アプリを、明確に伝わる形で設計し、実際の AppKit コードとしてコンパイルできるスキルです。 このスキルは 2 つの知識体系を統合し、実装へと橋渡しします。
- コンポジション — 何を表示するか、どの程度抽象化するか、どうレイアウトするか →
references/dashboard-patterns.md - 表記規則 — 比較すべきものは同じ見た目にする、誠実なスケール、シナリオマーク →
references/ibcs-notation.md - 実装 — 使用すべき AppKit のコンポーネント・フック・トークンの詳細 →
references/appkit-cheatsheet.md
実際のコンポーネント名を示さない設計アドバイスは不完全です。必ずコンポーネント計画で締めくくってください。
使用すべき場面 / 使用すべきでない場面
- 使用する場面: カスタムコードの Databricks App(AppKit/React)におけるデータ画面 — 概要/KPI ページ、レポート、メトリクス/オントロジーページ、差異分析、チャート、テーブル、Genie/自然言語データサーフェス — の設計または批評
- 使用しない場面: マネージド AI/BI(Lakeview)ダッシュボードの作成(→
databricks-aibi-dashboards)、汎用フロントエンド(フォーム・認証・設定・マーケティング)、スキャフォールディング/ビルド/デプロイ(→databricks-apps)。「ダッシュボードを作成して」「ダッシュボードを構築して」のような、app / AppKit / React / カスタムコードを示すキーワードのないリクエストは、マネージド AI/BI(Lakeview)ダッシュボードを意味するため →databricks-aibi-dashboardsを使用し、このスキルは使用しない。「フォームを追加して」「デプロイして」「Lakeview / AI-BI ダッシュボードを構築して」というリクエストにも、このスキルは起動しないこと。 - 他スキルとの関係:
databricks-appsはアプリのビルド/実行を担当し、このスキルはデータ画面の見た目と使用するプリミティブを決定します。
ワークフロー
- フレーミング — 対象ユーザー、意思決定/問いの内容、更新頻度、デバイス、主要タスクを 1 文でまとめる。
- ジャンル選定 —
dashboard-patterns.mdから最も近いものを選ぶ(static / analytic / magazine / infographic / repository / embedded mini)。明示すること。 - コンポジション — コンテンツとコンポジションパターンを選択する(データ抽象化、メタ情報、レイアウト、インタラクション、カラー)。トレードオフを明確にする — 何を要約・非表示・ページ分割・インタラクティブ化するか、またその理由。
- 表記規則の適用 —
ibcs-notation.mdの関連ルールを実行する: タイトルへのメッセージ埋め込み、シナリオマーク(実績/前年/計画/予測)、誠実なスケール、セマンティックカラー。チャートの語彙に競合がある場合は IBCS が優先される(同ファイルの競合注記を参照)。 - コンポーネントへの紐付け — すべての要素を、
@databricks/appkit/@databricks/appkit-uiから実際にエクスポートされているプリミティブにマッピングする(appkit-cheatsheet.mdを参照)。AppKit が提供していないコンポーネントは決して記載しないこと。KPI/トレンド/分布カードのプリビルドは存在しないため、表記規則に従ってプリミティブから組み合わせること。colorPaletteとセマンティックトークンを使用し、ハードコードされた hex 値は使用しない。データはuseAnalyticsQuery/queryKey+sql.*パラメータでバインドすること。 - 状態の網羅 — すべてのデータビューで loading / empty / error / partial を処理すること(チェックリスト参照)。
- レビュー — 両方の参照ファイルのチェックリストを実行する。批評は、理解度または誠実性に関して最もインパクトの高い問題から始め、影響を受けるコンポーネント/ファイルを明示すること。
必須の状態とデータのリアリティ(データアプリにおいて交渉の余地なし)
- Loading →
Skeleton;Empty →Empty(有用な次のアクションを付与);Error → インラインメッセージ(空白パネルは不可);Partial/stale → 取得済みデータを表示 + 鮮度に関する注記を付与。 - すべての KPI には単位・期間・比較値・鮮度/ソースを表示すること(メトリクス定義を反映し、出典のない数値は表示しない)。
- 大規模テーブルは、巨大な結果セットに対するクライアントサイド処理ではなく、サーバーサイドでのページネーション/ソート/フィルターを使用すること。
- 長時間クエリには、オプティミスティックローディングとタイムアウト/エラー UX を実装すること。
AI / Genie サーフェス(「AI」の側面)
適用条件: このセクションは、アプリに Genie / チャット / 自然言語 /「データに質問する」サーフェスが含まれる場合にのみ適用されます。
会話型入力のない純粋なダッシュボード / KPI / レポートアプリの場合は、このセクションと references/genie-ai-trust.md をすべてスキップしてください。
適用される場合は、以下 5 つすべてを実装してください(コードは references/genie-ai-trust.md を参照):
Genie/チャット/自然言語による回答は、生成プロセスと実行者がユーザーに見える場合にのみ信頼できます。「GenieChat + スピナーを使う」だけでは不十分です。Genie/チャットサーフェスがある場合は、以下 5 つすべてを実装してください(参照ファイルから正確なスニペットをコピーすること):
- Identity —
/api/whoamiルート(実際のx-forwarded-email/x-forwarded-userヘッダー)+ サインイン済みユーザーをBadgeで表示。OBO を主張できるのはuser_api_scopes: [dashboards.genie]が設定されている場合のみ。そうでなければ、クエリがアプリのサービスプリンシパルとして実行されることを開示する。 - 生成された SQL —
attachments[].queryを検査可能な「Generated SQL」Cardでレンダリングする。回答がどのように算出されたかを隠してはならない。 - Streaming/ステータス —
useGenieChat().status(streaming/error)を反映する。固まったスピナーは不可。 - 免責事項 — 各回答に「AI 生成 — 要確認」という恒久的な注記を付与する。
- ガバナンス + 状態処理 —
genie()スペース設定 + 実行 Identity に関する正直な注記(ユーザースコープの場合は OBO、そうでなければサービスプリンシパル)+ empty/error/ambiguous のハンドリング(Empty、Alert)。
出力フォーマット
設計提案:
## 方向性
[ジャンル、対象ユーザー、主要タスク、設計意図]
## パターンと表記規則の選択
- コンポジション: [データ情報、メタ情報、レイアウト、インタラクション、カラー]
- 表記規則: [メッセージ、シナリオマーク、スケール、セマンティックカラー]
## コンポーネント計画 ← 実装可能にするための核心部分
- [要素] → [AppKit コンポーネント](queryKey/props)、[トークン/パレット]、処理する状態
## トレードオフとリスク
[要約/非表示/ページ分割/インタラクティブ化するもの、過負荷・スケール・アクセシビリティ・メンテナンスのリスク]
批評: 最も影響の大きい理解度/誠実性の問題から始め、該当するコンポーネント/ファイルを明示した上で、インパクト順に各指摘を列挙し、それぞれに具体的な修正方法(変更すべきコンポーネント/トークン/状態)を示す。
アンチパターン
- コンポーネント計画のない設計メモを作成する。
- トークン/パレット名を示さずに「セマンティックカラーを使用する」とだけ記述する。
- AppKit がエクスポートしていないコンポーネントを記載する(例: プリビルドの
KpiCard)— 公開されているプリミティブを組み合わせてコンポジットを構成すること。 - タスクが必要としていないインタラクション・ページ・密度を追加する(モックファーストアプリの過剰設計)。
- loading/empty/error 状態を忘れる、または鮮度/ソースのない KPI を表示する。
原文(English)を表示
Data App Design
Make Databricks data + AI apps that communicate clearly and compile to real AppKit code. This skill merges two bodies of knowledge and binds them to implementation:
- Composition — what to show, how much to abstract, how to lay it out →
references/dashboard-patterns.md - Notation — make comparable things look comparable; honest scales; scenario marks →
references/ibcs-notation.md - Implementation — the exact AppKit components, hooks, and tokens to use →
references/appkit-cheatsheet.md
Design advice that doesn't name a real component is incomplete. Always end at a component plan.
When to use / when NOT
- USE for: the data screens of a custom-code Databricks App (AppKit/React) — overview/KPI pages, reports, metric/ontology pages, variance analysis, charts, tables, and Genie/NL data surfaces — design or critique.
- Do NOT use for: authoring managed AI/BI (Lakeview) dashboards (→
databricks-aibi-dashboards), generic frontend (forms, auth, settings, marketing), or scaffolding/build/deploy (→databricks-apps). A plain "create a dashboard" / "build a dashboard" request (no app / AppKit / React / custom-code signal) means a managed AI/BI (Lakeview) dashboard → usedatabricks-aibi-dashboards, not this skill. If a request is "add a form", "deploy this", or "build a Lakeview / AI-BI dashboard", this skill should not fire. - Relationship:
databricks-appsbuilds/runs the app; this skill decides what the data screens should look like and which primitives realize them.
Workflow
- Frame — audience, the decision/question, refresh cadence, device, primary task. One sentence.
- Genre — pick the closest from
dashboard-patterns.md(static / analytic / magazine / infographic / repository / embedded mini). State it. - Compose — choose content + composition patterns (data abstraction, meta-info, layout, interaction, color). Make the tradeoff explicit: what's summarized, hidden, paginated, or made interactive — and why.
- Apply notation — run the relevant
ibcs-notation.mdrules: message-in-title, scenario marks (actual/PY/plan/forecast), honest scales, semantic color. On any chart-vocabulary conflict, IBCS wins (see the conflict note in that file). - Bind to components — map every element to a primitive that's actually exported from
@databricks/appkit/@databricks/appkit-ui(seeappkit-cheatsheet.md); never cite a component AppKit doesn't ship. There's no prebuilt KPI/trend/distribution card — compose those from primitives, following the notation rules. UsecolorPalette+ semantic tokens, never hardcoded hex. Bind data withuseAnalyticsQuery/queryKey+sql.*params. - Cover the states — every data view must handle loading / empty / error / partial (see checklist).
- Review — run the checklists in both reference files; lead critiques with the highest-impact comprehension or integrity issue, citing the affected component/file.
Required states & data realism (non-negotiable for data apps)
- Loading →
Skeleton; Empty →Emptywith a useful next action; Error → inline message, never a blank panel; Partial/stale → show what you have + a freshness note. - Every KPI shows unit + period + comparison + freshness/source (mirror the metric definition; don't show a number with no provenance).
- Large tables → server-side pagination/sort/filter, not client-side over a huge result set.
- Long-running queries → optimistic loading + timeout/error UX.
AI / Genie surfaces (the "AI" half)
Gate: this section applies only if the app has a Genie / chat / natural-language / "ask your data" surface. For a pure dashboard / KPI / report app with no conversational input, skip this section and references/genie-ai-trust.md entirely. When it does apply, implement ALL five (code in references/genie-ai-trust.md):
A Genie/chat/NL answer is only trustworthy if the user can see how it was produced and who it ran as. "Use GenieChat + a spinner" is NOT enough — for ANY Genie/chat surface, ship all five (copy the exact snippets from the reference):
- Identity — a
/api/whoamiroute (realx-forwarded-email/x-forwarded-userheaders) + the signed-in user in aBadge. Claim OBO only ifuser_api_scopes: [dashboards.genie]is wired; otherwise disclose the query runs as the app's service principal. - Generated SQL — render
attachments[].queryin an inspectable "Generated SQL"Card; never hide how the answer was computed. - Streaming/status — reflect
useGenieChat().status(streaming/error), never a frozen spinner. - Disclaimer — a persistent "AI-generated — verify" note per answer.
- Governance + states —
genie()space config + a truthful execution-identity note (OBO when user-scoped, else service principal) + empty/error/ambiguous handling (Empty,Alert).
Output formats
Design proposal:
## Direction
[Genre, audience, primary task, design intent.]
## Pattern & notation choices
- Composition: [data info, meta info, layout, interaction, color]
- Notation: [message, scenario marks, scales, semantic color]
## Component plan ← the part that makes it buildable
- [element] → [AppKit component] (queryKey/props), [token/palette], states handled
## Tradeoffs & risks
[What's summarized/hidden/paginated/interactive; overload, scale, a11y, maintenance risks.]
Critique: lead with the top comprehension/integrity issue, cite the component/file, then list findings by impact, each with the concrete fix (which component/token/state to change).
Anti-patterns
- Producing a design memo with no component plan.
- "Use semantic color" without naming the token/palette.
- Naming a component AppKit doesn't export (e.g. a prebuilt
KpiCard) — compose composites from published primitives instead. - Adding interaction, pages, or density the task doesn't need (over-engineering a mock-first app).
- Forgetting loading/empty/error states, or KPIs with no freshness/source.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。