plugins/ruflo-plugin-creator/skills/create-plugin/SKILL.md
Scaffold a new Claude Code plugin from scratch.
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.
mcp__claude-flow__transfer_plugin-search to ensure the name isn't takenplugins/<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 (10+ checks)
└── README.md # Compatibility + Namespace coordination + Verification + ADR sections
skills, commands, or agents arrays — Claude Code auto-discovers these from directory structure)---
name: skill-name
description: What this skill does
allowed-tools: mcp__claude-flow__tool1 mcp__claude-flow__tool2 Bash
---
model: sonnet@claude-flow/cli v3.6 major+minor<plugin-stem>-<intent> namespace; defer to ruflo-agentdb ADR-0001 §"Namespace convention"bash plugins/<name>/scripts/smoke.shdocs/adrs/0001-<name>-contract.md documenting: pinning, namespace coordination, MCP-tool surface count if applicable, smoke contract scope. Status: Proposed.Proposed; no wildcard tools in skills.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 reference embeddings_embed in any allowed-tools line.agentdb_hierarchical-* does NOT route by namespace. It routes by tier (working|episodic|semantic). Pass tier, not namespace. For namespaced reads/writes, use memory_* instead.agentdb_pattern-* does NOT route by namespace. It routes through ReasoningBank. Don't pass a namespace arg — fallback writes to the reserved pattern namespace via memory-store-fallback.pattern (singular) and patterns (plural) are different namespaces. ReasoningBank fallback writes to pattern; hooks_pretrain writes to patterns. Don't conflate them.Required fields:
name — plugin identifier (kebab-case)description — what the plugin doesversion — semverRecommended fields:
author — { "name": "...", "url": "..." }homepage, license, keywordsDo 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.
Browse available tools: mcp__claude-flow__transfer_plugin-info
Common tool categories:
memory_* — storage, search, retrievalagentdb_* — 15 controller-bridge tools (do NOT pass namespace arg — they route by tier or ReasoningBank); call agentdb_controllers at runtime for the canonical listneural_* — neural training and predictionhooks_* — lifecycle hooks and intelligencebrowser_* — browser automationworkflow_* — workflow managementaidefence_* — safety scanningembeddings_* — 10 vector-embedding tools (use embeddings_generate, NOT embeddings_embed which does not exist)