Agent context packet

Structured metadata, source alternates, graph links, headings, series position, and diagram inventory for crawlers and agent readers.

Table of contents

  1. If you only use this for five minutes
  2. Quick reference
  3. The capability stack
  4. What a native agent plugin really is
  5. The shape of real plugin inventories
  6. How Claude Code plugins are wired
  7. Claude example: feature-dev
  8. Claude example: code-review
  9. Claude example: ralph-loop
  10. How Codex plugins are wired
  11. The UI-to-runtime path
  12. The Codex loader path
  13. Codex example: linear
  14. Marketplace compatibility is already leaking through
  15. Claude Code vs Codex UI: the product difference
  16. Security review checklist
  17. Trust-boundary ladder
  18. How to inspect a plugin quickly
  19. When to use which system
  20. Common failure modes
  21. Background knowledge that unlocks the next articles
  22. What this means for agentic coding
  23. Sources
  24. See also

Series context

Agentic Coding

How to work effectively with AI coding agents — patterns, context management, and real workflows.

  1. Agentic Coding: Getting Started
  2. Prompt Patterns
  3. Context Management for AI Coding Agents
  4. Researching Codebases with AI Agents
  5. Setting Up Claude Code for a New Project
  6. Claude Code vs Codex Plugins — Native Agent Packages

Entry facts

Kind
guide
Maturity
budding
Confidence
high
Origin
ai-drafted (AI-drafted, human-reviewed)
Author
Agent
Directed by
krow
Published
Modified
Words
4,153 (19 min read)
Series
agentic-coding #6
Tags
agentic-coding, patterns, architecture, security
Full corpus
/llms-full.txt
Readable corpus
/source/full-corpus/

Graph links

Prerequisites setting-up-claude-code

Related agentic-coding-prompt-patternsresearching-codebases-with-agentsreviewing-ai-generated-codeclaude-md-patterns

Tagsagentic-coding, patterns, architecture, security

Diagram inventory

  1. The capability stack Mermaid SVG, Mermaid source, ASCII companion
  2. The shape of real plugin inventories Mermaid SVG, Mermaid source, ASCII companion
  3. The UI-to-runtime path Mermaid SVG, Mermaid source, ASCII companion
  4. Trust-boundary ladder Mermaid SVG, Mermaid source, ASCII companion

Claude Code vs Codex Plugins — Native Agent Packages

How native Claude Code and Codex plugins work: marketplaces, manifests, skills, hooks, MCP, app connectors, and what to inspect before installing.

/ directed by / / 19 min read
On this page

Native Claude Code plugins and Codex plugins are not ordinary editor extensions. They are packages for agent behavior: manifests, skills, commands, hooks, MCP servers, app connectors, and UI metadata that change what the coding agent can see and do.

Last verified: 2026-06-27. Local CLI versions used for verification: Claude Code 2.1.185, Codex CLI 0.141.0. The inspected shell exposes codex, not a separate cdex binary; this guide treats cdex CLI as shorthand unless a specific wrapper is provided.

If you only use this for five minutes

Before installing a native agent plugin, do this:

  1. Open the plugin manifest: .claude-plugin/plugin.json or .codex-plugin/plugin.json.
  2. Follow every path it references: skills, commands, agents, MCP servers, app descriptors, hooks, and executables.
  3. Separate instructions from authority. A skill tells the model how to work; an MCP server, hook, executable, or app connector changes what the agent can touch.
  4. Check provenance: local folder, pinned Git ref, marketplace entry, remote bundle, or floating source.
  5. Decide what you would allow manually. If you would not give a human contractor access to that email, ticket system, repo, or shell command, do not give it to the plugin by accident.

The fast win is not memorizing both ecosystems. It is learning to spot the trust boundary: where prompt text stops and tool authority begins.

Quick reference

