packwise-skills 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursorrules +23 -23
- package/CLAUDE.md +25 -25
- package/LICENSE +21 -0
- package/README.md +404 -295
- package/audit.md +224 -224
- package/bin/packwise.js +322 -155
- package/install.sh +123 -0
- package/package.json +32 -31
- package/skill.md +944 -719
- package/sub-skills/ai/local-llm.md +183 -183
- package/sub-skills/ai/python-ml.md +164 -164
- package/sub-skills/backend/go-server.md +184 -184
- package/sub-skills/backend/java-spring.md +241 -241
- package/sub-skills/backend/node-server.md +164 -164
- package/sub-skills/backend/php-laravel.md +175 -175
- package/sub-skills/backend/python-server.md +164 -164
- package/sub-skills/backend/rust-backend.md +118 -118
- package/sub-skills/cli/python-cli.md +236 -236
- package/sub-skills/cli/sdk-library.md +497 -497
- package/sub-skills/cloud/ci-cd-pipelines.md +350 -350
- package/sub-skills/cloud/docker.md +191 -191
- package/sub-skills/cloud/kubernetes.md +277 -277
- package/sub-skills/cloud/payment-integration.md +307 -307
- package/sub-skills/cross-platform/multiplatform.md +252 -252
- package/sub-skills/desktop/electron.md +783 -783
- package/sub-skills/desktop/game-dev.md +443 -443
- package/sub-skills/desktop/native-app.md +123 -123
- package/sub-skills/desktop/scenarios.md +443 -443
- package/sub-skills/desktop/smart-platforms.md +324 -324
- package/sub-skills/desktop/tauri.md +428 -428
- package/sub-skills/desktop/vr-ar.md +252 -252
- package/sub-skills/desktop/web-to-desktop.md +153 -153
- package/sub-skills/embedded/car-infotainment.md +129 -129
- package/sub-skills/embedded/esp32.md +184 -184
- package/sub-skills/embedded/ros.md +150 -150
- package/sub-skills/embedded/stm32.md +160 -160
- package/sub-skills/mobile/android.md +322 -322
- package/sub-skills/mobile/capacitor.md +232 -232
- package/sub-skills/mobile/flutter-mobile.md +138 -138
- package/sub-skills/mobile/harmonyos.md +150 -150
- package/sub-skills/mobile/ios.md +245 -245
- package/sub-skills/mobile/react-native.md +443 -443
- package/sub-skills/mobile/wearables.md +230 -230
- package/sub-skills/plugins/browser-extension.md +308 -308
- package/sub-skills/plugins/jetbrains-plugin.md +226 -226
- package/sub-skills/plugins/vscode-extension.md +204 -204
- package/sub-skills/security/security-tools.md +174 -174
- package/sub-skills/web/monorepo.md +274 -274
- package/sub-skills/web/pwa.md +220 -220
- package/sub-skills/web/serverless-edge.md +295 -295
- package/sub-skills/web/spa.md +266 -266
- package/sub-skills/web/ssr.md +228 -228
- package/sub-skills/web/wasm.md +243 -243
|
@@ -1,226 +1,226 @@
|
|
|
1
|
-
# JetBrains Plugin Build Sub-Skill
|
|
2
|
-
|
|
3
|
-
Develop and publish plugins for IntelliJ-based IDEs (IntelliJ IDEA, PyCharm, WebStorm, Android Studio, etc.).
|
|
4
|
-
|
|
5
|
-
**Current version**: Gradle IntelliJ Plugin 2.x / IntelliJ Platform 2024.3+ (2025-2026)
|
|
6
|
-
|
|
7
|
-
## When to Use
|
|
8
|
-
|
|
9
|
-
- Building plugins for IntelliJ IDEA, PyCharm, WebStorm, CLion, Android Studio, etc.
|
|
10
|
-
- Need deep IDE integration (refactoring, code analysis, tool windows)
|
|
11
|
-
- Want to distribute via JetBrains Marketplace
|
|
12
|
-
|
|
13
|
-
## Key Features
|
|
14
|
-
|
|
15
|
-
- **Gradle IntelliJ Plugin** — standard build tooling (replaced legacy Plugin DevKit)
|
|
16
|
-
- **Kotlin/Java** — both supported; Kotlin recommended for new plugins
|
|
17
|
-
- **Plugin Verifier** — automated compatibility checking across IDE versions
|
|
18
|
-
- **Dynamic plugins** — hot-reload without restarting IDE (since Platform 2020.1)
|
|
19
|
-
|
|
20
|
-
## Prerequisites
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
# JDK 17+ (JBR — JetBrains Runtime recommended)
|
|
24
|
-
# Gradle 8.x (wrapper included in template)
|
|
25
|
-
# IntelliJ IDEA (for development and testing)
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Project Setup
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
# Option 1: IntelliJ Plugin Template (recommended)
|
|
32
|
-
# File → New → Project → IntelliJ Platform Plugin
|
|
33
|
-
# Or clone from GitHub:
|
|
34
|
-
git clone https://github.com/JetBrains/intellij-platform-plugin-template.git my-plugin
|
|
35
|
-
cd my-plugin
|
|
36
|
-
|
|
37
|
-
# Option 2: Gradle init
|
|
38
|
-
# Use IntelliJ Plugin Generator: https://plugins.jetbrains.com/docs/intellij/generating-plugin.html
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Build Configuration
|
|
42
|
-
|
|
43
|
-
```kotlin
|
|
44
|
-
// build.gradle.kts
|
|
45
|
-
plugins {
|
|
46
|
-
id("java")
|
|
47
|
-
id("org.jetbrains.kotlin.jvm") version "2.0.21"
|
|
48
|
-
id("org.jetbrains.intellij.platform") version "2.2.1"
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
intellijPlatform {
|
|
52
|
-
pluginConfiguration {
|
|
53
|
-
id = "com.example.myplugin"
|
|
54
|
-
name = "My Plugin"
|
|
55
|
-
version = "1.0.0"
|
|
56
|
-
description = "Plugin description"
|
|
57
|
-
ideaVersion {
|
|
58
|
-
sinceBuild = "243"
|
|
59
|
-
untilBuild = "253.*"
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Target IDE(s)
|
|
64
|
-
intellijIdeaCommunity = "2024.3"
|
|
65
|
-
|
|
66
|
-
// Plugin dependencies
|
|
67
|
-
plugins = listOf(
|
|
68
|
-
"com.intellij.java", // Java support
|
|
69
|
-
"org.intellij.plugins.markdown:243.22562.64" // Markdown plugin
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
// Plugin Verifier
|
|
73
|
-
pluginVerifier {
|
|
74
|
-
ides = listOf(
|
|
75
|
-
intellijIdeaCommunity("2024.3"),
|
|
76
|
-
intellijIdeaCommunity("2025.1"),
|
|
77
|
-
)
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// Required dependencies for IntelliJ Platform development
|
|
82
|
-
dependencies {
|
|
83
|
-
intellijPlatform {
|
|
84
|
-
intellijIdeaCommunity("2024.3")
|
|
85
|
-
instrumentationTools()
|
|
86
|
-
pluginVerifier()
|
|
87
|
-
zipSigner()
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Build & Test
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
# Build plugin ZIP
|
|
96
|
-
./gradlew buildPlugin
|
|
97
|
-
# Output: build/distributions/my-plugin-1.0.0.zip
|
|
98
|
-
|
|
99
|
-
# Run IDE with plugin installed (for testing)
|
|
100
|
-
./gradlew runIde
|
|
101
|
-
|
|
102
|
-
# Run unit tests
|
|
103
|
-
./gradlew test
|
|
104
|
-
|
|
105
|
-
# Run Plugin Verifier (compatibility check)
|
|
106
|
-
./gradlew runPluginVerifier
|
|
107
|
-
|
|
108
|
-
# Check for IntelliJ-specific lint issues
|
|
109
|
-
./gradlew verifyPlugin
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## Publishing
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
# 1. Get token from JetBrains Marketplace
|
|
116
|
-
# https://plugins.jetbrains.com/author/me → Upload Token
|
|
117
|
-
|
|
118
|
-
# 2. Publish
|
|
119
|
-
./gradlew publishPlugin
|
|
120
|
-
# Requires plugin signing (automatic with zipSigner)
|
|
121
|
-
|
|
122
|
-
# With token via environment variable:
|
|
123
|
-
export PUBLISH_TOKEN=your-token-here
|
|
124
|
-
./gradlew publishPlugin
|
|
125
|
-
|
|
126
|
-
# Or specify channel (beta/alpha):
|
|
127
|
-
./gradlew publishPlugin -Pchannel=beta
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## Plugin Structure
|
|
131
|
-
|
|
132
|
-
```
|
|
133
|
-
my-plugin/
|
|
134
|
-
├── src/main/kotlin/com/example/myplugin/
|
|
135
|
-
│ ├── MyToolWindowFactory.kt # Tool window
|
|
136
|
-
│ ├── MyAction.kt # Menu/toolbar action
|
|
137
|
-
│ └── services/
|
|
138
|
-
│ └── MyService.kt # Application-level service
|
|
139
|
-
├── src/main/resources/
|
|
140
|
-
│ └── META-INF/
|
|
141
|
-
│ └── plugin.xml # Plugin descriptor (required)
|
|
142
|
-
├── build.gradle.kts
|
|
143
|
-
└── gradle.properties
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
```xml
|
|
147
|
-
<!-- src/main/resources/META-INF/plugin.xml -->
|
|
148
|
-
<idea-plugin>
|
|
149
|
-
<id>com.example.myplugin</id>
|
|
150
|
-
<name>My Plugin</name>
|
|
151
|
-
<vendor email="me@example.com">My Company</vendor>
|
|
152
|
-
|
|
153
|
-
<description><![CDATA[
|
|
154
|
-
Plugin description with <b>HTML</b> support.
|
|
155
|
-
]]></description>
|
|
156
|
-
|
|
157
|
-
<depends>com.intellij.modules.platform</depends>
|
|
158
|
-
<depends optional="true" config-file="my-java-ext.xml">com.intellij.java</depends>
|
|
159
|
-
|
|
160
|
-
<extensions defaultExtensionNs="com.intellij">
|
|
161
|
-
<toolWindow id="My Tool" factoryClass="com.example.myplugin.MyToolWindowFactory"/>
|
|
162
|
-
</extensions>
|
|
163
|
-
|
|
164
|
-
<actions>
|
|
165
|
-
<action id="MyPlugin.MyAction"
|
|
166
|
-
class="com.example.myplugin.MyAction"
|
|
167
|
-
text="My Action"
|
|
168
|
-
description="Does something useful">
|
|
169
|
-
<add-to-group group-id="ToolsMenu" anchor="last"/>
|
|
170
|
-
</action>
|
|
171
|
-
</actions>
|
|
172
|
-
</idea-plugin>
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## Common Pitfalls
|
|
176
|
-
|
|
177
|
-
| Issue | Fix |
|
|
178
|
-
|-------|-----|
|
|
179
|
-
| Plugin rejected on Marketplace | Ensure `plugin.xml` has all required fields (id, name, vendor, description, depends) |
|
|
180
|
-
| IDE version mismatch | Set `sinceBuild`/`untilBuild` carefully; test with Plugin Verifier |
|
|
181
|
-
| Build fails with SDK error | Clear Gradle cache (`~/.gradle/caches/modules-2`); verify JDK 17+ |
|
|
182
|
-
| Plugin not loaded in dev IDE | Check `plugin.xml` for syntax errors; check IDE log (`Help → Diagnostic Tools → Debug Log Settings`) |
|
|
183
|
-
| Tests fail with `NoClassDefFoundError` | Add required platform dependencies to `testImplementation` |
|
|
184
|
-
| Slow `runIde` startup | Use `buildSearchableOptions = false` for faster iteration |
|
|
185
|
-
| API deprecation warnings | Check IntelliJ Platform SDK changelog; migrate to new APIs |
|
|
186
|
-
| Memory issues in large projects | Use `ReadAction.runReadAction()` for thread-safe file access |
|
|
187
|
-
|
|
188
|
-
## CI/CD — GitHub Actions
|
|
189
|
-
|
|
190
|
-
```yaml
|
|
191
|
-
name: Build Plugin
|
|
192
|
-
on:
|
|
193
|
-
push:
|
|
194
|
-
branches: [main]
|
|
195
|
-
pull_request:
|
|
196
|
-
|
|
197
|
-
jobs:
|
|
198
|
-
build:
|
|
199
|
-
runs-on: ubuntu-latest
|
|
200
|
-
steps:
|
|
201
|
-
- uses: actions/checkout@v4
|
|
202
|
-
- uses: actions/setup-java@v4
|
|
203
|
-
with:
|
|
204
|
-
distribution: 'temurin'
|
|
205
|
-
java-version: '17'
|
|
206
|
-
- run: ./gradlew buildPlugin
|
|
207
|
-
- run: ./gradlew runPluginVerifier
|
|
208
|
-
- uses: actions/upload-artifact@v4
|
|
209
|
-
with:
|
|
210
|
-
name: plugin
|
|
211
|
-
path: build/distributions/*.zip
|
|
212
|
-
|
|
213
|
-
publish:
|
|
214
|
-
if: github.ref == 'refs/heads/main'
|
|
215
|
-
needs: build
|
|
216
|
-
runs-on: ubuntu-latest
|
|
217
|
-
steps:
|
|
218
|
-
- uses: actions/checkout@v4
|
|
219
|
-
- uses: actions/setup-java@v4
|
|
220
|
-
with:
|
|
221
|
-
distribution: 'temurin'
|
|
222
|
-
java-version: '17'
|
|
223
|
-
- run: ./gradlew publishPlugin
|
|
224
|
-
env:
|
|
225
|
-
PUBLISH_TOKEN: ${{ secrets.JETBRAINS_TOKEN }}
|
|
226
|
-
```
|
|
1
|
+
# JetBrains Plugin Build Sub-Skill
|
|
2
|
+
|
|
3
|
+
Develop and publish plugins for IntelliJ-based IDEs (IntelliJ IDEA, PyCharm, WebStorm, Android Studio, etc.).
|
|
4
|
+
|
|
5
|
+
**Current version**: Gradle IntelliJ Plugin 2.x / IntelliJ Platform 2024.3+ (2025-2026)
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- Building plugins for IntelliJ IDEA, PyCharm, WebStorm, CLion, Android Studio, etc.
|
|
10
|
+
- Need deep IDE integration (refactoring, code analysis, tool windows)
|
|
11
|
+
- Want to distribute via JetBrains Marketplace
|
|
12
|
+
|
|
13
|
+
## Key Features
|
|
14
|
+
|
|
15
|
+
- **Gradle IntelliJ Plugin** — standard build tooling (replaced legacy Plugin DevKit)
|
|
16
|
+
- **Kotlin/Java** — both supported; Kotlin recommended for new plugins
|
|
17
|
+
- **Plugin Verifier** — automated compatibility checking across IDE versions
|
|
18
|
+
- **Dynamic plugins** — hot-reload without restarting IDE (since Platform 2020.1)
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# JDK 17+ (JBR — JetBrains Runtime recommended)
|
|
24
|
+
# Gradle 8.x (wrapper included in template)
|
|
25
|
+
# IntelliJ IDEA (for development and testing)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Project Setup
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Option 1: IntelliJ Plugin Template (recommended)
|
|
32
|
+
# File → New → Project → IntelliJ Platform Plugin
|
|
33
|
+
# Or clone from GitHub:
|
|
34
|
+
git clone https://github.com/JetBrains/intellij-platform-plugin-template.git my-plugin
|
|
35
|
+
cd my-plugin
|
|
36
|
+
|
|
37
|
+
# Option 2: Gradle init
|
|
38
|
+
# Use IntelliJ Plugin Generator: https://plugins.jetbrains.com/docs/intellij/generating-plugin.html
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Build Configuration
|
|
42
|
+
|
|
43
|
+
```kotlin
|
|
44
|
+
// build.gradle.kts
|
|
45
|
+
plugins {
|
|
46
|
+
id("java")
|
|
47
|
+
id("org.jetbrains.kotlin.jvm") version "2.0.21"
|
|
48
|
+
id("org.jetbrains.intellij.platform") version "2.2.1"
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
intellijPlatform {
|
|
52
|
+
pluginConfiguration {
|
|
53
|
+
id = "com.example.myplugin"
|
|
54
|
+
name = "My Plugin"
|
|
55
|
+
version = "1.0.0"
|
|
56
|
+
description = "Plugin description"
|
|
57
|
+
ideaVersion {
|
|
58
|
+
sinceBuild = "243"
|
|
59
|
+
untilBuild = "253.*"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Target IDE(s)
|
|
64
|
+
intellijIdeaCommunity = "2024.3"
|
|
65
|
+
|
|
66
|
+
// Plugin dependencies
|
|
67
|
+
plugins = listOf(
|
|
68
|
+
"com.intellij.java", // Java support
|
|
69
|
+
"org.intellij.plugins.markdown:243.22562.64" // Markdown plugin
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
// Plugin Verifier
|
|
73
|
+
pluginVerifier {
|
|
74
|
+
ides = listOf(
|
|
75
|
+
intellijIdeaCommunity("2024.3"),
|
|
76
|
+
intellijIdeaCommunity("2025.1"),
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Required dependencies for IntelliJ Platform development
|
|
82
|
+
dependencies {
|
|
83
|
+
intellijPlatform {
|
|
84
|
+
intellijIdeaCommunity("2024.3")
|
|
85
|
+
instrumentationTools()
|
|
86
|
+
pluginVerifier()
|
|
87
|
+
zipSigner()
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Build & Test
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Build plugin ZIP
|
|
96
|
+
./gradlew buildPlugin
|
|
97
|
+
# Output: build/distributions/my-plugin-1.0.0.zip
|
|
98
|
+
|
|
99
|
+
# Run IDE with plugin installed (for testing)
|
|
100
|
+
./gradlew runIde
|
|
101
|
+
|
|
102
|
+
# Run unit tests
|
|
103
|
+
./gradlew test
|
|
104
|
+
|
|
105
|
+
# Run Plugin Verifier (compatibility check)
|
|
106
|
+
./gradlew runPluginVerifier
|
|
107
|
+
|
|
108
|
+
# Check for IntelliJ-specific lint issues
|
|
109
|
+
./gradlew verifyPlugin
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Publishing
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# 1. Get token from JetBrains Marketplace
|
|
116
|
+
# https://plugins.jetbrains.com/author/me → Upload Token
|
|
117
|
+
|
|
118
|
+
# 2. Publish
|
|
119
|
+
./gradlew publishPlugin
|
|
120
|
+
# Requires plugin signing (automatic with zipSigner)
|
|
121
|
+
|
|
122
|
+
# With token via environment variable:
|
|
123
|
+
export PUBLISH_TOKEN=your-token-here
|
|
124
|
+
./gradlew publishPlugin
|
|
125
|
+
|
|
126
|
+
# Or specify channel (beta/alpha):
|
|
127
|
+
./gradlew publishPlugin -Pchannel=beta
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Plugin Structure
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
my-plugin/
|
|
134
|
+
├── src/main/kotlin/com/example/myplugin/
|
|
135
|
+
│ ├── MyToolWindowFactory.kt # Tool window
|
|
136
|
+
│ ├── MyAction.kt # Menu/toolbar action
|
|
137
|
+
│ └── services/
|
|
138
|
+
│ └── MyService.kt # Application-level service
|
|
139
|
+
├── src/main/resources/
|
|
140
|
+
│ └── META-INF/
|
|
141
|
+
│ └── plugin.xml # Plugin descriptor (required)
|
|
142
|
+
├── build.gradle.kts
|
|
143
|
+
└── gradle.properties
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
```xml
|
|
147
|
+
<!-- src/main/resources/META-INF/plugin.xml -->
|
|
148
|
+
<idea-plugin>
|
|
149
|
+
<id>com.example.myplugin</id>
|
|
150
|
+
<name>My Plugin</name>
|
|
151
|
+
<vendor email="me@example.com">My Company</vendor>
|
|
152
|
+
|
|
153
|
+
<description><![CDATA[
|
|
154
|
+
Plugin description with <b>HTML</b> support.
|
|
155
|
+
]]></description>
|
|
156
|
+
|
|
157
|
+
<depends>com.intellij.modules.platform</depends>
|
|
158
|
+
<depends optional="true" config-file="my-java-ext.xml">com.intellij.java</depends>
|
|
159
|
+
|
|
160
|
+
<extensions defaultExtensionNs="com.intellij">
|
|
161
|
+
<toolWindow id="My Tool" factoryClass="com.example.myplugin.MyToolWindowFactory"/>
|
|
162
|
+
</extensions>
|
|
163
|
+
|
|
164
|
+
<actions>
|
|
165
|
+
<action id="MyPlugin.MyAction"
|
|
166
|
+
class="com.example.myplugin.MyAction"
|
|
167
|
+
text="My Action"
|
|
168
|
+
description="Does something useful">
|
|
169
|
+
<add-to-group group-id="ToolsMenu" anchor="last"/>
|
|
170
|
+
</action>
|
|
171
|
+
</actions>
|
|
172
|
+
</idea-plugin>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Common Pitfalls
|
|
176
|
+
|
|
177
|
+
| Issue | Fix |
|
|
178
|
+
|-------|-----|
|
|
179
|
+
| Plugin rejected on Marketplace | Ensure `plugin.xml` has all required fields (id, name, vendor, description, depends) |
|
|
180
|
+
| IDE version mismatch | Set `sinceBuild`/`untilBuild` carefully; test with Plugin Verifier |
|
|
181
|
+
| Build fails with SDK error | Clear Gradle cache (`~/.gradle/caches/modules-2`); verify JDK 17+ |
|
|
182
|
+
| Plugin not loaded in dev IDE | Check `plugin.xml` for syntax errors; check IDE log (`Help → Diagnostic Tools → Debug Log Settings`) |
|
|
183
|
+
| Tests fail with `NoClassDefFoundError` | Add required platform dependencies to `testImplementation` |
|
|
184
|
+
| Slow `runIde` startup | Use `buildSearchableOptions = false` for faster iteration |
|
|
185
|
+
| API deprecation warnings | Check IntelliJ Platform SDK changelog; migrate to new APIs |
|
|
186
|
+
| Memory issues in large projects | Use `ReadAction.runReadAction()` for thread-safe file access |
|
|
187
|
+
|
|
188
|
+
## CI/CD — GitHub Actions
|
|
189
|
+
|
|
190
|
+
```yaml
|
|
191
|
+
name: Build Plugin
|
|
192
|
+
on:
|
|
193
|
+
push:
|
|
194
|
+
branches: [main]
|
|
195
|
+
pull_request:
|
|
196
|
+
|
|
197
|
+
jobs:
|
|
198
|
+
build:
|
|
199
|
+
runs-on: ubuntu-latest
|
|
200
|
+
steps:
|
|
201
|
+
- uses: actions/checkout@v4
|
|
202
|
+
- uses: actions/setup-java@v4
|
|
203
|
+
with:
|
|
204
|
+
distribution: 'temurin'
|
|
205
|
+
java-version: '17'
|
|
206
|
+
- run: ./gradlew buildPlugin
|
|
207
|
+
- run: ./gradlew runPluginVerifier
|
|
208
|
+
- uses: actions/upload-artifact@v4
|
|
209
|
+
with:
|
|
210
|
+
name: plugin
|
|
211
|
+
path: build/distributions/*.zip
|
|
212
|
+
|
|
213
|
+
publish:
|
|
214
|
+
if: github.ref == 'refs/heads/main'
|
|
215
|
+
needs: build
|
|
216
|
+
runs-on: ubuntu-latest
|
|
217
|
+
steps:
|
|
218
|
+
- uses: actions/checkout@v4
|
|
219
|
+
- uses: actions/setup-java@v4
|
|
220
|
+
with:
|
|
221
|
+
distribution: 'temurin'
|
|
222
|
+
java-version: '17'
|
|
223
|
+
- run: ./gradlew publishPlugin
|
|
224
|
+
env:
|
|
225
|
+
PUBLISH_TOKEN: ${{ secrets.JETBRAINS_TOKEN }}
|
|
226
|
+
```
|