Skip to content

Polish plugin manifest + add self-marketplace; rename Claude plugin to 'databricks'#77

Open
jamesbroadhead wants to merge 8 commits into
mainfrom
polish-plugin-json-for-anthropic-marketplace
Open

Polish plugin manifest + add self-marketplace; rename Claude plugin to 'databricks'#77
jamesbroadhead wants to merge 8 commits into
mainfrom
polish-plugin-json-for-anthropic-marketplace

Conversation

@jamesbroadhead
Copy link
Copy Markdown

@jamesbroadhead jamesbroadhead commented May 18, 2026

Summary

Polish for submitting this repo to the official Anthropic Claude Code marketplace via claude.ai/settings/plugins/submit:

  • Refresh .claude-plugin/plugin.json description to match the 8 skills shipped today (drop the lingering "Unity Catalog" mention; add Lakebase, Jobs, Pipelines, serverless migration explicitly)
  • Add homepage, explicit license: LicenseRef-Databricks, author.url
  • Bump version 0.1.0 → 0.2.0
  • Rename the Claude Code plugin databricks-skillsdatabricks to match the github/gitlab/terraform/linear single-brand-word convention. Claude side only — never published, no breakage.
  • Add .claude-plugin/marketplace.json (with source: "./", verified against the official claude plugin validate .source: "." was caught by /ace-review and fixed)
  • Wire .claude-plugin/** into scripts/skills.py validate so CI fails when (a) a new skill is added without a matching plugin_keyword in plugin.json keywords, or (b) plugin/marketplace descriptions drift apart. Caught and fixed a real drift on this PR ("DABs" vs "Declarative Automation Bundles (DABs)")

Cursor side intentionally NOT renamed. .cursor-plugin/plugin.json name stays as databricks-skills and the README /add-plugin command matches. The Cursor marketplace URL slug databricks is display-only — actual install command is /add-plugin databricks-skills, and renaming would orphan existing user installs from auto-updates. Documented in new .cursor-plugin/NOTES.md. Long-term rename tracked as #78.

Why

Slack thread — fresh ask to release a Databricks Claude plugin in the official Anthropic marketplace. This repo already meets the Anthropic plugin manifest spec; this PR polishes the metadata so a reviewer doesn't bounce it for stale claims (UC) or missing fields (homepage/license), and the new CI check keeps it from drifting again as more skills land.

Review trail

Reviewed with /ace-review (two parallel GPT models). Both flagged source: "." as invalid; claude plugin validate . confirmed → fixed to "./" in commit 8841de4. Other findings (type-checking in-tree JSON, alleged install-path breakage from rename) were false positives. The Cursor-side rename was applied and then reverted after manually verifying that the Cursor marketplace install ID is databricks-skills, not databricks (commit 54ec175).

Test plan

  • python3 scripts/skills.py validate passes (verified locally — clean tree, dropped-keyword negative, description-drift negative all behave correctly)
  • claude plugin validate . passes (verified locally)
  • jq empty .claude-plugin/plugin.json && jq empty .claude-plugin/marketplace.json && jq empty .cursor-plugin/plugin.json

This pull request and its description were written by Isaac.

…arketplace submission

Polish for submission to the official Anthropic Claude Code marketplace
(claude.ai/settings/plugins/submit):

- Refresh plugin.json description to match the 8 skills actually
  shipped today (drop "Unity Catalog", add Lakebase, Jobs, Pipelines,
  serverless migration).
- Add `homepage` and explicit `license` (LicenseRef-Databricks) fields.
- Add `author.url` for the marketplace listing.
- Bump version 0.1.0 -> 0.2.0 to reflect the additional skills shipped
  since 0.1.0.

Also add a top-level .claude-plugin/marketplace.json so the repo is
directly installable in Claude Code without waiting on the official
marketplace review:

  /plugin marketplace add databricks/databricks-agent-skills
  /plugin install databricks-skills@databricks-agent-skills

README updated to document the new install path and to enumerate all 8
shipped skills (was only listing databricks-apps).

Co-authored-by: Isaac
Signed-off-by: James Broadhead <james.broadhead@databricks.com>
We don't want to advertise marketplace-style install in the README;
`databricks experimental aitools install` stays as the recommended,
client-agnostic path. The `.claude-plugin/marketplace.json` from the
previous commit is still useful (anyone who explicitly wants the
plugin-style install can use it, and it's what the Anthropic marketplace
submission references), but the README shouldn't push users there.

Co-authored-by: Isaac
Signed-off-by: James Broadhead <james.broadhead@databricks.com>
When a new skill lands without a corresponding bump in
.claude-plugin/plugin.json / .claude-plugin/marketplace.json, the
Claude Code marketplace listing silently goes stale. Extend the
existing `scripts/skills.py validate` (already a required CI gate via
.github/workflows/validate-manifest.yml) to catch this drift.

What's enforced:

  - SKILL_METADATA now carries a `plugin_keyword` per skill. validate
    fails if any skill's plugin_keyword is missing from plugin.json
    `keywords` — so adding a new skill forces a thoughtful keyword
    update.
  - plugin.json `description` and marketplace.json plugin entry
    `description` must match exactly. They drift independently
    otherwise (already happened on this PR — caught and fixed:
    "DABs" vs "Declarative Automation Bundles (DABs)").

Also widen the validate-manifest.yml `paths:` filter to cover
.claude-plugin/** so edits to the manifests themselves get checked.

Tested locally:
  - clean tree: `python3 scripts/skills.py validate` -> "Everything is up to date."
  - drop a keyword: surfaces the missing-keyword error.
  - drift the descriptions: surfaces the mismatch error.

Co-authored-by: Isaac
Signed-off-by: James Broadhead <james.broadhead@databricks.com>
Match the github/gitlab/firebase/terraform/linear naming convention in
the official Anthropic Claude Code marketplace — a brand-owner plugin
gets the brand-owner name. Scoped to .claude-plugin/ only.

.cursor-plugin/plugin.json is intentionally left as "databricks-skills"
— that's Cursor's marketplace namespace, already published, and a
rename there would break existing Cursor installs.

Skill names (databricks-core, databricks-apps, ...) are unchanged, so
they'll surface in Claude Code as /databricks:databricks-core etc.
The prefix doubling is awkward but not user-visible in skill
auto-discovery; renaming the skills themselves is a separate, larger
change that would need to roll through Cursor too.

Co-authored-by: Isaac
Signed-off-by: James Broadhead <james.broadhead@databricks.com>
@jamesbroadhead jamesbroadhead changed the title Polish plugin manifest + add self-marketplace for Anthropic Claude marketplace submission Polish plugin manifest + add self-marketplace; rename Claude plugin to 'databricks' May 18, 2026
Copy link
Copy Markdown
Member

@pkosiec pkosiec left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀 LGTM

The official `claude plugin validate .` tool rejects `source: "."`:

  ✘ plugins.0.source: Invalid input
  ✘ Validation failed

The Anthropic canonical convention (anthropics/claude-code,
anthropics/claude-plugins-official) is always `./<subdir>` paths.
`"./"` is the minimum-touch fix that satisfies the schema while
keeping the plugin rooted at the repo root.

Caught by two-of-two parallel GPT reviewers via /ace-review against
this PR before merge.

Co-authored-by: Isaac
Signed-off-by: James Broadhead <james.broadhead@databricks.com>
…ide)

The name disparity between .claude-plugin (databricks) and .cursor-plugin
(databricks-skills) was a footgun for anyone reading the repo. Align
them — the Cursor plugin uses the brand name too, matching the
github/gitlab/terraform/linear convention used by both marketplaces.

Also update the README install instruction:
  /add-plugin databricks-skills  ->  /add-plugin databricks

TODO (post-merge): re-publish to the Cursor marketplace under the new
slug. The existing listing at cursor.com/marketplace/skills/databricks
will need updating; Eric Zakariasson (cursor) filed the original
.cursor-plugin/plugin.json (PR #14) and is the right contact for
whether the rename needs a fresh submission or an in-place update.
Tracked as a follow-up issue on this repo.

Co-authored-by: Isaac
Signed-off-by: James Broadhead <james.broadhead@databricks.com>
Earlier in this PR I renamed .cursor-plugin/plugin.json name from
databricks-skills -> databricks to match the Claude side. That was a
mistake: the Cursor marketplace listing at cursor.com/marketplace/databricks
shows the actual install command as `/add-plugin databricks-skills` —
the URL slug `databricks` is a display-only marketing slug Cursor picked,
not the install identifier. The install ID has been databricks-skills
since the plugin was first listed (~2026-02-12), and multiple
Databricks teams have been pointing customers at that listing for months.

Renaming the install ID would orphan every existing Cursor user's
~/.cursor/plugins/databricks-skills/ cache from auto-updates until they
manually reinstall under the new name. Not worth the consistency win.

Restore:
  .cursor-plugin/plugin.json: name -> "databricks-skills"
  README.md: /add-plugin databricks-skills

Add .cursor-plugin/NOTES.md explaining why the asymmetry between
.cursor-plugin (databricks-skills) and .claude-plugin (databricks) is
deliberate, with the long-term rename plan deferred to issue #78.

Claude side is unchanged — never published anywhere as databricks-skills,
so it's free to use the cleaner brand-name identifier.

Co-authored-by: Isaac
Signed-off-by: James Broadhead <james.broadhead@databricks.com>
Issue #78 closed as not planned. Replace the speculative "future
major-version bump" language with an explicit "this asymmetry is
permanent; leave it alone."

Co-authored-by: Isaac
Signed-off-by: James Broadhead <james.broadhead@databricks.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants