AugmentClaude

Databricks Apps Builder

Build web apps, dashboards, and APIs for Databricks with Python or TypeScript.

Installation

  1. Make sure Claude is on your device and in your terminal.

    Skills load from ~/.claude/skills/ when Claude Code starts up — so you need it on your machine first. If you don't have it yet, install it once with the command below, then run claude in any terminal to verify.

    One-time setup
    npm i -g @anthropic-ai/claude-code

    Already have it? Skip ahead.

  2. Paste into Claude Code or into your terminal.

    This copies the whole skill folder into ~/.claude/skills/databricks-apps-python/ — the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.

    Faster alternative (instruction-only skills)

    Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates — they won't be downloaded and the skill will fail when it tries to load them.

    Quick install (SKILL.md only)
    Sign up to copy
  3. Restart Claude Code.

    Quit and reopen Claude Code (or any other agent that loads from ~/.claude/skills/). New skills are picked up on startup.

  4. Just ask Claude.

    Skills auto-activate when your request matches the skill's description — no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the “What this skill does” section above.

Prefer to read the source first? Open on GitHub.

When Claude uses it

Builds Databricks applications. Prefers AppKit (TypeScript + React SDK) for new apps; falls back to Python frameworks (Dash, Streamlit, Gradio, Flask, FastAPI, Reflex) when Python is required. Handles OAuth authorization, app resources, SQL warehouse and Lakebase connectivity, model serving, foundation model APIs, and deployment. Use when building web apps, dashboards, ML demos, or REST APIs for Databricks, or when the user mentions AppKit, Streamlit, Dash, Gradio, Flask, FastAPI, Reflex, or Databricks app.

What this skill does

Databricks Applications

Build Databricks applications. For full examples and recipes, see the Databricks Apps Cookbook.


AppKit (Preferred for New Apps)

AppKit is the recommended SDK for new Databricks apps. It is a TypeScript + React SDK with a plugin architecture, built-in caching, telemetry, and end-to-end type safety.

Requirements

  • Node.js v22+
  • Databricks CLI v0.295.0+

Scaffold a new app

databricks apps init

This interactive command scaffolds the full project, installs dependencies, and optionally deploys.

Deploy

databricks apps deploy

AppKit plugins

PluginPurpose
AnalyticsSQL queries against Databricks SQL Warehouses — file-based, typed, cached
GenieConversational AI/BI interface with natural language queries
FilesBrowse/upload Unity Catalog Volumes
LakebaseOLTP PostgreSQL via Lakebase with OAuth token management

AI-assisted development

# Install agent skills for AI-powered scaffolding
databricks aitools install

# Query AppKit docs inline
npx @databricks/appkit docs "your question here"

AppKit documentation


Python Apps (alternative)

Use Python when: the team is Python-only, you need Streamlit/Dash/Gradio, or you are extending an existing Python app.

Critical Rules for Python apps (always follow)

  • MUST confirm framework choice or use Python Framework Selection below
  • MUST use SDK Config() for authentication (never hardcode tokens)
  • MUST use app.yaml valueFrom for resources (never hardcode resource IDs)
  • MUST use dash-bootstrap-components for Dash app layout and styling
  • MUST use @st.cache_resource for Streamlit database connections
  • MUST deploy Flask with Gunicorn, FastAPI with uvicorn (not dev servers)

Required Steps for Python apps

Copy this checklist and verify each item:

- [ ] Framework selected
- [ ] Auth strategy decided: app auth, user auth, or both
- [ ] App resources identified (SQL warehouse, Lakebase, serving endpoint, etc.)
- [ ] Backend data strategy decided (SQL warehouse, Lakebase, or SDK)
- [ ] Deployment method: CLI or DABs

Python Framework Selection

