Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
databricks avatar

Databricks Jobs

  • 665 installs
  • 241 repo stars
  • Updated August 1, 2026
  • databricks/databricks-agent-skills

The databricks-jobs skill helps agents configure Databricks jobs for notebook, Python wheel, and pipeline tasks.

About

The databricks-jobs skill helps agents configure Databricks jobs for notebook, Python wheel, and pipeline tasks. Workflow covers job JSON or UI-equivalent definitions, cluster selection, schedules and triggers, retry policies, email or webhook notifications, and run-level troubleshooting from event logs. Validates permissions and cost-aware cluster policies before enabling production schedules. Use when automating recurring data processing or ML training jobs on Databricks.

  • Job definitions for notebooks, wheels, and pipelines.
  • Schedules, triggers, and retry configuration.
  • Run troubleshooting from event logs.
  • Cluster policy and permission validation.
  • Production notification hooks for failures.

Databricks Jobs by the numbers

  • 665 all-time installs (skills.sh)
  • Ranked #405 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

databricks-jobs capabilities & compatibility

Capabilities
job definitions for notebooks, wheels, and pipel · schedules, triggers, and retry configuration. · run troubleshooting from event logs. · cluster policy and permission validation.
Use cases
documentation
npx skills add https://github.com/databricks/databricks-agent-skills --skill databricks-jobs

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs665
repo stars241
Last updatedAugust 1, 2026
Repositorydatabricks/databricks-agent-skills

How do I apply databricks-jobs using the workflow in its SKILL.md?

Create, schedule, and troubleshoot Databricks jobs with cluster policies and run monitoring.

Who is it for?

Developers following the databricks-jobs skill for the tasks it documents.

Skip if: Tasks outside the databricks-jobs scope described in SKILL.md.

When should I use this skill?

User mentions databricks-jobs or related triggers from the skill description.

What you get

Working databricks-jobs setup aligned with the documented patterns and constraints.

  • Lakeflow Job definitions
  • DABs deployment bundles
  • multi-task DAG configs

By the numbers

  • Skill version 0.2.0
  • Requires Databricks CLI >= v1.0.0

Files

SKILL.mdMarkdownGitHub ↗

Lakeflow Jobs Development

FIRST: Use the parent databricks-core skill for CLI basics, authentication, profile selection, and data exploration commands.

Lakeflow Jobs orchestrate data workflows with multi-task DAGs, flexible triggers, and comprehensive monitoring. Jobs support diverse task types and can be managed via Asset Bundles (DABs), Python SDK, or CLI.

Reference Files

Use CaseReference File
Configure task types (notebook, Python, SQL, dbt, pipeline, JAR, run_job, for_each)references/task-types.md
Set up triggers and schedules (cron, periodic, file arrival, table update, continuous)references/triggers-schedules.md
Configure notifications, health rules, retries, timeouts, queuesreferences/notifications-monitoring.md
Complete worked examples (ETL, warehouse refresh, event-driven, ML training, multi-env, streaming, cross-job)references/examples.md

Scaffolding a New Job Project

Use databricks bundle init with a config file to scaffold non-interactively. This creates a project in the <project_name>/ directory:

databricks bundle init default-python --config-file <(echo '{"project_name": "my_job", "include_job": "yes", "include_pipeline": "no", "include_python": "yes", "serverless": "yes"}') --profile <PROFILE> < /dev/null
  • project_name: letters, numbers, underscores only

After scaffolding, create CLAUDE.md and AGENTS.md in the project directory. These files are essential to provide agents with guidance on how to work with the project. Use this content:

# Declarative Automation Bundles Project

This project uses Declarative Automation Bundles (formerly Databricks Asset Bundles) for deployment.

## Prerequisites

Install the Databricks CLI (>= v0.288.0) if not already installed:
- macOS: `brew tap databricks/tap && brew install databricks`
- Linux: `curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh`
- Windows: `winget install Databricks.DatabricksCLI`

Verify: `databricks -v`

## For AI Agents

Read the `databricks-core` skill for CLI basics, authentication, and deployment workflow.
Read the `databricks-jobs` skill for job-specific guidance.

If skills are not available, install them: `databricks aitools install`

Project Structure

