Soubi

Compatibility

A side-by-side view of Soubi's twenty-two adapters and the fallbacks that matter.

Soubi resolves every feature against the selected harness before it writes files. The result is native support, a documented translation, an explicit drop, or a target-only failure.

Use this page to compare targets. The adapter index has emitted paths and translation details for each harness.

Core adapters

FeatureClaudeCodexGeminiOpenCodeCursorCopilotWindsurfPiHermesKiroAmpDroid
instructions
skill
command
agent
hook✅¹✅¹✅²✅¹
MCP
tool
asset

Additional adapters

FeatureOMPDevinKimiQoderKiloMastraCodeGrokAntigravityMakiHerdr
instructions
skill
command
agent
hook✅¹✅¹
MCP
tool
asset

✅ native or lossless generated support · ◐ usable translation with a warning · — dropped with a warning

¹ OpenCode, Kilo, Pi, OMP, and Amp generate TypeScript callbacks instead of declarative hook files.

² Hermes generates a Python plugin. MCP servers are written as a config.yaml merge fragment instead of replacing the user's global configuration.

The differences that affect design

Generated runtime code

Some harnesses expose an SDK instead of a file schema. Soubi generates code for those surfaces:

  • OpenCode and Kilo use TypeScript plugin modules for hooks and tools.
  • Pi and OMP use TypeScript extensions.
  • Amp uses its TypeScript Plugin API.
  • Hermes uses a Python plugin.
  • Maki uses a Lua plugin.

The generated source is part of the artifact. You can inspect it in .soubi-out/<harness>/ before installation.

Agent fallbacks

Custom agents are the least portable feature:

  • Kimi and MastraCode turn agents into invocable specialist skills.
  • Amp and Maki turn agents into delegation tools backed by their runtime APIs.
  • OMP folds the role into instructions.
  • Herdr exposes the definition as a readable action.
  • Windsurf and Pi drop it because there is no safe equivalent.

If the agent is load-bearing, set onUnsupported: "fail" on that definition. Only incompatible targets are excluded.

Global configuration

Most adapters emit repository-local files. Three targets need extra attention:

  • Windsurf MCP installation writes to its global MCP configuration.
  • Hermes emits a merge fragment for the global config.yaml.
  • Maki installs plugins to a user-global directory and should use soubi install --harness maki --global.

Preview those installs with --dry-run.

Check the exact result

The table summarizes feature-level support. Hook events and handler types are more specific, so use check for the plugin you are actually shipping:

pnpm soubi check ./my-plugin --harness claude,codex,opencode

Diagnostics name the feature, target, fallback tier, and emitted replacement. See fallback tiers for control over drop, degrade, and fail behavior.

On this page