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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/meta-unify:skills/meta-unify-coreThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
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 systemsnpx claudepluginhub DuncanJurman/entropy-plugins --plugin meta-unifyDetails Claude Code's directory structure, CLAUDE.md hierarchy across enterprise/user/project levels, and settings.json schema for permissions, hooks, env vars, and models. Useful for project setup and customization.
Covers Claude Code artifact conventions: plugin.json schema, command/agent/skill frontmatter, CLAUDE.md, hooks, settings.json, LSP, monitors, memory files, and the built-in tool catalog.
Configures MCP servers for Claude Code at project or user scope with best practices to prevent context pollution. Checks status, adds/removes servers via .mcp.json or ~/.claude.json.