Create Plugin
Scaffold a new Claude Code plugin with proper directory structure, plugin.json, skills, commands,…
by ruvnet · MIT
The skill
Scaffold a new Claude Code plugin with proper directory structure, plugin.json, skills, commands, and agents
Create Plugin
Scaffold a new Claude Code plugin from scratch.
When to use
When you want to create a new plugin that extends Claude Code with skills, commands, and agents. This generates the correct directory structure and wires up MCP tools.
Steps
- Get plugin name and description from the user
- Check for conflicts — call
mcp__plugin_ruflo-core_ruflo__transfer_plugin-searchto ensure the name isn't taken - Create directory structure (follows the canonical plugin contract from sibling plugins' ADR-0001s):
plugins/<name>/ ├── .claude-plugin/ │ └── plugin.json ├── skills/ │ └── <skill-name>/ │ └── SKILL.md ├── commands/ │ └── <command-name>.md ├── agents/ │ └── <agent-name>.md ├── docs/ │ └── adrs/ │ └── 0001-<name>-contract.md # Plugin-level ADR (Proposed) ├── scripts/ │ └── smoke.sh # Structural contract (≥8 checks) └── README.md # Compatibility + Namespace coordination + Verification + ADR sections - Generate plugin.json with name, description, version, author (do NOT include
skills,commands, oragentsarrays — Claude Code auto-discovers these from directory structure) - Generate SKILL.md files with proper frontmatter:
--- name: skill-name description: What this skill does allowed-tools: mcp__plugin_ruflo-core_ruflo__tool1 mcp__plugin_ruflo-core_ruflo__tool2 Bash --- - Generate command files with name and description frontmatter
- Generate agent files with name, description, and
model: sonnet - Generate README.md with install instructions, features, commands, skills, AND the canonical plugin-contract sections:
- Compatibility — pin to
@claude-flow/cliv3.6 major+minor - Namespace coordination — claim a kebab-case
<plugin-stem>-<intent>namespace; defer to ruflo-agentdb ADR-0001 §"Namespace convention" - Verification —
bash plugins/<name>/scripts/smoke.sh - Architecture Decisions — link to ADR-0001
- Compatibility — pin to
- Generate ADR-0001 (Proposed) at
docs/adrs/0001-<name>-contract.mddocumenting: pinning, namespace coordination, MCP-tool surface count if applicable, smoke contract scope. Status:Proposed. - Generate scripts/smoke.sh — at minimum 8 structural checks: version + keywords; skills/agents/commands present with valid frontmatter; v3.6 pin in README; namespace coordination block in README; ADR exists with status
Proposed; no wildcard tools in skills. - Update marketplace.json if adding to the ruflo marketplace.
MCP-tool drift to avoid (per sibling-ADR lessons learned)
Several plugins shipped with subtle MCP bugs the loop has been finding. Don't replicate them:
embeddings_embeddoes not exist. Real tool isembeddings_generate. Don't referenceembeddings_embedin anyallowed-toolsline.agentdb_hierarchical-*does NOT route by namespace. It routes by tier (working|episodic|semantic). Passtier, notnamespace. For namespaced reads/writes, usememory_*instead.agentdb_pattern-*does NOT route by namespace. It routes through ReasoningBank. Don't pass anamespacearg — fallback writes to the reservedpatternnamespace viamemory-store-fallback.pattern(singular) andpatterns(plural) are different namespaces. ReasoningBank fallback writes topattern;hooks_pretrainwrites topatterns. Don't conflate them.
Plugin.json schema
Required fields (the repo gate scripts/audit-plugin-manifest.mjs fails without them):
name— plugin identifier (kebab-case, must equal the directory name)description— what the plugin doesversion— semver (X.Y.Z, optional pre-release suffix); bump it on every change, because marketplace users only receive a plugin when its version changeskeywords— non-empty array of strings
Recommended fields:
author—{ "name": "...", "url": "..." }homepage,license
Optional fields:
graph_adapter— ADR-130 graph intelligence contract (commented out by default in generated output):
When// "graph_adapter": { // "edgeRelations": ["my-relation-type"], // "nodeTypes": ["entity"], // "autoRegister": true // }autoRegister: true, the plugin's edges are automatically included ingraph_edgeswrites by the core graph layer. DeclareedgeRelations— the relation types this plugin produces.
Do NOT include skills, commands, or agents arrays in plugin.json — these are auto-discovered from the directory structure by Claude Code and will cause validation errors if present.
Available MCP tools to wire
Browse available tools: mcp__plugin_ruflo-core_ruflo__transfer_plugin-info
Common tool categories:
memory_*— storage, search, retrievalagentdb_*— 20 controller-bridge tools (the count grows) (do NOT passnamespacearg — they route by tier or ReasoningBank); callagentdb_controllersat runtime for the canonical listneural_*— neural training and predictionhooks_*— lifecycle hooks and intelligencebrowser_*— browser automationworkflow_*— workflow managementaidefence_*— safety scanningembeddings_*— 10 vector-embedding tools (useembeddings_generate, NOTembeddings_embedwhich does not exist)
Use this skill
Connect your agent to the Skill Store MCP server and ask for it by ref: ruvnet/create-plugin-40173649360.
Details
- Publisher
- ruvnet
- Category
- AI & Agents › Skill & prompt authoring
- License
- MIT
- Updated
- 2026-10-18
References
More from ruvnet
- Agent Adaptive Coordinator Coordinates swarm topology switching between hierarchical, mesh, ring and hybrid patterns using clau
- Agent Agent Goal-oriented action planning (GOAP) for multi-step objectives: models world state as preconditions
- Agent Agentic Payments Manages autonomous AI agent payments through the agentic-payments MCP server: creates and revokes Ac
- Agent Analyze Code Quality This skill analyzes source code in JavaScript, TypeScript, Python, Java, and Go files for quality is