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
- A plugin lives in
.decisive/in your connected repo. It's just TypeScript that imports@decisive/sdk. - The action is the atom — one capability you can expose to the AI, the coding agents, a slash command, or a panel.
- Your code talks to Decisive only through the host API (
ctx.*). That stable boundary is why platform updates don't break your plugin. - UI is declarative — you return Block Kit; Decisive renders it natively, so it always looks on-brand.
- 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() };
}
})
]
});
Read next
| 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).