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.
Files changed (53) hide show
  1. package/.cursorrules +23 -23
  2. package/CLAUDE.md +25 -25
  3. package/LICENSE +21 -0
  4. package/README.md +404 -295
  5. package/audit.md +224 -224
  6. package/bin/packwise.js +322 -155
  7. package/install.sh +123 -0
  8. package/package.json +32 -31
  9. package/skill.md +944 -719
  10. package/sub-skills/ai/local-llm.md +183 -183
  11. package/sub-skills/ai/python-ml.md +164 -164
  12. package/sub-skills/backend/go-server.md +184 -184
  13. package/sub-skills/backend/java-spring.md +241 -241
  14. package/sub-skills/backend/node-server.md +164 -164
  15. package/sub-skills/backend/php-laravel.md +175 -175
  16. package/sub-skills/backend/python-server.md +164 -164
  17. package/sub-skills/backend/rust-backend.md +118 -118
  18. package/sub-skills/cli/python-cli.md +236 -236
  19. package/sub-skills/cli/sdk-library.md +497 -497
  20. package/sub-skills/cloud/ci-cd-pipelines.md +350 -350
  21. package/sub-skills/cloud/docker.md +191 -191
  22. package/sub-skills/cloud/kubernetes.md +277 -277
  23. package/sub-skills/cloud/payment-integration.md +307 -307
  24. package/sub-skills/cross-platform/multiplatform.md +252 -252
  25. package/sub-skills/desktop/electron.md +783 -783
  26. package/sub-skills/desktop/game-dev.md +443 -443
  27. package/sub-skills/desktop/native-app.md +123 -123
  28. package/sub-skills/desktop/scenarios.md +443 -443
  29. package/sub-skills/desktop/smart-platforms.md +324 -324
  30. package/sub-skills/desktop/tauri.md +428 -428
  31. package/sub-skills/desktop/vr-ar.md +252 -252
  32. package/sub-skills/desktop/web-to-desktop.md +153 -153
  33. package/sub-skills/embedded/car-infotainment.md +129 -129
  34. package/sub-skills/embedded/esp32.md +184 -184
  35. package/sub-skills/embedded/ros.md +150 -150
  36. package/sub-skills/embedded/stm32.md +160 -160
  37. package/sub-skills/mobile/android.md +322 -322
  38. package/sub-skills/mobile/capacitor.md +232 -232
  39. package/sub-skills/mobile/flutter-mobile.md +138 -138
  40. package/sub-skills/mobile/harmonyos.md +150 -150
  41. package/sub-skills/mobile/ios.md +245 -245
  42. package/sub-skills/mobile/react-native.md +443 -443
  43. package/sub-skills/mobile/wearables.md +230 -230
  44. package/sub-skills/plugins/browser-extension.md +308 -308
  45. package/sub-skills/plugins/jetbrains-plugin.md +226 -226
  46. package/sub-skills/plugins/vscode-extension.md +204 -204
  47. package/sub-skills/security/security-tools.md +174 -174
  48. package/sub-skills/web/monorepo.md +274 -274
  49. package/sub-skills/web/pwa.md +220 -220
  50. package/sub-skills/web/serverless-edge.md +295 -295
  51. package/sub-skills/web/spa.md +266 -266
  52. package/sub-skills/web/ssr.md +228 -228
  53. package/sub-skills/web/wasm.md +243 -243
