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
package/skill.md
CHANGED
|
@@ -1,719 +1,944 @@
|
|
|
1
|
-
# Package Skills Plugin — Universal Build & Packaging Orchestrator
|
|
2
|
-
|
|
3
|
-
Covers all **build and packaging** scenarios for indie developers, startups, and small-to-medium software companies: desktop, mobile, web, backend, AI/ML, CLI, plugins, embedded, security tools, containerization, cross-platform frameworks, monorepos, WebAssembly, VR/AR, wearables, smart platforms, serverless, CI/CD, and payment integration.
|
|
4
|
-
|
|
5
|
-
> **Scope**: This skill focuses on **building and packaging** source code into distributable artifacts (`.apk`, `.exe`, `.dmg`, `.vsix`, Docker images, WASM modules, etc.). Production operations and infrastructure provisioning are outside its scope.
|
|
6
|
-
|
|
7
|
-
## Trigger Words
|
|
8
|
-
|
|
9
|
-
"package", "build", "bundle", "compile", "installer", "desktop app", "generate exe", "build software", "client packaging", "develop plugin", "app packaging", "embedded", "publish to store", "containerize", "Docker", "WASM", "monorepo build", "cross-compile"
|
|
10
|
-
|
|
11
|
-
## Plugin Architecture
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
package/
|
|
15
|
-
├── skill.md ← Main orchestrator: scan → classify → guide → dispatch
|
|
16
|
-
├── audit.md ← Post-build audit (top-level, mandatory)
|
|
17
|
-
└── sub-skills/
|
|
18
|
-
├── desktop/ ← Desktop apps (9)
|
|
19
|
-
│ ├── electron.md ← Electron (security, path resolution, packaging, signing, auto-update, CI/CD, pitfalls)
|
|
20
|
-
│ ├── tauri.md ← Tauri 2.0 (Rust backend, minimal footprint)
|
|
21
|
-
│ ├── native-app.md ← Qt/Flutter/.NET (performance-critical)
|
|
22
|
-
│ ├── web-to-desktop.md ← Web-to-desktop (Pake/Neutralinojs)
|
|
23
|
-
│ ├── game-dev.md ← Game dev (Unity/Unreal/Godot)
|
|
24
|
-
│ ├── vr-ar.md ← VR/AR (Meta Quest/Vision Pro/SteamVR)
|
|
25
|
-
│ ├── smart-platforms.md ← Smart TV/Car/RPi (Android TV/tvOS/webOS/Tizen)
|
|
26
|
-
│ └── scenarios.md ← Desktop scenarios (AI/ERP/trading/IoT/IM)
|
|
27
|
-
├── mobile/ ← Mobile (7)
|
|
28
|
-
│ ├── android.md ← Android native (Kotlin/Java)
|
|
29
|
-
│ ├── ios.md ← iOS/iPadOS (Swift/ObjC)
|
|
30
|
-
│ ├── harmonyos.md ← HarmonyOS (ArkTS)
|
|
31
|
-
│ ├── flutter-mobile.md ← Flutter mobile
|
|
32
|
-
│ ├── react-native.md ← React Native
|
|
33
|
-
│ ├── capacitor.md ← Capacitor (Web → mobile)
|
|
34
|
-
│ └── wearables.md ← Wearables (watchOS/Wear OS/Galaxy Watch)
|
|
35
|
-
├── web/ ← Web apps (6)
|
|
36
|
-
│ ├── spa.md ← SPA (React/Vue/Angular/Svelte)
|
|
37
|
-
│ ├── ssr.md ← SSR (Next.js/Nuxt/Remix)
|
|
38
|
-
│ ├── pwa.md ← PWA (Progressive Web App)
|
|
39
|
-
│ ├── serverless-edge.md ← Serverless & Edge (Lambda/CF Workers/Vercel)
|
|
40
|
-
│ ├── monorepo.md ← Monorepo (Turborepo/Nx/pnpm workspaces)
|
|
41
|
-
│ └── wasm.md ← WebAssembly (Rust/Go/C → WASM)
|
|
42
|
-
├── backend/ ← Backend services (6)
|
|
43
|
-
│ ├── node-server.md ← Node.js (Express/Nest/Fastify)
|
|
44
|
-
│ ├── python-server.md ← Python (Flask/Django/FastAPI)
|
|
45
|
-
│ ├── go-server.md ← Go (Gin/Echo/Fiber)
|
|
46
|
-
│ ├── rust-backend.md ← Rust (Axum/Actix-Web/Rocket)
|
|
47
|
-
│ ├── java-spring.md ← Java (Spring Boot/Quarkus/Micronaut)
|
|
48
|
-
│ └── php-laravel.md ← PHP (Laravel/Symfony/Slim)
|
|
49
|
-
├── ai/ ← AI/ML (2)
|
|
50
|
-
│ ├── python-ml.md ← Python ML model packaging
|
|
51
|
-
│ └── local-llm.md ← Local LLM applications
|
|
52
|
-
├── cli/ ← CLI tools & Libraries (2)
|
|
53
|
-
│ ├── python-cli.md ← Python CLI tools
|
|
54
|
-
│ └── sdk-library.md ← SDK/Library publishing (npm/PyPI/crates.io/Maven/NuGet/Go)
|
|
55
|
-
├── plugins/ ← Plugins (3)
|
|
56
|
-
│ ├── browser-extension.md ← Chrome/Edge/Firefox extensions
|
|
57
|
-
│ ├── vscode-extension.md ← VS Code extensions
|
|
58
|
-
│ └── jetbrains-plugin.md ← JetBrains plugins
|
|
59
|
-
├── embedded/ ← Embedded (4)
|
|
60
|
-
│ ├── esp32.md ← ESP32 (Arduino/ESP-IDF)
|
|
61
|
-
│ ├── stm32.md ← STM32 (Keil/CubeIDE)
|
|
62
|
-
│ ├── ros.md ← ROS/ROS2 robotics
|
|
63
|
-
│ └── car-infotainment.md ← Car infotainment (HarmonyOS/Auto/QNX)
|
|
64
|
-
├── security/ ← Security tools (1)
|
|
65
|
-
│ └── security-tools.md ← Pentest / scanners / SIEM
|
|
66
|
-
├── cloud/ ← Cloud & Infrastructure (4)
|
|
67
|
-
│ ├── docker.md ← Docker containerization
|
|
68
|
-
│ ├── kubernetes.md ← Kubernetes/Helm/K3s
|
|
69
|
-
│ ├── ci-cd-pipelines.md ← CI/CD (GitHub Actions/GitLab CI/Jenkins)
|
|
70
|
-
│ └── payment-integration.md ← Payment (Stripe/Alipay/WeChat Pay/IAP)
|
|
71
|
-
└── cross-platform/ ← Cross-platform frameworks (1)
|
|
72
|
-
└── multiplatform.md ← .NET MAUI / Kotlin Multiplatform / Compose Multiplatform
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Core Workflow
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
1. Project Scan → Identify project type, language, dependencies, architecture
|
|
79
|
-
2. Report & Intake → Report findings to user → Ask key questions interactively
|
|
80
|
-
3. Analyze & Research → Combine scan results + user answers + online research (if needed)
|
|
81
|
-
4. Recommend & Guide → Present RECOMMENDED solution + 2-3 alternatives with reasoning → discuss with user
|
|
82
|
-
5. Confirm Plan → User selects final approach → generate confirmation summary
|
|
83
|
-
6.
|
|
84
|
-
7.
|
|
85
|
-
8.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
|
131
|
-
|
|
132
|
-
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
- **
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
- 1. ⭐
|
|
196
|
-
- 2.
|
|
197
|
-
- 3.
|
|
198
|
-
- 4.
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
-
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
|
|
221
|
-
**
|
|
222
|
-
- 1. ⭐
|
|
223
|
-
- 2.
|
|
224
|
-
|
|
225
|
-
**
|
|
226
|
-
- (
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
**
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
-
|
|
280
|
-
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
-
|
|
290
|
-
-
|
|
291
|
-
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
-
|
|
296
|
-
-
|
|
297
|
-
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
-
|
|
313
|
-
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
-
|
|
352
|
-
-
|
|
353
|
-
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
1.
|
|
363
|
-
2.
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
-
|
|
488
|
-
-
|
|
489
|
-
-
|
|
490
|
-
-
|
|
491
|
-
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
|
510
|
-
|
|
511
|
-
|
|
|
512
|
-
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
[
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
|
673
|
-
|
|
674
|
-
| **
|
|
675
|
-
| **
|
|
676
|
-
| **
|
|
677
|
-
| **
|
|
678
|
-
| **
|
|
679
|
-
| **
|
|
680
|
-
| **
|
|
681
|
-
| **
|
|
682
|
-
| **
|
|
683
|
-
| **
|
|
684
|
-
| **
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
|
689
|
-
|
|
690
|
-
|
|
|
691
|
-
|
|
|
692
|
-
|
|
|
693
|
-
|
|
|
694
|
-
|
|
|
695
|
-
|
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
1
|
+
# Package Skills Plugin — Universal Build & Packaging Orchestrator
|
|
2
|
+
|
|
3
|
+
Covers all **build and packaging** scenarios for indie developers, startups, and small-to-medium software companies: desktop, mobile, web, backend, AI/ML, CLI, plugins, embedded, security tools, containerization, cross-platform frameworks, monorepos, WebAssembly, VR/AR, wearables, smart platforms, serverless, CI/CD, and payment integration.
|
|
4
|
+
|
|
5
|
+
> **Scope**: This skill focuses on **building and packaging** source code into distributable artifacts (`.apk`, `.exe`, `.dmg`, `.vsix`, Docker images, WASM modules, etc.). Production operations and infrastructure provisioning are outside its scope.
|
|
6
|
+
|
|
7
|
+
## Trigger Words
|
|
8
|
+
|
|
9
|
+
"package", "build", "bundle", "compile", "installer", "desktop app", "generate exe", "build software", "client packaging", "develop plugin", "app packaging", "embedded", "publish to store", "containerize", "Docker", "WASM", "monorepo build", "cross-compile"
|
|
10
|
+
|
|
11
|
+
## Plugin Architecture
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
package/
|
|
15
|
+
├── skill.md ← Main orchestrator: scan → classify → guide → dispatch
|
|
16
|
+
├── audit.md ← Post-build audit (top-level, mandatory)
|
|
17
|
+
└── sub-skills/
|
|
18
|
+
├── desktop/ ← Desktop apps (9)
|
|
19
|
+
│ ├── electron.md ← Electron (security, path resolution, packaging, signing, auto-update, CI/CD, pitfalls)
|
|
20
|
+
│ ├── tauri.md ← Tauri 2.0 (Rust backend, minimal footprint)
|
|
21
|
+
│ ├── native-app.md ← Qt/Flutter/.NET (performance-critical)
|
|
22
|
+
│ ├── web-to-desktop.md ← Web-to-desktop (Pake/Neutralinojs)
|
|
23
|
+
│ ├── game-dev.md ← Game dev (Unity/Unreal/Godot)
|
|
24
|
+
│ ├── vr-ar.md ← VR/AR (Meta Quest/Vision Pro/SteamVR)
|
|
25
|
+
│ ├── smart-platforms.md ← Smart TV/Car/RPi (Android TV/tvOS/webOS/Tizen)
|
|
26
|
+
│ └── scenarios.md ← Desktop scenarios (AI/ERP/trading/IoT/IM)
|
|
27
|
+
├── mobile/ ← Mobile (7)
|
|
28
|
+
│ ├── android.md ← Android native (Kotlin/Java)
|
|
29
|
+
│ ├── ios.md ← iOS/iPadOS (Swift/ObjC)
|
|
30
|
+
│ ├── harmonyos.md ← HarmonyOS (ArkTS)
|
|
31
|
+
│ ├── flutter-mobile.md ← Flutter mobile
|
|
32
|
+
│ ├── react-native.md ← React Native
|
|
33
|
+
│ ├── capacitor.md ← Capacitor (Web → mobile)
|
|
34
|
+
│ └── wearables.md ← Wearables (watchOS/Wear OS/Galaxy Watch)
|
|
35
|
+
├── web/ ← Web apps (6)
|
|
36
|
+
│ ├── spa.md ← SPA (React/Vue/Angular/Svelte)
|
|
37
|
+
│ ├── ssr.md ← SSR (Next.js/Nuxt/Remix)
|
|
38
|
+
│ ├── pwa.md ← PWA (Progressive Web App)
|
|
39
|
+
│ ├── serverless-edge.md ← Serverless & Edge (Lambda/CF Workers/Vercel)
|
|
40
|
+
│ ├── monorepo.md ← Monorepo (Turborepo/Nx/pnpm workspaces)
|
|
41
|
+
│ └── wasm.md ← WebAssembly (Rust/Go/C → WASM)
|
|
42
|
+
├── backend/ ← Backend services (6)
|
|
43
|
+
│ ├── node-server.md ← Node.js (Express/Nest/Fastify)
|
|
44
|
+
│ ├── python-server.md ← Python (Flask/Django/FastAPI)
|
|
45
|
+
│ ├── go-server.md ← Go (Gin/Echo/Fiber)
|
|
46
|
+
│ ├── rust-backend.md ← Rust (Axum/Actix-Web/Rocket)
|
|
47
|
+
│ ├── java-spring.md ← Java (Spring Boot/Quarkus/Micronaut)
|
|
48
|
+
│ └── php-laravel.md ← PHP (Laravel/Symfony/Slim)
|
|
49
|
+
├── ai/ ← AI/ML (2)
|
|
50
|
+
│ ├── python-ml.md ← Python ML model packaging
|
|
51
|
+
│ └── local-llm.md ← Local LLM applications
|
|
52
|
+
├── cli/ ← CLI tools & Libraries (2)
|
|
53
|
+
│ ├── python-cli.md ← Python CLI tools
|
|
54
|
+
│ └── sdk-library.md ← SDK/Library publishing (npm/PyPI/crates.io/Maven/NuGet/Go)
|
|
55
|
+
├── plugins/ ← Plugins (3)
|
|
56
|
+
│ ├── browser-extension.md ← Chrome/Edge/Firefox extensions
|
|
57
|
+
│ ├── vscode-extension.md ← VS Code extensions
|
|
58
|
+
│ └── jetbrains-plugin.md ← JetBrains plugins
|
|
59
|
+
├── embedded/ ← Embedded (4)
|
|
60
|
+
│ ├── esp32.md ← ESP32 (Arduino/ESP-IDF)
|
|
61
|
+
│ ├── stm32.md ← STM32 (Keil/CubeIDE)
|
|
62
|
+
│ ├── ros.md ← ROS/ROS2 robotics
|
|
63
|
+
│ └── car-infotainment.md ← Car infotainment (HarmonyOS/Auto/QNX)
|
|
64
|
+
├── security/ ← Security tools (1)
|
|
65
|
+
│ └── security-tools.md ← Pentest / scanners / SIEM
|
|
66
|
+
├── cloud/ ← Cloud & Infrastructure (4)
|
|
67
|
+
│ ├── docker.md ← Docker containerization
|
|
68
|
+
│ ├── kubernetes.md ← Kubernetes/Helm/K3s
|
|
69
|
+
│ ├── ci-cd-pipelines.md ← CI/CD (GitHub Actions/GitLab CI/Jenkins)
|
|
70
|
+
│ └── payment-integration.md ← Payment (Stripe/Alipay/WeChat Pay/IAP)
|
|
71
|
+
└── cross-platform/ ← Cross-platform frameworks (1)
|
|
72
|
+
└── multiplatform.md ← .NET MAUI / Kotlin Multiplatform / Compose Multiplatform
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Core Workflow
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
1. Project Scan → Identify project type, language, dependencies, architecture
|
|
79
|
+
2. Report & Intake → Report findings to user → Ask key questions interactively
|
|
80
|
+
3. Analyze & Research → Combine scan results + user answers + online research (if needed)
|
|
81
|
+
4. Recommend & Guide → Present RECOMMENDED solution + 2-3 alternatives with reasoning → discuss with user
|
|
82
|
+
5. Confirm Plan → User selects final approach → generate confirmation summary
|
|
83
|
+
6. Prepare Project → Detect config gaps → propose modifications → user approves each change → apply
|
|
84
|
+
7. Execute → Load sub-skill → run build process (≤15% deviation without approval)
|
|
85
|
+
8. Audit → Execute audit.md (mandatory, cannot be skipped)
|
|
86
|
+
9. Final Report → Output structured build report
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
> **Guidance Philosophy**: The LLM acts as a **build consultant**, not a form-filler. After scanning and asking questions, the LLM MUST synthesize all information, perform targeted research if needed, and present a clear recommendation with reasoning. The user should feel guided, not interrogated.
|
|
90
|
+
|
|
91
|
+
### Step 2: Report & Intake
|
|
92
|
+
|
|
93
|
+
After scanning, the AI reports findings and asks questions **in one interactive session**. Do NOT split across multiple steps.
|
|
94
|
+
|
|
95
|
+
**Format**: Every question MUST be presented via an interactive selection mechanism. Group 3-4 questions per call when possible.
|
|
96
|
+
|
|
97
|
+
**Language**: ALL questions and options MUST be bilingual (Chinese + English). Every question text, option label, and option description must appear in both languages. Example: `Q1. Who are the target users? / 目标用户是谁?`
|
|
98
|
+
|
|
99
|
+
**Agent-specific interaction patterns:**
|
|
100
|
+
- **Claude Code**: Use `AskUserQuestion` tool (popup with selectable options + input field)
|
|
101
|
+
- **Cursor**: Present questions as numbered options in chat; user replies with numbers
|
|
102
|
+
- **OpenCode / OpenClaw / Trae**: Use structured option lists in chat; user replies with numbers
|
|
103
|
+
- **Codex CLI**: Present questions as numbered options; user replies with numbers
|
|
104
|
+
- **GitHub Copilot**: Present questions as numbered options; user replies with numbers
|
|
105
|
+
- **Hermes / LangChain**: Present questions as numbered options; user replies with numbers
|
|
106
|
+
- **WorkBuddy / Windsurf / Zed AI**: Present questions as numbered options; user replies with numbers
|
|
107
|
+
|
|
108
|
+
> **Rule**: Every question MUST offer selectable options (never open-ended text). Include a default option (LLM auto-detected value) and a custom option for free-text input. The LLM should never ask questions without providing choices.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
#### Part A: Project Summary (Tell the User What You Found)
|
|
113
|
+
|
|
114
|
+
> **Scanning is the foundation of everything.** If the scan is wrong, all downstream decisions will be wrong. The LLM MUST scan thoroughly before asking any questions. If the scan reveals issues (missing dependencies, .env files, outdated configs), **flag them immediately** — don't wait until build time.
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
📋 Project Scan Results:
|
|
118
|
+
- Framework: [detected framework]
|
|
119
|
+
- Language: [detected language]
|
|
120
|
+
- Estimated complexity: [L1/L2/L3]
|
|
121
|
+
- Key dependencies: [list]
|
|
122
|
+
- Source files: [count]
|
|
123
|
+
- Notable: [any special findings — native modules, env files, game engine, etc.]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Dependency Completeness Check** (auto-run during scan):
|
|
127
|
+
|
|
128
|
+
The LLM MUST verify that all required dependencies for the detected framework are present. If anything is missing, **tell the user before proceeding**:
|
|
129
|
+
|
|
130
|
+
| Framework | Required Dependencies | Check Command |
|
|
131
|
+
|-----------|----------------------|---------------|
|
|
132
|
+
| Tauri | `@tauri-apps/api` in package.json | `grep "@tauri-apps/api" package.json` |
|
|
133
|
+
| Electron | `electron` + `electron-builder` in devDependencies | `grep "electron" package.json` |
|
|
134
|
+
| React Native | `react-native` + `@react-native-community/cli` | `grep "react-native" package.json` |
|
|
135
|
+
| Capacitor | `@capacitor/core` + `@capacitor/cli` | `grep "@capacitor" package.json` |
|
|
136
|
+
| Vue + Vite | `vue` + `@vitejs/plugin-vue` + `vite` | `grep "vue\|vite" package.json` |
|
|
137
|
+
| Next.js | `next` + `react` + `react-dom` | `grep "next\|react" package.json` |
|
|
138
|
+
|
|
139
|
+
**Security Scan** (auto-run during scan):
|
|
140
|
+
|
|
141
|
+
| What to check | Why | Action if found |
|
|
142
|
+
|---------------|-----|----------------|
|
|
143
|
+
| `.env` / `.env.*` files | May contain API keys, tokens | ⚠️ Flag to user: "Found .env with sensitive data — will remove before packaging" |
|
|
144
|
+
| Hardcoded `sk-` / `api_key` / `secret` in source | Credential leak | ⚠️ Flag to user: "Found hardcoded credentials in [file]" |
|
|
145
|
+
| `node_modules` in git | Bloat, potential secret leak | ⚠️ Suggest adding to `.gitignore` |
|
|
146
|
+
| Missing `.gitignore` | May accidentally commit secrets | ⚠️ Suggest creating one |
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
#### Part B: Build Overview Confirmation
|
|
151
|
+
|
|
152
|
+
> After scanning, the FIRST thing the LLM MUST do is present a build overview and ask the user to confirm, correct, or supplement before asking any other questions. This ensures the LLM correctly understood the project scope.
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
📋 Build Overview / 构建总览
|
|
156
|
+
|
|
157
|
+
Project type / 项目类型: [detected type / 检测到的类型]
|
|
158
|
+
Framework / 框架: [detected framework / 检测到的框架]
|
|
159
|
+
Language / 语言: [detected language / 检测到的语言]
|
|
160
|
+
Entry point / 入口文件: [detected entry / 检测到的入口]
|
|
161
|
+
Build config / 构建配置: [detected config files / 检测到的配置文件]
|
|
162
|
+
Dependencies / 依赖: [key dependencies / 关键依赖]
|
|
163
|
+
Output expected / 预期产出: [e.g., desktop installer / 例如:桌面安装包]
|
|
164
|
+
|
|
165
|
+
Is this correct? Any files to add or exclude?
|
|
166
|
+
以上信息是否正确?是否需要添加或排除某些文件?
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Present the build overview and options using the agent's interactive selection mechanism (see format guidelines above):
|
|
170
|
+
|
|
171
|
+
- ✅ **Correct, proceed / 正确,继续**
|
|
172
|
+
- 📝 **Need to add files / 需要添加文件** → type the files after selecting
|
|
173
|
+
- 🗑️ **Need to exclude files / 需要排除文件** → type the files after selecting
|
|
174
|
+
- 🔄 **Need to correct / 需要修正** → describe the corrections after selecting
|
|
175
|
+
|
|
176
|
+
> Only proceed to Q1 after the user confirms the build overview. If the user requests changes, update the overview and re-confirm.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
#### Part C: Key Questions
|
|
181
|
+
|
|
182
|
+
**Q1. Who are the target users? / 目标用户是谁?**
|
|
183
|
+
- 1. ⭐ General consumers → One-click installer (NSIS/DMG/APK) / 普通消费者 → 一键安装包
|
|
184
|
+
- 2. Enterprise internal → MSI/Group Policy/MDM / 企业内部 → MSI/组策略/MDM
|
|
185
|
+
- 3. Developers → npm/pip/cargo / 开发者 → npm/pip/cargo
|
|
186
|
+
- 4. Government/military → Domestic platform adaptation / 政府军工 → 国产化平台适配
|
|
187
|
+
|
|
188
|
+
**Q2. Distribution channel? / 分发渠道?**
|
|
189
|
+
- 1. ⭐ Website download → Code signing + auto-update / 官网下载 → 代码签名 + 自动更新
|
|
190
|
+
- 2. App Store → Store signing + review compliance / 应用商店 → 商店签名 + 审核合规
|
|
191
|
+
- 3. Enterprise internal → MDM/Group Policy / 企业内部 → MDM/组策略
|
|
192
|
+
- 4. Open source → GitHub Releases / npm / PyPI / 开源 → GitHub Releases / npm / PyPI
|
|
193
|
+
|
|
194
|
+
**Q3a. Desktop platform(s)? / 桌面端平台?** (multi-select / 多选)
|
|
195
|
+
- 1. ⭐ Windows
|
|
196
|
+
- 2. macOS
|
|
197
|
+
- 3. Linux
|
|
198
|
+
- 4. None / 不需要桌面端
|
|
199
|
+
|
|
200
|
+
**Q3b. Mobile platform(s)? / 移动端平台?** (multi-select / 多选)
|
|
201
|
+
- 1. Android
|
|
202
|
+
- 2. iOS/iPadOS
|
|
203
|
+
- 3. HarmonyOS / 鸿蒙
|
|
204
|
+
- 4. None / 不需要移动端
|
|
205
|
+
|
|
206
|
+
**Q3c. Architecture per platform? / 各平台架构?** (ask for EACH platform selected in Q3a/Q3b / 按 Q3a/Q3b 选择的平台逐个询问)
|
|
207
|
+
|
|
208
|
+
> Example: If user selected "Windows + macOS" in Q3a, ask:
|
|
209
|
+
> "You selected Windows and macOS. Now choose architecture for each:"
|
|
210
|
+
> 示例:如果用户在 Q3a 选择了 "Windows + macOS",询问:
|
|
211
|
+
> "您选择了 Windows 和 macOS,请为每个平台选择架构:"
|
|
212
|
+
|
|
213
|
+
- **Windows 架构?**
|
|
214
|
+
- 1. ⭐ x64 only / 仅 x64(最常见,覆盖 99% 电脑)
|
|
215
|
+
- 2. ARM64 only / 仅 ARM64(Surface Pro X、骁龙笔记本)
|
|
216
|
+
- 3. Both x64 + ARM64 / 同时输出 x64 + ARM64 两个安装包
|
|
217
|
+
- **macOS 架构?**
|
|
218
|
+
- 1. ⭐ Universal Binary / 通用二进制(x64 + ARM64 合并,兼容所有 Mac)
|
|
219
|
+
- 2. ARM64 only / 仅 ARM64(Apple Silicon M1+,不支持 Intel Mac)
|
|
220
|
+
- 3. x64 only / 仅 x64(仅 Intel Mac,不推荐)
|
|
221
|
+
- **Linux 架构?**
|
|
222
|
+
- 1. ⭐ x64 only / 仅 x64(最常见)
|
|
223
|
+
- 2. ARM64 only / 仅 ARM64(树莓派 4/5、ARM 服务器)
|
|
224
|
+
- 3. Both x64 + ARM64 / 同时输出 x64 + ARM64 两个包
|
|
225
|
+
- **Android 架构?**
|
|
226
|
+
- 1. ⭐ ARM64 (v8a) — covers 95%+ devices / 覆盖 95%+ 现代设备
|
|
227
|
+
- 2. ARM64 + ARMv7 — for older devices / 兼容旧设备,APK 体积更大
|
|
228
|
+
- 3. Universal APK — all architectures / 全架构,体积最大
|
|
229
|
+
- **iOS 架构?**
|
|
230
|
+
- 1. ⭐ ARM64 (all modern Apple devices, automatic) / 所有现代 Apple 设备,自动适配
|
|
231
|
+
|
|
232
|
+
> All selected architecture packages will be output to the same target folder (see output location in Step 6).
|
|
233
|
+
> 所有选中的架构包将输出到同一目标文件夹(见 Step 6 输出位置)。
|
|
234
|
+
|
|
235
|
+
**Q3d. Architecture output mode? / 架构输出模式?** (only ask when user selected 2+ architectures for a platform in Q3c / 仅当用户在 Q3c 中为某平台选择了 2 个以上架构时才询问)
|
|
236
|
+
|
|
237
|
+
> **Interaction flow / 交互流程**: First ask "Separate or Merged?" per platform. If user selects "Separate", follow up with a second question to select which specific architectures to output. Do NOT try to combine both questions into one call.
|
|
238
|
+
> 先按平台询问"分开还是合并?"。如果用户选择"分开",再用第二个问题选择具体输出哪些架构。不要把两个问题合并在一次调用中。
|
|
239
|
+
|
|
240
|
+
> This determines how multi-architecture builds are packaged. Based on your Q3c selections, here is what will be output:
|
|
241
|
+
> 决定多架构构建如何打包。根据您在 Q3c 的选择,以下是输出预览:
|
|
242
|
+
|
|
243
|
+
**Example / 示例:** If you selected Windows (x64 + ARM64) + macOS (Universal Binary) in Q3c:
|
|
244
|
+
|
|
245
|
+
| Mode / 模式 | Output / 输出 | Count / 数量 |
|
|
246
|
+
|------|--------|:-----:|
|
|
247
|
+
| **Separate / 分开** | `MyApp-v1.0.0-windows-x64.exe` + `MyApp-v1.0.0-windows-arm64.exe` + `MyApp-v1.0.0-macos-universal.dmg` | 3 files |
|
|
248
|
+
| **Merged / 合并** | `MyApp-v1.0.0-windows.exe` (x64+ARM64) + `MyApp-v1.0.0-macos-universal.dmg` | 2 files |
|
|
249
|
+
|
|
250
|
+
- **Windows (if x64 + ARM64 selected in Q3c)? / Windows(如在 Q3c 选择了 x64 + ARM64)?**
|
|
251
|
+
- 1. ⭐ Separate — select which to output (multi-select) / 分开 — 选择输出哪些(多选):
|
|
252
|
+
- x64
|
|
253
|
+
- ARM64
|
|
254
|
+
- 2. Merged — single installer / 合并 — 单个安装包
|
|
255
|
+
- **macOS (if Universal Binary NOT selected in Q3c)? / macOS(如未选择通用二进制)?**
|
|
256
|
+
- 1. ⭐ Separate — select which to output (multi-select) / 分开 — 选择输出哪些(多选):
|
|
257
|
+
- x64 (Intel)
|
|
258
|
+
- ARM64 (Apple Silicon)
|
|
259
|
+
- 2. Merged — single `.dmg` / 合并 — 单个 `.dmg`
|
|
260
|
+
- **Linux (if x64 + ARM64 selected in Q3c)? / Linux(如选择了 x64 + ARM64)?**
|
|
261
|
+
- 1. ⭐ Separate — select which to output (multi-select) / 分开 — 选择输出哪些(多选):
|
|
262
|
+
- x64
|
|
263
|
+
- ARM64
|
|
264
|
+
- 2. Merged — single package / 合并 — 单个包
|
|
265
|
+
- **Android (if multiple architectures selected in Q3c)? / Android(如选择了多个架构)?**
|
|
266
|
+
- 1. ⭐ Separate — select which to output (multi-select) / 分开 — 选择输出哪些(多选):
|
|
267
|
+
- ARM64 (v8a)
|
|
268
|
+
- ARMv7
|
|
269
|
+
- Universal / 全架构
|
|
270
|
+
- 2. Single APK — all architectures merged / 单个 APK — 全架构合并
|
|
271
|
+
|
|
272
|
+
> **Naming convention / 命名规范** (auto-applied for separate output / 分开输出时自动应用):
|
|
273
|
+
> `[AppName]-v[Version]-[OS]-[Arch].[ext]`
|
|
274
|
+
> Examples / 示例: `MyApp-v1.0.0-windows-x64.exe`, `MyApp-v1.0.0-macos-arm64.dmg`
|
|
275
|
+
|
|
276
|
+
> **After user selects, show final output list / 用户选择后,展示最终输出列表**:
|
|
277
|
+
> ```
|
|
278
|
+
> 📦 Build output / 构建输出 (2 files):
|
|
279
|
+
> 1. MyApp-v1.0.0-windows-x64.exe (Windows x64)
|
|
280
|
+
> 2. MyApp-v1.0.0-macos-arm64.dmg (macOS ARM64)
|
|
281
|
+
> ```
|
|
282
|
+
> If user deselects an architecture, it is excluded from the build entirely.
|
|
283
|
+
> 如果用户取消勾选某个架构,该架构将完全不参与构建。
|
|
284
|
+
|
|
285
|
+
**Q3e. Minimum OS version? / 最低系统版本?** (ask for EACH platform selected in Q3a/Q3b / 按 Q3a/Q3b 选择的平台逐个询问)
|
|
286
|
+
|
|
287
|
+
- **Windows (if selected)?**
|
|
288
|
+
- 1. ⭐ Windows 10 (most common, Electron 31+ requires) / 最常见,Electron 31+ 要求
|
|
289
|
+
- 2. Windows 11
|
|
290
|
+
- 3. Custom / 自定义 → type version in tool / 在工具中输入版本号
|
|
291
|
+
- **macOS (if selected)?**
|
|
292
|
+
- 1. ⭐ macOS 10.15 (Catalina, Electron 31 default) / Electron 31 默认
|
|
293
|
+
- 2. macOS 12 (Monterey)
|
|
294
|
+
- 3. Custom / 自定义 → type version in tool / 在工具中输入版本号
|
|
295
|
+
- **Linux (if selected)?**
|
|
296
|
+
- 1. ⭐ No specific requirement / 无特殊要求
|
|
297
|
+
- 2. Custom / 自定义 → type requirement in tool / 在工具中输入要求
|
|
298
|
+
- **Android (if selected)?**
|
|
299
|
+
- 1. ⭐ Android 8.0 (API 26, covers 95%+ devices) / 覆盖 95%+ 设备
|
|
300
|
+
- 2. Android 10 (API 29)
|
|
301
|
+
- 3. Custom / 自定义 → type API level in tool / 在工具中输入 API 级别
|
|
302
|
+
- **iOS (if selected)?**
|
|
303
|
+
- 1. ⭐ iOS 15.0 (minimum for modern SwiftUI features) / 现代 SwiftUI 最低要求
|
|
304
|
+
- 2. iOS 16.0
|
|
305
|
+
- 3. Custom / 自定义 → type version in tool / 在工具中输入版本号
|
|
306
|
+
|
|
307
|
+
**Q4. App name? / 应用名称?**
|
|
308
|
+
- 1. ⭐ [detected folder name] / [检测到的文件夹名称]
|
|
309
|
+
- 2. Custom / 自定义 → type name in tool / 在工具中输入名称
|
|
310
|
+
|
|
311
|
+
**Q4b. Version? / 版本号?**
|
|
312
|
+
- 1. ⭐ [detected from package.json or default 1.0.0] / [从 package.json 检测或默认 1.0.0]
|
|
313
|
+
- 2. Custom / 自定义 → type version in tool / 在工具中输入版本号
|
|
314
|
+
|
|
315
|
+
**Q4c. Copyright holder? / 版权持有者?**
|
|
316
|
+
- 1. ⭐ [detected from git config user.name] / [从 git 配置的用户名检测]
|
|
317
|
+
- 2. Custom / 自定义 → type name in tool / 在工具中输入名称
|
|
318
|
+
|
|
319
|
+
**Q4d. Language / Localization? / 语言 / 本地化?**
|
|
320
|
+
- 1. ⭐ English only / 仅英文(默认)
|
|
321
|
+
- 2. Chinese / 中文(简体 + 繁体)
|
|
322
|
+
- 3. Multi-language / 多语言(English + Chinese)
|
|
323
|
+
- 4. Custom / 自定义 → type languages in tool / 在工具中输入语言
|
|
324
|
+
|
|
325
|
+
**Q4e. License file? / 许可证文件?**
|
|
326
|
+
- 1. ⭐ [detected from LICENSE file, e.g., MIT] / [从 LICENSE 文件检测,如 MIT]
|
|
327
|
+
- 2. Open source (Apache/GPL/其他) / 开源协议 → type in tool / 在工具中输入
|
|
328
|
+
- 3. Proprietary / Commercial / 商业 / 专有
|
|
329
|
+
- 4. None / 无 — do not include license in package / 不在安装包中包含许可证
|
|
330
|
+
|
|
331
|
+
**Q4f. Installer UI customization? / 安装界面自定义?**
|
|
332
|
+
- 1. ⭐ Default theme / 默认主题(简洁标准外观)
|
|
333
|
+
- 2. Custom branding / 自定义品牌 → describe in tool / 在工具中描述需求(如自定义欢迎页、背景图、文字颜色等)
|
|
334
|
+
- 3. Minimal / unbranded / 极简无品牌 — 无 logo、无自定义文字,纯功能性安装器
|
|
335
|
+
|
|
336
|
+
**Q6. Source code protection level? / 源码保护等级?**
|
|
337
|
+
|
|
338
|
+
> This determines how hard it is for someone to decompile and read your source code.
|
|
339
|
+
> 决定他人反编译和读取源码的难度。
|
|
340
|
+
|
|
341
|
+
- 1. ⭐ **Standard / 标准** — Code bundled (ASAR for Electron; Rust compiled for Tauri) / 代码打包(Electron: ASAR; Tauri: 已编译 Rust,反编译难度高)
|
|
342
|
+
- 2. **Obfuscation / 混淆** — JS/TS code scrambled, adds ~1 min build time / 代码混淆,增加约 1 分钟构建时间
|
|
343
|
+
- 3. **Full protection / 完整保护** — Obfuscation + AES encryption + image embedding, adds ~5 min / 混淆 + AES 加密 + 图片嵌入,增加约 5 分钟
|
|
344
|
+
- 4. **None / 不保护** — Open source, no protection needed / 开源项目,无需保护
|
|
345
|
+
|
|
346
|
+
**Q7. Clear test data and hardcoded keys? / 清除测试数据和硬编码密钥?**
|
|
347
|
+
- 1. ⭐ Yes, clean everything / 是,全部清除
|
|
348
|
+
- 2. No (dev build only) / 否(仅开发构建)
|
|
349
|
+
|
|
350
|
+
**Q8. Code signing? / 代码签名?**
|
|
351
|
+
- 1. ⭐ Yes, I have certificates / 是,我有证书
|
|
352
|
+
- 2. No signing (will show security warnings to users) / 不签名(用户将看到安全警告)
|
|
353
|
+
- 3. Not yet, guide me through the process / 还没有,引导我完成申请流程
|
|
354
|
+
|
|
355
|
+
**Q9. Auto-update and release type? / 自动更新与发布类型?**
|
|
356
|
+
- 1. ⭐ First publish + auto-update / 首次发布 + 自动更新
|
|
357
|
+
- 2. First publish, no auto-update / 首次发布,不自动更新
|
|
358
|
+
- 3. Update existing app + auto-update / 更新已有应用 + 自动更新
|
|
359
|
+
- 4. Update existing app, no auto-update / 更新已有应用,不自动更新
|
|
360
|
+
|
|
361
|
+
**Q10. Any special requirements? / 特殊需求?**
|
|
362
|
+
- 1. ⭐ None / 无
|
|
363
|
+
- 2. Custom / 自定义 → describe in tool / 在工具中描述需求
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
### Step 3: Analyze & Research
|
|
368
|
+
|
|
369
|
+
After collecting the user's answers, the LLM **MUST**:
|
|
370
|
+
|
|
371
|
+
1. **Synthesize** — Combine scan results (Step 1) + user answers (Step 2) + complexity assessment
|
|
372
|
+
2. **Research if needed** — If the project type is niche or the user has unusual requirements, search for official documentation or community solutions (time-boxed to 2-3 minutes)
|
|
373
|
+
3. **Determine the best approach** — Based on ALL available information, identify the optimal packaging strategy
|
|
374
|
+
4. **Identify alternatives** — Find 2-3 viable alternatives with clear trade-offs
|
|
375
|
+
|
|
376
|
+
**When to research online:**
|
|
377
|
+
- User's framework/version is not covered by any sub-skill
|
|
378
|
+
- User has requirements that conflict with standard approaches
|
|
379
|
+
- Latest best practices may have changed (check official docs)
|
|
380
|
+
|
|
381
|
+
**When NOT to research:**
|
|
382
|
+
- The project clearly matches an existing sub-skill
|
|
383
|
+
- User's requirements are straightforward
|
|
384
|
+
- Research would add no value beyond what the sub-skill already covers
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
### Step 4: Recommend & Guide (THE KEY STEP)
|
|
389
|
+
|
|
390
|
+
This is where the LLM acts as a **consultant**. Present the analysis as a conversation, not a data dump.
|
|
391
|
+
|
|
392
|
+
**Output format:**
|
|
393
|
+
|
|
394
|
+
```
|
|
395
|
+
═══════════════════════════════════════════════
|
|
396
|
+
PACKAGING RECOMMENDATION
|
|
397
|
+
═══════════════════════════════════════════════
|
|
398
|
+
|
|
399
|
+
Based on your project scan and requirements, here is my analysis:
|
|
400
|
+
|
|
401
|
+
[Project Analysis]
|
|
402
|
+
Your [framework] project has [complexity] complexity with [key characteristics].
|
|
403
|
+
The main challenge will be [identified challenge].
|
|
404
|
+
|
|
405
|
+
⭐ RECOMMENDED: [Solution Name]
|
|
406
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
407
|
+
Why this approach:
|
|
408
|
+
- [Reason 1 — e.g., "Your team has only frontend experience, so Electron is the lowest barrier"]
|
|
409
|
+
- [Reason 2 — e.g., "You need SQLite native module, which requires Node.js runtime"]
|
|
410
|
+
- [Reason 3 — e.g., "Target size ~150MB is acceptable for your use case"]
|
|
411
|
+
|
|
412
|
+
Configuration:
|
|
413
|
+
- Framework: [Electron 43 + React + Express + SQLite]
|
|
414
|
+
- Build tool: [electron-builder 26]
|
|
415
|
+
- Platforms: [Windows + macOS]
|
|
416
|
+
- Architecture: [Windows x64, macOS Universal]
|
|
417
|
+
- Package format: [NSIS for Windows x64, DMG for macOS Universal]
|
|
418
|
+
- Source protection: [ASAR + JavaScript obfuscation]
|
|
419
|
+
- Signing: [Windows EV cert + macOS Developer ID]
|
|
420
|
+
- Auto-update: [electron-updater via GitHub Releases]
|
|
421
|
+
- Output folder: [./release/]
|
|
422
|
+
- Expected size: [~150MB per platform]
|
|
423
|
+
|
|
424
|
+
Alternative A: [Tauri 2.11]
|
|
425
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
426
|
+
- Pro: Much smaller (3-10MB), better performance
|
|
427
|
+
- Con: Requires Rust rewrite of backend, higher learning curve
|
|
428
|
+
- When to choose: If team can learn Rust and package size is critical
|
|
429
|
+
|
|
430
|
+
Alternative B: [Neutralinojs]
|
|
431
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
432
|
+
- Pro: Minimal footprint (~2MB)
|
|
433
|
+
- Con: Limited native module support, smaller ecosystem
|
|
434
|
+
- When to choose: If app is mostly a web wrapper with no backend
|
|
435
|
+
|
|
436
|
+
═══════════════════════════════════════════════
|
|
437
|
+
Which approach would you like to proceed with?
|
|
438
|
+
1. ⭐ Recommended ([Solution Name])
|
|
439
|
+
2. Alternative A
|
|
440
|
+
3. Alternative B
|
|
441
|
+
4. Custom combination (tell me what you want)
|
|
442
|
+
═══════════════════════════════════════════════
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
**Key principles for the recommendation:**
|
|
446
|
+
- **Lead with WHY** — Don't just say "use Electron". Explain WHY based on the user's specific answers.
|
|
447
|
+
- **Be specific** — Reference the user's actual requirements (target users, platform, budget).
|
|
448
|
+
- **Quantify** — Give expected package size, build time, complexity.
|
|
449
|
+
- **Honest trade-offs** — Don't hide downsides. "Electron is 150MB but Tauri is 3MB" is better than pretending size doesn't matter.
|
|
450
|
+
- **Conditional advice** — "If X changes, switch to Y" helps the user understand the decision tree.
|
|
451
|
+
- **Don't rush** — If the user wants to discuss, engage. Answer questions before proceeding.
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
### Step 5: Confirm Plan
|
|
456
|
+
|
|
457
|
+
After the user selects an approach, generate a final confirmation summary:
|
|
458
|
+
|
|
459
|
+
```
|
|
460
|
+
═══════════════════════════════════════════════
|
|
461
|
+
FINAL BUILD PLAN
|
|
462
|
+
═══════════════════════════════════════════════
|
|
463
|
+
|
|
464
|
+
[App] MyApp v1.0.0
|
|
465
|
+
[Framework] Electron 43 + React + Express + SQLite
|
|
466
|
+
[Platform] Windows + macOS
|
|
467
|
+
[Architecture] Windows: x64 | macOS: Universal (x64+ARM64)
|
|
468
|
+
[Installer] NSIS (.exe) for Win x64 + DMG for macOS Universal
|
|
469
|
+
[Logo] icon.png (256x256, PNG with alpha, rounded corners applied)
|
|
470
|
+
[Output] ./release/ (all installers in this folder)
|
|
471
|
+
[Protection] ASAR + JavaScript obfuscation
|
|
472
|
+
[Test Data] ✅ Cleared
|
|
473
|
+
[API Keys] ✅ Cleared
|
|
474
|
+
[Signing] Windows EV cert + macOS Developer ID + notarization
|
|
475
|
+
[Auto-update] electron-updater via GitHub Releases
|
|
476
|
+
|
|
477
|
+
═══════════════════════════════════════════════
|
|
478
|
+
Reply 'yes' to start building, or tell me what to change.
|
|
479
|
+
═══════════════════════════════════════════════
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
Only proceed to execution after the user explicitly confirms.
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
**Dynamic Adaptation Rules:**
|
|
487
|
+
- Do NOT lock into rigid rules. If the user has special requirements (e.g., "I need to support both Windows XP and the latest macOS"), provide a viable approach rather than saying "not supported"
|
|
488
|
+
- If the standard sub-skill approach does not fit, provide a custom solution based on general engineering knowledge
|
|
489
|
+
- Every recommendation MUST explain **why** this approach is recommended and **under what circumstances** to switch to an alternative
|
|
490
|
+
- When the user asks about **deployment or hosting** (e.g., "How do I deploy this Docker image?", "Which platform should I host on?"), provide guidance on WHERE and HOW to deploy, but do NOT execute the deployment — that is outside this skill's scope. This skill handles building and packaging only.
|
|
491
|
+
- If the user skips a question (says "skip" or "default"), use the ⭐ recommended option and note it in the confirmation summary
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
### Step 6: Prepare Project
|
|
496
|
+
|
|
497
|
+
After the user confirms the build plan, the LLM MUST check whether the project is ready for the chosen packaging strategy. Many projects require configuration changes, dependency additions, or file modifications before they can be built successfully.
|
|
498
|
+
|
|
499
|
+
> **Core rule**: Every modification to the user's project requires explicit approval. Never auto-apply changes.
|
|
500
|
+
|
|
501
|
+
#### 6a. Detect Gaps
|
|
502
|
+
|
|
503
|
+
Based on the confirmed build plan and the selected sub-skill, scan for:
|
|
504
|
+
|
|
505
|
+
| Check | Examples |
|
|
506
|
+
|-------|---------|
|
|
507
|
+
| **Missing config files** | `electron-builder.yml`, `tauri.conf.json`, `Dockerfile`, `.github/workflows/build.yml` |
|
|
508
|
+
| **Missing dependencies** | `electron-builder` not in `devDependencies`, `tauri-cli` not installed |
|
|
509
|
+
| **Outdated or incorrect config** | Wrong `main` field in `package.json`, missing `build` scripts |
|
|
510
|
+
| **Missing build assets** | App icon not found or wrong format, no `entitlements.plist` for macOS |
|
|
511
|
+
| **Signing prerequisites** | No signing certificates configured, missing env vars |
|
|
512
|
+
| **Framework-specific requirements** | iOS: no `ExportOptions.plist`; Tauri: Rust toolchain not detected |
|
|
513
|
+
|
|
514
|
+
#### 6b. Ask User Preferences
|
|
515
|
+
|
|
516
|
+
Before presenting the modification plan, the LLM MUST ask the following questions using the agent's interactive selection mechanism (see format guidelines above):
|
|
517
|
+
|
|
518
|
+
**Logo / Icon / Logo 图标:**
|
|
519
|
+
- 1. ⭐ I have a logo / 我有 logo → type file path in tool / 在工具中输入文件路径
|
|
520
|
+
- 2. Need to generate / 需要生成 → Recommend tool based on platform / 根据平台推荐工具
|
|
521
|
+
- 3. Use default / 使用默认 → Not recommended for production / 不建议用于正式发布
|
|
522
|
+
|
|
523
|
+
**Output location / 输出位置:**
|
|
524
|
+
- 1. ⭐ `./release/` (default / 默认)
|
|
525
|
+
- 2. Custom path / 自定义路径 → type path in tool / 在工具中输入路径
|
|
526
|
+
|
|
527
|
+
> When multiple architectures are output separately (Q3d), filenames automatically include platform and architecture: `[AppName]-v[Version]-[OS]-[Arch].[ext]`
|
|
528
|
+
> 当多架构分开输出时(Q3d),文件名自动包含平台和架构信息。
|
|
529
|
+
|
|
530
|
+
> **Note**: Encryption/protection level (Q6) was already confirmed in Step 2. Use that answer directly — do NOT ask again.
|
|
531
|
+
> **注意**:加密/保护等级(Q6)已在 Step 2 确认,直接使用,不要重复询问。
|
|
532
|
+
|
|
533
|
+
**After logo path is provided / 提供 logo 路径后,追问:**
|
|
534
|
+
- 1. ⭐ Crop and round corners for installer icon / 裁切圆角用于安装包图标
|
|
535
|
+
- 2. Use original as-is / 使用原图不处理
|
|
536
|
+
- 3. Skip / 跳过
|
|
537
|
+
|
|
538
|
+
#### 6c. Present Modification Plan
|
|
539
|
+
|
|
540
|
+
Present ALL required changes to the user in a structured checklist **before making any changes**, then use the agent's interactive selection mechanism for confirmation:
|
|
541
|
+
|
|
542
|
+
```
|
|
543
|
+
📋 Pre-Build Preparation / 构建前准备 — [Framework] [Platform]
|
|
544
|
+
|
|
545
|
+
App icon / 应用图标: Please provide the logo file path / 请提供 logo 文件路径
|
|
546
|
+
→ Crop and round corners? / 是否裁切圆角?(yes/no)
|
|
547
|
+
|
|
548
|
+
Config changes needed / 需要的配置变更:
|
|
549
|
+
|
|
550
|
+
[1] Add file / 添加文件: electron-builder.yml
|
|
551
|
+
→ NSIS installer, code signing, auto-update
|
|
552
|
+
[2] Add dependency / 添加依赖: electron-builder (devDependency)
|
|
553
|
+
→ Required build tool / 构建必需工具
|
|
554
|
+
[3] Modify / 修改: package.json → add "build" script
|
|
555
|
+
→ "build": "electron-builder --win --mac"
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
Then use the agent's interactive selection mechanism:
|
|
559
|
+
|
|
560
|
+
- ✅ **Approve all / 全部同意**
|
|
561
|
+
- ☑️ **Approve selectively / 选择性同意** → type the numbers in tool / 在工具中输入编号 (e.g., "1,3")
|
|
562
|
+
- ➕ **Need to add changes / 需要补充修改** → describe the additional changes in tool / 在工具中描述补充内容
|
|
563
|
+
- ❌ **Reject all / 全部拒绝** → explain what to change in tool / 在工具中说明需要修改的内容
|
|
564
|
+
|
|
565
|
+
> Only apply changes the user explicitly approved. If user adds new changes, append them to the plan and re-confirm.
|
|
566
|
+
|
|
567
|
+
#### 6c. Apply Approved Changes
|
|
568
|
+
|
|
569
|
+
- Only apply changes the user explicitly approved
|
|
570
|
+
- For each applied change, show a brief confirmation
|
|
571
|
+
- If the user skips a critical change, warn about potential build failure but respect the decision
|
|
572
|
+
- After all changes are applied, re-confirm readiness before proceeding to Execute
|
|
573
|
+
|
|
574
|
+
#### 6d. What This Step Does NOT Do
|
|
575
|
+
|
|
576
|
+
- Does NOT modify business logic or application source code
|
|
577
|
+
- Does NOT change framework version or architecture decisions (those were finalized in Step 5)
|
|
578
|
+
- Does NOT install system-level tools (e.g., Xcode, Android SDK) — those are user's responsibility
|
|
579
|
+
- Does NOT create signing certificates or provisioning profiles
|
|
580
|
+
|
|
581
|
+
> **Why this step exists**: Skipping project preparation is the #1 cause of build failures. A missing config file or wrong dependency version can waste hours of debugging. This step catches those issues early and fixes them with user approval.
|
|
582
|
+
|
|
583
|
+
---
|
|
584
|
+
|
|
585
|
+
When the user's project does NOT match any existing sub-skill (e.g., a niche framework, emerging technology, or proprietary platform):
|
|
586
|
+
|
|
587
|
+
1. **Search for official documentation** — Find the framework/platform's official build guide
|
|
588
|
+
2. **Search for community solutions** — Look for GitHub repos, blog posts, or Stack Overflow answers from experienced developers
|
|
589
|
+
3. **Adapt a similar sub-skill** — Find the closest matching sub-skill and adapt its patterns
|
|
590
|
+
4. **Time-box the research** — Spend no more than 2-3 minutes on research. If no clear guide is found, tell the user honestly and suggest they consult the platform's official documentation
|
|
591
|
+
5. **Document the approach** — Present the found approach to the user for confirmation before proceeding
|
|
592
|
+
|
|
593
|
+
**Priority for research sources:**
|
|
594
|
+
1. Official documentation (docs.xxx.com)
|
|
595
|
+
2. Official GitHub repository (README, wiki, examples)
|
|
596
|
+
3. Well-known tech blogs (with verifiable code examples)
|
|
597
|
+
4. Stack Overflow answers with high vote counts
|
|
598
|
+
5. **Never** use unverified random blog posts or outdated tutorials
|
|
599
|
+
|
|
600
|
+
---
|
|
601
|
+
|
|
602
|
+
# Phase 1: Project Scan
|
|
603
|
+
|
|
604
|
+
Execute the following scan commands before any decision-making:
|
|
605
|
+
|
|
606
|
+
```bash
|
|
607
|
+
# ── Project structure detection ──
|
|
608
|
+
find . -maxdepth 2 -name "package.json" -o -name "Cargo.toml" -o -name "pubspec.yaml" \
|
|
609
|
+
-o -name "*.csproj" -o -name "go.mod" -o -name "CMakeLists.txt" \
|
|
610
|
+
-o -name "build.gradle" -o -name "pom.xml" -o -name "pyproject.toml" \
|
|
611
|
+
-o -name "requirements.txt" -o -name "Gemfile" -o -name "setup.py" 2>/dev/null
|
|
612
|
+
|
|
613
|
+
# ── Backend presence ──
|
|
614
|
+
ls server/ src/server/ backend/ api/ api-rs/ src-tauri/ app/ cmd/ internal/ 2>/dev/null
|
|
615
|
+
|
|
616
|
+
# ── Language detection ──
|
|
617
|
+
ls *.py *.go *.rs *.java *.cs *.dart *.swift *.c *.cpp *.h *.hpp *.kt *.ets 2>/dev/null
|
|
618
|
+
|
|
619
|
+
# ── Node.js dependency analysis ──
|
|
620
|
+
if [ -f package.json ]; then
|
|
621
|
+
echo "=== Frontend ==="
|
|
622
|
+
cat package.json | grep -oE '"(react|vue|svelte|angular|tailwindcss|vite|webpack|esbuild)[^"]*"' 2>/dev/null
|
|
623
|
+
echo "=== Native Modules ==="
|
|
624
|
+
cat package.json | grep -oE '"(better-sqlite3|sharp|bcrypt|canvas|node-gyp|serialport|usb)[^"]*"' 2>/dev/null
|
|
625
|
+
echo "=== Database ==="
|
|
626
|
+
cat package.json | grep -oE '"(sqlite|mysql|postgres|mongo|prisma|drizzle|redis|better-sqlite3)[^"]*"' 2>/dev/null
|
|
627
|
+
echo "=== Cloud Services ==="
|
|
628
|
+
cat package.json | grep -oE '"(openai|anthropic|google.*ai|deepseek|azure|aws|firebase)[^"]*"' 2>/dev/null
|
|
629
|
+
echo "=== Realtime ==="
|
|
630
|
+
cat package.json | grep -oE '"(socket\.io|ws:|websocket|mqtt|nats|sse)[^"]*"' 2>/dev/null
|
|
631
|
+
echo "=== Mobile ==="
|
|
632
|
+
cat package.json | grep -oE '"(react-native|expo|@capacitor|ionic|nativescript)[^"]*"' 2>/dev/null
|
|
633
|
+
echo "=== Scripts ==="
|
|
634
|
+
cat package.json | grep -oE '"(dev|build|start|electron|tauri|package|release|deploy)[^"]*"' 2>/dev/null
|
|
635
|
+
fi
|
|
636
|
+
|
|
637
|
+
# ── Game engine detection ──
|
|
638
|
+
find . -maxdepth 2 -name "*.uproject" -o -name "ProjectSettings" -o -name "*.godot" 2>/dev/null
|
|
639
|
+
|
|
640
|
+
# ── C/C++ detection ──
|
|
641
|
+
find . -maxdepth 2 -name "CMakeLists.txt" -o -name "*.sln" -o -name "*.vcxproj" 2>/dev/null
|
|
642
|
+
|
|
643
|
+
# ── Embedded detection ──
|
|
644
|
+
ls platformio.ini sdkconfig prj.conf 2>/dev/null
|
|
645
|
+
find . -maxdepth 3 -name "*.ino" -o -name "sdkconfig" 2>/dev/null
|
|
646
|
+
|
|
647
|
+
# ── Plugin detection ──
|
|
648
|
+
ls manifest.json content.js background.js popup.html 2>/dev/null
|
|
649
|
+
|
|
650
|
+
# ── HarmonyOS detection ──
|
|
651
|
+
ls oh-package.json5 module.json5 2>/dev/null
|
|
652
|
+
|
|
653
|
+
# ── Environment variables ──
|
|
654
|
+
ls .env .env.* .env.example 2>/dev/null
|
|
655
|
+
|
|
656
|
+
# ── Code volume estimate ──
|
|
657
|
+
find . -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.py" -o -name "*.go" \
|
|
658
|
+
-o -name "*.rs" -o -name "*.java" -o -name "*.kt" -o -name "*.swift" -o -name "*.dart" \
|
|
659
|
+
-o -name "*.cpp" -o -name "*.c" -o -name "*.cs" -o -name "*.ets" 2>/dev/null \
|
|
660
|
+
| grep -v node_modules | grep -v .git | wc -l
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
---
|
|
664
|
+
|
|
665
|
+
# Phase 2: Platform Classification
|
|
666
|
+
|
|
667
|
+
After scanning, classify the project into one or more categories:
|
|
668
|
+
|
|
669
|
+
| Category | Detection Signals | Sub-skill |
|
|
670
|
+
|----------|-------------------|-----------|
|
|
671
|
+
| **Desktop App** | Electron/Tauri/Qt/Flutter desktop | `desktop/*.md` |
|
|
672
|
+
| **Mobile App** | React Native/Flutter/Kotlin/Swift/HarmonyOS | `mobile/*.md` |
|
|
673
|
+
| **Web App** | React/Vue/Angular/Next.js/Nuxt | `web/*.md` |
|
|
674
|
+
| **Backend Service** | Express/Django/FastAPI/Gin/Spring/Axum/Laravel | `backend/*.md` |
|
|
675
|
+
| **AI/ML App** | PyTorch/TensorFlow/Transformers/Ollama | `ai/*.md` |
|
|
676
|
+
| **CLI Tool** | Command-line tool, script | `cli/python-cli.md` |
|
|
677
|
+
| **SDK/Library** | npm package, PyPI, crates.io, Maven, NuGet, Go module | `cli/sdk-library.md` |
|
|
678
|
+
| **Browser Plugin** | manifest.json + content.js | `plugins/browser-extension.md` |
|
|
679
|
+
| **IDE Plugin** | VS Code/JetBrains/WebStorm extension | `plugins/*.md` |
|
|
680
|
+
| **Embedded** | ESP32/STM32/RTOS/Linux embedded | `embedded/*.md` |
|
|
681
|
+
| **Car Software** | HarmonyOS Car/QNX/Android Automotive | `embedded/car-infotainment.md` |
|
|
682
|
+
| **Robotics** | ROS/ROS2/SLAM/navigation | `embedded/ros.md` |
|
|
683
|
+
| **Security Tool** | Pentest/vulnerability scanner/SIEM | `security/*.md` |
|
|
684
|
+
| **Docker/Container** | Dockerfile, docker-compose | `cloud/docker.md` |
|
|
685
|
+
| **Kubernetes** | K8s manifests, Helm charts | `cloud/kubernetes.md` |
|
|
686
|
+
| **CI/CD Pipeline** | GitHub Actions, GitLab CI, Jenkins | `cloud/ci-cd-pipelines.md` |
|
|
687
|
+
| **Payment System** | Stripe/Alipay/WeChat Pay/IAP | `cloud/payment-integration.md` |
|
|
688
|
+
| **Monorepo** | Multiple packages in one repo | `web/monorepo.md` |
|
|
689
|
+
| **WebAssembly** | Rust/Go/C compiled to WASM | `web/wasm.md` |
|
|
690
|
+
| **PWA** | Service Worker + Web Manifest | `web/pwa.md` |
|
|
691
|
+
| **Serverless/Edge** | Lambda/CF Workers/Vercel Functions | `web/serverless-edge.md` |
|
|
692
|
+
| **VR/AR** | Meta Quest/Vision Pro/SteamVR | `desktop/vr-ar.md` |
|
|
693
|
+
| **Wearable** | watchOS/Wear OS/Galaxy Watch | `mobile/wearables.md` |
|
|
694
|
+
| **Smart Platform** | Android TV/tvOS/webOS/Tizen/CarPlay | `desktop/smart-platforms.md` |
|
|
695
|
+
| **Cross-Platform** | .NET MAUI / Kotlin Multiplatform | `cross-platform/multiplatform.md` |
|
|
696
|
+
|
|
697
|
+
If the project spans multiple categories (e.g., desktop + mobile + backend), dispatch to each corresponding sub-skill separately.
|
|
698
|
+
|
|
699
|
+
---
|
|
700
|
+
|
|
701
|
+
# Phase 3: Complexity Assessment
|
|
702
|
+
|
|
703
|
+
## L1 — Simple Tool (1–2 hours)
|
|
704
|
+
- Pure frontend or simple full-stack
|
|
705
|
+
- No native modules
|
|
706
|
+
- < 50 source files
|
|
707
|
+
- No database or localStorage only
|
|
708
|
+
- **Typical**: Calculator, Markdown editor, Pomodoro timer, simple notes, bookmark tool
|
|
709
|
+
- **Strategy**: Standard template, no customization needed
|
|
710
|
+
|
|
711
|
+
## L2 — Standard Application (4–8 hours)
|
|
712
|
+
- Full-stack (frontend + backend + database)
|
|
713
|
+
- Native modules or external APIs present
|
|
714
|
+
- 50–500 source files
|
|
715
|
+
- Complex state management
|
|
716
|
+
- **Typical**: AI chatbot, project manager, data dashboard, local ERP, API debugger, IoT panel, IM client, SaaS desktop, DB manager
|
|
717
|
+
- **Strategy**: Path adaptation, image embedding, source encryption
|
|
718
|
+
|
|
719
|
+
## L3 — Complex Application (1–5 days)
|
|
720
|
+
- Multi-module architecture (plugin system, extension system)
|
|
721
|
+
- Realtime communication (WebSocket, MQTT, WebRTC)
|
|
722
|
+
- Multiple databases
|
|
723
|
+
- GPU acceleration or audio/video processing
|
|
724
|
+
- 500+ source files
|
|
725
|
+
- **Typical**: IDE, video editor, design tool, full ERP, quantitative trading platform, indie game, HarmonyOS app, car infotainment
|
|
726
|
+
- **Strategy**: Deep architecture adaptation, process isolation, performance optimization
|
|
727
|
+
|
|
728
|
+
---
|
|
729
|
+
|
|
730
|
+
# Phase 4: Competitive Benchmarking
|
|
731
|
+
|
|
732
|
+
Present similar products and their packaging approaches to help the user decide.
|
|
733
|
+
|
|
734
|
+
| Scenario | Recommended Stack | Package Method | Reference Products | Typical Size |
|
|
735
|
+
|----------|------------------|---------------|-------------------|-------------|
|
|
736
|
+
| AI Chatbot | React + Express + SQLite | Electron | Claude Desktop, ChatGPT Desktop | 130-180MB |
|
|
737
|
+
| Cloud Monitor | Vue/React + Go/Rust | Electron/Tauri | AWS Console, Portainer | 100-150MB |
|
|
738
|
+
| ERP/OA | Vue/React + Java/Go/Node | Electron | Kingdee, Yonyou | 150-200MB |
|
|
739
|
+
| Quantitative Trading | React + Python/C++ | Electron | JoinQuant, QMT | 100-200MB |
|
|
740
|
+
| IoT Panel | Vue + Go/MQTT | Tauri/Electron | Tuya Smart, Home Assistant | 50-100MB |
|
|
741
|
+
| IM Client | React + Go/Rust | Electron/Tauri | Feishu, Telegram Desktop | 100-200MB |
|
|
742
|
+
| SaaS Desktop | React/Vue + Backend API | Electron/Tauri | Notion, Linear | 100-150MB |
|
|
743
|
+
| Database Tool | React + Go/Rust | Electron/Tauri | Navicat, DBeaver | 100-200MB |
|
|
744
|
+
| Note App | React + SQLite | Electron/Tauri | Obsidian, Logseq | 100-150MB |
|
|
745
|
+
| Indie Game | Unity/Godot | Engine Built-in | Stardew Valley, Hollow Knight | 200-500MB |
|
|
746
|
+
|
|
747
|
+
---
|
|
748
|
+
|
|
749
|
+
# Phase 5: Recommendation & Confirmation
|
|
750
|
+
|
|
751
|
+
> **Note**: All user-facing questions (Q1-Q10) are now handled in **Step 2: Intake** above. This phase focuses ONLY on presenting recommendations after the intake is complete.
|
|
752
|
+
|
|
753
|
+
Based on the user's answers in Step 2, present:
|
|
754
|
+
|
|
755
|
+
1. **Primary recommendation** — the best approach with clear reasoning
|
|
756
|
+
2. **2-3 alternatives** — with trade-offs explained
|
|
757
|
+
3. **Size estimate** — expected package size for the chosen approach
|
|
758
|
+
4. **Reference products** — similar apps that use the same approach
|
|
759
|
+
|
|
760
|
+
| Scenario | Recommended Stack | Package Method | Reference Products | Typical Size |
|
|
761
|
+
|----------|------------------|---------------|-------------------|-------------|
|
|
762
|
+
| AI Chatbot | React + Express + SQLite | Electron | Claude Desktop, ChatGPT Desktop | 130-180MB |
|
|
763
|
+
| Cloud Monitor | Vue/React + Go/Rust | Electron/Tauri | AWS Console, Portainer | 100-150MB |
|
|
764
|
+
| ERP/OA | Vue/React + Java/Go/Node | Electron | Kingdee, Yonyou | 150-200MB |
|
|
765
|
+
| Quantitative Trading | React + Python/C++ | Electron | JoinQuant, QMT | 100-200MB |
|
|
766
|
+
| IoT Panel | Vue + Go/MQTT | Tauri/Electron | Tuya Smart, Home Assistant | 50-100MB |
|
|
767
|
+
| IM Client | React + Go/Rust | Electron/Tauri | Feishu, Telegram Desktop | 100-200MB |
|
|
768
|
+
| SaaS Desktop | React/Vue + Backend API | Electron/Tauri | Notion, Linear | 100-150MB |
|
|
769
|
+
| Database Tool | React + Go/Rust | Electron/Tauri | Navicat, DBeaver | 100-200MB |
|
|
770
|
+
| Note App | React + SQLite | Electron/Tauri | Obsidian, Logseq | 100-150MB |
|
|
771
|
+
| Indie Game | Unity/Godot | Engine Built-in | Stardew Valley, Hollow Knight | 200-500MB |
|
|
772
|
+
|
|
773
|
+
Present the confirmation summary (from Step 2 Part D) and wait for user approval before proceeding.
|
|
774
|
+
|
|
775
|
+
---
|
|
776
|
+
|
|
777
|
+
# Phase 6: Dispatch to Sub-skill
|
|
778
|
+
|
|
779
|
+
| User Choice | Sub-skill to Dispatch |
|
|
780
|
+
|------------|----------------------|
|
|
781
|
+
| Electron | `desktop/electron.md` |
|
|
782
|
+
| Tauri 2.0 | `desktop/tauri.md` |
|
|
783
|
+
| Game (Unity/Godot/Unreal) | `desktop/game-dev.md` |
|
|
784
|
+
| VR/AR (Meta Quest/Vision Pro) | `desktop/vr-ar.md` |
|
|
785
|
+
| Smart TV/Car/RPi | `desktop/smart-platforms.md` |
|
|
786
|
+
| Qt / Flutter / .NET | `desktop/native-app.md` |
|
|
787
|
+
| Pake / Neutralinojs | `desktop/web-to-desktop.md` |
|
|
788
|
+
| Android | `mobile/android.md` |
|
|
789
|
+
| iOS/iPadOS | `mobile/ios.md` |
|
|
790
|
+
| HarmonyOS | `mobile/harmonyos.md` |
|
|
791
|
+
| Flutter Mobile | `mobile/flutter-mobile.md` |
|
|
792
|
+
| React Native | `mobile/react-native.md` |
|
|
793
|
+
| Capacitor | `mobile/capacitor.md` |
|
|
794
|
+
| Wearable (watchOS/Wear OS) | `mobile/wearables.md` |
|
|
795
|
+
| SPA (React/Vue) | `web/spa.md` |
|
|
796
|
+
| SSR (Next.js/Nuxt) | `web/ssr.md` |
|
|
797
|
+
| PWA | `web/pwa.md` |
|
|
798
|
+
| Serverless / Edge | `web/serverless-edge.md` |
|
|
799
|
+
| Monorepo (Turborepo/Nx) | `web/monorepo.md` |
|
|
800
|
+
| WebAssembly (WASM) | `web/wasm.md` |
|
|
801
|
+
| Node.js Backend | `backend/node-server.md` |
|
|
802
|
+
| Python Backend | `backend/python-server.md` |
|
|
803
|
+
| Go Backend | `backend/go-server.md` |
|
|
804
|
+
| Rust Backend (Axum/Actix) | `backend/rust-backend.md` |
|
|
805
|
+
| Java/Spring Boot | `backend/java-spring.md` |
|
|
806
|
+
| PHP/Laravel | `backend/php-laravel.md` |
|
|
807
|
+
| Python ML | `ai/python-ml.md` |
|
|
808
|
+
| Local LLM | `ai/local-llm.md` |
|
|
809
|
+
| Python CLI | `cli/python-cli.md` |
|
|
810
|
+
| SDK / Library (npm/PyPI/crates.io/Maven/NuGet) | `cli/sdk-library.md` |
|
|
811
|
+
| Browser Extension | `plugins/browser-extension.md` |
|
|
812
|
+
| VS Code Extension | `plugins/vscode-extension.md` |
|
|
813
|
+
| JetBrains Plugin | `plugins/jetbrains-plugin.md` |
|
|
814
|
+
| ESP32 | `embedded/esp32.md` |
|
|
815
|
+
| STM32 | `embedded/stm32.md` |
|
|
816
|
+
| ROS/ROS2 | `embedded/ros.md` |
|
|
817
|
+
| Car Infotainment | `embedded/car-infotainment.md` |
|
|
818
|
+
| Security Tools | `security/security-tools.md` |
|
|
819
|
+
| Docker | `cloud/docker.md` |
|
|
820
|
+
| Kubernetes / Helm | `cloud/kubernetes.md` |
|
|
821
|
+
| CI/CD Pipeline | `cloud/ci-cd-pipelines.md` |
|
|
822
|
+
| Payment Integration | `cloud/payment-integration.md` |
|
|
823
|
+
| .NET MAUI | `cross-platform/multiplatform.md` |
|
|
824
|
+
| Kotlin Multiplatform | `cross-platform/multiplatform.md` |
|
|
825
|
+
| Compose Multiplatform | `cross-platform/multiplatform.md` |
|
|
826
|
+
|
|
827
|
+
## Deviation Threshold
|
|
828
|
+
|
|
829
|
+
The AI may deviate from the sub-skill document by **≤15%** during execution. Deviations exceeding 15% must be explained to the user and require explicit approval.
|
|
830
|
+
|
|
831
|
+
---
|
|
832
|
+
|
|
833
|
+
# Phase 7: Mandatory Audit
|
|
834
|
+
|
|
835
|
+
After packaging is complete, the AI **MUST** load and execute `audit.md`. The audit cannot be skipped under any circumstances.
|
|
836
|
+
|
|
837
|
+
---
|
|
838
|
+
|
|
839
|
+
# Phase 8: Final Output
|
|
840
|
+
|
|
841
|
+
```
|
|
842
|
+
═══════════════════════════════════════════════
|
|
843
|
+
BUILD REPORT
|
|
844
|
+
═══════════════════════════════════════════════
|
|
845
|
+
|
|
846
|
+
[TECH STACK]
|
|
847
|
+
Framework: [Electron / Tauri / ...]
|
|
848
|
+
Frontend: [React + Vite / ...]
|
|
849
|
+
Backend: [Express + SQLite / ...]
|
|
850
|
+
Build: [esbuild / cargo / ...]
|
|
851
|
+
|
|
852
|
+
[PACKAGE INFO]
|
|
853
|
+
Filename: [AppName-Setup-1.0.0.exe]
|
|
854
|
+
Size: [XXX MB]
|
|
855
|
+
Platform: [Windows x64 / ...]
|
|
856
|
+
|
|
857
|
+
[FILE ARCHITECTURE]
|
|
858
|
+
[key directory structure]
|
|
859
|
+
|
|
860
|
+
[SECURITY]
|
|
861
|
+
Encryption: [AES-256-CBC + obfuscation + image embedding]
|
|
862
|
+
Decryption: [server-side automatic]
|
|
863
|
+
|
|
864
|
+
[AUDIT RESULTS]
|
|
865
|
+
✅ Package valid and installable
|
|
866
|
+
✅ App launches without errors
|
|
867
|
+
✅ Data persistence works
|
|
868
|
+
✅ No credential leaks
|
|
869
|
+
✅ No residual build artifacts
|
|
870
|
+
✅ All user requirements met
|
|
871
|
+
|
|
872
|
+
[PACKAGE LOCATION]
|
|
873
|
+
[absolute path]
|
|
874
|
+
═══════════════════════════════════════════════
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
---
|
|
878
|
+
---
|
|
879
|
+
|
|
880
|
+
# Appendix: Best Practices & Common Mistakes
|
|
881
|
+
|
|
882
|
+
## Common Mistakes (from Industry Survey)
|
|
883
|
+
|
|
884
|
+
1. **Not code-signing binaries** — macOS Gatekeeper and Windows SmartScreen will block unsigned apps. Always sign with a valid certificate.
|
|
885
|
+
2. **Hardcoding paths** — Use platform APIs (`app.getPath()`, `XDG_*` env vars) instead of absolute paths.
|
|
886
|
+
3. **Bundling node_modules wholesale** — Use ASAR, tree-shaking, and exclude dev dependencies.
|
|
887
|
+
4. **Ignoring platform-specific behavior** — Line endings, path separators, case sensitivity, default shell differences.
|
|
888
|
+
5. **Not testing the packaged build** — Always test on a clean VM without dev tools installed.
|
|
889
|
+
6. **Missing/broken auto-update** — Implement from day one using `electron-updater` or equivalent.
|
|
890
|
+
7. **ASAR integrity issue** — Native modules (better-sqlite3, sharp) must be in `asarUnpack`.
|
|
891
|
+
8. **Not handling first-run** — Create default config/data directories, handle missing files gracefully.
|
|
892
|
+
9. **Over-bundling** — Include only target-platform binaries, not all platforms.
|
|
893
|
+
10. **Insufficient production logging** — Use crash reporter (Sentry, electron-log) for debugging.
|
|
894
|
+
|
|
895
|
+
## Best Practices (2025-2026)
|
|
896
|
+
|
|
897
|
+
| Practice | Description |
|
|
898
|
+
|----------|-------------|
|
|
899
|
+
| **Code signing** | macOS: Developer ID + notarization. Windows: EV/OV certificate. Linux: GPG signing. |
|
|
900
|
+
| **ASAR bundling** | Protect source code, simplify file layout. Configure `asarUnpack` for native modules. |
|
|
901
|
+
| **Auto-update from day one** | `electron-updater` (electron-builder) or `autoUpdater` (electron-forge). Use GitHub Releases or custom server. |
|
|
902
|
+
| **Test on clean machines** | Fresh VM without dev tools catches missing runtime dependencies. |
|
|
903
|
+
| **Separate main/renderer processes** | Heavy computation in main or utility process. Keep renderer free for UI. |
|
|
904
|
+
| **Minimize bundle size** | Tree-shaking, exclude dev deps, compress assets, minimize native modules. |
|
|
905
|
+
| **Handle permissions/sandboxing** | macOS: entitlements. Windows: UAC. Linux: Flatpak portals. |
|
|
906
|
+
| **Provide uninstallers** | NSIS: configure `deleteAppDataOnUninstall`. MSIX: auto-uninstall. AppImage: document removal. |
|
|
907
|
+
| **Use CI/CD** | GitHub Actions/Azure Pipelines. Build on each platform natively. |
|
|
908
|
+
| **Version lock packaging tools** | Pin electron-builder/forge/tauri-cli versions to avoid surprise breakage. |
|
|
909
|
+
| **Include crash reporter** | `@sentry/electron` or `electron-log` for production error tracking. |
|
|
910
|
+
|
|
911
|
+
## Framework Version Reference (2025-2026)
|
|
912
|
+
|
|
913
|
+
| Framework | Version | Key Features |
|
|
914
|
+
|-----------|---------|-------------|
|
|
915
|
+
| Electron | 43.x | Chromium 150, Node.js 24, clipboard removed from renderer (v44), 32-bit dropped (v44) |
|
|
916
|
+
| electron-builder | 26.x | YAML/JSON config, NSIS/MSI/AppImage/DMG (compatible with Electron 43) |
|
|
917
|
+
| electron-forge | 7.x | Official Electron team recommendation, plugin architecture |
|
|
918
|
+
| electron-updater | 6.x | Auto-update with differential downloads |
|
|
919
|
+
| Tauri | 2.11.x | Mobile (iOS/Android) stable, Rust backend, 2-6MB bundles |
|
|
920
|
+
| Node.js | 26.x LTS / 22.x LTS | require(esm) default (v23+), Temporal API (v26), Undici 8 |
|
|
921
|
+
| Vite | 8.x | Latest build tool (verify plugin compatibility for v7/v8 migrations) |
|
|
922
|
+
| Next.js | 16.x | App Router, RSC, standalone output |
|
|
923
|
+
| React Native | 0.86.x | New Architecture default, Hermes engine |
|
|
924
|
+
| Flutter | 3.44.x / Dart 3.12 | Impeller renderer default, desktop GA, WebAssembly support |
|
|
925
|
+
| Go | 1.26.x | Latest stable (check stdlib breaking changes) |
|
|
926
|
+
| Spring Boot | 3.5.x | GraalVM native image improvements |
|
|
927
|
+
| Capacitor | 8.x | Web → mobile bridge (verify config format changes from v6) |
|
|
928
|
+
| Wails | 2.10.x | Go backend, v3 beta available |
|
|
929
|
+
| Neutralinojs | 5.6.x | 1-3MB binaries, minimal footprint |
|
|
930
|
+
| Dioxus | 0.6.x | React-like Rust UI, pre-1.0 |
|
|
931
|
+
| Pake/PakePlus | 2.7.x | Rust+Tauri wrapper, 3-10MB |
|
|
932
|
+
|
|
933
|
+
## electron-builder vs electron-forge
|
|
934
|
+
|
|
935
|
+
| Aspect | electron-builder (26.x) | electron-forge (7.x) |
|
|
936
|
+
|--------|------------------------|---------------------|
|
|
937
|
+
| Config | YAML/JSON/JS | forge.config.js (JS/TS) |
|
|
938
|
+
| Output | NSIS, MSI, AppImage, DMG, DEB, RPM, Snap, Flatpak | DMG, ZIP, Squirrel, DEB, RPM, Snap, Flatpak, MSI, AppX, MSIX |
|
|
939
|
+
| Plugin system | Limited (custom afterPack) | Rich plugin architecture |
|
|
940
|
+
| Community | Very mature, widely used | Official Electron team recommendation |
|
|
941
|
+
| Code signing | Good, manual macOS notarization tweaks | Tight integration with osxSign/osxNotarize |
|
|
942
|
+
| Auto-update | electron-updater (built-in) | @electron/update-electron-app |
|
|
943
|
+
| **When to prefer** | Complex packaging rules, existing projects | New projects, first-party support |
|
|
944
|
+
|