mcpField
A
app-sdk-concepts

app-sdk-concepts

github.com/grafana開発2954.3k 回インストール1 日前に更新
リポジトリ

app-sdk-concepts について

Grafana App Platform でスキーマ中心のアプリを構築する CLI と Go ライブラリです。CUE スキーマでリソースを定義して Go と TypeScript のコードを生成し、アドミッション制御やリコンサイラーでアプリのロジックを実装します。

主な機能

  1. 01アプリプロジェクトとコンポーネントの雛形作成
  2. 02CUE によるリソース種別の定義
  3. 03Go と TypeScript のコード生成
  4. 04アドミッション制御とリコンサイラーの実装
  5. 05複数のデプロイ方式に対応

活用シーン

  1. 01スタンドアロンの Operator アプリの開始
  2. 02Grafana リポジトリ内でのアプリ構築
  3. 03フロントエンドのみのアプリ作成
  4. 04CUE スキーマ変更後のコード生成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/grafana/skills --skill app-sdk-concepts

インストール後、Claude Code で/app-sdk-conceptsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
cli-reference.md
deployment-modes.md
local-config.md
local-development.md
project-structure.md
specific-config.md

詳細

Grafana App SDK の概念

grafana-app-sdk は、Grafana App Platform 上でスキーマ中心のアプリを構築するための CLI と Go ライブラリです。アプリでは CUE スキーマ(「kind」)を使ってリソースを定義し、Go と TypeScript のコードを生成して、アドミッションコントロールとリコンサイラーを通じてビジネスロジックを実装します。

前提条件

go install github.com/grafana/grafana-app-sdk/cmd/grafana-app-sdk@latest
grafana-app-sdk version   # verify

一般的なワークフロー

スタンドアロンのオペレーターアプリをスキャフォールドする
# 1. Init the project (use the Go module path)
grafana-app-sdk project init github.com/example/my-app

# 2. Add operator scaffolding — ASK THE USER FIRST.
#    They may prefer to write app.App by hand.
grafana-app-sdk project component add operator

# 3. Verify scaffolded layout
ls pkg/app pkg/watchers cmd/operator
# Expected: app.go, watchers/<kind>.go, main.go

よくある失敗:go install でバイナリが更新されることを忘れることです。init の前に grafana-app-sdk version で確認してください。

grafana/apps 形式のアプリをスキャフォールドする(grafana/grafana 内)

Grafana リポジトリ(またはフォーク)内でのみ利用できます。init コマンドは、リポジトリのルートにある apps/ と pkg/registry/apps/ を検出します。

mkdir -p apps/my-app && cd apps/my-app
grafana-app-sdk project init github.com/grafana/grafana/apps/my-app

# Keep ONLY: kinds/ pkg/ go.mod go.sum — delete everything else.
cp apps/example/Makefile       apps/my-app/Makefile
cp apps/example/kinds/config.cue apps/my-app/kinds/config.cue   # overwrite
go work use ./apps/my-app

次に、Grafana 内でアプリを登録します(pkg/registry/apps/apps.go + register.go)。詳しい手順は references/deployment-modes.md を参照してください。

開発のエンドツーエンドループ
1. project init               → module, Makefile, kinds/
2. project kind add MyKind    → CUE kind scaffold
3. Edit kinds/*.cue           → schemas, validation, versions
4. grafana-app-sdk generate   → Go types, clients, TS types, AppManifest, CRDs
5. Implement logic            → fill in reconciler / admission stubs
6. (optional) project component add frontend

CUE を変更するたびに、必ず generate を再実行してください。生成されたコードが、リコンサイラーに見える API です。

デプロイモード(1 行の表)

モード選択する状況実行場所
スタンドアロンオペレーターGrafana リポジトリの外で、独自のバイナリを使いたい場合独自の Webhook サーバーを持つ Kubernetes オペレーター
grafana/appsgithub.com/grafana/grafana(またはフォーク)内Grafana の API サーバー内で実行
フロントエンドのみUI のみのアプリで、Go のロジックが不要な場合バックエンドなし。TS 型のみ

各モードの init、ランタイム、配線の詳細は references/deployment-modes.md を参照してください。

参考資料

リソース

コメント