Skip to content
PricingReleases

PluginManifest

Defined in: plugin.ts:113

optional adapters?: string | string[]

Defined in: plugin.ts:154


optional app?: PluginAppConfig

Defined in: plugin.ts:220

Desktop-app provider config. For providers that ship as a native macOS app with a local HTTP API rather than a CLI (e.g. Ollama, Osaurus). When present, onboarding renders a Download → Open → Models flow instead of the CLI Install → Sign in → Ready flow.


optional appScope?: string

Defined in: plugin.ts:129

Which app the plugin applies to: recursive, financial, or shared.


optional author?: string | { name?: string; url?: string; }

Defined in: plugin.ts:119

Author attribution — a plain string or { name, url }.


optional automations?: string | string[]

Defined in: plugin.ts:153


optional bundledOptIn?: boolean

Defined in: plugin.ts:178

When true, the bundled copy is marketplace-only — skills/rules/hooks/tools do not load until the user installs the plugin into ~/.recursive/…/installed/. Adapter plugins stay bundle-scanned so onboarding can browse them without copying; use this for optional integrations (Slack, Memory, verify hooks).


optional category?: string

Defined in: plugin.ts:125

Marketplace category.


optional cli?: PluginCliConfig

Defined in: plugin.ts:206

How to probe whether this plugin’s CLI is installed. bin defaults to the adapter’s terminal.command; versionArgs (e.g. ['--version']) capture a version string when present. Used by GET /api/adapters/cli-status.


optional client_lifecycle?: Record<string, ClientLifecycleHandlerDeclaration>

Defined in: plugin.ts:170


optional color?: string

Defined in: plugin.ts:122


optional comms?: string | string[]

Defined in: plugin.ts:137

Comms templates directory.


optional core?: boolean

Defined in: plugin.ts:180

Core platform plugin — boot-synced and cannot be disabled in the UI.


optional data?: PluginDataConfig

Defined in: plugin.ts:168


optional dependencies?: string[]

Defined in: plugin.ts:171


optional description?: string

Defined in: plugin.ts:117


optional detect?: PluginDetectConfig

Defined in: plugin.ts:167


optional diagnoseCommand?: string

Defined in: plugin.ts:193


optional greetings?: string | string[]

Defined in: plugin.ts:159

Session-greeting catalog JSON files. Each catalog is exposed as a greeting pack.


optional homepage?: string

Defined in: plugin.ts:120


optional hooks?: string | string[]

Defined in: plugin.ts:161


optional icon?: string

Defined in: plugin.ts:123


id: string

Defined in: plugin.ts:114


optional installCommand?: string

Defined in: plugin.ts:194


optional installUrl?: string

Defined in: plugin.ts:200

Docs / landing URL for installing this plugin’s CLI. Shown as a “learn more” link beside the install action (and as the fallback when no installCommand can be auto-run, e.g. a download page).


optional lifecycle?: Record<string, LifecycleHandlerDeclaration>

Defined in: plugin.ts:169


optional loginCommand?: string

Defined in: plugin.ts:191

Terminal-action catalog (declarative, resolved by the server’s resolveTerminalAction). Each is an interactive CLI command the platform can offer in a floating terminal sheet — surfaced as a one-click pill on plugin cards, settings rows, and error states.

  • loginCommand — (re)authenticate, e.g. codex login. Kind auth.
  • setupCommand — first-time / config setup, e.g. aws configure. Kind setup.
  • diagnoseCommand— health check / repair, e.g. gh auth status. Kind diagnose.
  • installCommand — install the CLI itself (pre-flight before auth). Kind install.

optional mcp?: string | string[]

Defined in: plugin.ts:162


optional min_recursive_version?: string

Defined in: plugin.ts:135

Minimum Recursive version this plugin supports; enforced at install.


optional name?: string

Defined in: plugin.ts:115


optional npm?: object

Defined in: plugin.ts:213

npm install behavior for the plugin’s package.json dependencies. Lifecycle scripts (postinstall etc.) are disabled by default; a plugin that genuinely needs them declares "npm": { "scripts": true } and that fact is disclosed at install time.

optional scripts?: boolean


optional onboarding?: PluginOnboardingConfig

Defined in: plugin.ts:232

Declarative onboarding shown after marketplace installation and from the plugin settings page. Unlike setupSequence, these steps may collect plugin settings or link to an external setup console.


optional platforms?: string[]

Defined in: plugin.ts:133

OS allowlist (e.g. [“darwin”]); omit for all platforms.


optional private?: boolean

Defined in: plugin.ts:131

Excluded from registry publishing.


optional provides?: Record<string, unknown>

Defined in: plugin.ts:139

Structured provider declarations (sync_provider, data_provider).


optional routes?: string | string[]

Defined in: plugin.ts:160


optional rules?: string | string[]

Defined in: plugin.ts:152


optional settings?: PluginSettingsSchema

Defined in: plugin.ts:166


optional setupCommand?: string

Defined in: plugin.ts:192


optional setupSequence?: PluginSetupStep[]

Defined in: plugin.ts:226

Ordered “getting started” steps, surfaced as a checklist after install and during onboarding. Each step reuses the terminal-action catalog kinds and, when command is omitted, the matching manifest command field.


optional skills?: string | string[]

Defined in: plugin.ts:150


optional soundDefaults?: Record<string, string>

Defined in: plugin.ts:149

Sound packs only — an explicit mapping from a notification event to a sound slug (the audio file’s stem). Lets a pack declare which of its sounds plays for each event when the user applies the pack in Notifications settings. Keys are the client’s NotificationSoundKeys (soundSessionStarted, soundSessionComplete, soundQuestionAsked, soundSessionError, soundAppOpen); the map may be partial. Any event left unmapped — or whose slug isn’t present in the pack — falls back to keyword-heuristic matching.


optional sounds?: string | string[]

Defined in: plugin.ts:157


optional tags?: string[]

Defined in: plugin.ts:127

Marketplace search tags.


optional themes?: string | string[]

Defined in: plugin.ts:156


optional thumbnail?: string

Defined in: plugin.ts:121


optional tools?: string | string[]

Defined in: plugin.ts:155


optional triggers?: PluginTriggersManifest

Defined in: plugin.ts:164

Marks this plugin as an event trigger source (Slack/Linear/webhook).


optional ui?: PluginUiManifest

Defined in: plugin.ts:165


optional version?: string

Defined in: plugin.ts:116


optional workflows?: string | string[]

Defined in: plugin.ts:151