From meta-unify
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.
npx claudepluginhub DuncanJurman/entropy-plugins --plugin meta-unifyThis skill uses the workspace's default tool permissions.
This 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.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Share bugs, ideas, or general feedback.
This 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 systems