Skip to content

Latest commit

Β 

History

History
113 lines (83 loc) Β· 3.72 KB

CONTRIBUTING.md

File metadata and controls

113 lines (83 loc) Β· 3.72 KB

Contributing to ECA Plugins

Thank you for your interest in contributing to the ECA plugin marketplace! This guide walks you through the process of submitting a new plugin.

Plugin structure

Each plugin lives under plugins/<plugin-name>/ and can provide any combination of:

plugins/my-plugin/
β”œβ”€β”€ skills/              # Skill directories (each subfolder is a skill)
β”‚   └── my-skill/
β”‚       └── my-skill.md
β”œβ”€β”€ agents/              # Agent definitions (Markdown files)
β”‚   └── my-agent.md
β”œβ”€β”€ commands/            # Custom commands (Markdown files)
β”‚   └── my-command.md
β”œβ”€β”€ rules/               # Rule files applied to conversations
β”‚   └── my-rule.md
β”œβ”€β”€ hooks/               # Hook definitions
β”‚   └── hooks.json
β”œβ”€β”€ .mcp.json            # MCP server definitions
β”œβ”€β”€ eca.json             # Arbitrary config overrides
└── README.md            # Documentation (displayed on the marketplace website)

You don't need all of these β€” include only the components your plugin provides.

Adding a plugin

1. Create the plugin directory

mkdir -p plugins/my-plugin

2. Add your plugin components

Add the files for your plugin (skills, agents, rules, etc.) following the structure above.

3. Add a README

Create plugins/my-plugin/README.md describing what your plugin does, how to use it, and any configuration options.

4. Register in the marketplace

Add an entry to .eca-plugin/marketplace.json:

{
  "name": "my-plugin",
  "description": "A short description of what your plugin does",
  "source": "plugins/my-plugin",
  "category": "Development",
  "tags": ["relevant", "tags"],
  "author": "Your Name",
  "icon": "πŸ”§"
}

Fields:

Field Required Description
name Yes Unique plugin identifier (kebab-case)
description Yes Short description (one sentence)
source Yes Path to the plugin directory (relative to repo root)
category Yes One of: Development, Productivity, Workflow, Security, Documentation, DevOps
tags Yes Array of relevant tags for search/filtering
author Yes Author name or organization
icon No Emoji icon for the plugin card
featured No Set to true for featured plugins (maintainers only)

5. Open a pull request

Submit a PR with your plugin. We'll review it for:

  • Usefulness β€” Does it provide value to ECA users?
  • Quality β€” Are the skills/agents/rules well-written?
  • Safety β€” Does it follow responsible AI practices?
  • Documentation β€” Is the README clear and helpful?

Guidelines

Hook scripts

  • Namespace hook keys with <plugin-name>.<hook-name> (e.g., secret-guard.scan, pomodoro.check). This avoids collisions when multiple plugins are installed.
  • Hook scripts that need to parse JSON should use jq, which is expected as a runtime dependency. If your hook relies on jq, check for its availability at the start and degrade gracefully with a clear error message if it's missing.

General

  • Keep plugin names short and descriptive (kebab-case)
  • Write clear, concise skill/agent prompts
  • Include examples in your README
  • Test your plugin locally before submitting (add it as a local source in your ECA config)
  • One plugin per PR unless they're closely related

Testing locally

You can test your plugin by pointing ECA to your local clone:

{
  "plugins": {
    "local": { "source": "/path/to/eca-plugins" },
    "install": ["my-plugin"]
  }
}

Questions?

Open an issue or reach out on Slack.