DuncanJurman avatar

meta-unify-core

Core configuration engine for meta-unify plugin. Parses user configuration requests, translates betw

作者 DuncanJurman|オープンソース

Meta-Unify Core 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.

Core Capabilities

What This Skill Does

  1. Parses Configuration Requests: Interprets natural language or structured requests for adding/modifying MCP servers, skills, hooks, rules, or instructions
  2. Translates Between Formats: Converts configuration syntax between Claude Code and Codex formats
  3. Generates Configuration Files: Creates or modifies the appropriate files for both systems
  4. Validates Output: Ensures generated configurations are syntactically correct before writing

Configuration Types Handled

TypeDescription
MCP ServersModel Context Protocol server definitions (STDIO and HTTP transports)
SkillsReusable capability bundles with assets, scripts, and references
HooksEvent-triggered actions (Claude only)
RulesPermission and constraint definitions
InstructionsSystem-wide or project-scoped behavioral guidelines
PluginsComplete Claude Code plugin scaffolding and generation

File Location Mappings

Quick Reference Table

Config TypeClaude User ScopeClaude Project ScopeCodex User ScopeCodex Project Scope
MCP servers~/.claude.json.mcp.json~/.codex/config.tomlN/A
Skills~/.claude/skills/.claude/skills/~/.codex/skills/.codex/skills/
Hooks~/.claude/settings.json.claude/settings.jsonN/AN/A
Rules~/.claude/settings.json (permissions).claude/settings.json~/.codex/rules/*.rulesN/A
Instructions~/.claude/CLAUDE.md.claude/CLAUDE.md~/.codex/AGENTS.mdAGENTS.md

Notes on Scope Differences

  • Codex MCP: Only supports user-scope configuration in config.toml
  • Codex Hooks: Not supported; use rules for command-level control
  • Codex Rules: Starlark-based files in ~/.codex/rules/ directory

Format Translation Rules

MCP Servers

Claude (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"

Skills

Both systems use SKILL.md with YAML frontmatter. Key differences:

PropertyClaudeCodex
Namename (max 64 chars)name (max 100 chars)
Descriptiondescription (max 1024 chars)description (max 500 chars)
User-callableuser-invocable: true/falseAlways invocable via $skill-name
Extra fieldsallowed-tools, model, contextmetadata.short-description

Translation: Claude-specific fields are omitted from Codex version silently.

Permissions / Rules

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",
)

Instructions

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

Parsing Heuristics

Transport Type Detection

PatternInferred Transport
npx @package/...STDIO
node script.jsSTDIO
python -m moduleSTDIO
Any executable commandSTDIO
https:// or http:// URLHTTP

Skill Structure Suggestions

Keyword in RequestSuggested Structure
"guidelines", "docs", "reference", "API"references/ directory
"deploy", "build", "run", "validate"scripts/ directory
"template", "scaffold", "generate"assets/ directory

Environment Variable Patterns

PatternAction
API_KEY, TOKEN, SECRETWarn about sensitive data
${VAR} or $VARPreserve as env var reference

Validation Requirements

Before Writing Configuration

  1. JSON Validation (Claude configs)

    • Valid JSON syntax
    • Required keys present
    • Correct structure
  2. TOML Validation (Codex configs)

    • Valid TOML syntax
    • Required sections present
  3. Starlark Validation (Codex rules)

    • Valid Python-like syntax
    • prefix_rule() calls are correct
  4. Command Existence Check (STDIO MCP)

    • Verify command exists in PATH
    • Warn if not found

Error Handling

Partial Failure Protocol

When one system succeeds but the other fails:

  1. Do NOT roll back the successful write
  2. Report clearly which system succeeded and which failed
  3. Show the error from the failed system
  4. Ask user how to proceed:
    • Keep successful changes
    • Retry failed system
    • Abort and restore

Error Message Format

[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

Reference Documentation

For detailed format specifications, see:

  • references/claude-formats.md - Complete Claude Code configuration schemas
  • references/codex-formats.md - Complete Codex configuration schemas
  • references/plugin-formats.md - Claude Code plugin structure and manifest formats

Integration Notes

Called By

  • /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

Limitations

  • Codex hooks are not supported; suggests rule-based alternatives
  • Cannot migrate complex Starlark rules to Claude permissions automatically
  • Does not validate MCP server functionality, only syntax