/databricks-data-discovery
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/schema has Y'), answer a natural-language question about
$ npx -y skills add databricks/databricks-agent-skills --skill databricks-data-discovery --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/databricks-data-discovery
Context preview
The summary Claude sees to decide when to auto-load this skill.
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/schema has Y'), answer a natural-language question about
SKILL.md
databricks-data-discovery.SKILL.mdname: databricks-data-discovery
description: "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/schema has Y'), answer a natural-language question about the data, or write a SQL query."
compatibility: Requires databricks CLI >= v1.9.0 for `databricks genie ask` (older CLIs fall back to the deprecated `databricks experimental genie ask` alias)
metadata:
version: "0.1.0"
parent: databricks-coreDatabricks Data Discovery
This skill **routes data work** — decide first:
- the request is about *the data* — finding it, asking questions of it, or
generating SQL → delegate to **Genie One**: `databricks genie ask -s <session-label> "..."` (see Routing below).
- writing files or anything else → use your own coding-agent tools.
Genie One just needs an authenticated CLI profile (the parent `databricks-core` skill covers auth/profiles if you need it) — but route the data request to Genie first; don't detour into manual catalog browsing.
Routing — Genie vs your coding agent
**Route to Genie when the request is about the data:**
- **Finding or locating data** — "what tables are in wanderbricks?", "where does X
live?", which catalog/schema holds something. Let Genie resolve a fuzzy or partial name across all your data instead of guessing or grepping catalogs yourself.
- **Questions about the data** — "how many…", "what's the average…", "which … the
most…", trends, breakdowns.
- **Generating SQL from a question** — a first-cut query you can run, adapt, or drop
into a file.
- **Understanding or profiling data** to inform a query, dashboard, or app.
**Route to your own coding agent (do NOT use Genie) for everything else:**
- **Writing or editing files** — a `.sql` file, notebook, dashboard, app, config.
Genie finds the data and produces the SQL; *you* write the file.
- **Authoring jobs, pipelines, apps, or DABs** — use those product skills.
- **DDL or writes** — `CREATE` / `INSERT` / `UPDATE` / `DELETE`.
- **General programming, git, infra, and any non-data task.**
**Key principle:** data discovery, data questions, and query generation → Genie One. Everything else → your coding agent.
Why prefer Genie for data questions
Genie runs *inside the Databricks data plane* with governed, first-hand access to the org's Unity Catalog metadata, metric views, and curated semantic context — context you do **not** have when reverse-engineering schemas with ad-hoc SQL. For data questions it is often higher-quality and more performant than doing the discovery yourself, and it keeps improving as a managed Databricks capability. Don't default to writing your own discovery SQL just because you can.
How to ask Genie
Always pass a session label with `-s`, and prefer reusing the **same** one: a follow-up can only continue a conversation if the first ask set the session label, and reusing it lets later questions build on everything asked so far ("summarize all of the above"). Use a fresh session label only to start a deliberately separate session, or distinct session labels to run several in parallel.
The command is `databricks genie ask` (CLI >= v1.9.0). On an older CLI it lives under `databricks experimental genie ask` — same flags and behavior; use that exact fallback if `databricks genie ask` is not found.
# Always pass a session label, and reuse the SAME one so follow-ups build on each other
databricks genie ask -s trips "How many bookings were there last week?"
databricks genie ask -s trips "Break that down by destination"
databricks genie ask -s trips "Summarize all of the above"
# --include-sql also prints the SQL Genie ran (use it to generate a query, too)
databricks genie ask -s trips "Write SQL for the top 5 destinations by revenue" --include-sql
# --output json gives a parseable result
databricks genie ask -s trips "Top 5 destinations by revenue" --output json
# → {"status":"completed","conversation_id":"…","text":"…","tool_calls":[{"name":"execute_sql","sql":"…","title":"…"}]}
# Older CLI (< v1.9.0) — same command under the deprecated experimental alias:
# databricks experimental genie ask -s trips "How many bookings were there last week?"Genie searches across all the data you can see, runs SQL, and streams a grounded answer — rendered with the executed SQL and, where it helps, a terminal chart. It auto-resolves a SQL warehouse (override with `--warehouse-id`); nothing to pick or set up.
- **Streams live**: the answer, the agent's steps, and any SQL/results appear as
they arrive. Answers usually take ~5–30s; a stalled stream (no data for ~10 min) fails with a clear message, and Ctrl-C or `kill` (SIGTERM) cancels cleanly.
- **Picking a session label**: any string works — a topic like `trips`, or `$$` for a
per-shell session. Default to reusing one session label so follow-ups keep full context; use a fresh one only for a deliberately separate session. An expired session label just starts fresh on the next ask. No id to copy around.
- **Parallelism**: to run sessions at the same time, give each its own session label
(`-s q1`, `-s q2`, …) — independent session labels don't interfere. Within a single session label keep calls sequential: send a follow-up after the previous turn returns, and never fire two asks at once on the *same* session label (they'd split into two conversations and only one mapping would survive).
- **Structured output**: `--output json` gives `{status, conversation_id, text,
tool_calls[]}`, where `tool_calls` includes the SQL Genie executed; `--raw` dumps the raw event stream. Note `--output json` buffers and prints once at the end (no live streaming) — use it for parsing, the default text output for interactive use.
- **Generating a query**: ask Genie to "write SQL for …" and read the SQL from the
response (it's in the answer text, and `--i
Read more
name: databricks-data-discovery
description: "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/schema has Y'), answer a natural-language question about the data, or write a SQL query."
compatibility: Requires databricks CLI >= v1.9.0 for `databricks genie ask` (older CLIs fall back to the deprecated `databricks experimental genie ask` alias)
metadata:
version: "0.1.0"
parent: databricks-coreDatabricks Data Discovery
This skill **routes data work** — decide first:
- the request is about *the data* — finding it, asking questions of it, or
generating SQL → delegate to **Genie One**: `databricks genie ask -s <session-label> "..."` (see Routing below).
- writing files or anything else → use your own coding-agent tools.
Genie One just needs an authenticated CLI profile (the parent `databricks-core` skill covers auth/profiles if you need it) — but route the data request to Genie first; don't detour into manual catalog browsing.
Routing — Genie vs your coding agent
**Route to Genie when the request is about the data:**
- **Finding or locating data** — "what tables are in wanderbricks?", "where does X
live?", which catalog/schema holds something. Let Genie resolve a fuzzy or partial name across all your data instead of guessing or grepping catalogs yourself.
- **Questions about the data** — "how many…", "what's the average…", "which … the
most…", trends, breakdowns.
- **Generating SQL from a question** — a first-cut query you can run, adapt, or drop
into a file.
- **Understanding or profiling data** to inform a query, dashboard, or app.
**Route to your own coding agent (do NOT use Genie) for everything else:**
- **Writing or editing files** — a `.sql` file, notebook, dashboard, app, config.
Genie finds the data and produces the SQL; *you* write the file.
- **Authoring jobs, pipelines, apps, or DABs** — use those product skills.
- **DDL or writes** — `CREATE` / `INSERT` / `UPDATE` / `DELETE`.
- **General programming, git, infra, and any non-data task.**
**Key principle:** data discovery, data questions, and query generation → Genie One. Everything else → your coding agent.
Why prefer Genie for data questions
Genie runs *inside the Databricks data plane* with governed, first-hand access to the org's Unity Catalog metadata, metric views, and curated semantic context — context you do **not** have when reverse-engineering schemas with ad-hoc SQL. For data questions it is often higher-quality and more performant than doing the discovery yourself, and it keeps improving as a managed Databricks capability. Don't default to writing your own discovery SQL just because you can.
How to ask Genie
Always pass a session label with `-s`, and prefer reusing the **same** one: a follow-up can only continue a conversation if the first ask set the session label, and reusing it lets later questions build on everything asked so far ("summarize all of the above"). Use a fresh session label only to start a deliberately separate session, or distinct session labels to run several in parallel.
The command is `databricks genie ask` (CLI >= v1.9.0). On an older CLI it lives under `databricks experimental genie ask` — same flags and behavior; use that exact fallback if `databricks genie ask` is not found.
# Always pass a session label, and reuse the SAME one so follow-ups build on each other
databricks genie ask -s trips "How many bookings were there last week?"
databricks genie ask -s trips "Break that down by destination"
databricks genie ask -s trips "Summarize all of the above"
# --include-sql also prints the SQL Genie ran (use it to generate a query, too)
databricks genie ask -s trips "Write SQL for the top 5 destinations by revenue" --include-sql
# --output json gives a parseable result
databricks genie ask -s trips "Top 5 destinations by revenue" --output json
# → {"status":"completed","conversation_id":"…","text":"…","tool_calls":[{"name":"execute_sql","sql":"…","title":"…"}]}
# Older CLI (< v1.9.0) — same command under the deprecated experimental alias:
# databricks experimental genie ask -s trips "How many bookings were there last week?"Genie searches across all the data you can see, runs SQL, and streams a grounded answer — rendered with the executed SQL and, where it helps, a terminal chart. It auto-resolves a SQL warehouse (override with `--warehouse-id`); nothing to pick or set up.
- **Streams live**: the answer, the agent's steps, and any SQL/results appear as
they arrive. Answers usually take ~5–30s; a stalled stream (no data for ~10 min) fails with a clear message, and Ctrl-C or `kill` (SIGTERM) cancels cleanly.
- **Picking a session label**: any string works — a topic like `trips`, or `$$` for a
per-shell session. Default to reusing one session label so follow-ups keep full context; use a fresh one only for a deliberately separate session. An expired session label just starts fresh on the next ask. No id to copy around.
- **Parallelism**: to run sessions at the same time, give each its own session label
(`-s q1`, `-s q2`, …) — independent session labels don't interfere. Within a single session label keep calls sequential: send a follow-up after the previous turn returns, and never fire two asks at once on the *same* session label (they'd split into two conversations and only one mapping would survive).
- **Structured output**: `--output json` gives `{status, conversation_id, text,
tool_calls[]}`, where `tool_calls` includes the SQL Genie executed; `--raw` dumps the raw event stream. Note `--output json` buffers and prints once at the end (no live streaming) — use it for parsing, the default text output for interactive use.
- **Generating a query**: ask Genie to "write SQL for …" and read the SQL from the
response (it's in the answer text, and `--i
Skills for AI coding assistants (Claude Code, Cursor, etc.) that provide Databricks-specific guidance.
Repo: databricks/databricks-agent-skills
Other skills on databricks-agent-skills.
- /databricks-agent-bricks
Create Agent Bricks: Knowledge Assistants (KA) for document Q&A and Supervisor Agents for multi-agent orchestration (MAS).
Open skill - /databricks-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
Open skill - /databricks-aibi-dashboards
Create Databricks AI/BI 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.
Open skill - /databricks-app-design
Design the UX of custom-code Databricks Apps (AppKit/React) data screens — KPI/overview pages, reports, charts, tables, and Genie/chat data assistants — mapped to concrete AppKit components. Use when BUILDING or reviewing the UI of an AppKit/React app that displays data or
Open skill - /databricks-apps-python
Python backend for Databricks Apps — FastAPI (default), Flask, Dash, Streamlit, Gradio, Reflex. **Default for a new Databricks App is `databricks-apps` (AppKit — Node/TypeScript/React) — reach for it first.** Use this skill only when the user asks for a Python backend, extends
Open skill - /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/BI (Lakeview) dashboard → use databricks-aibi-dashboards, not this skill. Evaluates data
Open skill

