- New plugin-discovery.ts: scans ~/.claude/plugins/marketplaces/ and
external_plugins/, reads .claude-plugin/plugin.json manifests, merges
enabledPlugins across user/project/local settings layers with write
escalation to local when higher layers override
- Rewrite /api/plugins and /api/plugins/[id] to use real plugin manifests
with name@marketplace composite keys, blocklist, and multi-layer
enable/disable with CAS-style write escalation
- SDK plugin loading delegated to SDK itself (no explicit queryOptions.plugins)
— ensures parity with Claude CLI's settingSources resolution
- Extended init meta forwarding (plugins, mcp_servers, output_style) in
claude-client.ts and useSSEStream.ts
- Per-provider plugin cache in agent-sdk-capabilities.ts with
getCachedPlugins/setCachedPlugins
- Skills route: provider-scoped plugin cache lookup via sessionId param,
external_plugins commands scan, loaded status annotation
- Updated PluginInfo type with marketplace, location, author, capability flags
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>