mcpField
P
plugins-management

plugins-management

github.com/codealive-aiAgent workflows16740 installsUpdated today
Repository

About plugins-management

plugins-management is a skill for creating, validating, publishing, installing, and removing plugins for coding agents. It provides workflows for Claude Code and OpenCode, plus configuration guidance for Devin plugins and directory submissions.

Key features

  1. 01Create plugins and marketplace manifests
  2. 02Validate plugin manifests and components
  3. 03Prepare releases and directory submissions
  4. 04Manage Claude Code and OpenCode plugins
  5. 05Explain Devin plugin configuration

Use cases

  1. 01Initialize a plugin with skills or hooks
  2. 02Check plugin manifests and MCP settings
  3. 03Prepare a submission to Anthropic's official directory
  4. 04Manage OpenCode or Devin plugins

MCP support

The skill explains how to include MCP server configuration in Claude Code plugins and validate the related settings.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/codealive-ai/ai-driven-development --skill plugins-management

After installing, type/plugins-managementin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

assets/templates/
marketplace.json.template
plugin.json.template
references/
opencode-plugins.md
plugin-guide.md
scripts/
init_marketplace.py
init_plugin.py
prepare_submission.py
validate_plugin.py

Details

From the project README

Plugins Manager

Manage plugins across coding agents: create, validate, publish, delete, and submit to official directories or npm.

Supported agents:

  • Claude Code: .claude-plugin/plugin.json-based plugins, distributed via marketplaces
  • OpenCode: TypeScript/JavaScript plugins in .opencode/plugins/ or npm packages listed in opencode.json
  • Devin CLI / Desktop: .devin-plugin/plugin.json manifest inside a plugin source (GitHub repo, git URL, git-subdir, or local folder); installs skills (<plugin>:<skill> slash commands), AGENTS.md/rules/, agents/ subagents, hooks.json, and .mcp.json as one unit. Managed with devin plugins commands; plugins also apply to Devin cloud sessions, subject to per-surface limits. The scripts in this skill target Claude/OpenCode manifests — for Devin, author the .devin-plugin/plugin.json by hand per the Devin docs.

CRITICAL: Before performing any deletion, uninstall, or removal operation, you MUST use the AskUserQuestion tool to confirm with the user. Never delete/uninstall plugins or remove marketplaces without explicit user confirmation.

Quick Reference

TaskCommand/Script
Create pluginpython scripts/init_plugin.py <name>
Create marketplacepython scripts/init_marketplace.py <name>
Validate pluginpython scripts/validate_plugin.py <path>
Validate marketplaceclaude plugin validate <path>
Prepare submissionpython scripts/prepare_submission.py <path> --email X --company-url Y
Install plugin/plugin install <name>@<marketplace>
Delete plugin/plugin uninstall <name>@<marketplace>
Test plugin (dev)claude --plugin-dir ./my-plugin
Reload after edits/reload-plugins
Cut release tagclaude plugin tag --push
List installedclaude plugin list [--json] [--available]
Update pluginclaude plugin update <name>@<marketplace>

Workflows

1. Create a New Plugin
# Basic plugin with commands
python scripts/init_plugin.py my-plugin --path ./

# Full plugin with all components
python scripts/init_plugin.py my-plugin --path ./ --all

# Specific components
python scripts/init_plugin.py my-plugin --with-agents --with-skills

Flags:

  • --with-commands (default): Include commands directory
  • --with-agents: Include agents directory
  • --with-skills: Include skills directory
  • --with-hooks: Include hooks configuration
  • --with-mcp: Include MCP server configuration
  • --all: Include all components
  • --author "Name": Set author name