QuestionClaude Code pluginsCodex plugins
Native manifest.claude-plugin/plugin.json.codex-plugin/plugin.json
Marketplace manifest.claude-plugin/marketplace.json.agents/plugins/marketplace.json, .agents/plugins/api_marketplace.json; Codex source also recognizes .claude-plugin/marketplace.json
CLI surface verifiedclaude plugin install/list/marketplace/validate/update/...codex plugin add/list/marketplace/remove
Main package contentscommands, agents, skills, hooks, MCP, LSP, monitors, output styles, executables, settingsskills, app connectors, MCP servers, hooks, interface metadata
Center of gravityworkflow control for the local coding agentapp-backed integrations and runtime capability loading
Best example shapefeature-dev as a staged build workflow; code-review as multi-agent PR reviewlinear as skills + app connector + MCP endpoint
Main risktreating hooks, executables, and MCP as harmless prompt texttreating app connectors and remote bundles as harmless UI cards

The useful mental model: plugins are becoming installable operating procedures for coding agents. Some teach the agent how to work. Some attach the agent to external systems. The serious ones do both.

The capability stack

Read native plugins as a stack, not as a single feature. Each layer answers a different question: where did this package come from, what does it teach, what does it connect, and what authority does it create?

User task

Coding agent runtime

Project rules and tests

Marketplace or Git source

Plugin manifest

Skills, commands, agents

MCP, apps, hooks, executables

Code, reviews, docs, tickets

Trust boundary: auth, writes, egress

That diagram is the whole article in one picture. Claude Code is strongest in the instruction lane: commands, agents, hooks, and procedural skills. Codex is strongest in the capability lane: app connectors, remote bundles, MCP routing, UI metadata, and runtime loading. Both systems can cross into the other lane.

What a native agent plugin really is

A classic editor extension extends the editor. A native agent plugin extends the agent’s behavior surface.

That difference matters. A Claude Code or Codex plugin can ship Markdown instructions, but it can also add tools, workflow entry points, lifecycle hooks, app metadata, authentication prompts, and remote MCP endpoints. Installing one can change the agent’s habits, not just its menu.

The old question was: “What does this extension add to VS Code?” The better question now is: “What new authority does this agent package create?”

A plugin may do one or more of these jobs:

JobWhat it changesExample
Prompt packAdds procedures the model can followa SKILL.md for frontend design review
Workflow controllerAdds a slash command or staged processClaude feature-dev requiring discovery before implementation
Specialist delegationAdds named agents or sub-agentsClaude code review agents with separate review roles
Tool connectorAdds MCP servers or app connectorsLinear, GitHub, Figma, Gmail, Slack-style integrations
Lifecycle extensionAdds hooks or scriptsloop-until-done behavior or post-tool checks
UI product cardAdds display metadata and starter promptsCodex interface.displayName, category, default prompts

This is why “plugin” is slightly misleading. The better term is agent package.

The shape of real plugin inventories

The source-backed inventories make the product difference more concrete. The inspected Claude official marketplace snapshot listed 240 marketplace entries. Only the locally materialized payloads can be component-counted without fetching every external repository, but that local slice already shows Claude’s workflow bias: commands, agents, skills, hooks, and MCP declarations are first-class package contents.

The inspected OpenAI curated Codex snapshot listed 180 plugins. Its manifest fields point the other way: 154 plugins declared app descriptors, 72 declared skills, and 8 declared MCP server files. That does not make Codex “only apps,” but it explains why the UI feels like an integration catalog first and a workflow library second.

OpenAI curated Codex snapshot

Claude official marketplace snapshot

240 entries

51 local payloads

component-scanned

78 workflow pieces

28 commands + 23 agents + 27 skills

20 authority pieces

15 MCP files + 5 hooks

180 plugins

154 app descriptors

72 skill roots

8 MCP files

Review the package

by authority surface

The caveat matters: marketplace rows and component payloads are different evidence. A marketplace can have hundreds of rows while only some payloads are locally inspectable. A runtime review must follow the row to the actual installed payload before judging risk.

How Claude Code plugins are wired

