Skip to content

Add Claude Code marketplace manifest with proper architecture - #379

Merged
AndreyVMarkelov merged 1 commit into
masterfrom
add-marketplace-manifest-correct
Sep 3, 2026
Merged

Add Claude Code marketplace manifest with proper architecture#379
AndreyVMarkelov merged 1 commit into
masterfrom
add-marketplace-manifest-correct

Conversation

@AndreyVMarkelov

@AndreyVMarkelov AndreyVMarkelov commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds Claude Code marketplace support with proper self-contained plugin architecture following official specifications.

Architecture

Canonical source (platform-neutral):

skills/dbxcli/          # Source of truth - usable by ChatGPT/OpenClaw/Codex

Self-contained plugin (marketplace-ready):

plugin/claude/
  .claude-plugin/plugin.json
  skills/dbxcli/        # Synced copy (committed)
  hooks/
  scripts/
  README.md

Marketplace manifest:

.claude-plugin/marketplace.json
  - Uses "source" field (not "path") per spec
  - Includes required "owner" object
  - Points to ./plugin/claude (checked-in, not dist/)

Changes

New Files

  • .claude-plugin/marketplace.json - Marketplace catalog (per official spec)
  • plugin/claude/skills/dbxcli/ - Self-contained skill copy
  • scripts/sync-claude-skill.sh - Sync canonical skill to plugin

Updated Files

  • scripts/test-plugin.sh - Validates marketplace structure and skill sync
  • .github/workflows/ci.yml - Adds CI job that fails if skills are out of sync
  • .gitignore - Ignore tmp/ directory

Official Spec Compliance

Marketplace manifest location: .claude-plugin/marketplace.json
Plugin entry uses source field (not path)
Required owner object at top level
Self-contained plugin (no path escaping after install)
CI enforces sync between canonical and plugin copies

Installation Flow

Before (requires clone):

git clone https://github.com/dropbox/dbxcli.git
cd dbxcli
claude --plugin-dir dist/claude/dbxcli-plugin

After (zero-clone marketplace install):

/plugin marketplace add Dropbox/dbxcli
/plugin install dbxcli@dbxcli

Then use: /dbxcli:dbxcli list my Dropbox files

Benefits

  1. Self-contained marketplace plugin - No path escaping issues after install
  2. Canonical source remains platform-neutral - ChatGPT/OpenClaw can continue using skills/dbxcli/
  3. Claude packaging not source of truth - dist/ stays as build artifact
  4. No committing generated code - dist/ remains in .gitignore
  5. CI-enforced synchronization - Build fails if copies diverge

Validation

All validation tests pass (30/30):

./scripts/test-plugin.sh
=== Results: 30 passed, 0 failed ===

CI checks:

  • ✅ Marketplace.json is valid JSON with required fields
  • ✅ Plugin skill matches canonical source
  • ✅ All plugin structure validations pass

@AndreyVMarkelov
AndreyVMarkelov force-pushed the add-marketplace-manifest-correct branch 4 times, most recently from 0d8ef21 to d936c0d Compare September 3, 2026 21:52
Implements proper marketplace distribution architecture:

- Canonical skill source: skills/dbxcli/ (platform-neutral)
- Self-contained plugin: plugin/claude/ with synced skill copy
- Marketplace manifest: .claude-plugin/marketplace.json
  - Uses "source" field (not "path")
  - Includes required "owner" object
  - Points to ./plugin/claude (checked-in, not dist/)
  - Omits version fields (auto-updates via commit SHA)

New tooling:
- scripts/sync-claude-skill.sh: Syncs canonical skill to plugin
- CI validation: Fails if plugin/claude/skills/dbxcli != skills/dbxcli
- Updated test-plugin.sh: Validates marketplace structure and sync

Enables zero-clone installation:
  /plugin marketplace add Dropbox/dbxcli
  /plugin install dbxcli@dbxcli

Benefits:
- Marketplace gets self-contained plugin (no path escaping after install)
- Canonical skill remains platform-neutral (ChatGPT/OpenClaw can use it)
- Claude packaging is not source of truth
- No need to commit dist/
- CI enforces synchronization
- Auto-updates via commit SHA (no manual version bumps during development)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@AndreyVMarkelov
AndreyVMarkelov force-pushed the add-marketplace-manifest-correct branch from d936c0d to 51a1a48 Compare September 3, 2026 21:58
@AndreyVMarkelov
AndreyVMarkelov merged commit 45250da into master Sep 3, 2026
14 checks passed
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.

1 participant