CLAUDE.md
Development guidance for Claude Code when working with this plugin marketplace.
Quick Reference
# Validation
claude plugin validate .
# Local testing
/plugin marketplace add .
/plugin install <plugin>@wookstar-claude-plugins
/plugin marketplace update wookstar
# After changes
/plugin marketplace update wookstar
Official Documentation: https://docs.claude.com/en/docs/claude-code/plugin-marketplaces.md
Architecture Decisions
Consolidated Structure (v6.0)
All plugins live inside the plugins/ directory for consistent organisation:
- Standalone plugins - focused plugins with skills, agents, commands, and optionally MCP servers
- MCP-only plugins - individual MCP server integrations (prefixed with
mcp-)
Why this approach:
- All plugins in one location for easy discovery
- Each plugin has its own
.claude-plugin/plugin.jsonmanifest - MCP servers declared in marketplace.json with file references
- Cross-platform compatible paths (forward slashes)
Directory Structure
wookstar-claude-plugins/
├── .claude-plugin/
│ └── marketplace.json # Root manifest (defines all plugins)
├── plugins/ # ALL plugins live here
│ ├── claudecode/ # Commands-only plugin
│ │ ├── .claude-plugin/
│ │ │ └── plugin.json
│ │ ├── README.md
│ │ └── commands/*.md
│ ├── developer/ # Plugin with MCP servers
│ │ ├── .claude-plugin/
│ │ │ └── plugin.json
│ │ ├── .mcp.json # MCP server configurations
│ │ ├── agents/*.md
│ │ ├── commands/*.md
│ │ └── skills/<name>/SKILL.md
│ ├── documents/
│ ├── message/ # Rich text message drafts for Gmail, Outlook, and WhatsApp
│ ├── shopify-developer/
│ ├── ultimate-skill-creator/
│ ├── timezone-tools/ # Renamed from utilities
│ ├── google-apps-script/ # Extracted from productivity
│ ├── tampermonkey/ # Extracted from productivity
│ ├── git-worktrees/ # New (from productivity commands)
│ ├── google-tagmanager/ # Extracted from marketing
│ ├── google-analytics/ # Extracted from marketing
│ ├── google-ads-scripts/ # Extracted from marketing
│ ├── codex/ # OpenAI Codex CLI headless mode
│ ├── gemini/ # Gemini CLI headless mode
│ ├── ffmpeg/ # FFmpeg CLI reference
│ ├── mcp-alphavantage/ # MCP-only plugins
│ ├── mcp-cloudflare/
│ ├── mcp-coingecko/
│ ├── mcp-currency-conversion/
│ ├── mcp-excalidraw/
│ ├── mcp-fetch/
│ ├── mcp-gemini-bridge/
│ ├── mcp-google-workspace/
│ ├── mcp-mikrotik/
│ ├── mcp-n8n/
│ ├── mcp-notion/
│ ├── mcp-open-meteo/
│ └── mcp-perplexity/
└── docs/ # Development reference files
Auto-Loading Rules
Claude Code auto-discovers components within each plugin:
| Directory | File Pattern | Loaded As |
|---|---|---|
agents/ |
*.md |
Agents |
commands/ |
*.md |
Commands |
skills/<name>/ |
SKILL.md |
Skills |
| Root | .mcp.json |
MCP Servers |
MCP Configuration Rules
CRITICAL: MCP servers use file references in marketplace.json, NOT in plugin.json.
// In marketplace.json entry:
"mcpServers": "./.mcp.json"
// plugin.json does NOT need mcpServers field
Why this pattern:
- Single source of truth - MCP config in one place
- Marketplace controls which MCPs are loaded
- plugin.json stays minimal (name, description, version, author)
Validation checklist:
-
.mcp.jsonexists in plugin directory (for MCP plugins) - marketplace.json uses
"mcpServers": "./.mcp.json" - plugin.json does NOT duplicate mcpServers
-
claude plugin validate .passes
Adding Components
New Full-Featured Plugin
- Create directory:
plugins/<plugin-name>/ - Create
.claude-plugin/plugin.jsonwith name, description, version, author - Create
README.mdfor documentation - Add component directories:
agents/,commands/,skills/ - Add entry to
.claude-plugin/marketplace.json - Test:
/plugin install <plugin>@wookstar-claude-plugins
New MCP-Only Plugin
- Create directory:
plugins/mcp-<name>/ - Create
.claude-plugin/plugin.json(without mcpServers) - Create
.mcp.jsonwith server configuration - Create
README.mdfor documentation - Add entry to marketplace.json with
"mcpServers": "./.mcp.json" - Test:
/plugin install mcp-<name>@wookstar-claude-plugins
Command/Agent (to existing plugin)
- Create file:
plugins/<plugin>/commands/<name>.mdorplugins/<plugin>/agents/<name>.md - Auto-loaded on marketplace update
- Test:
/plugin marketplace update wookstar
Skill (to existing plugin)
- Create:
plugins/<plugin>/skills/<skill-name>/SKILL.md - Optional subdirectories:
assets/,references/,scripts/ - Auto-loaded on marketplace update
MCP Server (embedded in plugin)
- Create/edit:
plugins/<plugin>/.mcp.json - Add
"mcpServers": "./.mcp.json"to marketplace.json entry - Test:
/plugin install <plugin>@wookstar-claude-plugins
Critical Files
.claude-plugin/marketplace.json
Root manifest containing:
- Marketplace metadata (name, version)
- All plugin definitions with source paths
- Plugin metadata (version, description, keywords, category)
- MCP server file references
Path resolution:
"source": "./plugins/developer"- plugin root"mcpServers": "./.mcp.json"- relative to plugin source
plugins//.claude-plugin/plugin.json
Plugin manifest (required for each plugin):
{
"name": "plugin-name",
"description": "Plugin description",
"author": {
"name": "Henrik Soederlund",
"email": "whom-wealthy.2z@icloud.com"
},
"version": "1.0.0"
}
plugins//.mcp.json
MCP server configurations (for plugins with MCP servers):
{
"mcpServers": {
"server-name": {
"command": "npx",
"args": ["package-name"],
"env": { "API_KEY": "${ENV_VAR}" }
}
}
}
Version Management
Marketplace version: Updated for architectural changes (currently 6.0.0) Plugin versions: Independent semantic versioning per plugin
Follow semantic versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes
Constraints
- No build process - pure marketplace, no compilation
- All plugins in plugins/ - consistent organisation
- MCP file references - never inline configurations in marketplace.json
- MCP in marketplace only - plugin.json does not include mcpServers
- Markdown format - commands and agents are
.mdfiles - Forward slashes - cross-platform path compatibility
- Environment variable security - never commit secrets
Testing Checklist
Before committing:
- Run
claude plugin validate . - Install plugin locally and verify components load
- Test commands, agents, and skills function correctly
- Update plugin version if needed (MAJOR/MINOR/PATCH)
- Commit with semantic message