Claude Code’s public plugin docs and official plugin repository describe a package layout built around .claude-plugin/ metadata plus component folders. A typical plugin can contain a manifest, MCP configuration, commands, agents, skills, and a README. The public CLI confirms this is a package manager surface, not just a file convention: claude plugin exposes install, list, enable, disable, marketplace, update, validate, and uninstall commands.

The important files are:

File or directoryPurpose
.claude-plugin/plugin.jsonplugin identity and metadata
.claude-plugin/marketplace.jsonmarketplace catalog, often pointing at local folders or pinned Git sources
commands/*.mdslash-command workflows the user can invoke
agents/*.mdspecialist agent definitions that commands can call or delegate to
skills/**/SKILL.mdprocedural instructions that can be invoked as skills
.mcp.jsonMCP server declarations
hooks/scriptslifecycle behavior around a Claude Code session

A marketplace entry can point at a local plugin folder or a remote Git source pinned by ref and SHA. That is good for reproducibility, but it also means the review target is the plugin payload, not only the marketplace row.

Claude example: feature-dev

The official feature-dev plugin is the cleanest example of Claude’s center of gravity. It is not just a command named “build a feature.” It encodes a development process.

The command requires the agent to:

  1. explore the codebase;
  2. understand existing patterns;
  3. ask clarifying questions;
  4. present architecture options;
  5. wait for approval;
  6. implement;
  7. review and summarize.

That is a deliberate brake against the common agent failure mode: start coding while the problem is still fuzzy. Installing the plugin changes the workflow Claude follows before code appears.

Claude example: code-review

The official code-review command is more obviously multi-agent. The public plugin page and command file describe independent reviewers, confidence scoring, filtering, and GitHub comment output. In the inspected source, this is not a vague “review my PR” prompt. It is a review protocol with reviewer roles and a scoring threshold.

The key point is not the exact reviewer count. The point is that Claude plugins can package orchestration. They can define which agents participate, what each agent looks for, how findings are scored, and how output is posted.

Claude example: ralph-loop

ralph-loop is the operationally interesting one because it uses a hook-like loop around the session. Instead of adding one more prompt template, it changes what happens when the session would otherwise stop. The plugin pattern is closer to a local control-plane extension than to a static prompt pack.

That makes the trust boundary much sharper. A workflow plugin can affect when commands run, when sessions continue, and what gets re-fed into the model.

How Codex plugins are wired

Codex exposes both a local CLI and UI/app surfaces. The inspected CLI is codex, and codex app --help shows app-server and remote-control subcommands alongside the interactive CLI. Plugin management lives under codex plugin.

Codex’s open-source Rust code gives a clearer view of loader mechanics than Claude’s public plugin repos do. The plugin runtime reads manifests, materializes plugin sources, caches installed content, enables plugins through config, and then loads capabilities into the agent runtime.

The important files are:

File or directoryPurpose
.codex-plugin/plugin.jsonplugin identity, metadata, component paths, interface metadata
.agents/plugins/marketplace.jsonmarketplace catalog for local or Git-sourced plugins
.agents/plugins/api_marketplace.jsonAPI/developer-focused marketplace variant
skills/skill roots and SKILL.md files
.app.jsonapp connector IDs used by the Codex product runtime
.mcp.jsonMCP server declarations
hooks fileshook declarations supported by the runtime parser and loader

The verified CLI surface is smaller than Claude’s:

codex plugin add
codex plugin list
codex plugin marketplace
codex plugin remove

That does not mean the internals are simpler. The Rust source has separate modules for marketplace parsing, source materialization, plugin store/cache management, manifest parsing, loader composition, remote bundles, remote installed-plugin sync, app/MCP routing, and config overlays.

The UI-to-runtime path

The visual trick is to stop treating the plugin browser as the plugin. In Codex, the UI is a discovery and install surface. The runtime still has to resolve a source, materialize a payload, parse a manifest, and inject capabilities into the model context.

Discovery surfaces

Codex app

Plugins directory

Codex CLI

/plugins

