feat(plugin): add databricks-experimental as a skills-only plugin#133
Open
simonfaltum wants to merge 3 commits into
Open
feat(plugin): add databricks-experimental as a skills-only plugin#133simonfaltum wants to merge 3 commits into
simonfaltum wants to merge 3 commits into
Conversation
experimental/ now ships as a second Claude Code plugin on the repo's self-hosted marketplace (source ./experimental; the manifest declares "skills": "./" because the skill dirs sit at the plugin root). It is skills-only by policy, not by omission: Claude Code runs hooks from every enabled plugin with no shadowing or precedence, so the stable plugin stays the platform layer (router, context primer, auth hints, slash commands) and this plugin is a content pack installed alongside it. Keeping it self-contained also keeps graduation a pure file move shipped atomically in one release. - marketplace.json: second plugin entry - skills.py: new check_experimental_plugin enforces the policy (no hooks/ commands/agents/mcpServers keys or component dirs, skills field present, plugin name, marketplace source, version lockstep with the stable manifest); marketplace description sync now covers both plugins - bump_version.py: bumps the experimental manifest in lockstep on release - docs: README, experimental/README, CONTRIBUTING, CLAUDE.md Verified with a real install in an isolated CLAUDE_CONFIG_DIR: all 17 experimental skills register, zero hooks/commands, stable plugin inventory unaffected, both plugins coexist. Co-authored-by: Isaac Signed-off-by: simon <simon.faltum@databricks.com>
…s' into simonfaltum/experimental-plugin # Conflicts: # CLAUDE.md
…s' into simonfaltum/experimental-plugin
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Experimental skills are installable today only through the CLI's files overlay (
databricks aitools install --experimental), so they never get the out-of-band updates the plugin channel provides, and graduating a skill to stable leaves CLI users with duplicate copies to clean up. The aitools plugin-first proposal moves experimental content to its own plugin in this repo's marketplace so the agent keeps it updated and graduation becomes a pure file move.The plugin is deliberately skills-only, and that is a policy, not a gap: Claude Code runs hooks from every enabled plugin with no shadowing or precedence, so any hook shipped here would stack with the stable plugin's hooks (#128) on every prompt, session start, and tool call. The stable
databricksplugin is the platform layer (prompt router, context primer, auth hints, slash commands);databricks-experimentalis a content pack that assumes the stable plugin is installed alongside it. This also means weekly-churn experimental code never runs in the always-on hook hot path.Changes
Before: one plugin (
databricks) in the marketplace; experimental skills reachable only via the CLI files overlay. Now: a second plugin,databricks-experimental, in the same self-hosted marketplace..claude-plugin/marketplace.json: second entry,source: "./experimental".experimental/.claude-plugin/plugin.json(new): namedatabricks-experimental,"skills": "./"(the skill dirs sit directly at the plugin root; there is noexperimental/skills/), version0.2.0in lockstep with the stable manifest, and a description that states the content is unstable and may change or be removed.scripts/skills.py: newcheck_experimental_plugininvalidateenforces the policy: manifest exists, parses, correct name,"skills": "./"present (without it the plugin silently ships zero skills), nohooks/commands/agents/mcpServerskeys and noexperimental/hooks|commands|agentsdirs, version lockstep with the stable manifest, marketplace source correct. Marketplace description sync now covers both plugins.scripts/bump_version.py: the release bump now sets the experimental manifest too, so one tag means one version across all plugin manifests.experimental/README.md(plugin install + the skills-only rule), CONTRIBUTING ("The experimental plugin is skills-only" policy section, release step update), CLAUDE.md.Notes:
skills/andexperimental/are already rejected at manifest generation, which keeps graduation atomic. Users who update the two plugins at different times can briefly see a graduated skill twice (namespaceddatabricks:<name>anddatabricks-experimental:<name>); updating both plugins resolves it, andaitools updateon the plugin channel will do that in one go (CLI-side work, tracked in the aitools plugin-first proposal).versionfield pins marketplace updates to release bumps, matching the stable plugin's release-gated model (omitting it would make every commit tomainan update, which conflicts with release gating).Test plan
python3 scripts/skills.py validatepassesexperimental/hooks/dir and a version skew between the two manifests (verified manually, then reverted)python3 scripts/bump_version.py v0.2.0smoke test: reports all three manifests, regenerates manifest.json as a no-op (cursor side effect reverted; the release workflow owns that bump)claude plugin validatepasses on both the plugin manifest and the marketplace manifestCLAUDE_CONFIG_DIR:claude plugin marketplace add <repo>+claude plugin install databricks-experimental@databricks-agent-skillsrun headlessly with no prompts;claude plugin detailsshows all 17 experimental skills, 0 hooks, 0 commands, ~1.7k always-on tokensThis pull request and its description were written by Isaac.