Skip to content

Ship a Claude Code plugin: MCP server + skills in one install - #36

Merged
clementrx merged 2 commits into
mainfrom
feat/claude-code-plugin
Jul 19, 2026
Merged

Ship a Claude Code plugin: MCP server + skills in one install#36
clementrx merged 2 commits into
mainfrom
feat/claude-code-plugin

Conversation

@clementrx

Copy link
Copy Markdown
Owner

Why

The PyPI package ships only the MCP server. The coaching skills live in skills/ and, until now, had to be cloned and copied into ~/.claude/skills/ by hand. Users who registered the server but skipped the copy got the 103 tools with no coaching protocols — no onboarding, no Garmin connection flow, no periodization guidance. (This is exactly what happened to a user's friend: tools present, "démarche" absent.)

What

The repo is now its own Claude Code plugin marketplace, so one install bundles both halves:

/plugin marketplace add clementrx/Performance-agent
/plugin install performance-agent@performance-agent
  • .claude-plugin/marketplace.json — repo is the marketplace; the plugin lives at the repo root (source: "./")
  • .claude-plugin/plugin.json — metadata + mcpServers.mcp.json; version tracks the package
  • .mcp.json — registers the server via uvx performance-agent (user scope), so one-folder-per-athlete still works
  • skills/ at the repo root is auto-discovered — all 16 skills load with the server

Claude Code keeps the plugin updated (/plugin marketplace update performance-agent).

Verification

  • claude plugin validate passes on the marketplace manifest (no warnings).
  • Installed from a local marketplace: claude plugin details reports 16 skills + 1 MCP server.
  • tests/packaging/test_distribution.py still green — skills/ stay out of the PyPI wheel (they ship via the plugin/git, not PyPI).

Docs

README and docs/installing.md lead with the two-command plugin setup and keep the manual per-host path (claude mcp add … + skills copy) for non-Claude-Code clients (Cursor, Claude Desktop, Gemini, Codex…). RELEASING.md now bumps plugin.json alongside pyproject.toml.

🤖 Generated with Claude Code

clementrx and others added 2 commits July 19, 2026 10:11
The PyPI package ships only the MCP server; the coaching skills lived in
skills/ and had to be cloned and copied into ~/.claude/skills by hand. Users
who registered the server but skipped that step got the tools with no
protocols — the coach had no Garmin connection flow, no onboarding, etc.

Make the repo its own Claude Code plugin marketplace so one install bundles
both halves:
- .claude-plugin/marketplace.json — repo is the marketplace, plugin at root
- .claude-plugin/plugin.json — version tracks the package (0.10.0)
- .mcp.json — registers the server via `uvx performance-agent`
The skills/ dir at the repo root is auto-discovered (16 skills).

Verified with `claude plugin install` from a local marketplace: 16 skills +
1 MCP server load. README and docs/installing.md lead with the two-command
plugin setup and keep the manual per-host path for non-Claude-Code clients.
RELEASING.md now bumps plugin.json alongside pyproject.toml.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bump pyproject + plugin.json to 0.11.0, regenerate uv.lock, promote the
CHANGELOG Unreleased section. Ships the Claude Code plugin.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@clementrx
clementrx merged commit 3e7e012 into main Jul 19, 2026
1 check passed
@clementrx
clementrx deleted the feat/claude-code-plugin branch July 19, 2026 08:18
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