Decisive Extensions — Developer Docs

Build custom integrations and AI capabilities for Decisive. An extension can pull data in, push actions out, render native UI, and give your team's AI new tools — all from a folder in your connected repo.

These are the developer docs (how to build a plugin). For the platform design and rationale, see EXTENSIONS.md.

What you can build

  • AI tools — give @AI (and the cloud Claude Code agents) new abilities.
  • Data in — pull from Intercom, Notion, your own API… on demand or on a schedule.
  • Actions out — generate content, post to chat, create tasks/pages.
  • Native UI — settings forms, dashboards, modals via declarative Block Kit.
  • Webhooks — react to inbound events from external services.

The mental model in 60 seconds

  1. A plugin lives in .decisive/ in your connected repo. It's just TypeScript that imports @decisive/sdk.
  2. The action is the atom — one capability you can expose to the AI, the coding agents, a slash command, or a panel.
  3. Your code talks to Decisive only through the host API (ctx.*). That stable boundary is why platform updates don't break your plugin.
  4. UI is declarative — you return Block Kit; Decisive renders it natively, so it always looks on-brand.
  5. Code lives in your repo; secrets live in Decisive (encrypted, injected at runtime). Decisive syncs your repo, an admin reviews & enables the plugin, done.
import { definePlugin, defineTool } from '@decisive/sdk';

export default definePlugin({
  name: 'orders',
  apiVersion: 1,
  secrets: [{ key: 'SHOP_API_KEY', label: 'Shop API key', required: true }],
  actions: [
    defineTool<{ id: string }>({
      name: 'lookup_order',
      description: 'Look up an order by id.',
      input: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] },
      needs: ['SHOP_API_KEY'],
      async run(input, ctx) {
        const res = await ctx.http(`https://api.shop.com/orders/${input.id}`, {
          headers: { authorization: `Bearer ${ctx.secrets.SHOP_API_KEY}` }
        });
        return { data: await res.json() };
      }
    })
  ]
});
Doc What's in it
Getting started Build, install, and run your first plugin
Concepts Actions, surfaces, declarative vs executable, the host boundary, lifecycle
Host API reference Everything on ctx.*
Block Kit reference The UI vocabulary + the interaction loop
API reference define* helpers, types, the manifest

Reference plugins

Three complete, type-checked examples in decisive-sdk/examples/:

  • content-generator — multi-surface action, grounded in workspace context, interactive UI.
  • intercom-pain-points — on-demand data pull + a panel.
  • knowledge-sync — scheduled context source (ambient AI context).