This page defines how the Pluxx authoring model should map across the core four hosts:Documentation Index
Fetch the complete documentation index at: https://docs.pluxx.dev/llms.txt
Use this file to discover all available pages before exploring further.
- Claude Code
- Cursor
- Codex
- OpenCode
Compiler Buckets
These are the eight buckets Pluxx should compile from:| Bucket | Includes |
|---|---|
instructions | shared host guidance and routing rules |
skills | reusable workflows plus taxonomy-derived workflow metadata |
commands | explicit slash-command style entrypoints |
agents | specialist or delegated execution surfaces |
hooks | deterministic lifecycle automation |
permissions | portable allow / ask / deny intent |
runtime | MCP, runtime auth, local runtimes, passthrough dirs, helper scripts |
distribution | user config, brand, packaging, install, publish, and install-surface metadata |
taxonomy remains an internal compiler input. It drives how skills, commands, instructions, and agents are rendered, but it is not itself a host-facing extension primitive.
Canonical Shape
Mapping Rules
| Bucket | Claude Code | Cursor | Codex | OpenCode | Pluxx mapping rule |
|---|---|---|---|---|---|
instructions | CLAUDE.md plus plugin-level guidance surfaces | rules/ plus AGENTS.md support | AGENTS.md and AGENTS.override.md | config-driven instruction files | Keep one instruction source of truth and compile it into the host-native guidance surface rather than duplicating prose by hand. |
skills | skills/<skill>/SKILL.md | skills/<skill>/SKILL.md with a narrower documented frontmatter set | skills/<skill>/SKILL.md, optionally bundled through plugins | skills/<skill>/SKILL.md | Skills stay the semantic center. Preserve shared metadata and strip or downgrade host-only frontmatter during migration and build. |
commands | native commands/ markdown command files | native commands/ plugin files | no documented plugin-packaged command directory today | native command system through markdown or JSON command definitions | Treat commands as first-class where the host exposes them. For Codex, degrade commands into skills and instruction routing instead of pretending parity exists. |
agents | plugin agents/ with rich frontmatter and isolation settings | plugin agents plus Cursor subagents | custom agents in .codex/agents/*.toml and subagent workflows | primary agents and subagents with model and permission config | Treat agents as specialist execution surfaces. Compile one specialist concept into each host’s native agent or subagent format, even when the storage location differs. |
hooks | hooks/hooks.json or inline plugin manifest hooks | hooks/hooks.json plus project and user hook locations | .codex/hooks.json or ~/.codex/hooks.json, guarded by the codex_hooks feature flag | JS or TS plugin event handlers | Normalize hook intent and compile per host. Do not assume event names or return contracts are portable 1:1. |
permissions | tool scoping and approval controls live in Claude-specific agent, hook, and runtime surfaces | hook allow or deny decisions, CLI permission config, and subagent tool access | approvals, sandbox policy, hook matchers, and custom-agent config | first-class permission config plus per-agent overrides | Keep allow / ask / deny as the canonical authoring model. When one host lacks a per-skill field, move the policy to its native agent, hook, or runtime control plane. |
runtime | .mcp.json or inline MCP config, plus plugin support files | mcp.json, plugin support files, and host config integration | .mcp.json in plugins plus active MCP state in config.toml, with optional .app.json | config-driven MCP and JS plugin runtime | Runtime owns MCP, auth, env wiring, helper code, local runtimes, and passthrough dirs. Compile into bundle-local files when possible and external host config when required. |
distribution | .claude-plugin/plugin.json, install scopes, user configuration, plugin cache, install command surfaces | .cursor-plugin/plugin.json, marketplace metadata, publish surface, local install path | .codex-plugin/plugin.json, marketplace catalogs, cache install path, interface metadata | npm or local JS plugin distribution rather than one shared manifest | Distribution owns userConfig, brand, legal links, icons, screenshots, install metadata, and publish metadata. Emit rich manifest fields where supported and install shims where they are not. |
Practical Consequences
This matrix implies a few hard rules for Pluxx:- Migration should be semantic, not syntactic. Import the source host’s intent, not its exact file format.
- Skills are the stable workflow layer. Commands and agents should compile from the same workflow model rather than forking meaning.
-
Permissions are portable intent, not portable syntax.
A Claude-only field such as
allowed-toolsshould become a host-agnostic policy that Pluxx re-expresses for Cursor, Codex, and OpenCode in their native control planes. - Codex is not command-parity with Claude, Cursor, or OpenCode today. That is a translation problem for Pluxx, not a reason to leak host differences into the authoring model.
- OpenCode is code-first for plugins. Hooks, runtime extensions, and some distribution behavior need real JS or TS generation rather than manifest-only generation.
Official Docs Basis
Claude Code
- Extend Claude Code
- Create plugins
- Plugins reference
- Hooks
- Create custom subagents
- How Claude Code works
Cursor
Codex
- Build plugins
- Agent Skills
- Subagents
- Hooks
- Model Context Protocol
- Custom instructions with AGENTS.md