skills/plugins-management/SKILL.md
Create, publish, delete, and submit plugins for coding agents (Claude Code, OpenCode). Use when user wants to (1) create a new plugin with proper structure, (2) create or configure a plugin marketplace, (3) publish plugins to GitHub/GitLab/npm, (4) delete/uninstall plugins, (5) validate plugin structure, or (6) prepare and submit plugins to the official Anthropic directory or the OpenCode ecosystem.
npx skillsauth add codealive-ai/agents-reflection-skills plugins-managementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage plugins across coding agents: create, validate, publish, delete, and submit to official directories or npm.
Supported agents:
.claude-plugin/plugin.json-based plugins, distributed via marketplaces.opencode/plugins/ or npm packages listed in opencode.jsonCRITICAL: 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.
| Task | Command/Script |
|------|----------------|
| Create plugin | python scripts/init_plugin.py <name> |
| Create marketplace | python scripts/init_marketplace.py <name> |
| Validate plugin | python scripts/validate_plugin.py <path> |
| Validate marketplace | claude plugin validate <path> |
| Prepare submission | python 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 tag | claude plugin tag --push |
| List installed | claude plugin list [--json] [--available] |
| Update plugin | claude plugin update <name>@<marketplace> |
# 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 nameAfter creation:
.claude-plugin/plugin.json with plugin detailscommands/*.md with YAML frontmatteragents/*.md if neededREADME.md with documentation# 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:
.claude-plugin/marketplace.jsonplugins/ directorygit push origin mainUsers install with:
/plugin marketplace add username/my-marketplace
Marketplace references:
.claude-plugin/marketplace.jsonname that matches each plugin's plugin.json namesource (e.g., ./plugins/my-plugin), not absolute paths${CLAUDE_PLUGIN_ROOT} inside hooks and MCP configs referenced by marketplace pluginspython scripts/validate_plugin.py ./my-plugin
Validates:
Also consider:
claude plugin validate <path> for marketplace JSON validationTo 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:
/plugin marketplace add user/repo/plugin marketplace add https://gitlab.com/user/repo.git/plugin marketplace add https://example.com/marketplace.json⚠️ 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.
The submission script automatically gathers all required form fields using gh CLI and git.
Prerequisites:
gh CLI installed and authenticatedPrepare 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:
| Field | Source |
|-------|--------|
| Link to Plugin | gh repo view --json url |
| Full SHA | git rev-parse HEAD |
| Plugin Homepage | plugin.json homepage or repo URL |
| Plugin Name | plugin.json name |
| Plugin Description | plugin.json description (50-100 words) |
Fields you must provide:
--email: Primary contact email--company-url: Company/Organization URLSubmission requirements:
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 (anomalyco/opencode v1.14.x) plugins are TypeScript/JavaScript modules — fundamentally different from Claude Code plugins.
| Task | Approach |
|------|----------|
| Create local plugin | Drop .ts file in .opencode/plugins/ (project) or ~/.config/opencode/plugins/ (global) |
| Author npm plugin | npm init, add keywords: ["opencode-plugin"], depend on @opencode-ai/plugin |
| Install npm plugin | Add package name to opencode.json → "plugin": [...]; restart |
| Distribute | Publish to npm (no central marketplace) |
// .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
{
"$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/.
tool.execute.before throws to block)session.idle, file.edited, permission.asked, ...)tool.execute.* hooks do not fire for MCP tool calls — use the permission block in opencode.jsonSee references/opencode-plugins.md for the full OpenCode plugin reference.
skills/, commands/, agents/, hooks/, monitors/, themes/, output-styles/, bin/ at the plugin root (never inside .claude-plugin/).plugin.json. Only specify non-standard paths starting with ./.${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.chmod +x scripts/*).plugins[].name must match the plugin's plugin.json name.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.---
description: What this command does
---
# Command Name
Instructions for Claude when command is invoked.
---
description: Agent specialty and purpose
---
# Agent Name
Detailed instructions and expertise.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"
}
]
}
]
}
}
{
"mcpServers": {
"server-name": {
"command": "node",
"args": ["./servers/server.js"]
}
}
}
---
name: my-skill
description: What this skill does and when to use it
---
# Skill Title
Instructions for Claude when this skill is invoked.
{
"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
}
development
First Principles Framework (FPF) — thinking amplifier. Use when user wants to think through a complex problem, architect a system, evaluate alternatives, decompose complexity, classify problems, define quality attributes, plan rigorously, make decisions under uncertainty, establish causality, reason about time and trends, describe architecture or structural views, check mathematical model fit, or improve pattern quality. Also triggers on: FPF, bounded contexts, SoTA packs, assurance calculus, decision theory, causal reasoning, temporal reasoning, architecture description, quality gates, FPF Parts A-K. Not for simple task planning, general philosophy, or Agile unrelated to FPF.
tools
Search, find, discover, install, remove, update, review, list, move, optimise, and iterate on skills for AI coding agents. Use when user asks "find a skill for X", "search for a skill", "is there a skill for X", "install skill", "remove skill", "update skills", "list skills", "review skill quality", "move skill", "check for updates", "optimise skill", "train skill on tasks", "iterate skill", "audit skill edits", "log skill edit", "diff skill versions", "trigger test skill", "transfer skill across agents", or "how do I do X" where X might have an existing skill. THE tool for skill discovery, ecosystem search, and SkillOpt-style training loops. Do not use for creating skills from scratch (use /skill-creator instead).
tools
Rename and refactor C# symbols in a .NET solution or multi-solution monorepo with a one-shot Roslyn CLI. Use when the user asks to rename a symbol, preview impact, update references across a solution, or refactor shared projects across several solutions.
tools
Hands-on playbook for macOS disk cleanup, dev-machine optimization, and proactive health alerting. Use when the Mac is full or slow, when a kernel panic / watchdog timeout / vm-compressor-space-shortage / Jetsam event happened, when the user asks to free disk space, audit storage, set up disk/memory alerts, or restore the same monitoring on a new Mac. Built around Mole (`mo` CLI) for safety guards plus a custom LaunchAgent-based alerter for active warnings. Covers Apple Silicon laptops with heavy AI/Docker workloads. Not for general macOS support, hardware diagnostics, networking issues, GUI / window-manager bugs, Time Machine recovery, broken app installs, or app-specific performance problems unrelated to disk or memory pressure.