FrameworkBest Forapp.yaml Command
DashProduction dashboards, BI tools, complex interactivity["python", "app.py"]
StreamlitRapid prototyping, data science apps, internal tools["streamlit", "run", "app.py"]
GradioML demos, model interfaces, chat UIs["python", "app.py"]
FlaskCustom REST APIs, lightweight apps, webhooks["gunicorn", "app:app", "-w", "4", "-b", "0.0.0.0:8000"]
FastAPIAsync APIs, auto-generated OpenAPI docs["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
ReflexFull-stack Python apps without JavaScript["reflex", "run", "--env", "prod"]

Default: Recommend Streamlit for prototypes, Dash for production dashboards, FastAPI for APIs, Gradio for ML demos.


Quick Reference

ConceptDetails
RuntimePython 3.11, Ubuntu 22.04, 2 vCPU, 6 GB RAM
Pre-installedDash 2.18.1, Streamlit 1.38.0, Gradio 4.44.0, Flask 3.0.3, FastAPI 0.115.0
Auth (app)Service principal via Config() — auto-injected DATABRICKS_CLIENT_ID/DATABRICKS_CLIENT_SECRET
Auth (user)x-forwarded-access-token header — see references/1-authorization.md
ResourcesvalueFrom in app.yaml — see references/2-app-resources.md
Cookbookhttps://apps-cookbook.dev/
Docshttps://docs.databricks.com/dev-tools/databricks-apps/

Detailed Guides

Authorization: Use references/1-authorization.md when configuring app or user authorization — covers service principal auth, on-behalf-of user tokens, OAuth scopes, and per-framework code examples. (Keywords: OAuth, service principal, user auth, on-behalf-of, access token, scopes)

App resources: Use references/2-app-resources.md when connecting your app to Databricks resources — covers SQL warehouses, Lakebase, model serving, secrets, volumes, and the valueFrom pattern. (Keywords: resources, valueFrom, SQL warehouse, model serving, secrets, volumes, connections)

Frameworks: See references/3-frameworks.md for Databricks-specific patterns per framework — covers Dash, Streamlit, Gradio, Flask, FastAPI, and Reflex with auth integration, deployment commands, and Cookbook links. (Keywords: Dash, Streamlit, Gradio, Flask, FastAPI, Reflex, framework selection)

Deployment: Use references/4-deployment.md when deploying your app — covers Databricks CLI, Asset Bundles (DABs), app.yaml configuration, and post-deployment verification. (Keywords: deploy, CLI, DABs, asset bundles, app.yaml, logs)

Lakebase: Use references/5-lakebase.md when using Lakebase (PostgreSQL) as your app's data layer — covers auto-injected env vars, psycopg2/asyncpg patterns, and when to choose Lakebase vs SQL warehouse. (Keywords: Lakebase, PostgreSQL, psycopg2, asyncpg, transactional, PGHOST)

CLI commands: Use references/6-cli-approach.md for managing app lifecycle via CLI — covers creating, deploying, monitoring, and deleting apps. (Keywords: CLI, create app, deploy app, app logs)

Foundation Models: See examples/llm_config.py for calling Databricks foundation model APIs — covers OAuth M2M auth, OpenAI-compatible client wiring, and token caching. (Keywords: foundation model, LLM, OpenAI client, chat completions)


Workflow

  1. Determine the task type:

    New app from scratch? → Use AppKit (databricks apps init). Fall back to Python Framework Selection only if Python is required. Setting up authorization? → Read references/1-authorization.md Connecting to data/resources? → Read references/2-app-resources.md Using Lakebase (PostgreSQL)? → Read references/5-lakebase.md Deploying to Databricks? → Read references/4-deployment.md Using CLI for app lifecycle? → Read references/6-cli-approach.md Calling foundation model/LLM APIs? → See examples/llm_config.py

  2. Follow the instructions in the relevant guide

  3. For full code examples, browse https://apps-cookbook.dev/


Core Architecture

All Python Databricks apps follow this pattern:

app-directory/
├── app.py                 # Main application (or framework-specific name)
├── models.py              # Pydantic data models
├── backend.py             # Data access layer
├── requirements.txt       # Additional Python dependencies
├── app.yaml               # Databricks Apps configuration
└── README.md

Backend Toggle Pattern

import os
from databricks.sdk.core import Config

USE_MOCK = os.getenv("USE_MOCK_BACKEND", "true").lower() == "true"

if USE_MOCK:
    from backend_mock import MockBackend as Backend
else:
    from backend_real import RealBackend as Backend

backend = Backend()

SQL Warehouse Connection (shared across all frameworks)

from databricks.sdk.core import Config
from databricks import sql

cfg = Config()  # Auto-detects credentials from environment
conn = sql.connect(
    server_hostname=cfg.host,
    http_path=f"/sql/1.0/warehouses/{os.getenv('DATABRICKS_WAREHOUSE_ID')}",
    credentials_provider=lambda: cfg.authenticate,
)

Pydantic Models

from pydantic import BaseModel, Field
from datetime import datetime
from enum import Enum

class Status(str, Enum):
    ACTIVE = "active"
    PENDING = "pending"

class EntityOut(BaseModel):
    id: str
    name: str
    status: Status
    created_at: datetime

class EntityIn(BaseModel):
    name: str = Field(..., min_length=1)
    status: Status = Status.PENDING

Common Issues

IssueSolution
Connection exhaustedUse @st.cache_resource (Streamlit) or connection pooling
Auth token not foundCheck x-forwarded-access-token header — only available when deployed, not locally
App won't startCheck app.yaml command matches framework; check databricks apps logs <name>
Resource not accessibleAdd resource via UI, verify SP has permissions, use valueFrom in app.yaml
Import error on deployAdd missing packages to requirements.txt (pre-installed packages don't need listing)
Lakebase app crashes on startpsycopg2/asyncpg are NOT pre-installed — MUST add to requirements.txt
Port conflictApps must bind to DATABRICKS_APP_PORT env var (defaults to 8000). Never use 8080. Streamlit is auto-configured; for others, read the env var in code or use 8000 in app.yaml command
Streamlit: set_page_config errorst.set_page_config() must be the first Streamlit command
Dash: unstyled layoutAdd dash-bootstrap-components; use dbc.themes.BOOTSTRAP
Slow queriesUse Lakebase for transactional/low-latency; SQL warehouse for analytical queries

Platform Constraints

ConstraintDetails
RuntimePython 3.11, Ubuntu 22.04 LTS
Compute2 vCPUs, 6 GB memory (default)
Pre-installed frameworksDash, Streamlit, Gradio, Flask, FastAPI, Shiny
Custom packagesAdd to requirements.txt in app root
NetworkApps can reach Databricks APIs; external access depends on workspace config
User authPublic Preview — workspace admin must enable before adding scopes

Official Documentation

Related Skills

  • databricks-dabs - deploying apps via DABs
  • databricks-python-sdk - backend SDK integration
  • databricks-lakebase - adding persistent PostgreSQL state (autoscaling managed PG with branching)
  • databricks-model-serving - serving ML models for app integration

Related skills