Add ECA (Editor Code Assistant) harness support#2005
Open
lockie wants to merge 1 commit into
Open
Conversation
Added .eca-plugin/ directory with marketplace.json, plugin manifest, chatStart + postCompact hooks that inject the using-superpowers bootstrap at session start and after compaction, and symlinks to the shared skills and session-start script. Added ECA tool mapping reference, install docs, hook test case, plugin structure tests, and registered the version in .version-bump.json. 🤖 Generated with [ECA](https://eca.dev) (zai-coding-plan/glm-5.2) Co-Authored-By: eca-agent <git@eca.dev>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Who is submitting this PR?
What problem are you trying to solve?
ECA (Editor Code Assistant) is an open-source AI pair programming tool (https://eca.dev) with a plugin system that supports skills, hooks, MCP servers, and agents. Users running ECA had no way to use Superpowers — the plugin system is compatible, but Superpowers lacked the
.eca-plugin/directory structure and hook definitions that ECA needs to discover and load the plugin.This was experienced firsthand: after configuring Superpowers as a plugin source in ECA's
config.json, the skills were not discovered and no bootstrap was injected. Theusing-superpowersskill content never reached the model, so no skills auto-triggered.What does this PR change?
Adds ECA as a supported harness using the Shape A (shell-hook) pattern, the same integration shape as Cursor and Copilot CLI:
.eca-plugin/marketplace.json— marketplace entry for plugin discovery.eca-plugin/superpowers/eca.json— plugin manifest pointing toskills.eca-plugin/superpowers/hooks/hooks.json—chatStartandpostCompacthooks that run the sharedhooks/session-startscript.eca-plugin/superpowers/hooks/session-start— symlink to the sharedhooks/session-start.eca-plugin/superpowers/skills— symlink to the repo-rootskills/skills/using-superpowers/references/eca-tools.md— ECA tool mappingdocs/README.eca.md— install/troubleshooting guidetests/eca/— plugin structure validation teststests/hooks/test-session-start.sh— ECA hook output test case.version-bump.json— registered the ECA marketplace versionscripts/sync-to-codex-plugin.sh— added/.eca-plugin/to excludesREADME.md,SKILL.md,docs/porting-to-a-new-harness.md— documentation pointersECA sets no harness-specific environment variables, so the
hooks/session-startscript falls into the existingelsebranch that emits{"additionalContext": "..."}— the SDK standard format that ECA'schatStarthook honors.The
postCompacthook ensures the bootstrap is re-injected after context compaction, matching the behavior of Claude Code'scompactmatcher.Is this change appropriate for the core library?
Yes. ECA is a general-purpose coding agent, not a project-specific or domain-specific tool. This adds a new harness integration using the same pattern as existing harnesses (Claude Code, Cursor, Copilot CLI, etc.). Skills, bootstrap injection, and tool mapping are general-purpose — they benefit anyone using ECA regardless of project type.
What alternatives did you consider?
config.jsonhooks section: Could work but would require every user to manually configure the hook, which is error-prone and doesn't match the install experience of other harnesses. The.eca-plugin/directory ships everything through the plugin install mechanism.Does this PR contain multiple unrelated changes?
No. All changes are part of a single new-harness integration.
Existing PRs
PR #1686 was a prior attempt at this same integration by the same author. It was closed to start fresh on a clean branch based on the latest
dev, incorporating all current contributor guidelines and porting requirements.Environment tested
New harness support
Clean-session transcript for "Let's make a react todo list"
The
brainstormingskill auto-triggers before any code is written, confirming the bootstrap injection works.Evaluation
chatStarthook. The model loadsusing-superpowers, then loadsbrainstorming, announces it, and enters the brainstorming flow (asking clarifying questions) before writing any code.Rigor
No skills content was modified. Only infrastructure files were added/changed: plugin directory structure, hook definitions, tool mapping reference, documentation, and tests. The one-line addition to
SKILL.md's Platform Adaptation section is a pointer entry (explicitly permitted by the porting guide as the sole allowed SKILL.md edit for a port).Human review
The complete diff was reviewed by Andrew Kravchuk before submission. The plugin was installed locally and tested in a live ECA session.
🤖 Generated with ECA (zai-coding-plan/glm-5.2)