Read the guide
Start with the getting-started guide: manifest format, capabilities, and the local dev loop.
Getting startedDevelopers
Build on a typed plugin API and MCP tools, then publish to the marketplace. Manifest, review, and distribution are handled for you.
Plugins in short
A plugin is a sandboxed bundle that mounts into named UI slots and talks to the workspace through the same typed API the product uses — scoped to exactly the capabilities it declares.
planoda.plugin.json{
"id": "acme.figma-preview",
"name": "Figma Preview",
"version": "1.0.0",
"slots": ["issue.panel"],
"capabilities": ["issues:read"],
"entry": "./dist/plugin.js",
"icon": "./icon.svg"
}The installing admin sees capabilities and consents before the plugin activates.
definePluginimport { definePlugin } from "@planoda/plugin-sdk";
export default definePlugin({
slot: "issue.panel",
render: ({ issue }) => (
<div>
<h3>Figma</h3>
{issue.figmaUrl ? (
<FigmaPreview url={issue.figmaUrl} />
) : (
<p>No Figma link on this issue.</p>
)}
</div>
),
});Runs sandboxed in a Web Worker — no ambient access beyond the granted capabilities.
issue.panelA panel inside the issue detail viewboard.sidebarA pane alongside a boardcommand.paletteCustom commands in ⌘Ksettings.tabA workspace-settings tab for configStart with the getting-started guide: manifest format, capabilities, and the local dev loop.
Getting startedDevelop against the typed plugin API and MCP tools. Test locally with scoped tokens before you ship.
Plugin docsSubmit your plugin for review. We handle distribution, versioning, and install flows in the marketplace.
Submit a pluginFAQ
Build with us
Everything you need to build on Planoda.