Soubi

Plugin Config

Set plugin identity, target defaults, MCP servers, and packaged files in plugin.config.ts.

plugin.config.ts describes the plugin as a whole. It is optional; without it, Soubi uses the source directory name as the plugin ID.

Define the plugin

plugin.config.ts
import { defineConfig } from "soubi";

export default defineConfig({
  id: "diff-river",
  description: "Review a diff with focused specialist agents.",
  version: "0.1.0",
  author: "Your team",
  marketplace: {
    category: "code-review",
    keywords: ["diff", "review"],
  },
});

id is required when the file exists. Keep it stable: generated server names, ownership records, and some native manifests use it as identity.

Config fields

FieldPurpose
idStable plugin identifier
descriptionHuman-readable summary
versionVersion written into native manifests where supported
authorAuthor metadata
marketplaceAdditional catalog metadata passed to compatible targets
harnessesDefault list of adapters to build
harnessDefaultsPer-target fallback defaults and adapter-specific values
mcpServersNamed stdio or HTTP MCP servers
assetsExisting files to package with the plugin
filesIn-memory files with explicit destination paths

Choose default targets

Omit harnesses to build every registered adapter. Set it when the plugin intentionally supports a smaller target set:

plugin.config.ts
export default defineConfig({
  id: "diff-river",
  harnesses: ["claude", "codex", "opencode"],
});

A CLI --harness flag narrows the active targets for that command.

Set target defaults

Use harnessDefaults for policy that applies to every feature emitted for one target:

plugin.config.ts
export default defineConfig({
  id: "diff-river",
  harnessDefaults: {
    codex: { onUnsupported: "fail" },
  },
});

A feature-level onUnsupported value takes precedence. Read Fallback Tiers before making an entire target strict.

Package additional files

Use assets for existing paths and files for generated or in-memory content. Assets covers directory loading, executable files, and portable destination paths.

On this page