Files
everything-claude-code/.opencode
fxdv 8eedcff5ac fix(commands): resolve active plugin root in /instinct-status (#2037) (#2059)
The `/instinct-status` slash command template expanded
`${CLAUDE_PLUGIN_ROOT}` directly and documented a manual-install
fallback to `~/.claude/skills/continuous-learning-v2/scripts/instinct-cli.py`.
When users had both an active plugin install (under
`~/.claude/plugins/cache/<slug>/<org>/<version>/`) and a legacy
`~/.claude/skills/continuous-learning-v2/` directory left over from a
previous manual install, an empty `CLAUDE_PLUGIN_ROOT` (which Claude
Code does not always populate in slash-command shell contexts) silently
made the command read the stale legacy install while the active plugin
hooks and observer wrote to the new XDG path. The user saw "No
instincts found" while the system was actively learning — exactly the
divergence the bug reporter spent hours diagnosing.

Replace the brittle two-block template with the same inline resolver
pattern that `hooks/hooks.json` and `/sessions` / `/skill-health`
already use: env var → standard install → known plugin roots → plugin
cache walk → fallback. The resolver is the canonical `INLINE_RESOLVE`
constant from `scripts/lib/resolve-ecc-root.js`, so no new code is
introduced — just consistent adoption of the existing pattern.

Apply the same fix to all five copies of the command:
  - commands/instinct-status.md (canonical)
  - .opencode/commands/instinct-status.md
  - docs/zh-CN/commands/instinct-status.md
  - docs/ja-JP/commands/instinct-status.md
  - docs/tr/commands/instinct-status.md

Extend tests/lib/command-plugin-root.test.js with an assertion that the
canonical instinct-status.md uses the inline resolver and no longer
hard-codes the legacy `~/.claude/skills/...` fallback (regression
guard).

zh-CN copy: polish the Chinese phrasing per LanguageTool feedback
(`使用与 ... 相同的解析器` → `以与 ... 相同的解析器`) so the verb is
introduced by an explicit preposition instead of reading as an awkward
verb-object construction.
2026-06-07 13:27:05 +08:00
..
2026-05-12 09:30:26 -04:00

OpenCode ECC Plugin

WARNING: This README is specific to OpenCode usage. If you installed ECC via npm (e.g. npm install opencode-ecc), refer to the root README instead.

ECC plugin for OpenCode - agents, commands, hooks, and skills.

Installation

Installation Overview

There are two ways to use ECC:

  1. npm package (recommended for most users) Install via npm/bun/yarn and use the ecc-install CLI to set up rules and agents.

  2. Direct clone / plugin mode Clone the repository and run OpenCode directly inside it.

Choose the method that matches your workflow below.

Option 1: npm Package

npm install ecc-universal

Add to your opencode.json:

{
  "plugin": ["ecc-universal"]
}

This loads the ECC OpenCode plugin module from npm:

  • hook/event integrations
  • bundled custom tools exported by the plugin

It does not auto-register the full ECC command/agent/instruction catalog in your project config. For the full OpenCode setup, either:

  • run OpenCode inside this repository, or
  • copy the relevant .opencode/commands/, .opencode/prompts/, .opencode/instructions/, and the instructions, agent, and command config entries into your own project

After installation, the ecc-install CLI is also available:

npx ecc-install typescript

Option 2: Direct Use

Clone and run OpenCode in the repository:

git clone https://github.com/affaan-m/ECC
cd ECC
opencode

If you also want to apply the ECC home install (node scripts/install-apply.js --target opencode --profile full), build the plugin first so the compiled payload at .opencode/dist/ exists:

node scripts/build-opencode.js   # or: npm run build:opencode
node scripts/install-apply.js --target opencode --profile full

Without .opencode/dist/index.js, OpenCode will detect the slash commands but silently skip plugin hooks and tools. The installer now fails fast with a pointer to this command if the build step is missing.

Features

Agents (12)

Agent Description
planner Implementation planning
architect System design
code-reviewer Code review
security-reviewer Security analysis
tdd-guide Test-driven development
build-error-resolver Build error fixes
e2e-runner E2E testing
doc-updater Documentation
refactor-cleaner Dead code cleanup
go-reviewer Go code review
go-build-resolver Go build errors
database-reviewer Database optimization

Commands (31)

Command Description
/plan Create implementation plan
/tdd TDD workflow
/code-review Review code changes
/security Security review
/build-fix Fix build errors
/e2e E2E tests
/refactor-clean Remove dead code
/orchestrate Multi-agent workflow
/learn Extract patterns
/checkpoint Save progress
/verify Verification loop
/eval Evaluation
/update-docs Update docs
/update-codemaps Update codemaps
/test-coverage Coverage analysis
/setup-pm Package manager
/go-review Go code review
/go-test Go TDD
/go-build Go build fix
/skill-create Generate skills
/instinct-status View instincts
/instinct-import Import instincts
/instinct-export Export instincts
/evolve Cluster instincts
/promote Promote project instincts
/projects List known projects
/harness-audit Audit harness reliability and eval readiness
/loop-start Start controlled agentic loops
/loop-status Check loop state and checkpoints
/quality-gate Run quality gates on file/repo scope
/model-route Route tasks by model and budget

Plugin Hooks

Hook Event Purpose
Prettier file.edited Auto-format JS/TS
TypeScript tool.execute.after Check for type errors
console.log file.edited Warn about debug statements
Notification session.idle Desktop notification
Security tool.execute.before Check for secrets

Custom Tools

Tool Description
run-tests Run test suite with options
check-coverage Analyze test coverage
security-audit Security vulnerability scan

Hook Event Mapping

OpenCode's plugin system maps to Claude Code hooks:

Claude Code OpenCode
PreToolUse tool.execute.before
PostToolUse tool.execute.after
Stop session.idle
SessionStart session.created
SessionEnd session.deleted

OpenCode has 20+ additional events not available in Claude Code.

Hook Runtime Controls

OpenCode plugin hooks honor the same runtime controls used by Claude Code/Cursor:

export ECC_HOOK_PROFILE=standard
export ECC_DISABLED_HOOKS="pre:bash:tmux-reminder,post:edit:typecheck"
  • ECC_HOOK_PROFILE: minimal, standard (default), strict
  • ECC_DISABLED_HOOKS: comma-separated hook IDs to disable

Skills

The default OpenCode config loads 11 curated ECC skills via the instructions array:

  • coding-standards
  • backend-patterns
  • frontend-patterns
  • frontend-slides
  • security-review
  • tdd-workflow
  • strategic-compact
  • eval-harness
  • verification-loop
  • api-design
  • e2e-testing

Additional specialized skills are shipped in skills/ but not loaded by default to keep OpenCode sessions lean:

  • article-writing
  • content-engine
  • market-research
  • investor-materials
  • investor-outreach

Configuration

Full configuration in opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-5",
  "small_model": "anthropic/claude-haiku-4-5",
  "plugin": ["./plugins"],
  "instructions": [
    "skills/tdd-workflow/SKILL.md",
    "skills/security-review/SKILL.md"
  ],
  "agent": { /* 12 agents */ },
  "command": { /* 24 commands */ }
}

License

MIT