[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-databricks-databricks-apps-python":3,"mdc--ev0g62-key":39,"related-org-databricks-databricks-apps-python":1891,"related-repo-databricks-databricks-apps-python":2066},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":29,"repoUrl":30,"updatedAt":31,"license":32,"forks":33,"topics":34,"repo":35,"sourceUrl":37,"mdContent":38},"databricks-apps-python","build Python backends for Databricks Apps","Python backend for Databricks Apps — FastAPI (default), Flask, Dash, Streamlit, Gradio, Reflex. **Default for a new Databricks App is `databricks-apps` (AppKit — Node\u002FTypeScript\u002FReact) — reach for it first.** Use this skill only when the user asks for a Python backend, extends an existing Python app, or the team is Python-only. Covers OAuth auth, app resources, SQL warehouse and Lakebase connectivity, foundation-model \u002F Vector Search \u002F model-serving APIs (via `databricks-python-sdk`), and deployment via CLI or DABs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"databricks","Databricks","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fdatabricks.png",[12,16,19,22,25,26],{"name":13,"slug":14,"type":15},"Gradio","gradio","tag",{"name":17,"slug":18,"type":15},"Flask","flask",{"name":20,"slug":21,"type":15},"Streamlit","streamlit",{"name":23,"slug":24,"type":15},"Python","python",{"name":9,"slug":8,"type":15},{"name":27,"slug":28,"type":15},"FastAPI","fastapi",204,"https:\u002F\u002Fgithub.com\u002Fdatabricks\u002Fdatabricks-agent-skills","2026-07-12T08:04:10.970845",null,60,[],{"repoUrl":30,"stars":29,"forks":33,"topics":36,"description":32},[],"https:\u002F\u002Fgithub.com\u002Fdatabricks\u002Fdatabricks-agent-skills\u002Ftree\u002FHEAD\u002Fplugins\u002Fdatabricks\u002Fcopilot\u002Fskills\u002Fdatabricks-apps-python","---\nname: databricks-apps-python\ndescription: \"Python backend for Databricks Apps — FastAPI (default), Flask, Dash, Streamlit, Gradio, Reflex. **Default for a new Databricks App is `databricks-apps` (AppKit — Node\u002FTypeScript\u002FReact) — reach for it first.** Use this skill only when the user asks for a Python backend, extends an existing Python app, or the team is Python-only. Covers OAuth auth, app resources, SQL warehouse and Lakebase connectivity, foundation-model \u002F Vector Search \u002F model-serving APIs (via `databricks-python-sdk`), and deployment via CLI or DABs.\"\ncompatibility: Requires databricks CLI (>= v1.0.0)\nmetadata:\n  version: \"0.1.0\"\nparent: databricks-core\n---\n\n# Databricks Applications — Python backends\n\n> **First, confirm this skill is the right one.** The default for new Databricks Apps is **[databricks-apps](..\u002Fdatabricks-apps\u002FSKILL.md)** (AppKit — Node.js + TypeScript + React SDK). Load that skill first unless the user explicitly asks for a Python backend, is extending an existing Python app, or the team is Python-only. Everything below is the Python-backend alternative.\n\n## Critical Rules for Python apps (always follow)\n\n- **MUST** confirm framework choice or use [Python Framework Selection](#python-framework-selection) below\n- **MUST** use SDK `Config()` for authentication (never hardcode tokens)\n- **MUST** use `app.yaml` `valueFrom` for resources (never hardcode resource IDs)\n- **MUST** use `dash-bootstrap-components` for Dash app layout and styling\n- **MUST** use `@st.cache_resource` for Streamlit database connections\n- **MUST** deploy Flask with Gunicorn, FastAPI with uvicorn (not dev servers)\n\n## Required Steps for Python apps\n\nCopy this checklist and verify each item:\n```\n- [ ] Framework selected\n- [ ] Auth strategy decided: app auth, user auth, or both\n- [ ] App resources identified (SQL warehouse, Lakebase, serving endpoint, etc.)\n- [ ] Backend data strategy decided (SQL warehouse, Lakebase, or SDK)\n- [ ] Deployment method: CLI or DABs\n```\n\n---\n\n## Python Framework Selection\n\n| Framework | Best For | app.yaml Command |\n|-----------|----------|------------------|\n| **FastAPI** (default) | Any Python backend by default — async APIs, auto-generated OpenAPI docs, JSON-serving apps | `[\"uvicorn\", \"app:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\"]` |\n| **Flask** | Custom REST APIs, lightweight apps, webhooks | `[\"gunicorn\", \"app:app\", \"-w\", \"4\", \"-b\", \"0.0.0.0:8000\"]` |\n| **Dash** | Production dashboards, BI tools, complex interactivity | `[\"python\", \"app.py\"]` |\n| **Streamlit** | Rapid prototyping, data science apps, internal tools where the UI is a series of Python widgets | `[\"streamlit\", \"run\", \"app.py\"]` |\n| **Gradio** | ML demos, model interfaces, chat UIs | `[\"python\", \"app.py\"]` |\n| **Reflex** | Full-stack Python apps without JavaScript | `[\"reflex\", \"run\", \"--env\", \"prod\"]` |\n\n**Default: FastAPI.** Reach for FastAPI unless the user explicitly asks for Streamlit-style widget prototyping (Streamlit), a heavy dashboard grid (Dash), or a Gradio-style ML demo. FastAPI pairs naturally with a JS\u002FHTML frontend or a JSON-consuming caller — the same posture `databricks-apps` uses on the Node side.\n\n---\n\n## Quick Reference\n\n| Concept | Details |\n|---------|---------|\n| **Runtime** | Python 3.11, Ubuntu 22.04, 2 vCPU, 6 GB RAM |\n| **Pre-installed** | Dash 2.18.1, Streamlit 1.38.0, Gradio 4.44.0, Flask 3.0.3, FastAPI 0.115.0 |\n| **Auth (app)** | Service principal via `Config()` — auto-injected `DATABRICKS_CLIENT_ID`\u002F`DATABRICKS_CLIENT_SECRET` |\n| **Auth (user)** | `x-forwarded-access-token` header — see [references\u002F1-authorization.md](references\u002F1-authorization.md) |\n| **Resources** | `valueFrom` in app.yaml — see [references\u002F2-app-resources.md](references\u002F2-app-resources.md) |\n| **SDK \u002F Foundation Models \u002F Vector Search \u002F Model Serving** | Use the `databricks-python-sdk` skill — same `WorkspaceClient` and OpenAI-compatible foundation-model patterns work inside a Databricks App |\n| **Docs** | https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002F |\n\n---\n\n## Detailed Guides\n\n**Authorization**: Use [references\u002F1-authorization.md](references\u002F1-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)\n\n**App resources**: Use [references\u002F2-app-resources.md](references\u002F2-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)\n\n**Frameworks**: See [references\u002F3-frameworks.md](references\u002F3-frameworks.md) for Databricks-specific patterns per framework — FastAPI (default), Flask, Dash, Streamlit, Gradio, Reflex — with auth integration and deployment commands. (Keywords: FastAPI, Flask, Dash, Streamlit, Gradio, Reflex, framework selection)\n\n**Deployment**: Use [references\u002F4-deployment.md](references\u002F4-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)\n\n**Lakebase**: Use [references\u002F5-lakebase.md](references\u002F5-lakebase.md) when using Lakebase (PostgreSQL) as your app's data layer — covers auto-injected env vars, psycopg2\u002Fasyncpg patterns, and when to choose Lakebase vs SQL warehouse. (Keywords: Lakebase, PostgreSQL, psycopg2, asyncpg, transactional, PGHOST)\n\n**CLI commands**: Use [references\u002F6-cli-approach.md](references\u002F6-cli-approach.md) for managing app lifecycle via CLI — covers creating, deploying, monitoring, and deleting apps. (Keywords: CLI, create app, deploy app, app logs)\n\n**Foundation Models \u002F SDK \u002F Vector Search \u002F Model Serving**: Use the **[databricks-python-sdk](..\u002Fdatabricks-python-sdk\u002FSKILL.md)** skill for the OpenAI-compatible foundation-model client, `WorkspaceClient` calls, Vector Search, and model-serving invocation — the same patterns apply inside a Databricks App. The examples in this skill's `examples\u002F` folder (`fm-minimal-chat.py`, `fm-parallel-calls.py`, `fm-structured-outputs.py`, `llm_config.py`) show the App-side wiring only.\n\n---\n\n## Workflow\n\n1. Determine the task type:\n\n   **New app from scratch?** → Load **[databricks-apps](..\u002Fdatabricks-apps\u002FSKILL.md)** first (AppKit \u002F Node). Only stay in this skill if the user explicitly asks for a Python backend.\n   **Python-backend confirmed?** → [Python Framework Selection](#python-framework-selection) — default to FastAPI.\n   **Setting up authorization?** → Read [references\u002F1-authorization.md](references\u002F1-authorization.md)\n   **Connecting to data\u002Fresources?** → Read [references\u002F2-app-resources.md](references\u002F2-app-resources.md)\n   **Using Lakebase (PostgreSQL)?** → Read [references\u002F5-lakebase.md](references\u002F5-lakebase.md)\n   **Deploying to Databricks?** → Read [references\u002F4-deployment.md](references\u002F4-deployment.md)\n   **Using CLI for app lifecycle?** → Read [references\u002F6-cli-approach.md](references\u002F6-cli-approach.md)\n   **Calling foundation model \u002F LLM APIs, Vector Search, or model-serving endpoints?** → Load the **[databricks-python-sdk](..\u002Fdatabricks-python-sdk\u002FSKILL.md)** skill. This skill's `examples\u002F` folder shows only the App-side wiring on top of those SDK patterns.\n\n2. Follow the instructions in the relevant guide.\n\n---\n\n## Core Architecture\n\nAll Python Databricks apps follow this pattern:\n\n```\napp-directory\u002F\n├── app.py                 # Main application (or framework-specific name)\n├── models.py              # Pydantic data models\n├── backend.py             # Data access layer\n├── requirements.txt       # Additional Python dependencies\n├── app.yaml               # Databricks Apps configuration\n└── README.md\n```\n\n### Backend Toggle Pattern\n\n```python\nimport os\nfrom databricks.sdk.core import Config\n\nUSE_MOCK = os.getenv(\"USE_MOCK_BACKEND\", \"true\").lower() == \"true\"\n\nif USE_MOCK:\n    from backend_mock import MockBackend as Backend\nelse:\n    from backend_real import RealBackend as Backend\n\nbackend = Backend()\n```\n\n### SQL Warehouse Connection (shared across all frameworks)\n\n```python\nfrom databricks.sdk.core import Config\nfrom databricks import sql\n\ncfg = Config()  # Auto-detects credentials from environment\nconn = sql.connect(\n    server_hostname=cfg.host,\n    http_path=f\"\u002Fsql\u002F1.0\u002Fwarehouses\u002F{os.getenv('DATABRICKS_WAREHOUSE_ID')}\",\n    credentials_provider=lambda: cfg.authenticate,\n)\n```\n\n### Pydantic Models\n\n```python\nfrom pydantic import BaseModel, Field\nfrom datetime import datetime\nfrom enum import Enum\n\nclass Status(str, Enum):\n    ACTIVE = \"active\"\n    PENDING = \"pending\"\n\nclass EntityOut(BaseModel):\n    id: str\n    name: str\n    status: Status\n    created_at: datetime\n\nclass EntityIn(BaseModel):\n    name: str = Field(..., min_length=1)\n    status: Status = Status.PENDING\n```\n\n---\n\n## Common Issues\n\n| Issue | Solution |\n|-------|----------|\n| **Connection exhausted** | Use `@st.cache_resource` (Streamlit) or connection pooling |\n| **Auth token not found** | Check `x-forwarded-access-token` header — only available when deployed, not locally |\n| **App won't start** | Check `app.yaml` command matches framework; check `databricks apps logs \u003Cname>` |\n| **Resource not accessible** | Add resource via UI, verify SP has permissions, use `valueFrom` in app.yaml |\n| **Import error on deploy** | Add missing packages to `requirements.txt` (pre-installed packages don't need listing) |\n| **Lakebase app crashes on start** | `psycopg2`\u002F`asyncpg` are NOT pre-installed — MUST add to `requirements.txt` |\n| **Port conflict** | Apps 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 |\n| **Streamlit: set_page_config error** | `st.set_page_config()` must be the first Streamlit command |\n| **Dash: unstyled layout** | Add `dash-bootstrap-components`; use `dbc.themes.BOOTSTRAP` |\n| **Slow queries** | Use Lakebase for transactional\u002Flow-latency; SQL warehouse for analytical queries |\n\n---\n\n## Platform Constraints\n\n| Constraint | Details |\n|------------|---------|\n| **Runtime** | Python 3.11, Ubuntu 22.04 LTS |\n| **Compute** | 2 vCPUs, 6 GB memory (default) |\n| **Pre-installed frameworks** | Dash, Streamlit, Gradio, Flask, FastAPI, Shiny |\n| **Custom packages** | Add to `requirements.txt` in app root |\n| **Network** | Apps can reach Databricks APIs; external access depends on workspace config |\n| **User auth** | Public Preview — workspace admin must enable before adding scopes |\n\n---\n\n## Official Documentation\n\n- **[Databricks Apps Overview](https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002F)** — main docs hub\n- **[Authorization](https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002Fauth)** — app auth and user auth\n- **[Resources](https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002Fresources)** — SQL warehouse, Lakebase, serving, secrets\n- **[app.yaml Reference](https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002Fapp-runtime)** — command and env config\n- **[System Environment](https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002Fsystem-env)** — pre-installed packages, runtime details\n\n## Related Skills\n\n- **[databricks-apps](..\u002Fdatabricks-apps\u002FSKILL.md)** — the default for new Databricks Apps (AppKit \u002F Node \u002F TypeScript + React); load it first unless a Python backend is explicitly required\n- **[databricks-python-sdk](..\u002Fdatabricks-python-sdk\u002FSKILL.md)** — `WorkspaceClient`, OpenAI-compatible foundation-model client, Vector Search, model-serving invocation; the same patterns work inside a Databricks App\n- **[databricks-lakebase](..\u002Fdatabricks-lakebase\u002FSKILL.md)** — persistent PostgreSQL state (autoscaling managed PG with branching)\n- **[databricks-model-serving](..\u002Fdatabricks-model-serving\u002FSKILL.md)** — endpoint lifecycle for ML models an App calls\n- **databricks-dabs** — deploying apps via DABs\n",{"data":40,"body":45},{"name":4,"description":6,"compatibility":41,"metadata":42,"parent":44},"Requires databricks CLI (>= v1.0.0)",{"version":43},"0.1.0","databricks-core",{"type":46,"children":47},"root",[48,57,85,92,199,205,210,222,226,231,411,428,431,437,634,637,643,659,681,698,714,730,746,811,814,820,941,944,950,955,964,971,1079,1085,1162,1168,1314,1317,1323,1591,1594,1600,1723,1726,1732,1807,1813,1885],{"type":49,"tag":50,"props":51,"children":53},"element","h1",{"id":52},"databricks-applications-python-backends",[54],{"type":55,"value":56},"text","Databricks Applications — Python backends",{"type":49,"tag":58,"props":59,"children":60},"blockquote",{},[61],{"type":49,"tag":62,"props":63,"children":64},"p",{},[65,71,73,83],{"type":49,"tag":66,"props":67,"children":68},"strong",{},[69],{"type":55,"value":70},"First, confirm this skill is the right one.",{"type":55,"value":72}," The default for new Databricks Apps is ",{"type":49,"tag":66,"props":74,"children":75},{},[76],{"type":49,"tag":77,"props":78,"children":80},"a",{"href":79},"..\u002Fdatabricks-apps\u002FSKILL.md",[81],{"type":55,"value":82},"databricks-apps",{"type":55,"value":84}," (AppKit — Node.js + TypeScript + React SDK). Load that skill first unless the user explicitly asks for a Python backend, is extending an existing Python app, or the team is Python-only. Everything below is the Python-backend alternative.",{"type":49,"tag":86,"props":87,"children":89},"h2",{"id":88},"critical-rules-for-python-apps-always-follow",[90],{"type":55,"value":91},"Critical Rules for Python apps (always follow)",{"type":49,"tag":93,"props":94,"children":95},"ul",{},[96,115,133,158,174,190],{"type":49,"tag":97,"props":98,"children":99},"li",{},[100,105,107,113],{"type":49,"tag":66,"props":101,"children":102},{},[103],{"type":55,"value":104},"MUST",{"type":55,"value":106}," confirm framework choice or use ",{"type":49,"tag":77,"props":108,"children":110},{"href":109},"#python-framework-selection",[111],{"type":55,"value":112},"Python Framework Selection",{"type":55,"value":114}," below",{"type":49,"tag":97,"props":116,"children":117},{},[118,122,124,131],{"type":49,"tag":66,"props":119,"children":120},{},[121],{"type":55,"value":104},{"type":55,"value":123}," use SDK ",{"type":49,"tag":125,"props":126,"children":128},"code",{"className":127},[],[129],{"type":55,"value":130},"Config()",{"type":55,"value":132}," for authentication (never hardcode tokens)",{"type":49,"tag":97,"props":134,"children":135},{},[136,140,142,148,150,156],{"type":49,"tag":66,"props":137,"children":138},{},[139],{"type":55,"value":104},{"type":55,"value":141}," use ",{"type":49,"tag":125,"props":143,"children":145},{"className":144},[],[146],{"type":55,"value":147},"app.yaml",{"type":55,"value":149}," ",{"type":49,"tag":125,"props":151,"children":153},{"className":152},[],[154],{"type":55,"value":155},"valueFrom",{"type":55,"value":157}," for resources (never hardcode resource IDs)",{"type":49,"tag":97,"props":159,"children":160},{},[161,165,166,172],{"type":49,"tag":66,"props":162,"children":163},{},[164],{"type":55,"value":104},{"type":55,"value":141},{"type":49,"tag":125,"props":167,"children":169},{"className":168},[],[170],{"type":55,"value":171},"dash-bootstrap-components",{"type":55,"value":173}," for Dash app layout and styling",{"type":49,"tag":97,"props":175,"children":176},{},[177,181,182,188],{"type":49,"tag":66,"props":178,"children":179},{},[180],{"type":55,"value":104},{"type":55,"value":141},{"type":49,"tag":125,"props":183,"children":185},{"className":184},[],[186],{"type":55,"value":187},"@st.cache_resource",{"type":55,"value":189}," for Streamlit database connections",{"type":49,"tag":97,"props":191,"children":192},{},[193,197],{"type":49,"tag":66,"props":194,"children":195},{},[196],{"type":55,"value":104},{"type":55,"value":198}," deploy Flask with Gunicorn, FastAPI with uvicorn (not dev servers)",{"type":49,"tag":86,"props":200,"children":202},{"id":201},"required-steps-for-python-apps",[203],{"type":55,"value":204},"Required Steps for Python apps",{"type":49,"tag":62,"props":206,"children":207},{},[208],{"type":55,"value":209},"Copy this checklist and verify each item:",{"type":49,"tag":211,"props":212,"children":216},"pre",{"className":213,"code":215,"language":55},[214],"language-text","- [ ] Framework selected\n- [ ] Auth strategy decided: app auth, user auth, or both\n- [ ] App resources identified (SQL warehouse, Lakebase, serving endpoint, etc.)\n- [ ] Backend data strategy decided (SQL warehouse, Lakebase, or SDK)\n- [ ] Deployment method: CLI or DABs\n",[217],{"type":49,"tag":125,"props":218,"children":220},{"__ignoreMap":219},"",[221],{"type":55,"value":215},{"type":49,"tag":223,"props":224,"children":225},"hr",{},[],{"type":49,"tag":86,"props":227,"children":229},{"id":228},"python-framework-selection",[230],{"type":55,"value":112},{"type":49,"tag":232,"props":233,"children":234},"table",{},[235,259],{"type":49,"tag":236,"props":237,"children":238},"thead",{},[239],{"type":49,"tag":240,"props":241,"children":242},"tr",{},[243,249,254],{"type":49,"tag":244,"props":245,"children":246},"th",{},[247],{"type":55,"value":248},"Framework",{"type":49,"tag":244,"props":250,"children":251},{},[252],{"type":55,"value":253},"Best For",{"type":49,"tag":244,"props":255,"children":256},{},[257],{"type":55,"value":258},"app.yaml Command",{"type":49,"tag":260,"props":261,"children":262},"tbody",{},[263,290,314,339,363,386],{"type":49,"tag":240,"props":264,"children":265},{},[266,276,281],{"type":49,"tag":267,"props":268,"children":269},"td",{},[270,274],{"type":49,"tag":66,"props":271,"children":272},{},[273],{"type":55,"value":27},{"type":55,"value":275}," (default)",{"type":49,"tag":267,"props":277,"children":278},{},[279],{"type":55,"value":280},"Any Python backend by default — async APIs, auto-generated OpenAPI docs, JSON-serving apps",{"type":49,"tag":267,"props":282,"children":283},{},[284],{"type":49,"tag":125,"props":285,"children":287},{"className":286},[],[288],{"type":55,"value":289},"[\"uvicorn\", \"app:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\"]",{"type":49,"tag":240,"props":291,"children":292},{},[293,300,305],{"type":49,"tag":267,"props":294,"children":295},{},[296],{"type":49,"tag":66,"props":297,"children":298},{},[299],{"type":55,"value":17},{"type":49,"tag":267,"props":301,"children":302},{},[303],{"type":55,"value":304},"Custom REST APIs, lightweight apps, webhooks",{"type":49,"tag":267,"props":306,"children":307},{},[308],{"type":49,"tag":125,"props":309,"children":311},{"className":310},[],[312],{"type":55,"value":313},"[\"gunicorn\", \"app:app\", \"-w\", \"4\", \"-b\", \"0.0.0.0:8000\"]",{"type":49,"tag":240,"props":315,"children":316},{},[317,325,330],{"type":49,"tag":267,"props":318,"children":319},{},[320],{"type":49,"tag":66,"props":321,"children":322},{},[323],{"type":55,"value":324},"Dash",{"type":49,"tag":267,"props":326,"children":327},{},[328],{"type":55,"value":329},"Production dashboards, BI tools, complex interactivity",{"type":49,"tag":267,"props":331,"children":332},{},[333],{"type":49,"tag":125,"props":334,"children":336},{"className":335},[],[337],{"type":55,"value":338},"[\"python\", \"app.py\"]",{"type":49,"tag":240,"props":340,"children":341},{},[342,349,354],{"type":49,"tag":267,"props":343,"children":344},{},[345],{"type":49,"tag":66,"props":346,"children":347},{},[348],{"type":55,"value":20},{"type":49,"tag":267,"props":350,"children":351},{},[352],{"type":55,"value":353},"Rapid prototyping, data science apps, internal tools where the UI is a series of Python widgets",{"type":49,"tag":267,"props":355,"children":356},{},[357],{"type":49,"tag":125,"props":358,"children":360},{"className":359},[],[361],{"type":55,"value":362},"[\"streamlit\", \"run\", \"app.py\"]",{"type":49,"tag":240,"props":364,"children":365},{},[366,373,378],{"type":49,"tag":267,"props":367,"children":368},{},[369],{"type":49,"tag":66,"props":370,"children":371},{},[372],{"type":55,"value":13},{"type":49,"tag":267,"props":374,"children":375},{},[376],{"type":55,"value":377},"ML demos, model interfaces, chat UIs",{"type":49,"tag":267,"props":379,"children":380},{},[381],{"type":49,"tag":125,"props":382,"children":384},{"className":383},[],[385],{"type":55,"value":338},{"type":49,"tag":240,"props":387,"children":388},{},[389,397,402],{"type":49,"tag":267,"props":390,"children":391},{},[392],{"type":49,"tag":66,"props":393,"children":394},{},[395],{"type":55,"value":396},"Reflex",{"type":49,"tag":267,"props":398,"children":399},{},[400],{"type":55,"value":401},"Full-stack Python apps without JavaScript",{"type":49,"tag":267,"props":403,"children":404},{},[405],{"type":49,"tag":125,"props":406,"children":408},{"className":407},[],[409],{"type":55,"value":410},"[\"reflex\", \"run\", \"--env\", \"prod\"]",{"type":49,"tag":62,"props":412,"children":413},{},[414,419,421,426],{"type":49,"tag":66,"props":415,"children":416},{},[417],{"type":55,"value":418},"Default: FastAPI.",{"type":55,"value":420}," Reach for FastAPI unless the user explicitly asks for Streamlit-style widget prototyping (Streamlit), a heavy dashboard grid (Dash), or a Gradio-style ML demo. FastAPI pairs naturally with a JS\u002FHTML frontend or a JSON-consuming caller — the same posture ",{"type":49,"tag":125,"props":422,"children":424},{"className":423},[],[425],{"type":55,"value":82},{"type":55,"value":427}," uses on the Node side.",{"type":49,"tag":223,"props":429,"children":430},{},[],{"type":49,"tag":86,"props":432,"children":434},{"id":433},"quick-reference",[435],{"type":55,"value":436},"Quick Reference",{"type":49,"tag":232,"props":438,"children":439},{},[440,456],{"type":49,"tag":236,"props":441,"children":442},{},[443],{"type":49,"tag":240,"props":444,"children":445},{},[446,451],{"type":49,"tag":244,"props":447,"children":448},{},[449],{"type":55,"value":450},"Concept",{"type":49,"tag":244,"props":452,"children":453},{},[454],{"type":55,"value":455},"Details",{"type":49,"tag":260,"props":457,"children":458},{},[459,475,491,528,555,581,613],{"type":49,"tag":240,"props":460,"children":461},{},[462,470],{"type":49,"tag":267,"props":463,"children":464},{},[465],{"type":49,"tag":66,"props":466,"children":467},{},[468],{"type":55,"value":469},"Runtime",{"type":49,"tag":267,"props":471,"children":472},{},[473],{"type":55,"value":474},"Python 3.11, Ubuntu 22.04, 2 vCPU, 6 GB RAM",{"type":49,"tag":240,"props":476,"children":477},{},[478,486],{"type":49,"tag":267,"props":479,"children":480},{},[481],{"type":49,"tag":66,"props":482,"children":483},{},[484],{"type":55,"value":485},"Pre-installed",{"type":49,"tag":267,"props":487,"children":488},{},[489],{"type":55,"value":490},"Dash 2.18.1, Streamlit 1.38.0, Gradio 4.44.0, Flask 3.0.3, FastAPI 0.115.0",{"type":49,"tag":240,"props":492,"children":493},{},[494,502],{"type":49,"tag":267,"props":495,"children":496},{},[497],{"type":49,"tag":66,"props":498,"children":499},{},[500],{"type":55,"value":501},"Auth (app)",{"type":49,"tag":267,"props":503,"children":504},{},[505,507,512,514,520,522],{"type":55,"value":506},"Service principal via ",{"type":49,"tag":125,"props":508,"children":510},{"className":509},[],[511],{"type":55,"value":130},{"type":55,"value":513}," — auto-injected ",{"type":49,"tag":125,"props":515,"children":517},{"className":516},[],[518],{"type":55,"value":519},"DATABRICKS_CLIENT_ID",{"type":55,"value":521},"\u002F",{"type":49,"tag":125,"props":523,"children":525},{"className":524},[],[526],{"type":55,"value":527},"DATABRICKS_CLIENT_SECRET",{"type":49,"tag":240,"props":529,"children":530},{},[531,539],{"type":49,"tag":267,"props":532,"children":533},{},[534],{"type":49,"tag":66,"props":535,"children":536},{},[537],{"type":55,"value":538},"Auth (user)",{"type":49,"tag":267,"props":540,"children":541},{},[542,548,550],{"type":49,"tag":125,"props":543,"children":545},{"className":544},[],[546],{"type":55,"value":547},"x-forwarded-access-token",{"type":55,"value":549}," header — see ",{"type":49,"tag":77,"props":551,"children":553},{"href":552},"references\u002F1-authorization.md",[554],{"type":55,"value":552},{"type":49,"tag":240,"props":556,"children":557},{},[558,566],{"type":49,"tag":267,"props":559,"children":560},{},[561],{"type":49,"tag":66,"props":562,"children":563},{},[564],{"type":55,"value":565},"Resources",{"type":49,"tag":267,"props":567,"children":568},{},[569,574,576],{"type":49,"tag":125,"props":570,"children":572},{"className":571},[],[573],{"type":55,"value":155},{"type":55,"value":575}," in app.yaml — see ",{"type":49,"tag":77,"props":577,"children":579},{"href":578},"references\u002F2-app-resources.md",[580],{"type":55,"value":578},{"type":49,"tag":240,"props":582,"children":583},{},[584,592],{"type":49,"tag":267,"props":585,"children":586},{},[587],{"type":49,"tag":66,"props":588,"children":589},{},[590],{"type":55,"value":591},"SDK \u002F Foundation Models \u002F Vector Search \u002F Model Serving",{"type":49,"tag":267,"props":593,"children":594},{},[595,597,603,605,611],{"type":55,"value":596},"Use the ",{"type":49,"tag":125,"props":598,"children":600},{"className":599},[],[601],{"type":55,"value":602},"databricks-python-sdk",{"type":55,"value":604}," skill — same ",{"type":49,"tag":125,"props":606,"children":608},{"className":607},[],[609],{"type":55,"value":610},"WorkspaceClient",{"type":55,"value":612}," and OpenAI-compatible foundation-model patterns work inside a Databricks App",{"type":49,"tag":240,"props":614,"children":615},{},[616,624],{"type":49,"tag":267,"props":617,"children":618},{},[619],{"type":49,"tag":66,"props":620,"children":621},{},[622],{"type":55,"value":623},"Docs",{"type":49,"tag":267,"props":625,"children":626},{},[627],{"type":49,"tag":77,"props":628,"children":632},{"href":629,"rel":630},"https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002F",[631],"nofollow",[633],{"type":55,"value":629},{"type":49,"tag":223,"props":635,"children":636},{},[],{"type":49,"tag":86,"props":638,"children":640},{"id":639},"detailed-guides",[641],{"type":55,"value":642},"Detailed Guides",{"type":49,"tag":62,"props":644,"children":645},{},[646,651,653,657],{"type":49,"tag":66,"props":647,"children":648},{},[649],{"type":55,"value":650},"Authorization",{"type":55,"value":652},": Use ",{"type":49,"tag":77,"props":654,"children":655},{"href":552},[656],{"type":55,"value":552},{"type":55,"value":658}," 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)",{"type":49,"tag":62,"props":660,"children":661},{},[662,667,668,672,674,679],{"type":49,"tag":66,"props":663,"children":664},{},[665],{"type":55,"value":666},"App resources",{"type":55,"value":652},{"type":49,"tag":77,"props":669,"children":670},{"href":578},[671],{"type":55,"value":578},{"type":55,"value":673}," when connecting your app to Databricks resources — covers SQL warehouses, Lakebase, model serving, secrets, volumes, and the ",{"type":49,"tag":125,"props":675,"children":677},{"className":676},[],[678],{"type":55,"value":155},{"type":55,"value":680}," pattern. (Keywords: resources, valueFrom, SQL warehouse, model serving, secrets, volumes, connections)",{"type":49,"tag":62,"props":682,"children":683},{},[684,689,691,696],{"type":49,"tag":66,"props":685,"children":686},{},[687],{"type":55,"value":688},"Frameworks",{"type":55,"value":690},": See ",{"type":49,"tag":77,"props":692,"children":694},{"href":693},"references\u002F3-frameworks.md",[695],{"type":55,"value":693},{"type":55,"value":697}," for Databricks-specific patterns per framework — FastAPI (default), Flask, Dash, Streamlit, Gradio, Reflex — with auth integration and deployment commands. (Keywords: FastAPI, Flask, Dash, Streamlit, Gradio, Reflex, framework selection)",{"type":49,"tag":62,"props":699,"children":700},{},[701,706,707,712],{"type":49,"tag":66,"props":702,"children":703},{},[704],{"type":55,"value":705},"Deployment",{"type":55,"value":652},{"type":49,"tag":77,"props":708,"children":710},{"href":709},"references\u002F4-deployment.md",[711],{"type":55,"value":709},{"type":55,"value":713}," 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)",{"type":49,"tag":62,"props":715,"children":716},{},[717,722,723,728],{"type":49,"tag":66,"props":718,"children":719},{},[720],{"type":55,"value":721},"Lakebase",{"type":55,"value":652},{"type":49,"tag":77,"props":724,"children":726},{"href":725},"references\u002F5-lakebase.md",[727],{"type":55,"value":725},{"type":55,"value":729}," when using Lakebase (PostgreSQL) as your app's data layer — covers auto-injected env vars, psycopg2\u002Fasyncpg patterns, and when to choose Lakebase vs SQL warehouse. (Keywords: Lakebase, PostgreSQL, psycopg2, asyncpg, transactional, PGHOST)",{"type":49,"tag":62,"props":731,"children":732},{},[733,738,739,744],{"type":49,"tag":66,"props":734,"children":735},{},[736],{"type":55,"value":737},"CLI commands",{"type":55,"value":652},{"type":49,"tag":77,"props":740,"children":742},{"href":741},"references\u002F6-cli-approach.md",[743],{"type":55,"value":741},{"type":55,"value":745}," for managing app lifecycle via CLI — covers creating, deploying, monitoring, and deleting apps. (Keywords: CLI, create app, deploy app, app logs)",{"type":49,"tag":62,"props":747,"children":748},{},[749,754,756,764,766,771,773,779,781,787,789,795,796,802,803,809],{"type":49,"tag":66,"props":750,"children":751},{},[752],{"type":55,"value":753},"Foundation Models \u002F SDK \u002F Vector Search \u002F Model Serving",{"type":55,"value":755},": Use the ",{"type":49,"tag":66,"props":757,"children":758},{},[759],{"type":49,"tag":77,"props":760,"children":762},{"href":761},"..\u002Fdatabricks-python-sdk\u002FSKILL.md",[763],{"type":55,"value":602},{"type":55,"value":765}," skill for the OpenAI-compatible foundation-model client, ",{"type":49,"tag":125,"props":767,"children":769},{"className":768},[],[770],{"type":55,"value":610},{"type":55,"value":772}," calls, Vector Search, and model-serving invocation — the same patterns apply inside a Databricks App. The examples in this skill's ",{"type":49,"tag":125,"props":774,"children":776},{"className":775},[],[777],{"type":55,"value":778},"examples\u002F",{"type":55,"value":780}," folder (",{"type":49,"tag":125,"props":782,"children":784},{"className":783},[],[785],{"type":55,"value":786},"fm-minimal-chat.py",{"type":55,"value":788},", ",{"type":49,"tag":125,"props":790,"children":792},{"className":791},[],[793],{"type":55,"value":794},"fm-parallel-calls.py",{"type":55,"value":788},{"type":49,"tag":125,"props":797,"children":799},{"className":798},[],[800],{"type":55,"value":801},"fm-structured-outputs.py",{"type":55,"value":788},{"type":49,"tag":125,"props":804,"children":806},{"className":805},[],[807],{"type":55,"value":808},"llm_config.py",{"type":55,"value":810},") show the App-side wiring only.",{"type":49,"tag":223,"props":812,"children":813},{},[],{"type":49,"tag":86,"props":815,"children":817},{"id":816},"workflow",[818],{"type":55,"value":819},"Workflow",{"type":49,"tag":821,"props":822,"children":823},"ol",{},[824,936],{"type":49,"tag":97,"props":825,"children":826},{},[827,829,833,838,840,847,849,854,856,860,862,867,869,873,878,879,883,888,889,893,898,899,903,908,909,913,918,920,927,929,934],{"type":55,"value":828},"Determine the task type:",{"type":49,"tag":830,"props":831,"children":832},"br",{},[],{"type":49,"tag":66,"props":834,"children":835},{},[836],{"type":55,"value":837},"New app from scratch?",{"type":55,"value":839}," → Load ",{"type":49,"tag":66,"props":841,"children":842},{},[843],{"type":49,"tag":77,"props":844,"children":845},{"href":79},[846],{"type":55,"value":82},{"type":55,"value":848}," first (AppKit \u002F Node). Only stay in this skill if the user explicitly asks for a Python backend.\n",{"type":49,"tag":66,"props":850,"children":851},{},[852],{"type":55,"value":853},"Python-backend confirmed?",{"type":55,"value":855}," → ",{"type":49,"tag":77,"props":857,"children":858},{"href":109},[859],{"type":55,"value":112},{"type":55,"value":861}," — default to FastAPI.\n",{"type":49,"tag":66,"props":863,"children":864},{},[865],{"type":55,"value":866},"Setting up authorization?",{"type":55,"value":868}," → Read ",{"type":49,"tag":77,"props":870,"children":871},{"href":552},[872],{"type":55,"value":552},{"type":49,"tag":66,"props":874,"children":875},{},[876],{"type":55,"value":877},"Connecting to data\u002Fresources?",{"type":55,"value":868},{"type":49,"tag":77,"props":880,"children":881},{"href":578},[882],{"type":55,"value":578},{"type":49,"tag":66,"props":884,"children":885},{},[886],{"type":55,"value":887},"Using Lakebase (PostgreSQL)?",{"type":55,"value":868},{"type":49,"tag":77,"props":890,"children":891},{"href":725},[892],{"type":55,"value":725},{"type":49,"tag":66,"props":894,"children":895},{},[896],{"type":55,"value":897},"Deploying to Databricks?",{"type":55,"value":868},{"type":49,"tag":77,"props":900,"children":901},{"href":709},[902],{"type":55,"value":709},{"type":49,"tag":66,"props":904,"children":905},{},[906],{"type":55,"value":907},"Using CLI for app lifecycle?",{"type":55,"value":868},{"type":49,"tag":77,"props":910,"children":911},{"href":741},[912],{"type":55,"value":741},{"type":49,"tag":66,"props":914,"children":915},{},[916],{"type":55,"value":917},"Calling foundation model \u002F LLM APIs, Vector Search, or model-serving endpoints?",{"type":55,"value":919}," → Load the ",{"type":49,"tag":66,"props":921,"children":922},{},[923],{"type":49,"tag":77,"props":924,"children":925},{"href":761},[926],{"type":55,"value":602},{"type":55,"value":928}," skill. This skill's ",{"type":49,"tag":125,"props":930,"children":932},{"className":931},[],[933],{"type":55,"value":778},{"type":55,"value":935}," folder shows only the App-side wiring on top of those SDK patterns.",{"type":49,"tag":97,"props":937,"children":938},{},[939],{"type":55,"value":940},"Follow the instructions in the relevant guide.",{"type":49,"tag":223,"props":942,"children":943},{},[],{"type":49,"tag":86,"props":945,"children":947},{"id":946},"core-architecture",[948],{"type":55,"value":949},"Core Architecture",{"type":49,"tag":62,"props":951,"children":952},{},[953],{"type":55,"value":954},"All Python Databricks apps follow this pattern:",{"type":49,"tag":211,"props":956,"children":959},{"className":957,"code":958,"language":55},[214],"app-directory\u002F\n├── app.py                 # Main application (or framework-specific name)\n├── models.py              # Pydantic data models\n├── backend.py             # Data access layer\n├── requirements.txt       # Additional Python dependencies\n├── app.yaml               # Databricks Apps configuration\n└── README.md\n",[960],{"type":49,"tag":125,"props":961,"children":962},{"__ignoreMap":219},[963],{"type":55,"value":958},{"type":49,"tag":965,"props":966,"children":968},"h3",{"id":967},"backend-toggle-pattern",[969],{"type":55,"value":970},"Backend Toggle Pattern",{"type":49,"tag":211,"props":972,"children":975},{"className":973,"code":974,"language":24,"meta":219,"style":219},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import os\nfrom databricks.sdk.core import Config\n\nUSE_MOCK = os.getenv(\"USE_MOCK_BACKEND\", \"true\").lower() == \"true\"\n\nif USE_MOCK:\n    from backend_mock import MockBackend as Backend\nelse:\n    from backend_real import RealBackend as Backend\n\nbackend = Backend()\n",[976],{"type":49,"tag":125,"props":977,"children":978},{"__ignoreMap":219},[979,990,999,1009,1018,1026,1035,1044,1053,1062,1070],{"type":49,"tag":980,"props":981,"children":984},"span",{"class":982,"line":983},"line",1,[985],{"type":49,"tag":980,"props":986,"children":987},{},[988],{"type":55,"value":989},"import os\n",{"type":49,"tag":980,"props":991,"children":993},{"class":982,"line":992},2,[994],{"type":49,"tag":980,"props":995,"children":996},{},[997],{"type":55,"value":998},"from databricks.sdk.core import Config\n",{"type":49,"tag":980,"props":1000,"children":1002},{"class":982,"line":1001},3,[1003],{"type":49,"tag":980,"props":1004,"children":1006},{"emptyLinePlaceholder":1005},true,[1007],{"type":55,"value":1008},"\n",{"type":49,"tag":980,"props":1010,"children":1012},{"class":982,"line":1011},4,[1013],{"type":49,"tag":980,"props":1014,"children":1015},{},[1016],{"type":55,"value":1017},"USE_MOCK = os.getenv(\"USE_MOCK_BACKEND\", \"true\").lower() == \"true\"\n",{"type":49,"tag":980,"props":1019,"children":1021},{"class":982,"line":1020},5,[1022],{"type":49,"tag":980,"props":1023,"children":1024},{"emptyLinePlaceholder":1005},[1025],{"type":55,"value":1008},{"type":49,"tag":980,"props":1027,"children":1029},{"class":982,"line":1028},6,[1030],{"type":49,"tag":980,"props":1031,"children":1032},{},[1033],{"type":55,"value":1034},"if USE_MOCK:\n",{"type":49,"tag":980,"props":1036,"children":1038},{"class":982,"line":1037},7,[1039],{"type":49,"tag":980,"props":1040,"children":1041},{},[1042],{"type":55,"value":1043},"    from backend_mock import MockBackend as Backend\n",{"type":49,"tag":980,"props":1045,"children":1047},{"class":982,"line":1046},8,[1048],{"type":49,"tag":980,"props":1049,"children":1050},{},[1051],{"type":55,"value":1052},"else:\n",{"type":49,"tag":980,"props":1054,"children":1056},{"class":982,"line":1055},9,[1057],{"type":49,"tag":980,"props":1058,"children":1059},{},[1060],{"type":55,"value":1061},"    from backend_real import RealBackend as Backend\n",{"type":49,"tag":980,"props":1063,"children":1065},{"class":982,"line":1064},10,[1066],{"type":49,"tag":980,"props":1067,"children":1068},{"emptyLinePlaceholder":1005},[1069],{"type":55,"value":1008},{"type":49,"tag":980,"props":1071,"children":1073},{"class":982,"line":1072},11,[1074],{"type":49,"tag":980,"props":1075,"children":1076},{},[1077],{"type":55,"value":1078},"backend = Backend()\n",{"type":49,"tag":965,"props":1080,"children":1082},{"id":1081},"sql-warehouse-connection-shared-across-all-frameworks",[1083],{"type":55,"value":1084},"SQL Warehouse Connection (shared across all frameworks)",{"type":49,"tag":211,"props":1086,"children":1088},{"className":973,"code":1087,"language":24,"meta":219,"style":219},"from databricks.sdk.core import Config\nfrom databricks import sql\n\ncfg = Config()  # Auto-detects credentials from environment\nconn = sql.connect(\n    server_hostname=cfg.host,\n    http_path=f\"\u002Fsql\u002F1.0\u002Fwarehouses\u002F{os.getenv('DATABRICKS_WAREHOUSE_ID')}\",\n    credentials_provider=lambda: cfg.authenticate,\n)\n",[1089],{"type":49,"tag":125,"props":1090,"children":1091},{"__ignoreMap":219},[1092,1099,1107,1114,1122,1130,1138,1146,1154],{"type":49,"tag":980,"props":1093,"children":1094},{"class":982,"line":983},[1095],{"type":49,"tag":980,"props":1096,"children":1097},{},[1098],{"type":55,"value":998},{"type":49,"tag":980,"props":1100,"children":1101},{"class":982,"line":992},[1102],{"type":49,"tag":980,"props":1103,"children":1104},{},[1105],{"type":55,"value":1106},"from databricks import sql\n",{"type":49,"tag":980,"props":1108,"children":1109},{"class":982,"line":1001},[1110],{"type":49,"tag":980,"props":1111,"children":1112},{"emptyLinePlaceholder":1005},[1113],{"type":55,"value":1008},{"type":49,"tag":980,"props":1115,"children":1116},{"class":982,"line":1011},[1117],{"type":49,"tag":980,"props":1118,"children":1119},{},[1120],{"type":55,"value":1121},"cfg = Config()  # Auto-detects credentials from environment\n",{"type":49,"tag":980,"props":1123,"children":1124},{"class":982,"line":1020},[1125],{"type":49,"tag":980,"props":1126,"children":1127},{},[1128],{"type":55,"value":1129},"conn = sql.connect(\n",{"type":49,"tag":980,"props":1131,"children":1132},{"class":982,"line":1028},[1133],{"type":49,"tag":980,"props":1134,"children":1135},{},[1136],{"type":55,"value":1137},"    server_hostname=cfg.host,\n",{"type":49,"tag":980,"props":1139,"children":1140},{"class":982,"line":1037},[1141],{"type":49,"tag":980,"props":1142,"children":1143},{},[1144],{"type":55,"value":1145},"    http_path=f\"\u002Fsql\u002F1.0\u002Fwarehouses\u002F{os.getenv('DATABRICKS_WAREHOUSE_ID')}\",\n",{"type":49,"tag":980,"props":1147,"children":1148},{"class":982,"line":1046},[1149],{"type":49,"tag":980,"props":1150,"children":1151},{},[1152],{"type":55,"value":1153},"    credentials_provider=lambda: cfg.authenticate,\n",{"type":49,"tag":980,"props":1155,"children":1156},{"class":982,"line":1055},[1157],{"type":49,"tag":980,"props":1158,"children":1159},{},[1160],{"type":55,"value":1161},")\n",{"type":49,"tag":965,"props":1163,"children":1165},{"id":1164},"pydantic-models",[1166],{"type":55,"value":1167},"Pydantic Models",{"type":49,"tag":211,"props":1169,"children":1171},{"className":973,"code":1170,"language":24,"meta":219,"style":219},"from pydantic import BaseModel, Field\nfrom datetime import datetime\nfrom enum import Enum\n\nclass Status(str, Enum):\n    ACTIVE = \"active\"\n    PENDING = \"pending\"\n\nclass EntityOut(BaseModel):\n    id: str\n    name: str\n    status: Status\n    created_at: datetime\n\nclass EntityIn(BaseModel):\n    name: str = Field(..., min_length=1)\n    status: Status = Status.PENDING\n",[1172],{"type":49,"tag":125,"props":1173,"children":1174},{"__ignoreMap":219},[1175,1183,1191,1199,1206,1214,1222,1230,1237,1245,1253,1261,1270,1279,1287,1296,1305],{"type":49,"tag":980,"props":1176,"children":1177},{"class":982,"line":983},[1178],{"type":49,"tag":980,"props":1179,"children":1180},{},[1181],{"type":55,"value":1182},"from pydantic import BaseModel, Field\n",{"type":49,"tag":980,"props":1184,"children":1185},{"class":982,"line":992},[1186],{"type":49,"tag":980,"props":1187,"children":1188},{},[1189],{"type":55,"value":1190},"from datetime import datetime\n",{"type":49,"tag":980,"props":1192,"children":1193},{"class":982,"line":1001},[1194],{"type":49,"tag":980,"props":1195,"children":1196},{},[1197],{"type":55,"value":1198},"from enum import Enum\n",{"type":49,"tag":980,"props":1200,"children":1201},{"class":982,"line":1011},[1202],{"type":49,"tag":980,"props":1203,"children":1204},{"emptyLinePlaceholder":1005},[1205],{"type":55,"value":1008},{"type":49,"tag":980,"props":1207,"children":1208},{"class":982,"line":1020},[1209],{"type":49,"tag":980,"props":1210,"children":1211},{},[1212],{"type":55,"value":1213},"class Status(str, Enum):\n",{"type":49,"tag":980,"props":1215,"children":1216},{"class":982,"line":1028},[1217],{"type":49,"tag":980,"props":1218,"children":1219},{},[1220],{"type":55,"value":1221},"    ACTIVE = \"active\"\n",{"type":49,"tag":980,"props":1223,"children":1224},{"class":982,"line":1037},[1225],{"type":49,"tag":980,"props":1226,"children":1227},{},[1228],{"type":55,"value":1229},"    PENDING = \"pending\"\n",{"type":49,"tag":980,"props":1231,"children":1232},{"class":982,"line":1046},[1233],{"type":49,"tag":980,"props":1234,"children":1235},{"emptyLinePlaceholder":1005},[1236],{"type":55,"value":1008},{"type":49,"tag":980,"props":1238,"children":1239},{"class":982,"line":1055},[1240],{"type":49,"tag":980,"props":1241,"children":1242},{},[1243],{"type":55,"value":1244},"class EntityOut(BaseModel):\n",{"type":49,"tag":980,"props":1246,"children":1247},{"class":982,"line":1064},[1248],{"type":49,"tag":980,"props":1249,"children":1250},{},[1251],{"type":55,"value":1252},"    id: str\n",{"type":49,"tag":980,"props":1254,"children":1255},{"class":982,"line":1072},[1256],{"type":49,"tag":980,"props":1257,"children":1258},{},[1259],{"type":55,"value":1260},"    name: str\n",{"type":49,"tag":980,"props":1262,"children":1264},{"class":982,"line":1263},12,[1265],{"type":49,"tag":980,"props":1266,"children":1267},{},[1268],{"type":55,"value":1269},"    status: Status\n",{"type":49,"tag":980,"props":1271,"children":1273},{"class":982,"line":1272},13,[1274],{"type":49,"tag":980,"props":1275,"children":1276},{},[1277],{"type":55,"value":1278},"    created_at: datetime\n",{"type":49,"tag":980,"props":1280,"children":1282},{"class":982,"line":1281},14,[1283],{"type":49,"tag":980,"props":1284,"children":1285},{"emptyLinePlaceholder":1005},[1286],{"type":55,"value":1008},{"type":49,"tag":980,"props":1288,"children":1290},{"class":982,"line":1289},15,[1291],{"type":49,"tag":980,"props":1292,"children":1293},{},[1294],{"type":55,"value":1295},"class EntityIn(BaseModel):\n",{"type":49,"tag":980,"props":1297,"children":1299},{"class":982,"line":1298},16,[1300],{"type":49,"tag":980,"props":1301,"children":1302},{},[1303],{"type":55,"value":1304},"    name: str = Field(..., min_length=1)\n",{"type":49,"tag":980,"props":1306,"children":1308},{"class":982,"line":1307},17,[1309],{"type":49,"tag":980,"props":1310,"children":1311},{},[1312],{"type":55,"value":1313},"    status: Status = Status.PENDING\n",{"type":49,"tag":223,"props":1315,"children":1316},{},[],{"type":49,"tag":86,"props":1318,"children":1320},{"id":1319},"common-issues",[1321],{"type":55,"value":1322},"Common Issues",{"type":49,"tag":232,"props":1324,"children":1325},{},[1326,1342],{"type":49,"tag":236,"props":1327,"children":1328},{},[1329],{"type":49,"tag":240,"props":1330,"children":1331},{},[1332,1337],{"type":49,"tag":244,"props":1333,"children":1334},{},[1335],{"type":55,"value":1336},"Issue",{"type":49,"tag":244,"props":1338,"children":1339},{},[1340],{"type":55,"value":1341},"Solution",{"type":49,"tag":260,"props":1343,"children":1344},{},[1345,1368,1391,1419,1442,1466,1500,1524,1546,1575],{"type":49,"tag":240,"props":1346,"children":1347},{},[1348,1356],{"type":49,"tag":267,"props":1349,"children":1350},{},[1351],{"type":49,"tag":66,"props":1352,"children":1353},{},[1354],{"type":55,"value":1355},"Connection exhausted",{"type":49,"tag":267,"props":1357,"children":1358},{},[1359,1361,1366],{"type":55,"value":1360},"Use ",{"type":49,"tag":125,"props":1362,"children":1364},{"className":1363},[],[1365],{"type":55,"value":187},{"type":55,"value":1367}," (Streamlit) or connection pooling",{"type":49,"tag":240,"props":1369,"children":1370},{},[1371,1379],{"type":49,"tag":267,"props":1372,"children":1373},{},[1374],{"type":49,"tag":66,"props":1375,"children":1376},{},[1377],{"type":55,"value":1378},"Auth token not found",{"type":49,"tag":267,"props":1380,"children":1381},{},[1382,1384,1389],{"type":55,"value":1383},"Check ",{"type":49,"tag":125,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":55,"value":547},{"type":55,"value":1390}," header — only available when deployed, not locally",{"type":49,"tag":240,"props":1392,"children":1393},{},[1394,1402],{"type":49,"tag":267,"props":1395,"children":1396},{},[1397],{"type":49,"tag":66,"props":1398,"children":1399},{},[1400],{"type":55,"value":1401},"App won't start",{"type":49,"tag":267,"props":1403,"children":1404},{},[1405,1406,1411,1413],{"type":55,"value":1383},{"type":49,"tag":125,"props":1407,"children":1409},{"className":1408},[],[1410],{"type":55,"value":147},{"type":55,"value":1412}," command matches framework; check ",{"type":49,"tag":125,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":55,"value":1418},"databricks apps logs \u003Cname>",{"type":49,"tag":240,"props":1420,"children":1421},{},[1422,1430],{"type":49,"tag":267,"props":1423,"children":1424},{},[1425],{"type":49,"tag":66,"props":1426,"children":1427},{},[1428],{"type":55,"value":1429},"Resource not accessible",{"type":49,"tag":267,"props":1431,"children":1432},{},[1433,1435,1440],{"type":55,"value":1434},"Add resource via UI, verify SP has permissions, use ",{"type":49,"tag":125,"props":1436,"children":1438},{"className":1437},[],[1439],{"type":55,"value":155},{"type":55,"value":1441}," in app.yaml",{"type":49,"tag":240,"props":1443,"children":1444},{},[1445,1453],{"type":49,"tag":267,"props":1446,"children":1447},{},[1448],{"type":49,"tag":66,"props":1449,"children":1450},{},[1451],{"type":55,"value":1452},"Import error on deploy",{"type":49,"tag":267,"props":1454,"children":1455},{},[1456,1458,1464],{"type":55,"value":1457},"Add missing packages to ",{"type":49,"tag":125,"props":1459,"children":1461},{"className":1460},[],[1462],{"type":55,"value":1463},"requirements.txt",{"type":55,"value":1465}," (pre-installed packages don't need listing)",{"type":49,"tag":240,"props":1467,"children":1468},{},[1469,1477],{"type":49,"tag":267,"props":1470,"children":1471},{},[1472],{"type":49,"tag":66,"props":1473,"children":1474},{},[1475],{"type":55,"value":1476},"Lakebase app crashes on start",{"type":49,"tag":267,"props":1478,"children":1479},{},[1480,1486,1487,1493,1495],{"type":49,"tag":125,"props":1481,"children":1483},{"className":1482},[],[1484],{"type":55,"value":1485},"psycopg2",{"type":55,"value":521},{"type":49,"tag":125,"props":1488,"children":1490},{"className":1489},[],[1491],{"type":55,"value":1492},"asyncpg",{"type":55,"value":1494}," are NOT pre-installed — MUST add to ",{"type":49,"tag":125,"props":1496,"children":1498},{"className":1497},[],[1499],{"type":55,"value":1463},{"type":49,"tag":240,"props":1501,"children":1502},{},[1503,1511],{"type":49,"tag":267,"props":1504,"children":1505},{},[1506],{"type":49,"tag":66,"props":1507,"children":1508},{},[1509],{"type":55,"value":1510},"Port conflict",{"type":49,"tag":267,"props":1512,"children":1513},{},[1514,1516,1522],{"type":55,"value":1515},"Apps must bind to ",{"type":49,"tag":125,"props":1517,"children":1519},{"className":1518},[],[1520],{"type":55,"value":1521},"DATABRICKS_APP_PORT",{"type":55,"value":1523}," 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",{"type":49,"tag":240,"props":1525,"children":1526},{},[1527,1535],{"type":49,"tag":267,"props":1528,"children":1529},{},[1530],{"type":49,"tag":66,"props":1531,"children":1532},{},[1533],{"type":55,"value":1534},"Streamlit: set_page_config error",{"type":49,"tag":267,"props":1536,"children":1537},{},[1538,1544],{"type":49,"tag":125,"props":1539,"children":1541},{"className":1540},[],[1542],{"type":55,"value":1543},"st.set_page_config()",{"type":55,"value":1545}," must be the first Streamlit command",{"type":49,"tag":240,"props":1547,"children":1548},{},[1549,1557],{"type":49,"tag":267,"props":1550,"children":1551},{},[1552],{"type":49,"tag":66,"props":1553,"children":1554},{},[1555],{"type":55,"value":1556},"Dash: unstyled layout",{"type":49,"tag":267,"props":1558,"children":1559},{},[1560,1562,1567,1569],{"type":55,"value":1561},"Add ",{"type":49,"tag":125,"props":1563,"children":1565},{"className":1564},[],[1566],{"type":55,"value":171},{"type":55,"value":1568},"; use ",{"type":49,"tag":125,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":55,"value":1574},"dbc.themes.BOOTSTRAP",{"type":49,"tag":240,"props":1576,"children":1577},{},[1578,1586],{"type":49,"tag":267,"props":1579,"children":1580},{},[1581],{"type":49,"tag":66,"props":1582,"children":1583},{},[1584],{"type":55,"value":1585},"Slow queries",{"type":49,"tag":267,"props":1587,"children":1588},{},[1589],{"type":55,"value":1590},"Use Lakebase for transactional\u002Flow-latency; SQL warehouse for analytical queries",{"type":49,"tag":223,"props":1592,"children":1593},{},[],{"type":49,"tag":86,"props":1595,"children":1597},{"id":1596},"platform-constraints",[1598],{"type":55,"value":1599},"Platform Constraints",{"type":49,"tag":232,"props":1601,"children":1602},{},[1603,1618],{"type":49,"tag":236,"props":1604,"children":1605},{},[1606],{"type":49,"tag":240,"props":1607,"children":1608},{},[1609,1614],{"type":49,"tag":244,"props":1610,"children":1611},{},[1612],{"type":55,"value":1613},"Constraint",{"type":49,"tag":244,"props":1615,"children":1616},{},[1617],{"type":55,"value":455},{"type":49,"tag":260,"props":1619,"children":1620},{},[1621,1636,1652,1668,1691,1707],{"type":49,"tag":240,"props":1622,"children":1623},{},[1624,1631],{"type":49,"tag":267,"props":1625,"children":1626},{},[1627],{"type":49,"tag":66,"props":1628,"children":1629},{},[1630],{"type":55,"value":469},{"type":49,"tag":267,"props":1632,"children":1633},{},[1634],{"type":55,"value":1635},"Python 3.11, Ubuntu 22.04 LTS",{"type":49,"tag":240,"props":1637,"children":1638},{},[1639,1647],{"type":49,"tag":267,"props":1640,"children":1641},{},[1642],{"type":49,"tag":66,"props":1643,"children":1644},{},[1645],{"type":55,"value":1646},"Compute",{"type":49,"tag":267,"props":1648,"children":1649},{},[1650],{"type":55,"value":1651},"2 vCPUs, 6 GB memory (default)",{"type":49,"tag":240,"props":1653,"children":1654},{},[1655,1663],{"type":49,"tag":267,"props":1656,"children":1657},{},[1658],{"type":49,"tag":66,"props":1659,"children":1660},{},[1661],{"type":55,"value":1662},"Pre-installed frameworks",{"type":49,"tag":267,"props":1664,"children":1665},{},[1666],{"type":55,"value":1667},"Dash, Streamlit, Gradio, Flask, FastAPI, Shiny",{"type":49,"tag":240,"props":1669,"children":1670},{},[1671,1679],{"type":49,"tag":267,"props":1672,"children":1673},{},[1674],{"type":49,"tag":66,"props":1675,"children":1676},{},[1677],{"type":55,"value":1678},"Custom packages",{"type":49,"tag":267,"props":1680,"children":1681},{},[1682,1684,1689],{"type":55,"value":1683},"Add to ",{"type":49,"tag":125,"props":1685,"children":1687},{"className":1686},[],[1688],{"type":55,"value":1463},{"type":55,"value":1690}," in app root",{"type":49,"tag":240,"props":1692,"children":1693},{},[1694,1702],{"type":49,"tag":267,"props":1695,"children":1696},{},[1697],{"type":49,"tag":66,"props":1698,"children":1699},{},[1700],{"type":55,"value":1701},"Network",{"type":49,"tag":267,"props":1703,"children":1704},{},[1705],{"type":55,"value":1706},"Apps can reach Databricks APIs; external access depends on workspace config",{"type":49,"tag":240,"props":1708,"children":1709},{},[1710,1718],{"type":49,"tag":267,"props":1711,"children":1712},{},[1713],{"type":49,"tag":66,"props":1714,"children":1715},{},[1716],{"type":55,"value":1717},"User auth",{"type":49,"tag":267,"props":1719,"children":1720},{},[1721],{"type":55,"value":1722},"Public Preview — workspace admin must enable before adding scopes",{"type":49,"tag":223,"props":1724,"children":1725},{},[],{"type":49,"tag":86,"props":1727,"children":1729},{"id":1728},"official-documentation",[1730],{"type":55,"value":1731},"Official Documentation",{"type":49,"tag":93,"props":1733,"children":1734},{},[1735,1749,1763,1777,1792],{"type":49,"tag":97,"props":1736,"children":1737},{},[1738,1747],{"type":49,"tag":66,"props":1739,"children":1740},{},[1741],{"type":49,"tag":77,"props":1742,"children":1744},{"href":629,"rel":1743},[631],[1745],{"type":55,"value":1746},"Databricks Apps Overview",{"type":55,"value":1748}," — main docs hub",{"type":49,"tag":97,"props":1750,"children":1751},{},[1752,1761],{"type":49,"tag":66,"props":1753,"children":1754},{},[1755],{"type":49,"tag":77,"props":1756,"children":1759},{"href":1757,"rel":1758},"https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002Fauth",[631],[1760],{"type":55,"value":650},{"type":55,"value":1762}," — app auth and user auth",{"type":49,"tag":97,"props":1764,"children":1765},{},[1766,1775],{"type":49,"tag":66,"props":1767,"children":1768},{},[1769],{"type":49,"tag":77,"props":1770,"children":1773},{"href":1771,"rel":1772},"https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002Fresources",[631],[1774],{"type":55,"value":565},{"type":55,"value":1776}," — SQL warehouse, Lakebase, serving, secrets",{"type":49,"tag":97,"props":1778,"children":1779},{},[1780,1790],{"type":49,"tag":66,"props":1781,"children":1782},{},[1783],{"type":49,"tag":77,"props":1784,"children":1787},{"href":1785,"rel":1786},"https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002Fapp-runtime",[631],[1788],{"type":55,"value":1789},"app.yaml Reference",{"type":55,"value":1791}," — command and env config",{"type":49,"tag":97,"props":1793,"children":1794},{},[1795,1805],{"type":49,"tag":66,"props":1796,"children":1797},{},[1798],{"type":49,"tag":77,"props":1799,"children":1802},{"href":1800,"rel":1801},"https:\u002F\u002Fdocs.databricks.com\u002Fdev-tools\u002Fdatabricks-apps\u002Fsystem-env",[631],[1803],{"type":55,"value":1804},"System Environment",{"type":55,"value":1806}," — pre-installed packages, runtime details",{"type":49,"tag":86,"props":1808,"children":1810},{"id":1809},"related-skills",[1811],{"type":55,"value":1812},"Related Skills",{"type":49,"tag":93,"props":1814,"children":1815},{},[1816,1828,1847,1861,1875],{"type":49,"tag":97,"props":1817,"children":1818},{},[1819,1826],{"type":49,"tag":66,"props":1820,"children":1821},{},[1822],{"type":49,"tag":77,"props":1823,"children":1824},{"href":79},[1825],{"type":55,"value":82},{"type":55,"value":1827}," — the default for new Databricks Apps (AppKit \u002F Node \u002F TypeScript + React); load it first unless a Python backend is explicitly required",{"type":49,"tag":97,"props":1829,"children":1830},{},[1831,1838,1840,1845],{"type":49,"tag":66,"props":1832,"children":1833},{},[1834],{"type":49,"tag":77,"props":1835,"children":1836},{"href":761},[1837],{"type":55,"value":602},{"type":55,"value":1839}," — ",{"type":49,"tag":125,"props":1841,"children":1843},{"className":1842},[],[1844],{"type":55,"value":610},{"type":55,"value":1846},", OpenAI-compatible foundation-model client, Vector Search, model-serving invocation; the same patterns work inside a Databricks App",{"type":49,"tag":97,"props":1848,"children":1849},{},[1850,1859],{"type":49,"tag":66,"props":1851,"children":1852},{},[1853],{"type":49,"tag":77,"props":1854,"children":1856},{"href":1855},"..\u002Fdatabricks-lakebase\u002FSKILL.md",[1857],{"type":55,"value":1858},"databricks-lakebase",{"type":55,"value":1860}," — persistent PostgreSQL state (autoscaling managed PG with branching)",{"type":49,"tag":97,"props":1862,"children":1863},{},[1864,1873],{"type":49,"tag":66,"props":1865,"children":1866},{},[1867],{"type":49,"tag":77,"props":1868,"children":1870},{"href":1869},"..\u002Fdatabricks-model-serving\u002FSKILL.md",[1871],{"type":55,"value":1872},"databricks-model-serving",{"type":55,"value":1874}," — endpoint lifecycle for ML models an App calls",{"type":49,"tag":97,"props":1876,"children":1877},{},[1878,1883],{"type":49,"tag":66,"props":1879,"children":1880},{},[1881],{"type":55,"value":1882},"databricks-dabs",{"type":55,"value":1884}," — deploying apps via DABs",{"type":49,"tag":1886,"props":1887,"children":1888},"style",{},[1889],{"type":55,"value":1890},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1892,"total":2065},[1893,1910,1924,1941,1958,1978,1988,1997,2008,2023,2038,2051],{"slug":1894,"name":1894,"fn":1895,"description":1896,"org":1897,"tags":1898,"stars":29,"repoUrl":30,"updatedAt":1909},"databricks-agent-bricks","create Databricks Agent Bricks","Create Agent Bricks: Knowledge Assistants (KA) for document Q&A and Supervisor Agents for multi-agent orchestration (MAS).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1899,1902,1903,1906],{"name":1900,"slug":1901,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1904,"slug":1905,"type":15},"Knowledge Management","knowledge-management",{"name":1907,"slug":1908,"type":15},"Multi-Agent","multi-agent","2026-07-15T05:41:38.548954",{"slug":1911,"name":1911,"fn":1912,"description":1913,"org":1914,"tags":1915,"stars":29,"repoUrl":30,"updatedAt":1923},"databricks-ai-functions","use Databricks built-in AI functions","Use Databricks built-in AI Functions (ai_classify, ai_extract, ai_summarize, ai_mask, ai_translate, ai_fix_grammar, ai_gen, ai_analyze_sentiment, ai_similarity, ai_parse_document, ai_prep_search, ai_query, ai_forecast) to add AI capabilities directly to SQL and PySpark pipelines without managing model endpoints. Also covers document parsing and building custom RAG pipelines (parse → prep_search → index → query).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1916,1919,1920],{"name":1917,"slug":1918,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":1921,"slug":1922,"type":15},"LLM","llm","2026-07-31T05:53:33.562077",{"slug":1925,"name":1925,"fn":1926,"description":1927,"org":1928,"tags":1929,"stars":29,"repoUrl":30,"updatedAt":1940},"databricks-ai-runtime","submit and manage Databricks GPU workloads","Databricks AI Runtime (`air`) CLI — the command-line tool for submitting and managing GPU training workloads on Databricks serverless compute. Use for: running `air` workloads, custom Docker image setup, environment configuration, and troubleshooting `air` jobs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1930,1933,1934,1937],{"name":1931,"slug":1932,"type":15},"CLI","cli",{"name":9,"slug":8,"type":15},{"name":1935,"slug":1936,"type":15},"Docker","docker",{"name":1938,"slug":1939,"type":15},"Engineering","engineering","2026-07-12T08:04:55.843982",{"slug":1942,"name":1942,"fn":1943,"description":1944,"org":1945,"tags":1946,"stars":29,"repoUrl":30,"updatedAt":1957},"databricks-aibi-dashboards","create Databricks AI\u002FBI dashboards","Create Databricks AI\u002FBI dashboards. Must use when creating, updating, or deploying Lakeview dashboards as Databricks Dashboard have a unique json structure. CRITICAL: You MUST test ALL SQL queries via CLI BEFORE deploying. Follow guidelines strictly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1947,1950,1953,1956],{"name":1948,"slug":1949,"type":15},"Analytics","analytics",{"name":1951,"slug":1952,"type":15},"Dashboards","dashboards",{"name":1954,"slug":1955,"type":15},"Data Visualization","data-visualization",{"name":9,"slug":8,"type":15},"2026-07-12T08:04:25.314591",{"slug":1959,"name":1959,"fn":1960,"description":1961,"org":1962,"tags":1963,"stars":29,"repoUrl":30,"updatedAt":1977},"databricks-app-design","design UX for Databricks AppKit applications","Design the UX of custom-code Databricks Apps (AppKit\u002FReact) data screens — KPI\u002Foverview pages, reports, charts, tables, and Genie\u002Fchat data assistants — mapped to concrete AppKit components. Use when BUILDING or reviewing the UI of an AppKit\u002FReact app that displays data or answers data questions: choosing genre, layout, charts, KPIs, semantic color, required states (loading\u002Fempty\u002Ferror), IBCS notation, and AI-result trust (showing generated SQL\u002Fsources for Genie\u002Fchat). A plain \"create a dashboard\" request means a managed AI\u002FBI (Lakeview) dashboard → use databricks-aibi-dashboards, NOT this skill. Also NOT for non-data frontend (forms, settings, auth, marketing) or scaffolding\u002Fbuild\u002Fdeploy (→ databricks-apps). Complements databricks-apps; use it alongside whenever a custom app has a chart, table, KPI, report, or Genie\u002Fchat\u002FAI surface.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1964,1965,1968,1971,1974],{"name":9,"slug":8,"type":15},{"name":1966,"slug":1967,"type":15},"Design","design",{"name":1969,"slug":1970,"type":15},"Frontend","frontend",{"name":1972,"slug":1973,"type":15},"React","react",{"name":1975,"slug":1976,"type":15},"UI Components","ui-components","2026-07-12T08:04:02.02398",{"slug":82,"name":82,"fn":1979,"description":1980,"org":1981,"tags":1982,"stars":29,"repoUrl":30,"updatedAt":1987},"build applications on Databricks Apps","Build apps on Databricks Apps platform. Use when asked to create data apps, analytics tools, or custom interactive visualizations. A plain \"create a dashboard\" request means a managed AI\u002FBI (Lakeview) dashboard → use databricks-aibi-dashboards, not this skill. Evaluates data access patterns (analytics vs Lakebase synced tables) before scaffolding. Invoke BEFORE starting implementation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1983,1984,1985,1986],{"name":1948,"slug":1949,"type":15},{"name":1951,"slug":1952,"type":15},{"name":1917,"slug":1918,"type":15},{"name":9,"slug":8,"type":15},"2026-07-12T08:03:59.061458",{"slug":4,"name":4,"fn":5,"description":6,"org":1989,"tags":1990,"stars":29,"repoUrl":30,"updatedAt":31},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1991,1992,1993,1994,1995,1996],{"name":9,"slug":8,"type":15},{"name":27,"slug":28,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"slug":44,"name":44,"fn":1998,"description":1999,"org":2000,"tags":2001,"stars":29,"repoUrl":30,"updatedAt":2007},"configure Databricks CLI and authentication","Databricks CLI operations and the parent\u002Fentry-point skill for Databricks CLI use: authentication, profile selection, and bundles. Load this first for CLI, auth, profile, and bundle tasks, then load the matching product skill. For finding or exploring data, answering questions about the data, or generating SQL, load the databricks-data-discovery skill (it routes to Genie One). Contains up-to-date guidelines for Databricks-related CLI tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2002,2005,2006],{"name":2003,"slug":2004,"type":15},"Authentication","authentication",{"name":1931,"slug":1932,"type":15},{"name":9,"slug":8,"type":15},"2026-07-18T05:11:05.45506",{"slug":1882,"name":1882,"fn":2009,"description":2010,"org":2011,"tags":2012,"stars":29,"repoUrl":30,"updatedAt":2022},"manage Databricks Declarative Automation Bundles","Create, configure, validate, deploy, run, and manage Declarative Automation Bundles (DABs, formerly Databricks Asset Bundles). Use when working with Databricks resources via DABs including dashboards, jobs, pipelines, alerts, volumes, and apps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2013,2016,2019,2020],{"name":2014,"slug":2015,"type":15},"Automation","automation",{"name":2017,"slug":2018,"type":15},"Configuration","configuration",{"name":9,"slug":8,"type":15},{"name":705,"slug":2021,"type":15},"deployment","2026-07-15T05:41:35.930355",{"slug":2024,"name":2024,"fn":2025,"description":2026,"org":2027,"tags":2028,"stars":29,"repoUrl":30,"updatedAt":2037},"databricks-data-discovery","discover and query Databricks data","Discover, explore, and query Databricks data via Genie — the CLI equivalent of the Genie One MCP. MUST be invoked whenever the user asks to find or locate data ('what tables are in X', 'where does X live', 'which catalog\u002Fschema has Y'), answer a natural-language question about the data, or write a SQL query.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2029,2030,2033,2034],{"name":1917,"slug":1918,"type":15},{"name":2031,"slug":2032,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":2035,"slug":2036,"type":15},"SQL","sql","2026-07-31T05:53:32.561877",{"slug":2039,"name":2039,"fn":2040,"description":2041,"org":2042,"tags":2043,"stars":29,"repoUrl":30,"updatedAt":2050},"databricks-dbsql","query and script Databricks SQL warehouses","Databricks SQL (DBSQL) advanced features and SQL warehouse capabilities. This skill MUST be invoked when the user mentions: \"DBSQL\", \"Databricks SQL\", \"SQL warehouse\", \"SQL scripting\", \"stored procedure\", \"CALL procedure\", \"materialized view\", \"CREATE MATERIALIZED VIEW\", \"pipe syntax\", \"|>\", \"geospatial\", \"H3\", \"ST_\", \"spatial SQL\", \"collation\", \"COLLATE\", \"ai_query\", \"ai_classify\", \"ai_extract\", \"ai_gen\", \"AI function\", \"http_request\", \"remote_query\", \"read_files\", \"Lakehouse Federation\", \"recursive CTE\", \"WITH RECURSIVE\", \"multi-statement transaction\", \"temp table\", \"temporary view\", \"pipe operator\". SHOULD also invoke when the user asks about SQL best practices, data modeling patterns, or advanced SQL features on Databricks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2044,2045,2048,2049],{"name":1917,"slug":1918,"type":15},{"name":2046,"slug":2047,"type":15},"Database","database",{"name":9,"slug":8,"type":15},{"name":2035,"slug":2036,"type":15},"2026-07-12T08:04:08.678282",{"slug":2052,"name":2052,"fn":2053,"description":2054,"org":2055,"tags":2056,"stars":29,"repoUrl":30,"updatedAt":2064},"databricks-docs","search Databricks documentation","Databricks documentation reference via llms.txt index. Use when other skills do not cover a topic, looking up unfamiliar Databricks features, or needing authoritative docs on APIs, configurations, or platform capabilities.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2057,2058,2061],{"name":9,"slug":8,"type":15},{"name":2059,"slug":2060,"type":15},"Documentation","documentation",{"name":2062,"slug":2063,"type":15},"Reference","reference","2026-07-15T05:41:34.697746",31,{"items":2067,"total":2065},[2068,2075,2081,2088,2095,2103,2110],{"slug":1894,"name":1894,"fn":1895,"description":1896,"org":2069,"tags":2070,"stars":29,"repoUrl":30,"updatedAt":1909},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2071,2072,2073,2074],{"name":1900,"slug":1901,"type":15},{"name":9,"slug":8,"type":15},{"name":1904,"slug":1905,"type":15},{"name":1907,"slug":1908,"type":15},{"slug":1911,"name":1911,"fn":1912,"description":1913,"org":2076,"tags":2077,"stars":29,"repoUrl":30,"updatedAt":1923},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2078,2079,2080],{"name":1917,"slug":1918,"type":15},{"name":9,"slug":8,"type":15},{"name":1921,"slug":1922,"type":15},{"slug":1925,"name":1925,"fn":1926,"description":1927,"org":2082,"tags":2083,"stars":29,"repoUrl":30,"updatedAt":1940},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2084,2085,2086,2087],{"name":1931,"slug":1932,"type":15},{"name":9,"slug":8,"type":15},{"name":1935,"slug":1936,"type":15},{"name":1938,"slug":1939,"type":15},{"slug":1942,"name":1942,"fn":1943,"description":1944,"org":2089,"tags":2090,"stars":29,"repoUrl":30,"updatedAt":1957},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2091,2092,2093,2094],{"name":1948,"slug":1949,"type":15},{"name":1951,"slug":1952,"type":15},{"name":1954,"slug":1955,"type":15},{"name":9,"slug":8,"type":15},{"slug":1959,"name":1959,"fn":1960,"description":1961,"org":2096,"tags":2097,"stars":29,"repoUrl":30,"updatedAt":1977},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2098,2099,2100,2101,2102],{"name":9,"slug":8,"type":15},{"name":1966,"slug":1967,"type":15},{"name":1969,"slug":1970,"type":15},{"name":1972,"slug":1973,"type":15},{"name":1975,"slug":1976,"type":15},{"slug":82,"name":82,"fn":1979,"description":1980,"org":2104,"tags":2105,"stars":29,"repoUrl":30,"updatedAt":1987},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2106,2107,2108,2109],{"name":1948,"slug":1949,"type":15},{"name":1951,"slug":1952,"type":15},{"name":1917,"slug":1918,"type":15},{"name":9,"slug":8,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":2111,"tags":2112,"stars":29,"repoUrl":30,"updatedAt":31},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2113,2114,2115,2116,2117,2118],{"name":9,"slug":8,"type":15},{"name":27,"slug":28,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15}]