How to pick the right Claude Code extension layer
Rapls shares a "lightest first" decision framework for choosing between Claude Code's Skill, MCP, Plugin, and CLI extension types, clarifying that they are nested layers with distinct jobs rather than competing alternatives.
Score breakdown
Knowing which Claude Code extension layer to reach for first prevents wasted setup effort and context overhead — most tasks need only a Skill, not a full MCP server or Plugin.
- 01The post is authored by Rapls on Dev.to and targets WordPress plugin/theme developers using Claude Code daily.
- 02Skills, MCP, and Plugins are nested layers, not competing alternatives — a Plugin is a distribution container for Skills, MCP configs, and more.
- 03A Skill is a folder with a SKILL.md file (YAML frontmatter + Markdown body) that teaches Claude procedures or knowledge but cannot fetch live external data.
Rapls describes a mistake made while building a WordPress plugin release workflow with Claude Code: a procedure file (Skill) worked fine for steps like pulling a git log, but failed when asked to fetch live stats from WordPress.org. The reason, as the post explains, is that a Skill teaches Claude steps and knowledge but has no ability to reach outside the local environment — that job belongs to MCP.
The post frames the four extension types as a nested hierarchy rather than a flat comparison.
The post frames the four extension types as a nested hierarchy rather than a flat comparison. A Plugin is a distribution container that can hold Skills, MCP configs, slash commands, subagents, and hooks. A Skill is a folder with a `SKILL.md` file — YAML frontmatter plus a Markdown body — that describes a procedure or knowledge bundle. MCP (Model Context Protocol) connects Claude to outside tools and data via declared servers in a config file such as `.mcp.json`. A CLI sits between Skill and MCP: if a CLI tool already handles the outside data and you use it rarely, it can be called from within a Skill.
The decision tree runs top to bottom: use a Skill for pure procedures or knowledge; call a CLI from a Skill for occasional outside data when a CLI exists; escalate to MCP for deep or frequent external access with no suitable CLI; and reach for a Plugin only when distributing or sharing a bundle of the above. The post also clarifies two common misreadings of Skill configuration: `allowed-tools` pre-approves listed tools to skip confirmation prompts but does not block unlisted tools, and `disable-model-invocation: true` prevents Claude from invoking a Skill autonomously — useful for side-effecting workflows like a release build.
Key facts
- 01The post is authored by Rapls on Dev.to and targets WordPress plugin/theme developers using Claude Code daily.
- 02Skills, MCP, and Plugins are nested layers, not competing alternatives — a Plugin is a distribution container for Skills, MCP configs, and more.
- 03A Skill is a folder with a SKILL.md file (YAML frontmatter + Markdown body) that teaches Claude procedures or knowledge but cannot fetch live external data.
- 04MCP connects Claude to outside tools and data via server declarations in a config file (e.g., `.mcp.json`).
- 05The 'lightest first' decision order is: Skill → CLI called from a Skill → MCP → Plugin.
- 06`allowed-tools` in a Skill pre-approves tools to skip confirmation prompts but does NOT block unlisted tools from running.
- 07`disable-model-invocation: true` prevents Claude from autonomously invoking a Skill, useful for side-effecting work like release builds.
Topics
Summary and scoring are generated automatically from the original article. We always link back to the publisher and never republish images or paywalled content. Last processed Jun 8, 2026 · 10:27 UTC. How this works →