Skip to content

Plugins / Marketplace#

Plugins let you share and reuse ECA configuration across projects and teams. A plugin source is a git repository or local directory containing a marketplace of plugins, each providing any combination of skills, agents, commands, rules, hooks, MCP servers, and config overrides.

How it works#

flowchart TD
    A[ECA has a 'plugins' in config.json] --> B{Git URL or local path?}
    B -->|git| C[Clone to ~/.eca/cache/plugins]
    B -->|local| D[Use directory directly]
    C --> E[Read .eca-plugin/marketplace.json]
    D --> E
    E --> F[Read plugins from 'install']
    F --> G[Merge into final ECA config]
  1. You register one or more sources (git URL or local path) and list plugin names in install.
  2. ECA resolves each source — cloning git repos to a local cache or using the local path directly.
  3. Each source provides a marketplace (.eca-plugin/marketplace.json) listing its available plugins.
  4. ECA matches install names against the marketplace, then discovers components from each matched plugin directory.
  5. All components are merged into the config waterfall — user config always takes precedence on conflicts.

Commands#

/plugins#

Lists all available plugins from your configured marketplaces. Plugins that are already installed are marked with ✅.

/plugins

/plugin-install#

Installs a plugin by adding it to the install list in your global config.

/plugin-install <plugin-name>
/plugin-install <plugin-name@marketplace>

Use <plugin-name@marketplace> to disambiguate when multiple sources provide a plugin with the same name. After installing, restart ECA for the plugin to take effect.

Pointing to a plugin source / marketplace#

Add a plugins key to your config with one or more named sources and an install array:

~/.config/eca/config.json
{
  "plugins": {
    "my-org": {
      "source": "https://github.com/my-org/eca-plugins.git"
    },
    "install": ["code-review", "security-scanner"]
  }
}
.eca/config.json
{
  "plugins": {
    "local-dev": {
      "source": "/home/user/my-eca-plugins"
    },
    "install": ["my-plugin"]
  }
}

ECA searches all registered sources when resolving install entries:

~/.config/eca/config.json
{
  "plugins": {
    "company": {
      "source": "https://github.com/company/eca-plugins.git"
    },
    "community": {
      "source": "https://github.com/community/shared-plugins.git"
    },
    "install": ["company-standards", "linter-setup", "shared-skills"]
  }
}

Creating a plugin source (Plugins marketplace)#

A plugin source is a directory (typically a git repo) with a .eca-plugin/marketplace.json file that lists available plugins.

Marketplace file#

.eca-plugin/marketplace.json
{
  "plugins": [
    {
      "name": "code-review",
      "description": "Agents and skills for thorough code review",
      "source": "plugins/code-review"
    },
    {
      "name": "security-scanner",
      "description": "Security-focused rules and hooks",
      "source": "plugins/security-scanner"
    }
  ]
}

Each plugin entry has:

Field Description
name Unique plugin name (used in install)
description Human-readable description
source Relative path from the repo root to the plugin directory

Plugin directory structure#

Each plugin directory can contain any combination of:

plugins/code-review/
├── skills/
│   └── review-checklist/
│       └── SKILL.md
├── agents/
│   └── reviewer.md
├── commands/
│   └── review.md
├── rules/
│   └── code-standards.md
├── hooks/
│   └── hooks.json
├── .mcp.json
└── eca.json
Path What it provides Details
skills/ Skill definitions Each subfolder follows the agentskills.io spec with a SKILL.md
agents/*.md Agent definitions Markdown files with YAML frontmatter, same format as local agents
commands/*.md Custom commands Markdown command files, same format as local commands
rules/** Rule files Any files under rules/ are loaded as rules
hooks/hooks.json Hooks ECA hook format
.mcp.json MCP server definitions Standard {"mcpServers": {...}} format
eca.json Config overrides Arbitrary ECA config keys deep-merged into config

All paths are optional — include only what your plugin needs.

plugins/gif-maker/
└── skills/
    └── gif-generator/
        ├── SKILL.md
        └── scripts/
            └── generate.py
plugins/security-scanner/
├── hooks/
│   └── hooks.json
└── .mcp.json
plugins/team-defaults/
└── eca.json
plugins/company-standards/
├── skills/
│   └── internal-api/
│       └── SKILL.md
├── agents/
│   └── reviewer.md
├── commands/
│   └── deploy.md
├── rules/
│   └── coding-standards.md
├── hooks/
│   └── hooks.json
├── .mcp.json
└── eca.json