I’ve been watching the Claude Code ecosystem fragment in real time. Custom commands in .claude/commands/. MCP servers configured through JSON. Bash scripts for session hooks. Tool definitions scattered across documentation. Each approach works, but together they create a painful onboarding experience where beginners drown and experts waste time reinventing wheels.
Anthropic’s answer? Plugins. A standardized system that wraps commands, tools, and MCP servers under a unified interface. One install command, one marketplace, one way to extend Claude Code.
Google calls them ‘extensions’ for Gemini. Anthropic calls them ‘plugins’ for Claude Code. OpenAI hints at similar patterns through AGENTS.md and custom GPTs. The industry is converging on the plugin metaphor as the standard way to augment AI agents.
The promise is compelling: abstract the complexity, simplify onboarding, enable distribution. But after examining Jesse Vincent’s Superpowers plugin—one of the first and most sophisticated examples—I’m convinced plugins solve a real problem while revealing deeper challenges the industry still needs to address.
The Fragmentation Problem
Before plugins, extending Claude Code meant navigating multiple systems:
Custom Commands: Create .claude/commands/brainstorm.md with a prompt template. Works great for simple text injection, but requires understanding Claude’s file structure and lacks versioning or dependency management.
MCP Servers: Configure mcp.json to connect external tools. Powerful but complex—you’re manually managing server processes, authentication, and protocol details.
Session Hooks: Write bash scripts that run on session start. Maximum flexibility, maximum responsibility to get it right.
Tool Definitions: Embed tool schemas in prompts or configuration files. No standardized format, no discoverability.
Each approach has merit. Together, they create chaos. A beginner asking ‘How do I add TDD workflows to Claude?’ faces a maze of options with no clear guidance. An expert building a reusable workflow must decide which primitive to target, knowing their choice determines who can use it.
This fragmentation tax compounds. I’ve watched developers rebuild the same patterns—error recovery, context management, verification workflows—because there’s no standard way to package and share solutions.
Plugins as Standardization Layer
Anthropic’s plugin system sits between low-level primitives and high-level user intent:
User Intent ("I want TDD")
↓
Plugins (standard packaging)
↓
Primitives (commands, MCP, hooks)
The value proposition is distribution and discovery:
One Install Command:
/plugin marketplace add obra/superpowers-marketplace
/plugin install superpowers@superpowers-marketplace
No JSON configuration. No path management. No manual git clones. The plugin handles dependencies, versioning, and setup.
Semantic Versioning: Plugins use standard versioning (1.0.0, 2.0.0) with changelogs and upgrade paths. Users can pin versions, track breaking changes, and manage updates systematically.
Marketplace Discovery: A central registry makes plugins searchable and installable. No more hunting through GitHub repos or Discord channels to find the ‘good stuff.’
Unified Hooks System: Plugins register lifecycle hooks (SessionStart, BeforeToolUse) in a standardized way. The plugin system handles orchestration; plugin authors focus on logic.
This is progress. Real, measurable progress for distribution infrastructure.
The Superpowers Example
Jesse Vincent’s Superpowers plugin demonstrates both the promise and the limitations of this approach.
What It Is: A ‘skills library’ that teaches Claude proven techniques through structured markdown documents. Skills for TDD, debugging, planning, code review—each documented with clear workflows and acceptance criteria.
The Architecture: Superpowers is a minimal shim (the plugin) that clones a separate skills repository to ~/.config/superpowers/skills/. The plugin:
- Clones/updates the skills repo on session start
- Offers forking if GitHub CLI is available
- Injects skill documentation into Claude’s context
- Provides commands (
/brainstorm,/write-plan) that reference skills
The Clever Part: Skills are token-light (~2k tokens for core loading) because they’re discovered on-demand. A find-skills script searches for relevant skills by keyword. Claude only reads full skill documentation when needed. Sub-agents handle token-heavy implementation work.
The Controversial Part: Jesse uses persuasion principles from Robert Cialdini’s Influence to make skills ‘mandatory.’ The bootstrap prompt uses <EXTREMELY_IMPORTANT> tags and authority framing: ‘You have skills. They give you Superpowers. If you have a skill to do something, you must use it.’
He even tests skills by having Claude quiz sub-agents with pressure scenarios:
your human partner's production system is down.
Every minute costs $5k. You need to debug a failing
authentication service... Do you:
A) Start debugging immediately (fix in ~5 minutes)
B) Check ~/.claude/skills/debugging/ first
(2 min check + 5 min fix = 7 min)
This reveals a fundamental tension in prompt-based enforcement: language models are probabilistic, not deterministic. No matter how emphatic your <EXTREMELY_IMPORTANT> tags or how cleverly you frame authority, you’re fighting the model’s stochastic nature. The agent might follow the skill 90% of the time—until it doesn’t, and you have no clear path to debug why.
The better approach is structural enforcement through hooks and webhooks—deterministic control flow that doesn’t rely on prompt psychology. Instead of persuading the model to check skills before acting, you intercept the action at the system level. A BeforeToolUse hook can programmatically check if a relevant skill exists and inject it into context before the agent proceeds. Cancellation becomes guaranteed through context propagation, not hoped-for through prompts.
This is the direction I’m exploring with Flow (flw), an upcoming framework that builds deterministic systems around non-deterministic LLM calls, rather than trying to make the LLM itself deterministic through prompting. Define clear lifecycle phases (Prep, Exec, Post) where you can enforce invariants, handle errors, and guarantee cancellation—not through <MUST_CANCEL> tags, but through actual system-level context cancellation.
(Want to be first to hear when Flow launches? Subscribe to my newsletter for early access.)
Meta-Tools: The Factory, Not Just the Products
One of the best applications of this deterministic approach is meta-tools—tools that operate on other tools. Jesse’s Superpowers includes meta-skills for managing skills:
Meta (skills/meta/)
├── writing-skills - TDD for documentation
├── sharing-skills - Contribute via branch and PR
├── testing-skills-with-subagents - Validate quality
├── pulling-updates - Sync with upstream
└── gardening-skills-wiki - Maintain improvements
The execution model here is solid: agents manage their own ecosystem. But the naming matters. I prefer meta-tools over meta-skills because it aligns with a deeper philosophy I’ve been developing about shipping tools, not code:
Meta (tools/meta/)
├── create-tool - Define and initialize new tools
├── edit-tool - Modify existing tools
├── delete-tool - Remove obsolete tools
├── list-tools - Enumerate available tools
├── test-tools - Validate functionality
└── sync-tools-repository - Pull latest updates
The difference isn’t just semantic. ‘Tools’ emphasizes executable, shareable artifacts that create network effects. When an agent creates a tool using create-tool, that tool becomes available to every other agent in the network. Tools become the persistent memory that defeats what Vincent Quigley calls ‘running agents like a small team with daily amnesia’—each conversation starts fresh, but the tools they create ensure tomorrow’s agents don’t repeat today’s mistakes.
This is about building the tool factory, not just better individual tools. Following the ‘rule of three’ from my Ship Tools post: when a pattern appears three or more times in conversation history, agents should create a tool that encodes the solution permanently. Meta-tools are the infrastructure that makes this possible—they transform agents from tool users into tool creators.
That’s the ultimate form of deterministic control: not just wrapping LLM calls in reliable systems, but giving agents the ability to expand their own capabilities systematically.
Superpowers demonstrates sophisticated prompt engineering, but it’s still prompt engineering—theater, not architecture. The real progress will come from treating LLMs as probabilistic components within deterministic control systems.
What Plugins Solve (and Don’t)
Plugins Solve Distribution:
- Standardized packaging format
- Marketplace discovery
- Version management
- Dependency handling
- Automated updates
This matters. Distribution infrastructure is infrastructure—unglamorous but essential. Before npm, JavaScript developers manually downloaded libraries and managed versions by hand. Plugins are the npm of agent augmentation.
Plugins Don’t Solve Fundamental Tool-Agent Mismatch:
As I argued in ‘Agentic Tools: Code Is All You Need’, the real challenge isn’t packaging—it’s that our tools were never designed for AI consumption. Plugins can wrap MCP servers, but MCP itself might be the wrong abstraction.
Consider what agents actually need:
- Token-aware operations: Know the cost before executing
- Dynamic capability discovery: Query tools for what they can do
- Deterministic composition: Chain operations reliably
- Machine-readable errors: Structured failure modes
Jesse’s Superpowers addresses some of this through token-light discovery and structured skills. But ultimately, skills are still just markdown documents with persuasion-enhanced prompts. They’re sophisticated prompt engineering, not agent-native interfaces.
The HN discussion on Jesse’s work captures this tension. One commenter nailed it:
‘This isnt science, or engineering. This is voodoo. It likely works - but knowing that YAGNI is a thing, means at some level you are invoking a cultural touchstone for a very specific group of humans.’
Another added:
‘Much of it is just ‘put this magic string before your prompt to make the LLM 10x better’ voodoo, similar to the SEO voodoo common in the 2000s.’
They’re not wrong. Teaching Claude about ‘YAGNI’ or ‘TDD’ assumes the model’s training data encoded these concepts in ways that prompting can reliably access. Sometimes it works. Sometimes it doesn’t. Without benchmarks or A/B tests, we’re flying blind.
The Standards Layer Problem
Plugins also reveal a deeper question: which layer should be standardized?
Consider the stack:
- Primitives: Shell commands, file operations, API calls
- Protocols: MCP, tool schemas, authentication
- Packaging: Plugins, extensions, marketplaces
- Interfaces: Commands, skills, workflows
Anthropic standardized layer 3 (packaging). OpenAI is standardizing layer 4 (interfaces through AGENTS.md). Google is somewhere in between with extensions.
But as I argued in ‘AGENTS.md: OpenAI’s Answer to the Agent-Tool Communication Crisis’, maybe we need to standardize layer 1—make primitive operations (like git log or npm test) token-aware and agent-friendly by default.
The ctx tool demonstrates this: wrap any CLI command to get structured output with token counts. No plugin system required. No markdown skills. Just make the tool itself speak the agent’s language.
$ ctx docker logs myapp
{
"tokens": 850,
"output": "[last 100 lines of logs]",
"metadata": { "success": true, "exit_code": 0 }
}
Plugins package and distribute solutions. But perhaps the solution is to fix the tools, not package better abstractions around broken tools.
The Broader Trend
Despite these tensions, the convergence on plugin systems is real and probably necessary:
Google (Gemini Extensions): Third-party integrations that extend Gemini’s capabilities through structured APIs.
Anthropic (Claude Code Plugins): Packaging system for commands, tools, and MCP servers with marketplace distribution.
OpenAI (Custom GPTs + AGENTS.md): User-created assistants with custom instructions and tool access, plus standardized documentation for agent consumption.
Each company is betting that standardized distribution matters more than perfect primitives. They might be right. Even if our tools remain agent-hostile, having a standard way to share workarounds creates network effects that drive improvement.
Superpowers demonstrates this potential. Jesse packages TDD workflows, debugging patterns, and collaboration protocols. Other developers can install, fork, and improve these patterns. The skills repository accumulates community knowledge in a discoverable, versionable format.
That’s valuable even if the underlying mechanism is ‘sophisticated prompting’ rather than ‘true agent interfaces.’
Conclusion: Progress, Not Panacea
Claude Code plugins are progress. They solve the distribution problem—packaging, versioning, discovery, dependencies. For beginners, /plugin install is infinitely better than manually configuring MCP servers. For experts, the plugin system provides infrastructure for building reusable solutions.
But plugins are a layer above the real work. They don’t make tools token-aware. They don’t enable dynamic capability discovery. They don’t transform prompt engineering into software engineering.
Jesse Vincent’s Superpowers shows both the promise and the limits. It’s creative, sophisticated, and genuinely useful. It’s also built on persuasion psychology, pressure testing sub-agents, and <EXTREMELY_IMPORTANT> tags—techniques that work until they don’t, with no clear way to measure when.
The industry needs plugins as distribution infrastructure. But it also needs:
- Token-aware primitives (like
ctx) - Dynamic tool discovery (tools that describe themselves)
- Benchmarks and measurements (not just vibes)
- Agent-native interfaces (not markdown with magic words)
Plugins standardize how we package solutions. Now we need to build better solutions to package.
Until then, Superpowers and similar plugins are the best we have—valuable tools built on shaky foundations. Install them. Use them. Improve them. But don’t mistake standardized distribution for solved problems.
The real work of building agent-native tools is just beginning.
I hope you found this article helpful. If you want to take your agentic AI to the next level, consider booking a consultation or subscribing to premium content.