my-job-project/
├── databricks.yml              # Bundle configuration
├── resources/
│   └── my_job.job.yml          # Job definition
├── src/
│   ├── my_notebook.ipynb       # Notebook tasks
│   └── my_module/              # Python wheel package
│       ├── __init__.py
│       └── main.py
├── tests/
│   └── test_main.py
└── pyproject.toml              # Python project config (if using wheels)

Quick Start

Asset Bundles (DABs) — recommended

# resources/jobs.yml
resources:
  jobs:
    my_etl_job:
      name: "[${bundle.target}] My ETL Job"
      tasks:
        - task_key: extract
          notebook_task:
            notebook_path: ../src/notebooks/extract.py

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.jobs import Task, NotebookTask, Source

w = WorkspaceClient()

job = w.jobs.create(
    name="my-etl-job",
    tasks=[
        Task(
            task_key="extract",
            notebook_task=NotebookTask(
                notebook_path="/Workspace/Shared/etl/extract",
                source=Source.WORKSPACE,
            ),
        ),
    ],
)
print(f"Created job: {job.job_id}")

CLI

databricks jobs create --json '{
  "name": "my-etl-job",
  "tasks": [{
    "task_key": "extract",
    "notebook_task": {
      "notebook_path": "/Workspace/Shared/etl/extract",
      "source": "WORKSPACE"
    }
  }]
}'

Core Concepts

Multi-Task Workflows

Jobs support DAG-based task dependencies:

tasks:
  - task_key: extract
    notebook_task:
      notebook_path: ../src/extract.py

  - task_key: transform
    depends_on:
      - task_key: extract
    notebook_task:
      notebook_path: ../src/transform.py

  - task_key: load
    depends_on:
      - task_key: transform
    run_if: ALL_SUCCESS  # Only run if all dependencies succeed
    notebook_task:
      notebook_path: ../src/load.py

run_if conditions:

  • ALL_SUCCESS (default) — run when all dependencies succeed
  • ALL_DONE — run when all dependencies complete (success or failure)
  • AT_LEAST_ONE_SUCCESS — run when at least one dependency succeeds
  • NONE_FAILED — run when no dependencies failed
  • ALL_FAILED — run when all dependencies failed
  • AT_LEAST_ONE_FAILED — run when at least one dependency failed

Task Types Summary

Task TypeUse CaseReference
notebook_taskRun notebooksreferences/task-types.md#notebook-task
spark_python_taskRun Python scriptsreferences/task-types.md#spark-python-task
python_wheel_taskRun Python wheelsreferences/task-types.md#python-wheel-task
sql_taskRun SQL queries/files/dashboards/alertsreferences/task-types.md#sql-task
dbt_taskRun dbt projectsreferences/task-types.md#dbt-task
pipeline_taskTrigger SDP (formerly DLT) pipelinesreferences/task-types.md#pipeline-task
spark_jar_taskRun Spark JARsreferences/task-types.md#spark-jar-task
run_job_taskTrigger other jobsreferences/task-types.md#run-job-task
for_each_taskLoop over inputsreferences/task-types.md#for-each-task

Trigger Types Summary

Trigger TypeUse CaseReference
scheduleCron-based schedulingreferences/triggers-schedules.md#cron-schedule
trigger.periodicInterval-basedreferences/triggers-schedules.md#periodic-trigger
trigger.file_arrivalFile arrival eventsreferences/triggers-schedules.md#file-arrival-trigger
trigger.table_updateUnity Catalog table change eventsreferences/triggers-schedules.md#table-update-trigger
continuousAlways-running jobsreferences/triggers-schedules.md#continuous-jobs

Compute Configuration

Job Clusters (recommended)

Define reusable cluster configurations shared across tasks:

job_clusters:
  - job_cluster_key: shared_cluster
    new_cluster:
      spark_version: "15.4.x-scala2.12"
      node_type_id: "i3.xlarge"
      num_workers: 2
      spark_conf:
        spark.speculation: "true"

tasks:
  - task_key: my_task
    job_cluster_key: shared_cluster
    notebook_task:
      notebook_path: ../src/notebook.py

Autoscaling Clusters

new_cluster:
  spark_version: "15.4.x-scala2.12"
  node_type_id: "i3.xlarge"
  autoscale:
    min_workers: 2
    max_workers: 8

Existing Cluster

