7.2 KiB
Harness Adapter Compliance Matrix
This matrix is the public onramp for teams that want to use ECC across more than one coding harness. It turns the cross-harness architecture into a practical scorecard: what works today, what is instruction-only, what needs an adapter, and what evidence an operator should collect before trusting a setup.
ECC's durable units stay in shared sources:
skills/*/SKILL.mdrules/commands/hooks/hooks.jsonscripts/hooks/- MCP reference configs
- session and observability contracts
Harness-specific files should only adapt loading, event shape, command names, or platform limits.
Compliance States
| State | Meaning |
|---|---|
| Native | ECC can install or verify the surface directly for this harness. |
| Adapter-backed | ECC has a thin adapter, plugin, or package surface, but parity differs by harness. |
| Instruction-backed | ECC can provide the guidance and files, but the harness does not expose the runtime hook/session surface ECC needs for enforcement. |
| Reference-only | The tool is useful as a design pressure or external runtime, but ECC does not yet ship a direct installer or adapter for it. |
Matrix
| Harness or runtime | State | Supported assets | Unsupported or different surfaces | Install or onramp | Verification command | Risk notes |
|---|---|---|---|---|---|---|
| Claude Code | Native | Claude plugin assets, skills, commands, hooks, MCP config, local rules, statusline-oriented workflows | Claude-native hooks do not imply parity in other harnesses | ./install.sh --profile minimal --target claude or Claude plugin install |
npm run harness:audit -- --format json and node scripts/session-inspect.js --list-adapters |
Avoid loading every skill by default; keep hooks opt-in and inspectable. |
| Codex | Instruction-backed | AGENTS.md, Codex plugin metadata, skills, MCP reference config, command patterns |
Native hook enforcement and Claude slash-command semantics are not equivalent | ./install.sh --profile minimal --target codex plus repo-local AGENTS.md review |
npm run harness:audit -- --format json |
Treat hooks as policy text unless a native Codex hook surface exists. |
| OpenCode | Adapter-backed | OpenCode package/plugin metadata, shared skills, MCP config, event adapter patterns | Event names, plugin packaging, and command dispatch differ from Claude Code | OpenCode package or plugin surface from this repo | node tests/scripts/build-opencode.test.js and npm run harness:audit -- --format json |
Keep hook logic in shared scripts and adapt only event shape at the edge. |
| Cursor | Adapter-backed | Cursor rules, project-local skills, hook adapter, shared scripts | Cursor hook events and rule loading differ from Claude Code | ./install.sh --profile minimal --target cursor |
node tests/lib/install-targets.test.js and npm run harness:audit -- --format json |
Cursor adapters must preserve existing project rules and avoid silent overwrite. |
| Gemini | Instruction-backed | Gemini project-local instructions, shared skills, rules, compatibility docs | No full ECC hook parity; ecosystem ports must document drift from upstream ECC | ./install.sh --profile minimal --target gemini |
node tests/lib/install-targets.test.js |
Treat Gemini ports as ecosystem adapters until validated end to end inside Gemini CLI. |
| Zed-adjacent workflows | Instruction-backed | Shared skills, AGENTS.md style project instructions, verification loops |
Zed agent surfaces vary; no first-party ECC installer is shipped today | Manual copy from shared ECC sources until adapter requirements settle | npm run harness:audit -- --format json |
Do not claim native Zed support before a real adapter and verification path exist. |
| dmux | Adapter-backed | Session snapshots, tmux/worktree orchestration status, handoff exports | dmux is an orchestration runtime, not an install target for skills/rules | node scripts/session-inspect.js --list-adapters and dmux session target inspection |
node tests/lib/session-adapters.test.js |
Treat dmux events as session/runtime signals, not as a replacement for repo validation. |
| Orca | Reference-only | Worktree lifecycle, review state, notification, and provider-identity design pressure | No ECC installer or direct adapter today | Use as a comparison target for worktree/session state requirements | npm run observability:ready |
Do not import product-specific assumptions; convert lessons into ECC event fields. |
| Superset | Reference-only | Workspace presets, parallel-agent review loops, worktree isolation design pressure | No ECC installer or direct adapter today | Use as a comparison target for workspace preset taxonomy | npm run observability:ready |
Keep ECC portable; do not require a desktop workspace to get basic value. |
| Ghast | Reference-only | Terminal-native pane grouping, cwd grouping, search, notifications | No ECC installer or direct adapter today | Use as a comparison target for terminal-first session grouping | node scripts/session-inspect.js --list-adapters |
Preserve terminal ergonomics before adding visual UI assumptions. |
| Terminal-only | Native | Skills, rules, commands, scripts, harness audit, observability readiness, handoffs | No external UI, no automatic session control unless scripts are run explicitly | Clone repo, run commands directly, use minimal profile for project installs | npm run harness:audit -- --format json and npm run observability:ready |
This is the fallback contract; every higher-level adapter should degrade to it. |
Scorecard Onramp
Use this sequence before asking ECC to make a team or repo setup more autonomous:
npm run harness:audit -- --format json
npm run observability:ready
node scripts/session-inspect.js --list-adapters
node scripts/loop-status.js --json --write-dir .ecc/loop-status
Read the result as a setup scorecard, not a product badge:
harness:auditscores tool coverage, context efficiency, quality gates, memory persistence, eval coverage, security guardrails, and cost efficiency.observability:readyproves the repo still exposes the local status, session, tool-activity, risk-ledger, and release-onramp signals.session-inspect --list-adaptersshows which session surfaces are actually inspectable in the current environment.loop-status --jsoncreates a machine-readable handoff/status payload for longer autonomous runs.
Evidence Fields For Future Data Matrix
When this matrix moves from Markdown to a data-backed validator, each adapter record should expose:
idstatesupported_assetsunsupported_surfacesinstall_or_onrampverification_commandsrisk_noteslast_verified_atownersource_docs
The validator should fail if a public adapter claim has no install path, verification command, or risk note.
Operating Rules
- Prefer small, additive adapters over harness-specific forks of the same workflow.
- Do not call a harness native until the adapter has an install path and a verification command.
- Keep Codex, Gemini, and Zed surfaces honest when enforcement is instruction-backed rather than runtime-backed.
- Treat reference-only tools as design pressure until ECC has a direct adapter.
- Keep the terminal-only path healthy; it is the portability floor.