IdeA Plugin SDK
Public TypeScript SDK for IdeA plugins.
The SDK defines the stable manifest and runtime types used by plugins loaded by
IdeA. A plugin ships an idea-plugin.json manifest plus an ESM entrypoint that
exports activate(ctx).
Start Here
- Manifest: required fields, capabilities and contribution ids.
- Activation And Context:
activate(ctx), lifecycle, logging, storage and subscriptions. - Menus: top-level menus, native menu insertion and command registration.
- Commands And Feedback: command return values, skipped work and background tasks.
- Layouts With React: React/JSX/hooks layout authoring with host-provided React.
- Windows: opening plugin layouts in detached OS windows.
- Services: workspace files and bounded
workspace.execTool, tasks, tooling, events, config, terminal and windows facades. - Packaging And Distribution: build output, archive layout, hot reload and dependency rules.
- Codex Skills And IdeA Plugins: separate IdeA-native plugin skills from Codex plugin discovery.
- Project Plugin Assignments: enable plugins per project and assign skills and MCP tools to agents.
The installable example lives in examples/hello-plugin.
It demonstrates a menu command, storage, background-task feedback, a React layout
component and services.windows.open(...).
For short project-scoped external tools, use
ctx.services.workspace.execTool() with an explicit manifest
permissions.workspaceExec allow rule. See Services and
Manifest. The primitive is generic and does not expose a
native Git/SCM API.
Menu commands that open or focus a plugin view return status: "opened"
(including alreadyOpen: true) and remain UI-silent on success. Keep diagnostic
views accessible when optional tools are missing, and use the structured
skipped/failed feedback contract for genuinely impossible actions; see
Commands And Feedback and Menus.
Install
npm install
Build
npm run build
Validate The Example
npm run typecheck:examples
npm run package:hello-plugin
The example archive is written to:
examples/hello-plugin/build/hello-plugin-0.1.0.zip