After creation:

  1. Edit .claude-plugin/plugin.json with plugin details
  2. Add commands to commands/*.md with YAML frontmatter
  3. Add agents to agents/*.md if needed
  4. Update README.md with documentation
2. Create a Marketplace
# Empty marketplace
python scripts/init_marketplace.py my-marketplace --path ./

# With initial plugin
python scripts/init_marketplace.py my-marketplace --with-plugin my-plugin

After creation:

  1. Edit .claude-plugin/marketplace.json
  2. Add plugins to plugins/ directory
  3. Push to GitHub: git push origin main

Users install with:

/plugin marketplace add username/my-marketplace

Marketplace references:

  • Required file: .claude-plugin/marketplace.json
  • Plugin entries must have name that matches each plugin's plugin.json name
  • Use relative paths in source (e.g., ./plugins/my-plugin), not absolute paths
  • Use ${CLAUDE_PLUGIN_ROOT} inside hooks and MCP configs referenced by marketplace plugins
3. Validate a Plugin
python scripts/validate_plugin.py ./my-plugin

Validates:

  • plugin.json required fields (name, description, version, author)
  • Semantic versioning format
  • Command/agent frontmatter
  • Hooks and MCP configuration
  • README.md and LICENSE presence

Also consider:

  • claude plugin validate <path> for marketplace JSON validation
4. Publish a Plugin

To GitHub:

cd my-marketplace
git init
git add .
git commit -m "Initial release"
git remote add origin https://github.com/user/my-marketplace.git
git push -u origin main

# Tag release
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin v1.0.0

Distribution methods:

  • GitHub: /plugin marketplace add user/repo
  • GitLab: /plugin marketplace add https://gitlab.com/user/repo.git
  • URL: /plugin marketplace add https://example.com/marketplace.json
5. Delete/Uninstall Plugins

⚠️ ALWAYS confirm with user before deleting/uninstalling. Use AskUserQuestion to ask: "Are you sure you want to uninstall '[plugin-name]'? This action cannot be undone."

# Uninstall from Claude Code
/plugin uninstall plugin-name@marketplace-name

# Remove marketplace (confirm with user first!)
/plugin marketplace remove marketplace-name

To delete source files: First confirm with user via AskUserQuestion, then remove the plugin directory from the marketplace's plugins/ folder and update marketplace.json.

6. Submit to Anthropic's Official Directory

The submission script automatically gathers all required form fields using gh CLI and git.

Prerequisites:

  1. Plugin pushed to GitHub
  2. gh CLI installed and authenticated
  3. All validation checks pass

Prepare submission:

# Basic - gathers repo URL and SHA automatically
python scripts/prepare_submission.py ./my-plugin

# With required contact info
python scripts/prepare_submission.py ./my-plugin \
  --email [email protected] \
  --company-url https://yourcompany.com

# Copy SHA to clipboard
python scripts/prepare_submission.py ./my-plugin --copy-sha

# Save to JSON file
python scripts/prepare_submission.py ./my-plugin --output submission.json

# Open form in browser
python scripts/prepare_submission.py ./my-plugin --open-form

Form fields gathered automatically:

FieldSource
Link to Plugingh repo view --json url
Full SHAgit rev-parse HEAD
Plugin Homepageplugin.json homepage or repo URL
Plugin Nameplugin.json name
Plugin Descriptionplugin.json description (50-100 words)

Fields you must provide:

  • --email: Primary contact email
  • --company-url: Company/Organization URL

Submission requirements:

  • Plugin must be pushed to GitHub
  • Working directory should be clean (no uncommitted changes)
  • Description should be 50-100 words
  • README.md and LICENSE files present
  • No secrets/API keys in code

Plugin Structure Reference

my-plugin/
├── .claude-plugin/
│   └── plugin.json       # Optional manifest (auto-discovered if absent)
├── skills/               # Agent skills (preferred over commands/)
│   └── */SKILL.md
├── commands/             # Skills as flat .md files
│   └── *.md
├── agents/               # AI subagents
│   └── *.md
├── output-styles/        # Output style definitions (2026)
├── themes/               # Color themes (2026)
├── monitors/             # Background monitors (2026, v2.1.105+)
│   └── monitors.json
├── hooks/
│   └── hooks.json        # Event handlers
├── bin/                  # Executables added to PATH (2026)
├── settings.json         # Default agent / subagentStatusLine (2026)
├── .mcp.json             # MCP servers
├── .lsp.json             # LSP server config (since v2.0.74)
├── package.json          # Auto-installed dependencies (2026)
├── README.md             # Documentation
├── CHANGELOG.md
└── LICENSE

