Build full-stack Databricks applications using APX framework (FastAPI + React).
Builds full-stack Databricks applications using the APX framework with FastAPI backend and React frontend.
/plugin marketplace add https://www.claudepluginhub.com/api/plugins/databricks-solutions-databricks-ai-dev-kit/marketplace.json/plugin install databricks-solutions-databricks-ai-dev-kit@cpd-databricks-solutions-databricks-ai-dev-kitThis skill inherits all available tools. When active, it can use any tool Claude has access to.
backend-patterns.mdbest-practices.mdfrontend-patterns.mdBuild full-stack Databricks applications using APX framework (FastAPI + React).
Invoke when user requests:
Do NOT invoke if user specifies: Streamlit, Dash, Node.js, Shiny, Gradio, Flask, or other frameworks.
Option A)
Repository configured for use with APX.
1.. Verify APX MCP available: mcp-cli tools | grep apx
2. Verify shadcn MCP available: mcp-cli tools | grep shadcn
3. Confirm APX project (check pyproject.toml)
Option B) Install APX
brew install uv.brew tap oven-sh/bun
brew install bun
uvx --from git+https://github.com/databricks-solutions/apx.git apx init
Total time: 55-70 minutes
# Start APX development server
mcp-cli call apx/start '{}'
mcp-cli call apx/status '{}'
Create TodoWrite with tasks:
In src/{app_name}/backend/models.py:
Follow 3-model pattern:
EntityIn - Input validationEntityOut - Complete output with computed fieldsEntityListOut - Performance-optimized summarySee backend-patterns.md for complete code templates.
In src/{app_name}/backend/router.py:
Critical requirements:
response_model (enables OpenAPI generation)operation_id (becomes frontend hook name)listX, getX, createX, updateX, deleteXSee backend-patterns.md for complete CRUD templates.
mcp-cli call apx/dev_check '{}'
Fix any Python type errors reported by basedpyright.
Wait 5-10 seconds after backend changes for OpenAPI client regeneration.
# Get shadcn add command
mcp-cli call shadcn/get_add_command_for_items '{
"items": ["@shadcn/button", "@shadcn/card", "@shadcn/table",
"@shadcn/badge", "@shadcn/select", "@shadcn/skeleton"]
}'
Run the command from project root with --yes flag.
List page: src/{app_name}/ui/routes/_sidebar/{entity}.tsx
Detail page: src/{app_name}/ui/routes/_sidebar/{entity}.$id.tsx
See frontend-patterns.md for complete page templates.
In src/{app_name}/ui/routes/_sidebar/route.tsx, add new item to navItems array.
# Type check both backend and frontend
mcp-cli call apx/dev_check '{}'
# Test API endpoints
curl http://localhost:8000/api/{entities} | jq .
curl http://localhost:8000/api/{entities}/{id} | jq .
# Get frontend URL
mcp-cli call apx/get_frontend_url '{}'
Manually verify in browser:
Use DABs to deploy your APX application to Databricks. See the databricks-asset-bundles skill for complete deployment guidance.
Automated log checking with APX MCP:
The APX MCP server can automatically check deployed application logs. Simply ask: "Please check the deployed app logs for <app-name>"
The APX MCP will retrieve logs and identify issues automatically, including:
[SYSTEM] (deployment) and [APP] (application) logsManual log checking (reference):
For direct CLI access:
databricks apps logs <app-name> --profile <profile-name>
Key patterns to look for:
Deployment successful - App deployed correctlyApp started successfully - Application is runningError: - Check stack traces for issuesCreate two markdown files:
README.md:
CODE_STRUCTURE.md:
listEntities → useListEntities()useXSuspense(selector())lib/api.ts or types/routeTree.gen.tsapx dev check succeeds)Deployed app not working: Ask to check deployed app logs (APX MCP will automatically retrieve and analyze them) or manually use databricks apps logs <app-name>
Python type errors: Use explicit casting for dict access, check Optional fields
TypeScript errors: Wait for OpenAPI regen, verify hook names match operation_ids
OpenAPI not updating: Check watcher status with apx dev status, restart if needed
Components not added: Run shadcn from project root with --yes flag
Read these files only when actively writing that type of code or debugging issues.
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.