Local marketplace

.agents/plugins

Catalog entry

Source policy

remote, shared, local, Git

Installed copy

cache and config

.codex-plugin/plugin.json

Skills

App connectors

MCP servers

Hooks

Model-visible

plugin guidance

Agent runtime

That is the boundary that matters for debugging. If a plugin is visible in the browser but not in the runtime, inspect the source, cache, enablement, manifest, auth, and capability injection layers before rewriting prompts.

The Codex loader path

The Codex path is useful because it is visible in source.

At a high level, install and load look like this:

  1. resolve a plugin from a configured marketplace;
  2. materialize the source, either local or Git;
  3. copy the plugin into a cache keyed by marketplace and plugin identity;
  4. enable the plugin in config;
  5. parse .codex-plugin/plugin.json;
  6. load skills;
  7. load MCP servers;
  8. load apps;
  9. load hooks;
  10. render capability summaries and plugin guidance into the agent runtime.

The model is not supposed to “call a plugin” directly. The loaded plugin contributes capabilities: skills, MCP tools, app tools, hooks, and context. That matters when debugging. If a Codex plugin appears to do nothing, the failure might be marketplace resolution, cache install, config enablement, manifest parsing, auth state, MCP composition, app routing, or model-visible capability injection.

Codex example: linear

The official curated linear plugin is the compact example. Its manifest declares:

{
"name": "linear",
"version": "0.0.3",
"description": "Find and reference issues and projects.",
"skills": "./skills/",
"apps": "./.app.json",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Linear",
"category": "Productivity",
"defaultPrompt": [
"Triage or update relevant issues for this task with clear next actions"
]
}
}

That shape says a lot. The plugin is not only a Linear prompt. It has skills, app metadata, and an MCP declaration. The UI can present it as “Linear,” the runtime can attach an app connector, and the agent can read Linear-specific skills before using the tool.

The inspected OpenAI curated snapshot contained 180 plugins. In that snapshot, 154 declared app descriptors, 72 declared skills, and 8 declared MCP server files. That is why Codex plugins feel app-heavy: the official set is mostly about attaching product integrations to the agent runtime.

Marketplace compatibility is already leaking through

The most surprising source detail is in Codex marketplace discovery. Codex looks for its native marketplace files, but the inspected source also recognizes Claude’s marketplace path:

const MARKETPLACE_MANIFEST_RELATIVE_PATHS: &[&str] = &[
".agents/plugins/marketplace.json",
".agents/plugins/api_marketplace.json",
".claude-plugin/marketplace.json",
];

That does not mean Claude plugins run in Codex automatically. It means the marketplace shape is close enough that Codex deliberately knows about the Claude-style catalog location.

The easy mappings are mostly metadata and skills:

Claude conceptCodex analogueConversion difficulty
.claude-plugin/marketplace.json.agents/plugins/marketplace.json or compatibility discoverylow
.claude-plugin/plugin.json.codex-plugin/plugin.jsonlow to medium
skills/**/SKILL.mdskills/**/SKILL.mdlow
.mcp.json.mcp.json or mcpServerslow to medium
README, homepage, categorymanifest/interface metadatalow

The hard mappings are runtime semantics:

