intellij-plugin
Installation
SKILL.md
IntelliJ Plugin Skill
Develop plugins for any IntelliJ Platform–based IDE with Kotlin, the IntelliJ Platform Gradle Plugin 2.x, and plugin.xml — from scaffolding through publishing to the JetBrains Marketplace.
Use Kotlin. The IntelliJ Platform itself is written mostly in Kotlin, all new APIs target Kotlin first, and Java-only development is no longer supported. Target JDK 21 on current platform builds.
Core Concepts
The IntelliJ Platform is an application that hosts plugins. Understanding these building blocks prevents the most common mistakes:
- Application — the running IDE process; a singleton accessible via
ApplicationManager.getApplication(). Never call read/write operations on it without the right threading model. - Project — an open workspace; multiple Projects can exist at once. Code that holds project state must be per-project, not global.
- Module — a unit within a Project (a content root, SDK, dependencies).
- Virtual File System (VFS) — the platform's in-memory mirror of the physical file system. Always go through
VirtualFile/VfsUtil, neverjava.io.File, for files the IDE manages. - PSI (Program Structure Interface) — the syntax-tree layer over source files.
PsiFile,PsiElement,PsiClassare how you inspect and modify code. PSI is language-aware (Java, Kotlin, XML, …). - Action — a user-invoked command (menu item, toolbar button, shortcut) extending
AnAction. - Service — a managed singleton (
AppLevel,ProjectLevel,ModuleLevel) obtained viaService.getService(...)/project.getService(...). The lifecycle and threading rules are handled for you — prefer services over hand-rolled singletons. - Extension Point (EP) — the platform's pluggability mechanism. Plugins contribute extensions to platform-defined EPs (
<extensions>) or declare their own (<extensionPoints>) for other plugins to implement.