Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/affaan-m/ECC/llms.txt

Use this file to discover all available pages before exploring further.

ECC is a harness-native system — every file it installs is written specifically for the harness you are targeting. Rather than shipping one generic config that every tool tries to interpret, ECC resolves paths, formats, hook schemas, and platform configs per target at install time. Pass --target <id> to any install command and ECC writes the right artifacts to the right directories.

Supported Targets

The table below lists all 14 target IDs, the harness each one maps to, and the primary install location ECC writes to on your machine.
Target IDHarnessPrimary Install PathNotes
claudeClaude Code (Anthropic)~/.claude/Primary and most feature-complete target
cursorCursor IDE.cursor/ (project-local)DRY hook adapter reuses Claude Code scripts
codexOpenAI Codex CLI / macOS App~/.codex/Instruction-based; no hook parity yet
geminiGemini CLI.gemini/ (project-local)Experimental; shares platform-configs module
opencodeOpenCode.opencode/ (project-local)Full plugin support; 20+ hook event types
zedZed Editor.zed/ (project-local)Conservative adapter; minimal profile recommended
codebuddyCodeBuddyProject-local selective installCommands, agents, skills, flattened rules
joycodeJoyCodeProject-local selective installShares CodeBuddy adapter surface
hermesHermes.hermes/ECC 2.0 public operator story; see Hermes setup guide
kimiKimi.kimi/ (project-local)Selective install adapter
openclawOpenClaw.openclaw/ (project-local)Selective install adapter
qwenQwen CLI~/.qwen/Home-directory selective install; rules, agents, skills, Qwen config
claude-projectClaude Projects (web)~/.claude/ (same as claude)Shares Claude Code install surface
antigravityAntigravity IDE.agent/ (project-local)Flattened rules; see Antigravity guide
claude-project resolves to the same install paths as claude. It exists as a distinct target so install manifests can track project-scoped vs. user-scoped Claude installs separately.

Where ECC Installs Files

Claude Code (--target claude)

Claude Code receives ECC’s most complete install surface. The installer writes to your user-level Claude directory:
~/.claude/
  agents/          ← 67 specialized subagent definitions
  skills/          ← Skills (primary workflow surface)
  commands/        ← Legacy slash-command shims
  rules/ecc/       ← Rules (common/ + language-specific packs)
  hooks/           ← Resolved hooks.json with correct script paths
  session-data/    ← Session snapshots (created at runtime)
The Claude Code plugin system cannot distribute rules/ via plugin installs. After installing via /plugin install ecc@ecc, manually copy only the rule folders you need: cp -r rules/common ~/.claude/rules/ecc/.

Cursor IDE (--target cursor)

ECC writes Cursor artifacts project-locally to avoid polluting global settings:
.cursor/
  agents/ecc-*.md   ← Agent definitions (prefixed to avoid collisions)
  rules/            ← YAML-frontmatter rule files
  hooks.json        ← 15-event hook config via DRY adapter
  skills/           ← Translated skill additions
  mcp.json          ← MCP server config
Cursor hooks use a DRY adapter pattern: .cursor/hooks/adapter.js transforms Cursor’s stdin JSON into Claude Code’s format, letting the shared scripts/hooks/*.js scripts run unchanged across both harnesses. For memory isolation when running both Claude Code and Cursor on the same machine, set a separate data root for Cursor:
export ECC_AGENT_DATA_HOME="$HOME/.cursor/ecc"

Codex CLI and macOS App (--target codex)

Codex reads project-local config automatically:
.codex/
  config.toml       ← Top-level approvals, sandbox, MCP servers, profiles
  AGENTS.md         ← Codex-specific supplement to root AGENTS.md
  agents/           ← Multi-agent role files (explorer, reviewer, docs-researcher)
~/.codex/
  config.toml       ← Optional global defaults
To install via the Codex plugin marketplace:
codex plugin marketplace add affaan-m/ECC
Codex does not yet provide Claude-style hook execution parity. ECC enforcement on Codex is instruction-based via AGENTS.md and sandbox/approval settings rather than event-driven hooks.

OpenCode (--target opencode)

OpenCode is detected from .opencode/opencode.json and supports 20+ plugin event types — more than Claude Code’s 8:
.opencode/
  opencode.json     ← Plugin registration, agent, command, and instruction wiring
  instructions/     ← Consolidated rules
  README.md         ← OpenCode-specific setup notes
Install ECC as an npm plugin for OpenCode projects:
{
  "plugin": ["ecc-universal"]
}

Zed (--target zed)

Zed receives a conservative project-local adapter:
.zed/
  settings.json     ← Project-local settings
  rules/            ← Flattened ECC rules
The minimal profile is the recommended starting point for Zed:
./install.sh --profile minimal --target zed

Harness-Specific Quirks

ECC has three public identifiers that are not interchangeable:
  • GitHub source: affaan-m/ECC
  • Claude marketplace plugin slug: ecc@ecc
  • npm package: ecc-universal
Do not stack both the plugin install and the manual installer. The plugin loads skills, commands, and hooks; the manual installer copies the same files to disk. Running both creates duplicates. Choose one path per machine.
The Codex plugin marketplace entry must target a concrete plugin subdirectory. Marketplace discovery works with this layout, but runtime skill loading from local/repo marketplaces is still unreliable upstream. The supported Codex install route is the sync script:
bash scripts/sync-ecc-to-codex.sh
Run with --dry-run to preview changes before applying. Pass --update-mcp to force-refresh ECC MCP server entries to the latest recommended config.
OpenCode uses the opencode profile by default, which intentionally excludes hooks-runtime. To add hooks, opt in explicitly:
./install.sh --profile opencode --target opencode --modules hooks-runtime
When CURSOR_VERSION or CURSOR_PROJECT_DIR is detected in the environment, ECC hooks default ECC_AGENT_DATA_HOME to ~/.cursor/ecc automatically — so session summaries and learned instincts stay out of ~/.claude without any manual configuration. Override with an explicit env var if you want the two harnesses to share memory.
Memory persistence hooks store session summaries, learned skills, session aliases, and metrics under a single agent data root. The default root is ~/.claude. When using multiple harnesses on the same machine, set ECC_AGENT_DATA_HOME per harness to keep them isolated:
# In your shell profile, set different roots per harness
# Claude Code keeps the default ~/.claude
# For Cursor sessions only:
export ECC_AGENT_DATA_HOME="$HOME/.cursor/ecc"

Feature Parity by Harness

Not every ECC feature is available in every harness. This matrix shows what you get at each target:
FeatureClaude CodeCursorCodexOpenCodeZedGemini
Agents67SharedShared12Shared
Skills277Shared32 native37Shared
Hook Events8 types15 typesNone20+ types
Rules3434 (YAML)Instruction-based13FlattenedGEMINI.md
MCP Servers14 activeShared6 auto-mergedFull parity
Session HooksFullFull (adapter)NoneFull (plugin)

Build docs developers (and LLMs) love