Create Plugin
Scaffold a new Claude Code plugin with proper directory structure, plugin.json, skills, commands, and agents
- Skill ID
- ruvnet/ruflo/create-plugin
- Publisher
- ruvnet
- Repository
- ruflo
- Installs
- 0
- Files
- 1
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
ruvnet/ruflo/create-pluginInstalls these files- SKILL.md
What this skill tells the agent
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: ``
yaml --- 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
- 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_embed` does not exist. Real tool is
embeddings_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) and `patterns` (plural) are different namespaces. ReasoningBank fallback writes to
pattern;hooks_pretrainwrites topatterns. Don't conflate them.
Plugin.json schema
Required fields:
name— plugin identifier (kebab-case)description— what the plugin doesversion— semver
Recommended fields:
author—{ "name": "...", "url": "..." }homepage,license,keywords
Optional fields:
graph_adapter— ADR-130 graph intelligence contract (commented out by default in generated output): ``json // "graph_adapter": { // "edgeRelations": ["my-relation-type"], // "nodeTypes": ["entity"], // "autoRegister": true // }`WhenautoRegister: 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_*— 15 controller-bridge tools (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)
More from ruvnet
Use this skill in a project
Open any RiverX project, search the Skills panel for ruvnet/ruflo/create-plugin, and install it in one click.
