Plugins
Plugins are plain TypeScript modules registered with Coro without forks of runner core logic. Everything interesting—Git providers, ticketing, bespoke LLM executors—is expressible behind small surfaces the harness already understands.
The three canonical kinds
| Kind | Responsibility | MCP flavour |
|---|---|---|
| SCM | Clone repos, manipulate branches/tags, PR lifecycle, webhook parsing | Namespaced tools such as mcp__coro__scm_* guarded by Runner |
| Tracker | Issues, assignments, transitions, mirrored child campaigns | Namespaced tracker tools guarded by Runner |
| Executor | How executePhase() talks to-model (Anthropic Claude today, adapters later) | Not exposed directly to Markdown—runner loads PhaseExecutor implementations |
Agents stay Markdown-clean: they declare intent (“clone repo”, “merge PR”) referencing generic tool names—plugins translate to GitHub/GitLab/Bitbucket specifics.
MCP-first ergonomics
Tool schemas ship with the MCP server embedded in-runner. That buys:
- Stable JSON shapes for dashboards and auditors
- Straightforward mocking in integration tests for plugin authors
- Clear delineation between agent-visible MCP tools vs internal Runner APIs (
PluginRegistry)
Dive deeper into extension
Starter topics live under Extending Coro:
- SDK overview — Scaffold and publish out-of-repo plugins compliant with
@coro-ai/plugin-sdk.
Contribution guides for filesystem layout and packaging conventions sit alongside Contributing → local setup when preparing patches upstream.