VS Code Extension Plugin System
December 4, 2025 ยท View on GitHub
The extension uses a plugin architecture. Each plugin implements
PrismaVSCodePlugin:
// packages/vscode/src/plugins/types.ts
interface PrismaVSCodePlugin {
name: string
enabled: () => Promise<boolean> | boolean
activate?: (context: ExtensionContext) => Promise<void> | void
deactivate?: () => Promise<void> | void
}
Current Plugins
| Plugin | Location | Purpose |
|---|---|---|
prisma-language-server | plugins/prisma-language-server | LSP client for the LS |
prisma-postgres-manager | plugins/prisma-postgres-manager | Manage Prisma Postgres DBs |
prisma-studio | plugins/prisma-studio | Launch Prisma Studio |
ai-tools | plugins/ai-tools | VS Code LM tools for Copilot |
Adding a New Plugin
- Create a new directory under
packages/vscode/src/plugins/ - Export a
PrismaVSCodePluginobject as default - Register it in
packages/vscode/src/plugins/index.ts
// plugins/my-plugin/index.ts
import { commands } from 'vscode'
import { PrismaVSCodePlugin } from '../types'
const plugin: PrismaVSCodePlugin = {
name: 'my-plugin',
enabled: () => true, // or check a condition
activate: async (context) => {
// Register commands, providers, etc.
context.subscriptions.push(
commands.registerCommand('prisma.myCommand', () => {
/* ... */
}),
)
},
deactivate: () => {},
}
export default plugin