Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
"version": "0.0.1"
},
"databricks-apps": {
"description": "Databricks Apps development and deployment (evaluates analytics vs synced tables data access)",
"description": "Build apps on Databricks Apps platform.",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand Down Expand Up @@ -93,7 +93,7 @@
"version": "0.0.1"
},
"databricks-core": {
"description": "Core Databricks skill for CLI, auth, and data exploration",
"description": "Databricks CLI operations: auth, profiles, data exploration, and bundles. Contains up-to-date guidelines for Databricks-related CLI tasks.",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand All @@ -107,7 +107,7 @@
"version": "0.1.0"
},
"databricks-dabs": {
"description": "Declarative Automation Bundles (DABs) for deploying and managing Databricks resources",
"description": "Create, configure, validate, deploy, run, and manage Declarative Automation Bundles (DABs, formerly Databricks Asset Bundles).",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand Down Expand Up @@ -181,7 +181,7 @@
"version": "0.0.1"
},
"databricks-jobs": {
"description": "Develop and deploy Lakeflow Jobs on Databricks via DABs, Python SDK, or the CLI \u2014 covers all task types, triggers, notifications, and worked examples",
"description": "Develop and deploy Lakeflow Jobs on Databricks via DABs, Python SDK, or the CLI.",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand All @@ -196,7 +196,7 @@
"version": "0.2.0"
},
"databricks-lakebase": {
"description": "Databricks Lakebase Postgres: projects, scaling, connectivity, synced tables, and Data API",
"description": "Databricks Lakebase Postgres: projects, scaling, connectivity, Lakebase synced tables, and Data API.",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand Down Expand Up @@ -249,7 +249,7 @@
"version": "0.0.1"
},
"databricks-model-serving": {
"description": "Databricks Model Serving endpoint management",
"description": "Manage Databricks Model Serving endpoints via CLI.",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand All @@ -261,7 +261,7 @@
"version": "0.1.0"
},
"databricks-pipelines": {
"description": "Databricks Spark Declarative Pipelines (SDP) for ETL and streaming",
"description": "Develop Lakeflow Spark Declarative Pipelines (formerly Delta Live Tables) on Databricks.",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand Down Expand Up @@ -330,7 +330,7 @@
"version": "0.0.1"
},
"databricks-serverless-migration": {
"description": "Migrate Databricks workloads from classic compute to serverless compute, including compatibility checks and concrete fixes",
"description": "Migrate Databricks workloads from classic compute to serverless compute.",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand Down
68 changes: 17 additions & 51 deletions scripts/skills.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,39 +20,19 @@
STABLE_REPO_DIR = "skills"
EXPERIMENTAL_REPO_DIR = "experimental"

# Stable-skill -> Claude marketplace plugin keyword. Used by
# check_plugin_manifest to verify .claude-plugin/plugin.json keywords stay
# aligned with the shipped skills. Descriptions live in each skill's SKILL.md
# frontmatter and are synthesized into the manifest via _build_stable_entry.
SKILL_METADATA = {
"databricks-core": {
"description": "Core Databricks skill for CLI, auth, and data exploration",
"plugin_keyword": "cli",
},
"databricks-apps": {
"description": "Databricks Apps development and deployment (evaluates analytics vs synced tables data access)",
"plugin_keyword": "apps",
},
"databricks-jobs": {
"description": "Develop and deploy Lakeflow Jobs on Databricks via DABs, Python SDK, or the CLI — covers all task types, triggers, notifications, and worked examples",
"plugin_keyword": "jobs",
},
"databricks-lakebase": {
"description": "Databricks Lakebase Postgres: projects, scaling, connectivity, synced tables, and Data API",
"plugin_keyword": "lakebase",
},
"databricks-dabs": {
"description": "Declarative Automation Bundles (DABs) for deploying and managing Databricks resources",
"plugin_keyword": "dabs",
},
"databricks-model-serving": {
"description": "Databricks Model Serving endpoint management",
"plugin_keyword": "model-serving",
},
"databricks-pipelines": {
"description": "Databricks Spark Declarative Pipelines (SDP) for ETL and streaming",
"plugin_keyword": "pipelines",
},
"databricks-serverless-migration": {
"description": "Migrate Databricks workloads from classic compute to serverless compute, including compatibility checks and concrete fixes",
"plugin_keyword": "serverless",
},
"databricks-core": {"plugin_keyword": "cli"},
"databricks-apps": {"plugin_keyword": "apps"},
"databricks-jobs": {"plugin_keyword": "jobs"},
"databricks-lakebase": {"plugin_keyword": "lakebase"},
"databricks-dabs": {"plugin_keyword": "dabs"},
"databricks-model-serving": {"plugin_keyword": "model-serving"},
"databricks-pipelines": {"plugin_keyword": "pipelines"},
"databricks-serverless-migration": {"plugin_keyword": "serverless"},
}


Expand Down Expand Up @@ -346,43 +326,29 @@ def _add_skill(skills: dict, entry: tuple[str, dict]) -> None:


def _build_stable_entry(skill_dir: Path) -> tuple[str, dict]:
if skill_dir.name not in SKILL_METADATA:
raise ValueError(
f"Missing SKILL_METADATA entry for skill '{skill_dir.name}'. "
"Add it to SKILL_METADATA dict."
)

metadata = SKILL_METADATA[skill_dir.name]
files = sorted(str(f.relative_to(skill_dir)) for f in iter_skill_files(skill_dir))

skill_entry = {
return skill_dir.name, {
"version": extract_version_from_skill(skill_dir),
"description": metadata.get("description", ""),
"description": synthesize_short_description(skill_dir),
"repo_dir": STABLE_REPO_DIR,
"files": files,
}

if metadata.get("min_cli_version"):
skill_entry["min_cli_version"] = metadata["min_cli_version"]

return skill_dir.name, skill_entry


# Experimental skills have a looser contract than stable: no agents/openai.yaml
# required, no shared-asset sync, no SKILL_METADATA entry required. Description
# is scraped from SKILL.md frontmatter on a best-effort basis.
# required and no shared-asset sync. Description comes from SKILL.md frontmatter
# verbatim (including "Use when..." triggers).
def _build_experimental_entry(skill_dir: Path) -> tuple[str, dict]:
files = sorted(str(f.relative_to(skill_dir)) for f in iter_skill_files(skill_dir))

skill_entry = {
return skill_dir.name, {
"version": extract_version_from_skill(skill_dir),
"description": extract_description_from_skill(skill_dir),
"repo_dir": EXPERIMENTAL_REPO_DIR,
"files": files,
}

return skill_dir.name, skill_entry


# ---------------------------------------------------------------------------
# Validation
Expand Down
2 changes: 1 addition & 1 deletion skills/databricks-dabs/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: databricks-dabs
description: 'Create, configure, validate, deploy, run, and manage DABs — Declarative Automation Bundles (formerly Databricks Asset Bundles) — for Databricks resources including dashboards, jobs, pipelines, alerts, volumes, and apps'
description: '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.'
---

# Declarative Automation Bundles (DABs)
Expand Down
2 changes: 1 addition & 1 deletion skills/databricks-serverless-migration/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: databricks-serverless-migration
description: "Migrate Databricks workloads from classic compute to serverless compute. Scans code for serverless compatibility issues, provides concrete fixes for the serverless Spark Connect architecture, and guides the full migration to serverless environments. Use for classic-to-serverless migrations, serverless code compatibility checks, or writing new serverless-compatible notebooks and jobs. Not for classic DBR version upgrades or cluster configuration changes within classic compute."
description: "Migrate Databricks workloads from classic compute to serverless compute. Use when migrating from classic to serverless, checking serverless code compatibility, or writing new serverless-compatible notebooks and jobs. Scans code for compatibility issues, provides concrete fixes for the serverless Spark Connect architecture, and guides the full migration. Not for classic DBR version upgrades or cluster configuration changes within classic compute."
compatibility: Requires databricks CLI (>= v0.292.0)
metadata:
version: "0.1.0"
Expand Down
Loading