For detailed reference: See references/plugin-guide.md

OpenCode Plugins

OpenCode (anomalyco/opencode v1.14.x) plugins are TypeScript/JavaScript modules — fundamentally different from Claude Code plugins.

Quick reference
TaskApproach
Create local pluginDrop .ts file in .opencode/plugins/ (project) or ~/.config/opencode/plugins/ (global)
Author npm pluginnpm init, add keywords: ["opencode-plugin"], depend on @opencode-ai/plugin
Install npm pluginAdd package name to opencode.json → "plugin": [...]; restart
DistributePublish to npm (no central marketplace)
Minimal plugin
// .opencode/plugins/env-protection.ts
import type { Plugin } from "@opencode-ai/plugin"

export default (async () => ({
  tool: {
    execute: {
      before: async (input, output) => {
        if (output.args.filePath?.includes(".env")) {
          throw new Error("Reading .env is forbidden")
        }
      },
    },
  },
})) satisfies Plugin
Register npm plugins
{
  "$schema": "https://opencode.ai/config.json",
  "plugin": [
    "opencode-helicone-session",
    "@my-org/custom-plugin"
  ]
}

OpenCode runs bun install at startup. Cached at ~/.cache/opencode/node_modules/.

What plugins can do
  • Add custom tools the AI can call (Zod-validated args)
  • Intercept/block tool calls (tool.execute.before throws to block)
  • Subscribe to ~25 lifecycle events (session.idle, file.edited, permission.asked, ...)
  • Register custom slash commands and auth providers
  • Transform messages or system prompts during context compaction (experimental)
Critical caveats (v1.14.x)
  • tool.execute.* hooks do not fire for MCP tool calls — use the permission block in opencode.json
  • No central marketplace — distribute via npm and aggregators like awesome-opencode
  • Plugins run in-process with full SDK access — audit third-party code before installing

See references/opencode-plugins.md for the full OpenCode plugin reference.

Critical Rules (Avoid Silent Failures)

  • Keep skills/, commands/, agents/, hooks/, monitors/, themes/, output-styles/, bin/ at the plugin root (never inside .claude-plugin/).
  • Do not add standard component paths to plugin.json. Only specify non-standard paths starting with ./.
  • Use ${CLAUDE_PLUGIN_ROOT} (cache path, changes per version) and ${CLAUDE_PLUGIN_DATA} (persistent across updates) in hooks and MCP/LSP/monitor config paths. Relative paths break after install.
  • Ensure hook scripts are executable (chmod +x scripts/*).
  • Marketplace plugins[].name must match the plugin's plugin.json name.
  • Path traversal limit (2026): plugins cannot reference files outside their directory; use symlinks inside the plugin if needed.
  • Versioning (2026): omit version to use git SHA (every commit is a new version). Set version and bump for stable releases. Use claude plugin tag to cut release tags.

Common Patterns

Command File Format
---
description: What this command does
---

# Command Name

Instructions for Claude when command is invoked.
Agent File Format
---
description: Agent specialty and purpose
---

# Agent Name

Detailed instructions and expertise.
Hooks Configuration
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"
          }
        ]
      }
    ]
  }
}
MCP Server Configuration
{
  "mcpServers": {
    "server-name": {
      "command": "node",
      "args": ["./servers/server.js"]
    }
  }
}
Skill File Format
---
name: my-skill
description: What this skill does and when to use it
---

# Skill Title

Instructions for Claude when this skill is invoked.
Marketplace Entry Example
{
  "name": "my-plugin",
  "source": "./plugins/my-plugin",
  "description": "Short description",
  "version": "1.0.0",
  "author": { "name": "Author Name" },
  "category": "productivity",
  "keywords": ["tag1", "tag2"],
  "strict": true
}

Comments

Markdown supported