Loading...
Loading...
OpenCode plugins, @opencode-ai/plugin, @opencode-ai/plugin/tui, plugin hooks, custom tools, TUI routes, slots, keymaps, and packaging. Use when creating, editing, reviewing, testing, or publishing server or TUI plugins for OpenCode.
npx skill4agent add sveltejs/ai-tools writing-opencode-plugins| Need | Plugin target | Import | Configuration |
|---|---|---|---|
| Hooks, tools, auth, providers, model parameters, shell environment | Server | | |
| Commands, keybindings, routes, dialogs, slots, themes, notifications | TUI | | Explicit |
| Both | Two target-only entrypoints | Both imports in separate files | Package exports |
servertuipackages/plugin/src/index.tspackages/plugin/src/tool.tspackages/plugin/src/tui.tspackages/opencode/specs/tui-plugins.mdpackages/opencode/src/plugin/shared.tspackages/opencode/src/plugin/loader.tsimport type { Plugin, PluginModule } from '@opencode-ai/plugin';
const server: Plugin = async ({ client, directory }, options) => ({
dispose: async () => {},
});
export default {
id: 'acme.example',
server,
} satisfies PluginModule & { id: string };/** @jsxImportSource @opentui/solid */
import type { TuiPlugin, TuiPluginModule } from '@opencode-ai/plugin/tui';
const tui: TuiPlugin = async (api) => {
api.ui.toast({ message: 'Plugin loaded' });
};
export default {
id: 'acme.example-tui',
tui,
} satisfies TuiPluginModule & { id: string };idsatisfiesoptionsRecord<string, unknown>process.cwd()AbortSignalclient.app.log()console.logpackages/opencode/test/plugin/packages/opencode/test/cli/tui/packages/tuibun typecheckengines.opencode