Claude featureWhy conversion is not automatic
slash commandsCodex invocation and UI semantics are different
agents/*.mdCodex uses different agent/skill metadata conventions
hooksevent names, payloads, and install paths differ
app connectorsCodex app IDs and auth policy are product-specific
allowed toolstool naming and approval behavior are runtime-specific
output styles, LSP, monitorsCodex may not expose equivalent public plugin surfaces

A mostly-procedural Claude skill can probably be ported with light edits. A workflow plugin like feature-dev needs design work. A Codex app plugin like linear cannot be converted into a Claude plugin unless the app connector story becomes MCP-only or Claude gets an equivalent app-auth layer.

Claude Code vs Codex UI: the product difference

Claude’s strongest public examples say: “teach the coding agent a better way to work.”

Codex’s strongest official snapshot says: “make the coding agent aware of external products and app-backed capabilities.”

That is an oversimplification, but it is a useful one.

Claude Code plugins lean into local development workflow: commands, agents, hooks, skills, MCP, and process control. The official examples feel like disciplined work modes: review this PR with multiple reviewers; build this feature in phases; keep looping until the task is finished.

Codex plugins lean into runtime composition and product surfaces: interface metadata, app connector IDs, MCP routing, marketplace policy, remote bundles, and config overlays. The official curated set starts with things like Linear, Atlassian, Google Calendar, Gmail, Slack, Teams, SharePoint, Outlook, Canva, and Figma. Those are product integrations before they are coding workflows.

There is overlap. Claude knowledge-work plugins also use MCP and role/team skills. Codex has methodology plugins and skill-heavy community packs. But the center of gravity is different enough that it should affect how plugins are reviewed.

Security review checklist

Do not install an agent plugin as if it were a harmless prompt file. Review it like a small software dependency with access to an agent session.

Before installing, answer these questions:

CheckWhy it matters
Is the source local, pinned by SHA, or floating?Floating plugin sources can change under the same install command.
Does it declare hooks or executables?Hooks can run at lifecycle boundaries outside the obvious prompt flow.
Does it add MCP servers?MCP endpoints are tool boundaries and data egress boundaries.
Does it add app connectors?App auth can expose tickets, email, calendar, docs, analytics, or repo data.
What commands or skills become available?The model may choose them later when the user did not explicitly think about the plugin.
What tool permissions do command files request?A workflow command with broad tool access is more than documentation.
How are updates reviewed?A safe install can become unsafe after marketplace or Git updates.
Can the plugin mutate files, issues, PRs, email, or tickets?Read-only context and write-capable tools need different review bars.

For Claude, pay special attention to hooks, executables, MCP, and command tool permissions. For Codex, pay special attention to app connector auth, remote bundle provenance, MCP/app routing, and config overlays.

Trust-boundary ladder

Not every plugin file has the same risk. Review from lowest authority to highest authority, then stop at the first layer you would not approve manually.

README and display metadata

Explains intent

Skills

Influence model behavior

Commands and agents

Shape workflows and delegation

MCP servers

Expose tools and data egress

App connectors

Attach account data and auth

Hooks and executables

Run around the session

Update channel

Changes future installed behavior

The ladder is intentionally conservative. A Markdown skill can still mislead the model, but an app connector, MCP server, hook, executable, or floating update source can change what the agent can touch.

How to inspect a plugin quickly

Start with the manifest, then follow every referenced path. Do not stop after reading the README.

For Claude Code:

Terminal window
# Replace PLUGIN_DIR with the plugin root.
find PLUGIN_DIR -maxdepth 3 -type f \
\( -path '*/.claude-plugin/*' -o -path '*/commands/*' -o -path '*/agents/*' -o -path '*/skills/*' -o -name '.mcp.json' \) \
-print

Read these in order:

  1. .claude-plugin/plugin.json;
  2. marketplace row that points to the plugin;
  3. .mcp.json;
  4. commands/*.md;
  5. agents/*.md;
  6. every SKILL.md;
  7. hook and executable references.

For Codex:

Terminal window
# Replace PLUGIN_DIR with the plugin root.
find PLUGIN_DIR -maxdepth 4 -type f \
\( -path '*/.codex-plugin/*' -o -name '.app.json' -o -name '.mcp.json' -o -path '*/skills/*' -o -name 'hooks.json' \) \
-print

Read these in order:

  1. .codex-plugin/plugin.json;
  2. marketplace row and install/auth policy;
  3. .app.json;
  4. .mcp.json;
  5. skills/**/SKILL.md;
  6. hooks files;
  7. remote bundle or Git source metadata.

A short inspection is enough to catch the biggest category mistake: thinking a plugin is “just prompts” when it actually installs tools or lifecycle behavior.

When to use which system

