Publishing plugins
Authoring loop
coro plugin init my-provider --kind scm|trackerscaffolds~/.coro/plugins/my-provider/withcoro-plugin.json, TypeScript sources, andintelligence/snippets/.- Implement
ScmPluginBase/TrackerPluginBaseplus optionalmcpServer()+normalizeInbound. npm run buildemitsindex.jsnext tocoro-plugin.json(loader requires this layout for drop-ins).coro plugin list(runner online) verifies registration; restartcoro startafter installs.
Publishing to npm
- Package name convention:
@scope/coro-plugin-fooorcoro-plugin-foo. - Include
coro-plugin.jsonat published root (CLI copies or rewritesentrypaths when installing).
Consumers run:
coro plugin install @coro-ai/plugin-gitlab# orcoro plugin install git+https://github.com/org/plugin.git --id gitlabcoro plugin install executes npm install inside ~/.coro/plugins/<id>/, guarantees a manifest exists (synthesising pointing into node_modules if needed), and reminds you to restart the runner.
Trust model
Plugins run in-process with runner credentials — treat them like admin code:
- Pin versions / verify checksums when installing from git URLs.
- Prefer first-party
@coro-ai/*packages for regulated environments. - Review
allowedMcpToolsto ensure a plugin is not exfiltrating excess scope.
coro plugin uninstall <id> wipes the drop-in directory; built-ins remain bundled with @coro-ai/runner.
Private registries
Because install is plain npm, configure .npmrc in the plugin host directory (or globally) for authenticated feeds before invoking coro plugin install.