Core configuration engine for meta-unify plugin. Parses user configuration requests, translates between Claude and Codex formats, and generates appropriate configuration files for both systems. Invoked by meta-unify commands to handle MCP servers, skills, hooks, rules, and instructions.
Translates and generates configuration files between Claude Code and Codex formats.
npx claudepluginhub duncanjurman/entropy-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/claude-formats.mdreferences/codex-formats.mdreferences/plugin-formats.mdThis skill provides the parsing, translation, and generation logic that powers the meta-unify plugin. It is not invoked directly by users but is called by meta-unify commands to perform configuration operations.
| Type | Description |
|---|---|
| MCP Servers | Model Context Protocol server definitions (STDIO and HTTP transports) |
| Skills | Reusable capability bundles with assets, scripts, and references |
| Hooks | Event-triggered actions (Claude only) |
| Rules | Permission and constraint definitions |
| Instructions | System-wide or project-scoped behavioral guidelines |
| Plugins | Complete Claude Code plugin scaffolding and generation |
| Config Type | Claude User Scope | Claude Project Scope | Codex User Scope | Codex Project Scope |
|---|---|---|---|---|
| MCP servers | ~/.claude.json | .mcp.json | ~/.codex/config.toml | N/A |
| Skills | ~/.claude/skills/ | .claude/skills/ | ~/.codex/skills/ | .codex/skills/ |
| Hooks | ~/.claude/settings.json | .claude/settings.json | N/A | N/A |
| Rules | ~/.claude/settings.json (permissions) | .claude/settings.json | ~/.codex/rules/*.rules | N/A |
| Instructions | ~/.claude/CLAUDE.md | .claude/CLAUDE.md | ~/.codex/AGENTS.md | AGENTS.md |
config.toml~/.codex/rules/ directoryClaude (JSON) → Codex (TOML)
// Claude (.mcp.json or ~/.claude.json)
{
"mcpServers": {
"server-name": {
"command": "npx",
"args": ["@package/server"],
"env": { "KEY": "value" }
}
}
}
# Codex (~/.codex/config.toml)
[mcp_servers.server-name]
command = "npx"
args = ["@package/server"]
[mcp_servers.server-name.env]
KEY = "value"
HTTP Transport
// Claude
{
"mcpServers": {
"remote-server": {
"url": "https://api.example.com/mcp"
}
}
}
# Codex
[mcp_servers.remote-server]
url = "https://api.example.com/mcp"
Both systems use SKILL.md with YAML frontmatter. Key differences:
| Property | Claude | Codex |
|---|---|---|
| Name | name (max 64 chars) | name (max 100 chars) |
| Description | description (max 1024 chars) | description (max 500 chars) |
| User-callable | user-invocable: true/false | Always invocable via $skill-name |
| Extra fields | allowed-tools, model, context | metadata.short-description |
Translation: Claude-specific fields are omitted from Codex version silently.
Claude (settings.json permissions)
{
"permissions": {
"allow": ["Bash(npm run:*)"],
"ask": ["Bash(git push:*)"],
"deny": ["Bash(rm -rf:*)"]
}
}
Codex (Starlark .rules file)
prefix_rule(
pattern = ["npm", "run"],
decision = "allow",
)
prefix_rule(
pattern = ["git", "push"],
decision = "prompt",
)
prefix_rule(
pattern = ["rm", "-rf"],
decision = "forbidden",
)
Claude (CLAUDE.md) and Codex (AGENTS.md) use the same markdown format.
Special sections:
## Claude Only → Only in CLAUDE.md## Codex Only → Only in AGENTS.md| Pattern | Inferred Transport |
|---|---|
npx @package/... | STDIO |
node script.js | STDIO |
python -m module | STDIO |
| Any executable command | STDIO |
https:// or http:// URL | HTTP |
| Keyword in Request | Suggested Structure |
|---|---|
| "guidelines", "docs", "reference", "API" | references/ directory |
| "deploy", "build", "run", "validate" | scripts/ directory |
| "template", "scaffold", "generate" | assets/ directory |
| Pattern | Action |
|---|---|
API_KEY, TOKEN, SECRET | Warn about sensitive data |
${VAR} or $VAR | Preserve as env var reference |
JSON Validation (Claude configs)
TOML Validation (Codex configs)
Starlark Validation (Codex rules)
Command Existence Check (STDIO MCP)
When one system succeeds but the other fails:
[meta-unify] ERROR: Failed to write Codex config
File: ~/.codex/config.toml
Reason: Invalid TOML syntax - unclosed string at line 15
Action: Please check the configuration and retry
For detailed format specifications, see:
references/claude-formats.md - Complete Claude Code configuration schemasreferences/codex-formats.md - Complete Codex configuration schemasreferences/plugin-formats.md - Claude Code plugin structure and manifest formats/meta-unify:add-mcp - Adding MCP servers/meta-unify:add-skill - Creating new skills/meta-unify:add-hook - Adding hooks (Claude only)/meta-unify:add-rule - Adding permission rules/meta-unify:add-plugin - Creating new Claude Code plugins/meta-unify:sync - Synchronizing configs between systemsExpert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.