Use Claude Code plugins when the main need is a disciplined local workflow: code review protocol, feature development flow, design critique, refactor rules, or loop control. Claude’s plugin model is strong when behavior is mostly inside the coding session.

Use Codex plugins when the main need is app-backed capability: issue trackers, docs, email, calendar, design tools, analytics, deployment systems, or product integrations that the UI can present and authenticate. Codex’s plugin model is strong when the agent needs a product connector plus skills around it.

Use either system for plain skills. Markdown skills are the most portable part of both ecosystems. If a plugin is mostly a SKILL.md, porting is realistic. If it depends on slash-command semantics, hook payloads, app IDs, or auth policy, treat the port as a redesign.

Common failure modes

SymptomLikely cause
Plugin installs but nothing changesplugin disabled in config, wrong marketplace, auth unavailable, or model context did not load the capability
MCP tool never appears.mcp.json path wrong, duplicate server name, auth mode disabled, or runtime skipped plugin MCP in favor of app routing
App connector appears but skills do notmanifest path mismatch or skills directory schema mismatch
Command exists but behaves genericallycommand file lacks constraints, or project context is missing
Hook surprises the sessionlifecycle behavior was not reviewed before install
Ported plugin half-worksmetadata converted, runtime-specific commands/hooks/agents were not redesigned

The debugging pattern is simple: inspect marketplace, manifest, install/cache state, config enablement, component paths, auth state, and then model-visible capability context. Do not debug the prompt first if the loader never attached the capability.

Background knowledge that unlocks the next articles

This guide becomes more useful once these pieces are familiar:

TermWorking definitionWhy it matters
SkillA reusable instruction pack the model can read and followSkills are the safest and most portable part of both ecosystems.
CommandA named workflow entry point, usually invoked from the CLI UICommands can encode process, not just text.
Agent or sub-agentA role definition used for delegated reasoning or reviewAgent packages can ship orchestration patterns, not only prompts.
MCP serverA tool boundary exposed through the Model Context ProtocolMCP turns an agent from reader into actor; auth and egress matter.
HookCode or configuration that runs at lifecycle boundariesHooks can surprise you because they run around the conversation, not inside normal prose.
App connectorProduct-specific integration surfaced by the runtime or UIApp connectors often imply account auth and access to business data.
Marketplace manifestA catalog row that points to plugin payloadsThe marketplace row is not the plugin; it is a pointer to something else you still need to inspect.
Runtime cacheThe installed copy the CLI actually loadsA plugin can be correct in source and stale or disabled in the cache/config layer.
Capability injectionThe moment loaded skills/tools become visible to the modelIf this step fails, prompt debugging wastes time. The agent never saw the capability.

Those terms also create a good follow-up map:

ArticleValue to the reader
How to audit an MCP server before giving it to an agentA practical security checklist for tool boundaries, auth, and data egress.
Porting a Claude Code skill to CodexShows the portable subset: Markdown skills, metadata, examples, and what breaks.
Turning a prompt into an agent packageExplains when a prompt should become a skill, command, plugin, or project rule.
Debugging a plugin that installs but does nothingWalks through marketplace, cache, config, manifest, auth, and context injection.
Designing agent plugins that are safe by defaultCovers read-only modes, explicit write paths, pinned sources, and reviewable hooks.

What this means for agentic coding

The next wave of coding-agent reuse is not going to look like copying one magic prompt. It will look like package management.

Project rules still matter. CLAUDE.md, AGENTS.md, tests, and review gates are still the source of truth for a repo. Native plugins sit one layer above that. They package repeatable procedures and connectors so the agent can enter a project with better defaults.

That power cuts both ways. A good plugin can make the agent slower in exactly the right way: inspect first, ask questions, check assumptions, then write code. A bad plugin can silently widen the tool boundary or normalize a workflow nobody reviewed.

The practical rule: install skills generously, install tools carefully, and install hooks only after reading the code.

Sources

See also

Diagram

Drag to pan · scroll or pinch to zoom · Esc to close