asset-bundles
Create and configure Databricks Asset Bundles (DABs) with best practices for multi-environment deployments. Use when working with: (1) Creating new DAB projects, (2) Adding resources (dashboards, pipelines, jobs, alerts), (3) Configuring multi-environment deployments, (4) Setting up permissions, (5) Deploying or running bundle resources
Best use case
asset-bundles is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Create and configure Databricks Asset Bundles (DABs) with best practices for multi-environment deployments. Use when working with: (1) Creating new DAB projects, (2) Adding resources (dashboards, pipelines, jobs, alerts), (3) Configuring multi-environment deployments, (4) Setting up permissions, (5) Deploying or running bundle resources
Teams using asset-bundles should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/asset-bundles/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How asset-bundles Compares
| Feature / Agent | asset-bundles | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Create and configure Databricks Asset Bundles (DABs) with best practices for multi-environment deployments. Use when working with: (1) Creating new DAB projects, (2) Adding resources (dashboards, pipelines, jobs, alerts), (3) Configuring multi-environment deployments, (4) Setting up permissions, (5) Deploying or running bundle resources
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Databricks Asset Bundle (DABs) Writer
## Overview
Create DABs for multi-environment deployment (dev/staging/prod).
## Reference Files
- **[SDP_guidance.md](SDP_guidance.md)** - Spark Declarative Pipeline configurations
- **[alerts_guidance.md](alerts_guidance.md)** - SQL Alert schemas (critical - API differs)
## Bundle Structure
```
project/
├── databricks.yml # Main config + targets
├── resources/*.yml # Resource definitions
└── src/ # Code/dashboard files
```
### Main Configuration (databricks.yml)
```yaml
bundle:
name: project-name
include:
- resources/*.yml
variables:
catalog:
default: "default_catalog"
schema:
default: "default_schema"
warehouse_id:
lookup:
warehouse: "Shared SQL Warehouse"
targets:
dev:
default: true
mode: development
workspace:
profile: dev-profile
variables:
catalog: "dev_catalog"
schema: "dev_schema"
prod:
mode: production
workspace:
profile: prod-profile
variables:
catalog: "prod_catalog"
schema: "prod_schema"
```
### Dashboard Resources
```yaml
resources:
dashboards:
dashboard_name:
display_name: "[${bundle.target}] Dashboard Title"
file_path: ../src/dashboards/dashboard.lvdash.json # Relative to resources/
warehouse_id: ${var.warehouse_id}
permissions:
- level: CAN_RUN
group_name: "users"
```
**Permission levels**: `CAN_READ`, `CAN_RUN`, `CAN_EDIT`, `CAN_MANAGE`
### Pipelines
**See [SDP_guidance.md](SDP_guidance.md)** for pipeline configuration
### SQL Alerts
**See [alerts_guidance.md](alerts_guidance.md)** - Alert schema differs significantly from other resources
### Jobs Resources
```yaml
resources:
jobs:
job_name:
name: "[${bundle.target}] Job Name"
tasks:
- task_key: "main_task"
notebook_task:
notebook_path: ../src/notebooks/main.py # Relative to resources/
new_cluster:
spark_version: "13.3.x-scala2.12"
node_type_id: "i3.xlarge"
num_workers: 2
schedule:
quartz_cron_expression: "0 0 9 * * ?"
timezone_id: "America/Los_Angeles"
permissions:
- level: CAN_VIEW
group_name: "users"
```
**Permission levels**: `CAN_VIEW`, `CAN_MANAGE_RUN`, `CAN_MANAGE`
⚠️ **Cannot modify "admins" group permissions** on jobs - verify custom groups exist before use
### Path Resolution
⚠️ **Critical**: Paths depend on file location:
| File Location | Path Format | Example |
|--------------|-------------|---------|
| `resources/*.yml` | `../src/...` | `../src/dashboards/file.json` |
| `databricks.yml` targets | `./src/...` | `./src/dashboards/file.json` |
**Why**: `resources/` files are one level deep, so use `../` to reach bundle root. `databricks.yml` is at root, so use `./`
### Volume Resources
```yaml
resources:
volumes:
my_volume:
catalog_name: ${var.catalog}
schema_name: ${var.schema}
name: "volume_name"
volume_type: "MANAGED"
```
⚠️ **Volumes use `grants` not `permissions`** - different format from other resources
### Apps Resources
**Apps resource support added in Databricks CLI 0.239.0 (January 2025)**
Apps in DABs have a minimal configuration - environment variables are defined in `app.yaml` in the source directory, NOT in databricks.yml.
#### Generate from Existing App (Recommended)
```bash
# Generate bundle config from existing CLI-deployed app
databricks bundle generate app --existing-app-name my-app --key my_app --profile DEFAULT
# This creates:
# - resources/my_app.app.yml (minimal resource definition)
# - src/app/ (downloaded source files including app.yaml)
```
#### Manual Configuration
**resources/my_app.app.yml:**
```yaml
resources:
apps:
my_app:
name: my-app-${bundle.target} # Environment-specific naming
description: "My application"
source_code_path: ../src/app # Relative to resources/ dir
```
**src/app/app.yaml:** (Environment variables go here)
```yaml
command:
- "python"
- "dash_app.py"
env:
- name: USE_MOCK_BACKEND
value: "false"
- name: DATABRICKS_WAREHOUSE_ID
value: "your-warehouse-id"
- name: DATABRICKS_CATALOG
value: "main"
- name: DATABRICKS_SCHEMA
value: "my_schema"
```
**databricks.yml:**
```yaml
bundle:
name: my-bundle
include:
- resources/*.yml
variables:
warehouse_id:
default: "default-warehouse-id"
targets:
dev:
default: true
mode: development
workspace:
profile: dev-profile
variables:
warehouse_id: "dev-warehouse-id"
```
#### Key Differences from Other Resources
| Aspect | Apps | Other Resources |
|--------|------|-----------------|
| **Environment vars** | In `app.yaml` (source dir) | In databricks.yml or resource file |
| **Configuration** | Minimal (name, description, path) | Extensive (tasks, clusters, etc.) |
| **Source path** | Points to app directory | Points to specific files |
⚠️ **Important**: When source code is in project root (not src/app), use `source_code_path: ..` in the resource file
### Other Resources
DABs supports schemas, models, experiments, clusters, warehouses, etc. Use `databricks bundle schema` to inspect schemas.
**Reference**: [DABs Resource Types](https://docs.databricks.com/dev-tools/bundles/resources)
## Common Commands
### Validation
```bash
databricks bundle validate # Validate default target
databricks bundle validate -t prod # Validate specific target
```
### Deployment
```bash
databricks bundle deploy # Deploy to default target
databricks bundle deploy -t prod # Deploy to specific target
databricks bundle deploy --auto-approve # Skip confirmation prompts
databricks bundle deploy --force # Force overwrite remote changes
```
### Running Resources
```bash
databricks bundle run resource_name # Run a pipeline or job
databricks bundle run pipeline_name -t prod # Run in specific environment
# Apps require bundle run to start after deployment
databricks bundle run app_resource_key -t dev # Start/deploy the app
```
### Monitoring & Logs
**View application logs (for Apps resources):**
```bash
# View logs for deployed apps
databricks apps logs <app-name> --profile <profile-name>
# Examples:
databricks apps logs my-dash-app-dev -p DEFAULT
databricks apps logs my-streamlit-app-prod -p DEFAULT
```
**What logs show:**
- `[SYSTEM]` - Deployment progress, file updates, dependency installation
- `[APP]` - Application output (print statements, errors)
- Backend connection status
- Deployment IDs and timestamps
- Stack traces for errors
**Key log patterns to look for:**
- ✅ `Deployment successful` - Confirms deployment completed
- ✅ `App started successfully` - App is running
- ✅ `Initialized real backend` - Backend connected to Unity Catalog
- ❌ `Error:` - Look for error messages and stack traces
- 📝 `Requirements installed` - Dependencies loaded correctly
### Cleanup
```bash
databricks bundle destroy -t dev
databricks bundle destroy -t prod --auto-approve
```
---
## Common Issues
| Issue | Solution |
|-------|----------|
| **App deployment fails** | Check logs: `databricks apps logs <app-name>` for error details |
| **App not connecting to Unity Catalog** | Check logs for backend connection errors; verify warehouse ID and permissions |
| **Wrong permission level** | Dashboards: CAN_READ/RUN/EDIT/MANAGE; Jobs: CAN_VIEW/MANAGE_RUN/MANAGE |
| **Path resolution fails** | Use `../src/` in resources/*.yml, `./src/` in databricks.yml |
| **Catalog doesn't exist** | Create catalog first or update variable |
| **"admins" group error on jobs** | Cannot modify admins permissions on jobs |
| **Volume permissions** | Use `grants` not `permissions` for volumes |
| **Hardcoded catalog in dashboard** | Create environment-specific files or parameterize JSON |
| **App not starting after deploy** | Apps require `databricks bundle run <resource_key>` to start |
| **App env vars not working** | Environment variables go in `app.yaml` (source dir), not databricks.yml |
| **Wrong app source path** | Use `../` from resources/ dir if source is in project root |
| **Debugging any app issue** | First step: `databricks apps logs <app-name>` to see what went wrong |
## Key Principles
1. **Path resolution**: `../src/` in resources/*.yml, `./src/` in databricks.yml
2. **Variables**: Parameterize catalog, schema, warehouse
3. **Mode**: `development` for dev/staging, `production` for prod
4. **Groups**: Use `"users"` for all workspace users
5. **Job permissions**: Verify custom groups exist; can't modify "admins"
## Resources
- [Databricks Asset Bundles Documentation](https://docs.databricks.com/dev-tools/bundles/)
- [Bundle Resources Reference](https://docs.databricks.com/dev-tools/bundles/resources)
- [Bundle Configuration Reference](https://docs.databricks.com/dev-tools/bundles/settings)
- [Supported Resource Types](https://docs.databricks.com/aws/en/dev-tools/bundles/resources#resource-types)
- [Examples Repository 1](https://github.com/databricks-solutions/databricks-dab-examples)
- [Example Repository 2](https://github.com/databricks/bundle-examples)Related Skills
asset-tracking
Use when managing asset metadata, dependencies, and delivery workflows across teams.
asset-forge
Creates new skills, rules, and MCPs for ai-driven-dev-system or project-specific use. Use when user requests a new reusable component, wants to add coding standards, needs to document a workflow, or asks to create a skill or rule.
asset-packager
Automated asset packaging—converts validated PNG + IDF JSON into complete production bundle (context.md, tokens.json, usage.md). Eliminates 30 manual file generations across 10 assets.
asset-optimization
Asset optimization skill for mesh and texture budgets.
create-an-asset
Generate tailored sales assets (landing pages, decks, one-pagers, workflow demos) from your deal context. Describe your prospect, audience, and goal — get a polished, branded asset ready to share with customers.
assets-organizing
Organize all outputs from slash commands and subagents in assets/ directory by topics, date format, and slugs.
assets-delete
Delete the assets at paths from the project. Does AssetDatabase.Refresh() at the end. Use 'assets-find' tool to find assets before deleting.
bgo
Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.
large-data-with-dask
Specific optimization strategies for Python scripts working with larger-than-memory datasets via Dask.
langsmith-fetch
Debug LangChain and LangGraph agents by fetching execution traces from LangSmith Studio. Use when debugging agent behavior, investigating errors, analyzing tool calls, checking memory operations, or examining agent performance. Automatically fetches recent traces and analyzes execution patterns. Requires langsmith-fetch CLI installed.
langchain-tool-calling
How chat models call tools - includes bind_tools, tool choice strategies, parallel tool calling, and tool message handling
langchain-notes
LangChain 框架学习笔记 - 快速查找概念、代码示例和最佳实践。包含 Core components、Middleware、Advanced usage、Multi-agent patterns、RAG retrieval、Long-term memory 等主题。当用户询问 LangChain、Agent、RAG、向量存储、工具使用、记忆系统时使用此 Skill。