plugin distribution: make the marketplace repo authoritative, drop the manifest version (git-hash updates), remove madtea's .claude-plugin, rework assemble #443
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#443
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements the decision from #437. The plugin is distributed and maintained from the authoritative marketplace repo
sixfold-space/claude-plugins.Decision
versionfield, so Claude Code uses the marketplace repo's git commit hash for update detection (per the official Claude Code docs). This removes the version-drift that left the source manifest stuck at an old value, and the "version set in bothplugin.jsonand the marketplace entry" anti-pattern..claude-plugin/is removed; madtea no longer carries a plugin manifest.Work
In
sixfold-space/claude-plugins(authoritative)versionfromplugins/madtea/.claude-plugin/plugin.json.versionfrom themarketplace.jsonmadtea entry (never set it in both).description: drop "works with OpenAI Codex CLI and Antigravity CLI". It is a Claude Code plugin; the cross-client surface is the MCP server, a separate install.In madtea
.claude-plugin/.scripts/assemble-plugin-artifact.sh: drop the version stamping (stamp_plugin_json_version) and the require/copy of.claude-plugin/plugin.jsonfrom the source tree. Keep vendoring the components (hooks, skills, LICENSE, NOTICE, README) so the plugin content still tracks madtea; the version-less manifest in the marketplace stays authoritative and untouched.hooks/tests/assemble-plugin-artifact.test.sh(drop the version-stamp assertions).docs/contributing/agent-onboarding.mdand any doc that describes a source.claude-plugin/.Acceptance
versionin the plugin manifest or the marketplace entry; update detection keys off the marketplace repo's commit hash..claude-plugin/; a release still vendors current hooks and skills into the marketplace.Related
Rescoped by the #450 decision (option 3): the plugin carries hooks and skills only, no bundled MCP server.
Changes to the work here:
madt_tool surface. Vendor hooks and skills only inassemble-plugin-artifact.sh.versionfield (git-hash update detection, as already planned); fix the description to a hooks-and-skills Claude Code plugin. Remove the "works with OpenAI Codex CLI and Antigravity CLI" claim - that reach is the server, a separate install..claude-plugin/as planned.This resolves #437's manifest contradiction by the same change: no server in the plugin, so no cross-client claim to contradict.
The marketplace-repo side is now tracked in its own repo: sixfold-space/claude-plugins#15 (drop the bundled server, the manifest version, and the cross-client claim). This issue stays the madtea-side work: the assemble rework and the source
.claude-plugin/removal, plus the ADR 0010 amendment.Design settled. The madtea-side scope is now fixed.
Cadence: the vendor step stays release-time only (inside
release.sh) - trigger unchanged. Plus an idempotency guard: it commits intoclaude-pluginsONLY when the vendored content (hooks/skills/LICENSE/NOTICE) actually differs from what is already there. A release that changes no hooks/skills produces no vendor commit, so no phantom plugin update.Update model: no
versionanywhere. Claude Code keys plugin updates off the marketplace repo's commit hash, so a real vendor commit is the update signal (verified against code.claude.com/docs plugin-marketplaces). The marketplace repo (claude-plugins) is the sole owner ofplugin.json,marketplace.json, andREADME- the narrowed versions are already merged there (its PR #16).madtea-side work here:
assemble-plugin-artifact.sh: stop owning the metadata. Remove the require/copy of source.claude-plugin/plugin.json,stamp_plugin_json_version,bump_marketplace_version, and the versioned README generation. Vendor only hooks + skills + LICENSE + NOTICE, and leaveplugin.json/marketplace.json/READMEuntouched.claude-plugins..claude-plugin/.hooks/tests/assemble-plugin-artifact.test.sh: drop the version-stamp and manifest-present assertions; assert assemble does NOT write the metadata files; cover the idempotent no-op.Not needed: the version machinery, a GitHub sync, or any push-triggered vendor.
Landed on main in
90c68c2a. That commit's "Closes #[443]" carried a bracket typo, so the forge never auto-closed this. All acceptance is met on main: source .claude-plugin/ is deleted, assemble-plugin-artifact.sh vendors only hooks + skills and no longer owns the manifest/version/README, the idempotency guard is in place (a release that changes no hooks/skills produces no vendor commit), hooks/tests/assemble-plugin-artifact.test.sh covers the new flow, and ADR 0010 carries the dated 2026-08-25 amendment. The marketplace-repo side is tracked and merged in sixfold-space/claude-plugins (#16). Closing.