Rio
adr/0017-contribution-points.mdRaw Markdown · GitHub ↗

ADR-0017: Contribution points for extensions

  • Status: Accepted, not implemented (the general plugin platform is deferred)
  • Date: 2026-06-24
  • Deciders: jka
  • Decision: D17

Context

Given the plugin model of ADR-0016, rio needs a defined surface of things a plugin may add, so the core can stay minimal and the extension story is not an afterthought.

Decision

A plugin may register:

  • commands (for a command palette and key bindings);
  • key bindings;
  • event subscriptions (buffer, save, git and similar events);
  • providers: formatter, linter or diagnostics, syntax highlighter, LLM provider, version-control backend;
  • UI contributions, declaratively (ADR-0018).

Buffer and text manipulation reuse the existing buffer.* operations. rio ships some first-party plugins on the same API to keep it proven in use; even syntax highlighting or an LSP bridge may be plugins rather than core.

Consequences

  • The core stays small and the plugin API is the extensibility story.
  • Until the platform is built, individual contribution kinds ship on dedicated, simpler seams: highlighters (ADR-0032), editing modes (ADR-0038), themes (ADR-0024), providers (ADR-0066). These are designed so a later general platform can absorb them.