tasks:
  - task_key: my_task
    existing_cluster_id: "0123-456789-abcdef12"
    notebook_task:
      notebook_path: ../src/notebook.py

Serverless Compute

For notebook and Python tasks, omit cluster configuration to use serverless:

tasks:
  - task_key: serverless_task
    notebook_task:
      notebook_path: ../src/notebook.py
    # No cluster config = serverless

Job Parameters

Parameters defined at job level are passed to ALL tasks (no need to repeat per task):

parameters:
  - name: env
    default: "dev"
  - name: date
    default: "{{start_date}}"  # Dynamic value reference

Access in notebooks:

catalog = dbutils.widgets.get("env")
load_date = dbutils.widgets.get("date")

Pass to specific tasks:

tasks:
  - task_key: my_task
    notebook_task:
      notebook_path: ../src/notebook.py
      base_parameters:
        env: "{{job.parameters.env}}"
        custom_param: "value"

Common Operations

Python SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

# List jobs
jobs = w.jobs.list()

# Get job details
job = w.jobs.get(job_id=12345)

# Run job now
run = w.jobs.run_now(job_id=12345)

# Run with parameters
run = w.jobs.run_now(
    job_id=12345,
    job_parameters={"env": "prod", "date": "2024-01-15"},
)

# Cancel run
w.jobs.cancel_run(run_id=run.run_id)

# Delete job
w.jobs.delete(job_id=12345)

CLI

# List jobs
databricks jobs list

# Get job details
databricks jobs get 12345

# Run job
databricks jobs run-now 12345

# Run with parameters (must use --json with job_id inside)
databricks jobs run-now --json '{"job_id": 12345, "job_parameters": {"env": "prod"}}'

# Cancel run
databricks jobs cancel-run 67890

# Delete job
databricks jobs delete 12345

Asset Bundle Operations

# Validate configuration
databricks bundle validate --profile <profile>

# Deploy to a target
databricks bundle deploy -t dev --profile <profile>

# Run a job
databricks bundle run <job_name> -t dev --profile <profile>

# Check run status
databricks jobs get-run --run-id <id> --profile <profile>

# Destroy resources
databricks bundle destroy --auto-approve

Permissions (DABs)

resources:
  jobs:
    my_job:
      name: "My Job"
      permissions:
        - level: CAN_VIEW
          group_name: "data-analysts"
        - level: CAN_MANAGE_RUN
          group_name: "data-engineers"
        - level: CAN_MANAGE
          user_name: "admin@example.com"

Permission levels:

  • CAN_VIEW — view job and run history
  • CAN_MANAGE_RUN — view, trigger, and cancel runs
  • CAN_MANAGE — full control including edit and delete

Unit Testing

Run unit tests locally:

uv run pytest

Development Workflow

1. Validate: databricks bundle validate --profile <profile> 2. Deploy: databricks bundle deploy -t dev --profile <profile> 3. Run: databricks bundle run <job_name> -t dev --profile <profile> 4. Check run status: databricks jobs get-run --run-id <id> --profile <profile>

Common Issues

IssueSolution
Job cluster startup slowUse job clusters with job_cluster_key for reuse across tasks
Task dependencies not workingVerify task_key references match exactly in depends_on
Schedule not triggeringCheck pause_status: UNPAUSED and valid timezone
File arrival not detectingEnsure path has proper permissions and uses cloud storage URL
Table update trigger missing eventsVerify Unity Catalog table and proper grants
Parameter not accessibleUse dbutils.widgets.get() in notebooks
admins group errorCannot modify admins permissions on jobs
Serverless task failsEnsure task type supports serverless (notebook, Python)

Related Skills

  • databricks-dabs — DABs configuration patterns shared by jobs and pipelines
  • databricks-pipelines — SDP (formerly DLT) pipelines triggered by pipeline_task

Documentation

Related skills

How it compares

Pick databricks-jobs over generic data-pipeline skills when deployment targets Databricks Lakeflow with DABs, SDK, or CLI rather than Airflow or local cron scripts.

FAQ

What does databricks-jobs do?

Create, schedule, and troubleshoot Databricks jobs with cluster policies and run monitoring.

When should I use databricks-jobs?

Invoke when Create, schedule, and troubleshoot Databricks jobs with cluster policies and run monitoring.

Is databricks-jobs safe to install?

Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.