app-sdk-concepts — Claude Code skill: what it does, how to install
This skill guides Grafana App Platform work: choose a deployment mode, scaffold an app, and connect CUE schemas with generated Go logic.
npx skills add grafana/skills --skill app-sdk-concepts -a claude-codeWhat app-sdk-concepts does
app-sdk-concepts covers grafana-app-sdk, a CLI and Go library for schema-centric apps on the Grafana App Platform. It guides standalone operator projects, apps inside grafana/apps, and frontend-only projects. It also explains project layout and app registration.
The workflow starts with CUE schemas. project kind add MyKind creates a kind scaffold, while generate produces Go types, clients, TypeScript types, an AppManifest, and CRDs. You then fill in reconciler or admission logic. Run grafana-app-sdk generate again after every change to kinds/*.cue, because generated code is the API that the reconciler uses.
Install the CLI with go install and verify it with grafana-app-sdk version before running project init. Skipping the binary update can leave you using an older version. The grafana/apps mode requires the Grafana repository or a fork; frontend-only is for apps without Go logic.
What it helps with
- choose a Grafana app deployment mode
- scaffold a project with
project init - define a CUE resource and generate its code
- wire reconciler or admission logic
Example prompts for the agent
- Help me start a Grafana App Platform app and choose between standalone operator,
grafana/apps, and frontend-only. - Initialize a project with
grafana-app-sdk, addMyKind, editkinds/*.cue, and generate the Go and TypeScript code. - Show the layout and registration steps for an app inside
grafana/apps.
How to install app-sdk-concepts
1Skills CLI (Vercel)
npx skills add grafana/skills --skill app-sdk-concepts -a claude-code2Manually: put the files in place
~/.claude/skills/app-sdk-concepts/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/app-sdk-concepts/
1Skills CLI (Vercel)
npx skills add grafana/skills --skill app-sdk-concepts -a codex2Manually: put the files in place
.agents/skills/app-sdk-concepts/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add grafana/skills --skill app-sdk-concepts -a cursor2Manually: put the files in place
.cursor/skills/app-sdk-concepts/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install grafana/skills app-sdk-concepts2Manually: put the files in place
.github/skills/app-sdk-concepts/SKILL.md1Skills CLI (Vercel)
npx skills add grafana/skills --skill app-sdk-concepts -a gemini-cli2Platform CLI
gemini skills install https://github.com/grafana/skills --path skills/grafana-app-sdk/app-sdk-conceptsManually: put the files in place
.devin/skills/app-sdk-concepts/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add grafana/skills --skill app-sdk-concepts -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about app-sdk-concepts
How do I install app-sdk-concepts in Claude Code?
Run npx skills add grafana/skills --skill app-sdk-concepts -a claude-code, then run npx skills add grafana/skills --skill app-sdk-concepts -a claude-code again and check ~/.claude/skills/app-sdk-concepts/SKILL.md.
What does app-sdk-concepts do?
It guides Grafana App Platform development, from choosing a deployment mode to defining CUE kinds, generating code, and implementing reconciler or admission logic.
What do I need before using grafana-app-sdk?
Install the CLI with go install github.com/grafana/grafana-app-sdk/cmd/grafana-app-sdk@latest, then verify it with grafana-app-sdk version. The grafana/apps mode needs the Grafana repository or a fork.
Source text
SKILL.md · Apache-2.0
---
name: app-sdk-concepts
license: Apache-2.0
description: Use when starting any grafana-app-sdk work — scaffolding a Grafana app, initializing a Grafana App Platform app, picking a deployment mode (standalone operator / grafana/apps / frontend-only), wiring app-specific config, or onboarding to the SDK. Covers `grafana-app-sdk` CLI install, `project init` per deployment mode, project layout, the schema-centric workflow (CUE kinds → generated code → reconciler/admission logic), and `SpecificConfig` for env-driven app configuration. Use even if the user just says "make a new app", "Grafana app platform", "kinds and watchers", "operator scaffold", or asks about `apps/` inside the Grafana repo, without naming the SDK explicitly.
---
# Grafana App SDK Concepts
The grafana-app-sdk is a CLI + Go library for building schema-centric apps on the Grafana App Platform. Apps define resources via CUE schemas ("kinds"), generate Go + TypeScript code, and implement business logic via admission control and reconcilers.
## Prerequisites
```bash
go install github.com/grafana/grafana-app-sdk/cmd/grafana-app-sdk@latest
grafana-app-sdk version # verify
```
## Common Workflows
### Scaffold a standalone operator app
```bash
# 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
```
Common failure: forgetting `go install` updates the binary — verify with `grafana-app-sdk version` before init.
### Scaffold a grafana/apps-style app (inside `grafana/grafana`)
Only available inside the Grafana repo (or fork) — the init command detects `apps/` and `pkg/registry/apps/` at the repo root.
```bash
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
```
Then register the app inside Grafana (`pkg/registry/apps/apps.go` + `register.go`). Full walkthrough in [references/deployment-modes.md](references/deployment-modes.md#grafanaapps).
### End-to-end development loop
```
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
```
Always rerun `generate` after every CUE change — generated code is the API your reconciler sees.
## Deployment modes (one-line table)
| Mode | When to pick | Where it runs |
|------|--------------|---------------|
| Standalone operator | Outside Grafana repo, want your own binary | Kubernetes operator with its own webhook server |
| grafana/apps | Inside `github.com/grafana/grafana` (or fork) | In-process inside Grafana's API server |
| Frontend-only | UI-only app, no Go logic needed | No backend — TS types only |
Full per-mode init, runtime, and wiring detail in [references/deployment-modes.md](references/deployment-modes.md).
## References
- [`references/deployment-modes.md`](references/deployment-modes.md) — per-mode init, runtime semantics, grafana/apps registration walkthrough
- [`references/project-structure.md`](references/project-structure.md) — standalone project layout, what's hand-edited vs generated
- [`references/cli-reference.md`](references/cli-reference.md) — every `grafana-app-sdk` subcommand with flags
- [`references/specific-config.md`](references/specific-config.md) — `app.Config.SpecificConfig` pattern for feature-flag-driven app config
- [`references/local-development.md`](references/local-development.md) — Tilt + k3d local dev loop
- [`references/local-config.md`](references/local-config.md) — `local/config.yaml` reference
## Resources
- [grafana-app-sdk repo](https://github.com/grafana/grafana-app-sdk)
- [App Platform docs](https://grafana.com/docs/grafana/latest/developers/plugins/app-platform/)
© grafana · Apache-2.0 · grafana/skills