PluginManifest
Defined in: plugin.ts:132
Properties
Section titled “Properties”adapters?
Section titled “adapters?”
optionaladapters?:string|string[]
Defined in: plugin.ts:185
optionalapp?:PluginAppConfig
Defined in: plugin.ts:267
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.
appScope?
Section titled “appScope?”
optionalappScope?:string
Defined in: plugin.ts:148
Which app the plugin applies to: recursive, financial, or shared.
author?
Section titled “author?”
optionalauthor?:string| {name?:string;url?:string; }
Defined in: plugin.ts:138
Author attribution — a plain string or { name, url }.
automations?
Section titled “automations?”
optionalautomations?:string|string[]
Defined in: plugin.ts:184
bundledOptIn?
Section titled “bundledOptIn?”
optionalbundledOptIn?:boolean
Defined in: plugin.ts:215
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).
category?
Section titled “category?”
optionalcategory?:string
Defined in: plugin.ts:144
Marketplace category.
optionalcli?:PluginCliConfig
Defined in: plugin.ts:253
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.
client_lifecycle?
Section titled “client_lifecycle?”
optionalclient_lifecycle?:Record<string,ClientLifecycleHandlerDeclaration>
Defined in: plugin.ts:207
color?
Section titled “color?”
optionalcolor?:string
Defined in: plugin.ts:141
commands?
Section titled “commands?”
optionalcommands?:string|string[]
Defined in: plugin.ts:183
Slash-command Markdown files contributed by the plugin.
comms?
Section titled “comms?”
optionalcomms?:string|string[]
Defined in: plugin.ts:156
Comms templates directory.
optionalcore?:boolean
Defined in: plugin.ts:217
Core platform plugin — boot-synced and cannot be disabled in the UI.
optionaldata?:PluginDataConfig
Defined in: plugin.ts:205
dependencies?
Section titled “dependencies?”
optionaldependencies?:string[]
Defined in: plugin.ts:208
description?
Section titled “description?”
optionaldescription?:string
Defined in: plugin.ts:136
detect?
Section titled “detect?”
optionaldetect?:PluginDetectConfig
Defined in: plugin.ts:204
diagnoseCommand?
Section titled “diagnoseCommand?”
optionaldiagnoseCommand?:string
Defined in: plugin.ts:238
greetings?
Section titled “greetings?”
optionalgreetings?:string|string[]
Defined in: plugin.ts:190
Session-greeting catalog JSON files. Each catalog is exposed as a greeting pack.
homepage?
Section titled “homepage?”
optionalhomepage?:string
Defined in: plugin.ts:139
hooks?
Section titled “hooks?”
optionalhooks?:string|string[]
Defined in: plugin.ts:198
optionalicon?:string
Defined in: plugin.ts:142
id:
string
Defined in: plugin.ts:133
installCommand?
Section titled “installCommand?”
optionalinstallCommand?:string
Defined in: plugin.ts:239
installUrl?
Section titled “installUrl?”
optionalinstallUrl?:string
Defined in: plugin.ts:247
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).
lifecycle?
Section titled “lifecycle?”
optionallifecycle?:Record<string,LifecycleHandlerDeclaration>
Defined in: plugin.ts:206
loginCommand?
Section titled “loginCommand?”
optionalloginCommand?:string
Defined in: plugin.ts:236
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. Kindauth.setupCommand— first-time / config setup, e.g.aws configure. Kindsetup.diagnoseCommand— health check / repair, e.g.gh auth status. Kinddiagnose.installCommand— install the CLI itself (pre-flight before auth). Kindinstall.mcpLoginCommand— authenticate ONE downstream MCP server through this CLI, e.g.codex mcp login {{server}}. Kindmcp-auth.mcpDiagnoseCommand— inspect a downstream MCP server’s connection state, e.g.claude mcp get {{server}}. Kindmcp-diagnose.
The two mcp* commands may contain a {{server}} placeholder, replaced with
the failing MCP server’s configured name. A template that needs {{server}}
is skipped when the adapter reported only an endpoint.
optionalmcp?:string|string[]
Defined in: plugin.ts:199
mcpDiagnoseCommand?
Section titled “mcpDiagnoseCommand?”
optionalmcpDiagnoseCommand?:string
Defined in: plugin.ts:241
mcpLoginCommand?
Section titled “mcpLoginCommand?”
optionalmcpLoginCommand?:string
Defined in: plugin.ts:240
min_recursive_version?
Section titled “min_recursive_version?”
optionalmin_recursive_version?:string
Defined in: plugin.ts:154
Minimum Recursive version this plugin supports; enforced at install.
optionalname?:string
Defined in: plugin.ts:134
optionalnpm?:object
Defined in: plugin.ts:260
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.
scripts?
Section titled “scripts?”
optionalscripts?:boolean
onboarding?
Section titled “onboarding?”
optionalonboarding?:PluginOnboardingConfig
Defined in: plugin.ts:279
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.
platforms?
Section titled “platforms?”
optionalplatforms?:string[]
Defined in: plugin.ts:152
OS allowlist (e.g. [“darwin”]); omit for all platforms.
private?
Section titled “private?”
optionalprivate?:boolean
Defined in: plugin.ts:150
Excluded from registry publishing.
providers?
Section titled “providers?”
optionalproviders?:string|string[]
Defined in: plugin.ts:196
Inference-provider catalog JSON. Each approved row becomes a connectable provider — no adapter code, since anything speaking the chat-completions protocol needs only an endpoint, an env var and a model list.
provides?
Section titled “provides?”
optionalprovides?:object
Defined in: plugin.ts:164
Structured provider declarations. Each key is a provider kind whose value is a ProvidesBlock, read by that kind’s registry:
sync_provider→ core-syncdiscoverSyncProviders(encrypted-bytes transport)auth_provider→ core-identitydiscoverAuthProviders(pluggable identity/permission backend)data_provider→ reserved
Index Signature
Section titled “Index Signature”[kind: string]: ProvidesBlock | undefined
auth_provider?
Section titled “auth_provider?”
optionalauth_provider?:ProvidesBlock
data_provider?
Section titled “data_provider?”
optionaldata_provider?:ProvidesBlock
sync_provider?
Section titled “sync_provider?”
optionalsync_provider?:ProvidesBlock
routes?
Section titled “routes?”
optionalroutes?:string|string[]
Defined in: plugin.ts:197
rules?
Section titled “rules?”
optionalrules?:string|string[]
Defined in: plugin.ts:181
settings?
Section titled “settings?”
optionalsettings?:PluginSettingsSchema
Defined in: plugin.ts:203
setupCommand?
Section titled “setupCommand?”
optionalsetupCommand?:string
Defined in: plugin.ts:237
setupSequence?
Section titled “setupSequence?”
optionalsetupSequence?:PluginSetupStep[]
Defined in: plugin.ts:273
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.
skills?
Section titled “skills?”
optionalskills?:string|string[]
Defined in: plugin.ts:180
soundDefaults?
Section titled “soundDefaults?”
optionalsoundDefaults?:Record<string,string>
Defined in: plugin.ts:179
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.
sounds?
Section titled “sounds?”
optionalsounds?:string|string[]
Defined in: plugin.ts:188
optionaltags?:string[]
Defined in: plugin.ts:146
Marketplace search tags.
themes?
Section titled “themes?”
optionalthemes?:string|string[]
Defined in: plugin.ts:187
thumbnail?
Section titled “thumbnail?”
optionalthumbnail?:string
Defined in: plugin.ts:140
tools?
Section titled “tools?”
optionaltools?:string|string[]
Defined in: plugin.ts:186
triggers?
Section titled “triggers?”
optionaltriggers?:PluginTriggersManifest
Defined in: plugin.ts:201
Marks this plugin as an event trigger source (Slack/Linear/webhook).
optionalui?:PluginUiManifest
Defined in: plugin.ts:202
version?
Section titled “version?”
optionalversion?:string
Defined in: plugin.ts:135