@@ -1,241 +1,241 @@
1
- # Java/Spring Boot Build Sub-Skill
2
-
3
- Build and package Java backend services using Spring Boot, Quarkus, or Micronaut.
4
-
5
- **Current version**: Java 21 LTS / 22 / Spring Boot 3.5.x / Quarkus 3.37.x / Micronaut 5.x (2025-2026)
6
-
7
- ## When to Use
8
-
9
- - Enterprise backend services
10
- - REST APIs / GraphQL APIs
11
- - Microservices architecture
12
- - Team has Java/Kotlin experience
13
- - Need mature ecosystem (Spring ecosystem)
14
-
15
- ## Spring Boot Build
16
-
17
- ### Maven Build
18
-
19
- ```bash
20
- # Clean + package
21
- mvn clean package -DskipTests
22
- # Output: target/myapp-1.0.0.jar
23
-
24
- # Run
25
- java -jar target/myapp-1.0.0.jar
26
-
27
- # Build with specific profile
28
- mvn clean package -Pproduction
29
- ```
30
-
31
- ### Gradle Build
32
-
33
- ```bash
34
- ./gradlew clean build -x test
35
- # Output: build/libs/myapp-1.0.0.jar
36
-
37
- # Run
38
- java -jar build/libs/myapp-1.0.0.jar
39
- ```
40
-
41
- ### Fat JAR vs Thin JAR
42
-
43
- | Type | Size | Startup | Best For |
44
- |------|------|---------|----------|
45
- | Fat JAR (default) | 50–200MB | Standard | Simple deployment, Docker |
46
- | Thin JAR | < 10MB | Faster (dependencies cached) | Multiple services sharing deps |
47
- | Native Image (GraalVM) | 30–80MB | Ultra fast (< 1s) | Serverless, CLI, microservices |
48
-
49
- ### GraalVM Native Image
50
-
51
- ```bash
52
- # Install GraalVM
53
- sdk install java 21.0.2-graal
54
-
55
- # Maven plugin (in pom.xml):
56
- # <plugin>
57
- # <groupId>org.graalvm.buildtools</groupId>
58
- # <artifactId>native-maven-plugin</artifactId>
59
- # </plugin>
60
-
61
- mvn -Pnative native:compile
62
- # Output: target/myapp (native binary, no JVM required)
63
- ```
64
-
65
- ## Docker
66
-
67
- ```dockerfile
68
- FROM eclipse-temurin:21-jdk-jammy AS builder
69
- WORKDIR /app
70
- COPY pom.xml .
71
- COPY src/ src/
72
- RUN apt-get update && apt-get install -y maven && mvn clean package -DskipTests
73
-
74
- FROM eclipse-temurin:21-jre-jammy
75
- WORKDIR /app
76
- COPY --from=builder /app/target/*.jar app.jar
77
- RUN groupadd -r appuser && useradd -r -g appuser appuser && \
78
- chown -R appuser:appuser /app
79
- USER appuser
80
- EXPOSE 8080
81
- HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:8080/actuator/health || exit 1
82
- ENTRYPOINT ["java", "-jar", "app.jar"]
83
- ```
84
-
85
- ```dockerfile
86
- # GraalVM native image Docker (smaller, faster)
87
- FROM ghcr.io/graalvm/native-image-community:21 AS builder
88
- WORKDIR /app
89
- COPY target/myapp .
90
- RUN native-image --static -o myapp-native myapp
91
-
92
- FROM debian:bookworm-slim
93
- COPY --from=builder /app/myapp-native /myapp
94
- RUN groupadd -r appuser && useradd -r -g appuser appuser
95
- USER appuser
96
- EXPOSE 8080
97
- CMD ["/myapp"]
98
- ```
99
-
100
- ## jpackage (Native Installers for Java Desktop/CLI Apps)
101
-
102
- `jpackage` is a JDK 14+ tool that creates native platform installers from JAR files — no JVM required on the target machine.
103
-
104
- ```bash
105
- # Prerequisites: JDK 17+ with jpackage (included in JDK 14+)
106
-
107
- # 1. Build fat JAR first
108
- mvn clean package -DskipTests
109
-
110
- # 2. Create native installer
111
- # Windows (.exe / .msi)
112
- jpackage --type exe \
113
- --input target/ \
114
- --main-jar myapp-1.0.0.jar \
115
- --main-class com.example.Main \
116
- --name MyApp \
117
- --app-version 1.0.0 \
118
- --icon src/main/resources/icon.ico \
119
- --win-shortcut \
120
- --win-menu
121
-
122
- # macOS (.pkg / .dmg)
123
- jpackage --type dmg \
124
- --input target/ \
125
- --main-jar myapp-1.0.0.jar \
126
- --main-class com.example.Main \
127
- --name MyApp \
128
- --app-version 1.0.0 \
129
- --icon src/main/resources/icon.icns \
130
- --mac-package-identifier com.example.myapp
131
-
132
- # Linux (.deb / .rpm)
133
- jpackage --type deb \
134
- --input target/ \
135
- --main-jar myapp-1.0.0.jar \
136
- --main-class com.example.Main \
137
- --name MyApp \
138
- --app-version 1.0.0 \
139
- --icon src/main/resources/icon.png \
140
- --linux-shortcut
141
- ```
142
-
143
- ### jpackage vs Docker vs GraalVM Native Image
144
-
145
- | Approach | Output | JVM Required? | Size | Startup | Best For |
146
- |----------|--------|--------------|------|---------|----------|
147
- | jpackage | .exe/.msi/.dmg/.deb/.rpm | No (bundled JRE) | 40-100MB | 1-3s | Desktop/CLI distribution to non-technical users |
148
- | Docker | Container image | Yes (in container) | 100-300MB | 2-5s | Server deployment |
149
- | GraalVM Native | Native binary | No | 30-80MB | < 1s | Serverless, CLI, microservices |
150
- | Fat JAR | .jar file | Yes (user must install JDK) | 50-200MB | 2-8s | Developer tools, server deployment |
151
-
152
- ### jpackage with Spring Boot (Special Handling)
153
-
154
- Spring Boot fat JARs have a nested JAR structure that `jpackage` doesn't handle well. Use the Spring Boot thin launcher or repack:
155
-
156
- ```xml
157
- <!-- pom.xml — Use Spring Boot thin launcher -->
158
- <plugin>
159
- <groupId>org.springframework.boot</groupId>
160
- <artifactId>spring-boot-maven-plugin</artifactId>
161
- <configuration>
162
- <layout>ZIP</layout> <!-- Thin layout for jpackage compatibility -->
163
- </configuration>
164
- </plugin>
165
- ```
166
-
167
- ```bash
168
- # Build thin JAR + dependencies
169
- mvn clean package -DskipTests
170
-
171
- # jpackage with classpath
172
- jpackage --type exe \
173
- --input target/ \
174
- --main-jar myapp-1.0.0.jar \
175
- --main-class org.springframework.boot.loader.launch.JarLauncher \
176
- --name MyApp \
177
- --app-version 1.0.0
178
- ```
179
-
180
- ### Common Pitfalls (jpackage)
181
-
182
- | Issue | Fix |
183
- |-------|-----|
184
- | "jpackage not found" | Ensure JDK 17+ is installed (not JRE); `jpackage` is in `JAVA_HOME/bin` |
185
- | Spring Boot JAR fails to launch | Use `layout: ZIP` in spring-boot-maven-plugin; or repack with `maven-shade-plugin` |
186
- | Missing native libraries | Add `--java-options "-Djava.library.path=/app/libs"` |
187
- | macOS notarization fails | Sign the .pkg with `codesign` before notarizing; jpackage doesn't auto-sign |
188
- | Windows SmartScreen warning | Sign the .exe with EV/OV certificate after jpackage creates it |
189
- | Large installer size | Use `--jlink-options "--strip-debug --compress zip-6"` to reduce bundled JRE size |
190
- | Icon not showing | Ensure icon format is correct (.ico for Windows, .icns for macOS, .png for Linux) |
191
-
192
- ## Quarkus Build
193
-
194
- ```bash
195
- # Create project (replace 3.37 with latest Quarkus version)
196
- mvn io.quarkus.platform:quarkus-maven-plugin:3.37:create -DprojectGroupId=com.example -DprojectArtifactId=myapp
197
-
198
- # JVM mode
199
- mvn clean package
200
- java -jar target/quarkus-run.jar
201
-
202
- # Native mode (requires GraalVM)
203
- mvn clean package -Pnative
204
- ./target/myapp
205
- ```
206
-
207
- ## Micronaut Build
208
-
209
- ```bash
210
- # Create project
211
- mn create-app com.example.myapp
212
-
213
- # Build
214
- ./gradlew clean build
215
-
216
- # Native image
217
- ./gradlew nativeCompile
218
- # Output: build/native/nativeCompile/myapp
219
- ```
220
-
221
- ## Framework Comparison
222
-
223
- | Feature | Spring Boot | Quarkus | Micronaut |
224
- |---------|------------|---------|----------|
225
- | Maturity | Most mature | Growing fast | Growing |
226
- | Startup time | 2–8s (JVM), < 1s (native) | < 1s (native) | < 1s (native) |
227
- | Memory | 200–500MB (JVM) | 30–80MB (native) | 30–80MB (native) |
228
- | Native image | Supported (GraalVM) | First-class | First-class |
229
- | Ecosystem | Largest (Spring) | Good (Vert.x-based) | Good (Netty-based) |
230
- | Best for | Enterprise, large teams | Cloud-native, serverless | Microservices, serverless |
231
-
232
- ## Common Pitfalls
233
-
234
- | Issue | Fix |
235
- |-------|-----|
236
- | JAR too large (> 200MB) | Exclude unused dependencies; use Spring Boot thin launcher |
237
- | GraalVM reflection errors | Add `reflect-config.json`; use `@RegisterForReflection` (Quarkus) |
238
- | Slow startup in containers | Use CDS (Class Data Sharing); consider native image |
239
- | Port conflict | Set `server.port` in `application.properties` or `SERVER_PORT` env |
240
- | Database connection pool exhausted | Configure HikariCP pool size; add connection timeout |
241
- | Actuator endpoints not exposed | Add `management.endpoints.web.exposure.include=health,info` |
1
+ # Java/Spring Boot Build Sub-Skill
2
+
3
+ Build and package Java backend services using Spring Boot, Quarkus, or Micronaut.
4
+
5
+ **Current version**: Java 21 LTS / 22 / Spring Boot 3.5.x / Quarkus 3.37.x / Micronaut 5.x (2025-2026)
6
+
7
+ ## When to Use
8
+
9
+ - Enterprise backend services
10
+ - REST APIs / GraphQL APIs
11
+ - Microservices architecture
12
+ - Team has Java/Kotlin experience
13
+ - Need mature ecosystem (Spring ecosystem)
14
+
15
+ ## Spring Boot Build
16
+
17
+ ### Maven Build
18
+
19
+ ```bash
20
+ # Clean + package
21
+ mvn clean package -DskipTests
22
+ # Output: target/myapp-1.0.0.jar
23
+
24
+ # Run
25
+ java -jar target/myapp-1.0.0.jar
26
+
27
+ # Build with specific profile
28
+ mvn clean package -Pproduction
29
+ ```
30
+
31
+ ### Gradle Build
32
+
33
+ ```bash
34
+ ./gradlew clean build -x test
35
+ # Output: build/libs/myapp-1.0.0.jar
36
+
37
+ # Run
38
+ java -jar build/libs/myapp-1.0.0.jar
39
+ ```
40
+
41
+ ### Fat JAR vs Thin JAR
42
+
43
+ | Type | Size | Startup | Best For |
44
+ |------|------|---------|----------|
45
+ | Fat JAR (default) | 50–200MB | Standard | Simple deployment, Docker |
46
+ | Thin JAR | < 10MB | Faster (dependencies cached) | Multiple services sharing deps |
47
+ | Native Image (GraalVM) | 30–80MB | Ultra fast (< 1s) | Serverless, CLI, microservices |
48
+
49
+ ### GraalVM Native Image
50
+
51
+ ```bash
52
+ # Install GraalVM
53
+ sdk install java 21.0.2-graal
54
+
55
+ # Maven plugin (in pom.xml):
56
+ # <plugin>
57
+ # <groupId>org.graalvm.buildtools</groupId>
58
+ # <artifactId>native-maven-plugin</artifactId>
59
+ # </plugin>
60
+
61
+ mvn -Pnative native:compile
62
+ # Output: target/myapp (native binary, no JVM required)
63
+ ```
64
+
65
+ ## Docker
66
+
67
+ ```dockerfile
68
+ FROM eclipse-temurin:21-jdk-jammy AS builder
69
+ WORKDIR /app
70
+ COPY pom.xml .
71
+ COPY src/ src/
72
+ RUN apt-get update && apt-get install -y maven && mvn clean package -DskipTests
73
+
74
+ FROM eclipse-temurin:21-jre-jammy
75
+ WORKDIR /app
76
+ COPY --from=builder /app/target/*.jar app.jar
77
+ RUN groupadd -r appuser && useradd -r -g appuser appuser && \
78
+ chown -R appuser:appuser /app
79
+ USER appuser
80
+ EXPOSE 8080
81
+ HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:8080/actuator/health || exit 1
82
+ ENTRYPOINT ["java", "-jar", "app.jar"]
83
+ ```
84
+
85
+ ```dockerfile
86
+ # GraalVM native image Docker (smaller, faster)
87
+ FROM ghcr.io/graalvm/native-image-community:21 AS builder
88
+ WORKDIR /app
89
+ COPY target/myapp .
90
+ RUN native-image --static -o myapp-native myapp
91
+
92
+ FROM debian:bookworm-slim
93
+ COPY --from=builder /app/myapp-native /myapp
94
+ RUN groupadd -r appuser && useradd -r -g appuser appuser
95
+ USER appuser
96
+ EXPOSE 8080
97
+ CMD ["/myapp"]
98
+ ```
99
+
100
+ ## jpackage (Native Installers for Java Desktop/CLI Apps)
101
+
102
+ `jpackage` is a JDK 14+ tool that creates native platform installers from JAR files — no JVM required on the target machine.
103
+
104
+ ```bash
105
+ # Prerequisites: JDK 17+ with jpackage (included in JDK 14+)
106
+
107
+ # 1. Build fat JAR first
108
+ mvn clean package -DskipTests
109
+
110
+ # 2. Create native installer
111
+ # Windows (.exe / .msi)
112
+ jpackage --type exe \
113
+ --input target/ \
114
+ --main-jar myapp-1.0.0.jar \
115
+ --main-class com.example.Main \
116
+ --name MyApp \
117
+ --app-version 1.0.0 \
118
+ --icon src/main/resources/icon.ico \
119
+ --win-shortcut \
120
+ --win-menu
121
+
122
+ # macOS (.pkg / .dmg)
123
+ jpackage --type dmg \
124
+ --input target/ \
125
+ --main-jar myapp-1.0.0.jar \
126
+ --main-class com.example.Main \
127
+ --name MyApp \
128
+ --app-version 1.0.0 \
129
+ --icon src/main/resources/icon.icns \
130
+ --mac-package-identifier com.example.myapp
131
+
132
+ # Linux (.deb / .rpm)
133
+ jpackage --type deb \
134
+ --input target/ \
135
+ --main-jar myapp-1.0.0.jar \
136
+ --main-class com.example.Main \
137
+ --name MyApp \
138
+ --app-version 1.0.0 \
139
+ --icon src/main/resources/icon.png \
140
+ --linux-shortcut
141
+ ```
142
+
143
+ ### jpackage vs Docker vs GraalVM Native Image
144
+
145
+ | Approach | Output | JVM Required? | Size | Startup | Best For |
146
+ |----------|--------|--------------|------|---------|----------|
147
+ | jpackage | .exe/.msi/.dmg/.deb/.rpm | No (bundled JRE) | 40-100MB | 1-3s | Desktop/CLI distribution to non-technical users |
148
+ | Docker | Container image | Yes (in container) | 100-300MB | 2-5s | Server deployment |
149
+ | GraalVM Native | Native binary | No | 30-80MB | < 1s | Serverless, CLI, microservices |
150
+ | Fat JAR | .jar file | Yes (user must install JDK) | 50-200MB | 2-8s | Developer tools, server deployment |
151
+
152
+ ### jpackage with Spring Boot (Special Handling)
153
+
154
+ Spring Boot fat JARs have a nested JAR structure that `jpackage` doesn't handle well. Use the Spring Boot thin launcher or repack:
155
+
156
+ ```xml
157
+ <!-- pom.xml — Use Spring Boot thin launcher -->
158
+ <plugin>
159
+ <groupId>org.springframework.boot</groupId>
160
+ <artifactId>spring-boot-maven-plugin</artifactId>
161
+ <configuration>
162
+ <layout>ZIP</layout> <!-- Thin layout for jpackage compatibility -->
163
+ </configuration>
164
+ </plugin>
165
+ ```
166
+
167
+ ```bash
168
+ # Build thin JAR + dependencies
169
+ mvn clean package -DskipTests
170
+
171
+ # jpackage with classpath
172
+ jpackage --type exe \
173
+ --input target/ \
174
+ --main-jar myapp-1.0.0.jar \
175
+ --main-class org.springframework.boot.loader.launch.JarLauncher \
176
+ --name MyApp \
177
+ --app-version 1.0.0
178
+ ```
179
+
180
+ ### Common Pitfalls (jpackage)
181
+
182
+ | Issue | Fix |
183
+ |-------|-----|
184
+ | "jpackage not found" | Ensure JDK 17+ is installed (not JRE); `jpackage` is in `JAVA_HOME/bin` |
185
+ | Spring Boot JAR fails to launch | Use `layout: ZIP` in spring-boot-maven-plugin; or repack with `maven-shade-plugin` |
186
+ | Missing native libraries | Add `--java-options "-Djava.library.path=/app/libs"` |
187
+ | macOS notarization fails | Sign the .pkg with `codesign` before notarizing; jpackage doesn't auto-sign |
188
+ | Windows SmartScreen warning | Sign the .exe with EV/OV certificate after jpackage creates it |
189
+ | Large installer size | Use `--jlink-options "--strip-debug --compress zip-6"` to reduce bundled JRE size |
190
+ | Icon not showing | Ensure icon format is correct (.ico for Windows, .icns for macOS, .png for Linux) |
191
+
192
+ ## Quarkus Build
193
+
194
+ ```bash
195
+ # Create project (replace 3.37 with latest Quarkus version)
196
+ mvn io.quarkus.platform:quarkus-maven-plugin:3.37:create -DprojectGroupId=com.example -DprojectArtifactId=myapp
197
+
198
+ # JVM mode
199
+ mvn clean package
200
+ java -jar target/quarkus-run.jar
201
+
202
+ # Native mode (requires GraalVM)
203
+ mvn clean package -Pnative
204
+ ./target/myapp
205
+ ```
206
+
207
+ ## Micronaut Build
208
+
209
+ ```bash
210
+ # Create project
211
+ mn create-app com.example.myapp
212
+
213
+ # Build
214
+ ./gradlew clean build
215
+
216
+ # Native image
217
+ ./gradlew nativeCompile
218
+ # Output: build/native/nativeCompile/myapp
219
+ ```
220
+
221
+ ## Framework Comparison
222
+
223
+ | Feature | Spring Boot | Quarkus | Micronaut |
224
+ |---------|------------|---------|----------|
225
+ | Maturity | Most mature | Growing fast | Growing |
226
+ | Startup time | 2–8s (JVM), < 1s (native) | < 1s (native) | < 1s (native) |
227
+ | Memory | 200–500MB (JVM) | 30–80MB (native) | 30–80MB (native) |
228
+ | Native image | Supported (GraalVM) | First-class | First-class |
229
+ | Ecosystem | Largest (Spring) | Good (Vert.x-based) | Good (Netty-based) |
230
+ | Best for | Enterprise, large teams | Cloud-native, serverless | Microservices, serverless |
231
+
232
+ ## Common Pitfalls
233
+
234
+ | Issue | Fix |
235
+ |-------|-----|
236
+ | JAR too large (> 200MB) | Exclude unused dependencies; use Spring Boot thin launcher |
237
+ | GraalVM reflection errors | Add `reflect-config.json`; use `@RegisterForReflection` (Quarkus) |
238
+ | Slow startup in containers | Use CDS (Class Data Sharing); consider native image |
239
+ | Port conflict | Set `server.port` in `application.properties` or `SERVER_PORT` env |
240
+ | Database connection pool exhausted | Configure HikariCP pool size; add connection timeout |
241
+ | Actuator endpoints not exposed | Add `management.endpoints.web.exposure.include=health,info` |