@nockdev/awf 6.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 (727) hide show
  1. package/.agent/build.yaml +178 -0
  2. package/.agent/config.yaml +235 -0
  3. package/.agent/core/ACTIVE_MEMORY.yaml +344 -0
  4. package/.agent/core/ARCH_REGISTRY.yaml +252 -0
  5. package/.agent/core/AUDIT_POLICY.md +68 -0
  6. package/.agent/core/BRANDING.yaml +185 -0
  7. package/.agent/core/CACHE.md +59 -0
  8. package/.agent/core/CHECKPOINT.yaml +153 -0
  9. package/.agent/core/CLEANUP_ENGINE.yaml +326 -0
  10. package/.agent/core/CODING_STYLES.yaml +346 -0
  11. package/.agent/core/COMMANDS.md +93 -0
  12. package/.agent/core/CONTEXT_INJECTOR.yaml +325 -0
  13. package/.agent/core/CONTEXT_LOADER.yaml +323 -0
  14. package/.agent/core/CONTEXT_OPTIMIZATION.yaml +286 -0
  15. package/.agent/core/CONTEXT_PRIORITY.yaml +357 -0
  16. package/.agent/core/CUSTOMIZE.md +138 -0
  17. package/.agent/core/DATA_SAFETY.md +92 -0
  18. package/.agent/core/FLOW_ENGINE.yaml +300 -0
  19. package/.agent/core/GRAPH_MEMORY.yaml +420 -0
  20. package/.agent/core/HSA.yaml +357 -0
  21. package/.agent/core/HYBRID_ROUTER.yaml +346 -0
  22. package/.agent/core/INTENT_DETECTION.yaml +384 -0
  23. package/.agent/core/LIBRARY_REGISTRY.yaml +401 -0
  24. package/.agent/core/MCP_TOOLS.yaml +414 -0
  25. package/.agent/core/MEMORY_CONSOLIDATION.yaml +352 -0
  26. package/.agent/core/MEMORY_ENGINE.yaml +353 -0
  27. package/.agent/core/MEMORY_PATHS.yaml +79 -0
  28. package/.agent/core/MEMORY_UTILS.yaml +212 -0
  29. package/.agent/core/PATTERNS.yaml +319 -0
  30. package/.agent/core/PERMISSIONS.md +100 -0
  31. package/.agent/core/README.md +91 -0
  32. package/.agent/core/REFLECTION_ENGINE.yaml +348 -0
  33. package/.agent/core/ROUTER.yaml +424 -0
  34. package/.agent/core/SCORING_FORMULA.yaml +103 -0
  35. package/.agent/core/SEMANTIC_ENGINE.yaml +162 -0
  36. package/.agent/core/SKILLS_FLOW.yaml +341 -0
  37. package/.agent/core/SKILL_SCHEMA.yaml +266 -0
  38. package/.agent/core/STATE_MACHINE.yaml +409 -0
  39. package/.agent/core/SUMMARIZATION_ENGINE.yaml +258 -0
  40. package/.agent/core/TEMPLATES.yaml +364 -0
  41. package/.agent/core/TOKEN_BUDGETS.yaml +157 -0
  42. package/.agent/core/TOKEN_LOADING.yaml +197 -0
  43. package/.agent/core/TOKEN_SUMMARY.yaml +121 -0
  44. package/.agent/core/VERSION.yaml +240 -0
  45. package/.agent/core/embeddings.json +2004 -0
  46. package/.agent/core/session_cache.json +50 -0
  47. package/.agent/i18n/README.md +30 -0
  48. package/.agent/i18n/en.yaml +302 -0
  49. package/.agent/i18n/vi.yaml +302 -0
  50. package/.agent/ide/README.md +47 -0
  51. package/.agent/ide/amazonq.json +35 -0
  52. package/.agent/ide/amp.json +35 -0
  53. package/.agent/ide/antigravity.json +47 -0
  54. package/.agent/ide/augment.json +35 -0
  55. package/.agent/ide/claude.json +42 -0
  56. package/.agent/ide/cline.json +34 -0
  57. package/.agent/ide/codex.json +37 -0
  58. package/.agent/ide/cody.json +35 -0
  59. package/.agent/ide/continue.json +35 -0
  60. package/.agent/ide/cursor.json +42 -0
  61. package/.agent/ide/gemini.json +46 -0
  62. package/.agent/ide/jetbrains.json +35 -0
  63. package/.agent/ide/kiro.json +35 -0
  64. package/.agent/ide/opencode.json +35 -0
  65. package/.agent/ide/roo.json +35 -0
  66. package/.agent/ide/tabnine.json +35 -0
  67. package/.agent/ide/trae.json +35 -0
  68. package/.agent/ide/vscode.json +34 -0
  69. package/.agent/ide/windsurf.json +56 -0
  70. package/.agent/ide/zed.json +36 -0
  71. package/.agent/manifest.yaml +416 -0
  72. package/.agent/memory/README.md +148 -0
  73. package/.agent/memory/active_memories.json +35 -0
  74. package/.agent/memory/archive/.gitkeep +0 -0
  75. package/.agent/memory/audit_summary.json +58 -0
  76. package/.agent/memory/cleanup_log.json +34 -0
  77. package/.agent/memory/consolidated.md +75 -0
  78. package/.agent/memory/core_memory/persona.json +30 -0
  79. package/.agent/memory/core_memory/project.json +25 -0
  80. package/.agent/memory/core_memory/rules.json +29 -0
  81. package/.agent/memory/core_memory/user.json +24 -0
  82. package/.agent/memory/decisions.md +40 -0
  83. package/.agent/memory/graph/knowledge_graph.json +12 -0
  84. package/.agent/memory/insights.md +52 -0
  85. package/.agent/memory/metrics.json +48 -0
  86. package/.agent/memory/patterns/errors.json +11 -0
  87. package/.agent/memory/patterns/successes.json +10 -0
  88. package/.agent/memory/session.md +64 -0
  89. package/.agent/memory/session_rules.json +19 -0
  90. package/.agent/memory/state.json +81 -0
  91. package/.agent/memory/vectors/README.md +129 -0
  92. package/.agent/personas/README.md +180 -0
  93. package/.agent/personas/architect.md +186 -0
  94. package/.agent/personas/auditor.md +222 -0
  95. package/.agent/personas/debugger.md +210 -0
  96. package/.agent/personas/developer.md +183 -0
  97. package/.agent/personas/devops.md +268 -0
  98. package/.agent/personas/documenter.md +262 -0
  99. package/.agent/personas/orchestrator.md +240 -0
  100. package/.agent/personas/persona.schema.yaml +209 -0
  101. package/.agent/personas/planner.md +171 -0
  102. package/.agent/personas/researcher.md +194 -0
  103. package/.agent/personas/security.md +212 -0
  104. package/.agent/personas/tester.md +247 -0
  105. package/.agent/rules/README.md +231 -0
  106. package/.agent/rules/SACRED_RULES.xml +142 -0
  107. package/.agent/rules/constitutional/tier-0-core.yaml +182 -0
  108. package/.agent/rules/constitutional/tier-1-safety.yaml +272 -0
  109. package/.agent/rules/constitutional/tier-2-execution.yaml +294 -0
  110. package/.agent/rules/data/build-systems.yaml +126 -0
  111. package/.agent/rules/data/quality-standards.json +59 -0
  112. package/.agent/rules/duplication-prevention.md +138 -0
  113. package/.agent/rules/incremental-changes.md +146 -0
  114. package/.agent/rules/modules/context-management.yaml +158 -0
  115. package/.agent/rules/modules/edit-verification.yaml +197 -0
  116. package/.agent/rules/modules/evidence.yaml +185 -0
  117. package/.agent/rules/modules/git-workflow.yaml +165 -0
  118. package/.agent/rules/modules/language.yaml +155 -0
  119. package/.agent/rules/modules/online-research.yaml +192 -0
  120. package/.agent/rules/modules/quality.yaml +185 -0
  121. package/.agent/rules/modules/reflection.yaml +209 -0
  122. package/.agent/rules/modules/stop-conditions.yaml +196 -0
  123. package/.agent/rules/modules/terminal-safety.yaml +229 -0
  124. package/.agent/rules/modules/versioning.yaml +97 -0
  125. package/.agent/rules/modules/yagni.yaml +167 -0
  126. package/.agent/rules/project-detection.md +317 -0
  127. package/.agent/rules/prompt-injection-guard.md +260 -0
  128. package/.agent/rules/shell-commands.md +210 -0
  129. package/.agent/rules/validation-framework.md +189 -0
  130. package/.agent/skills/DEVELOPMENT.yaml +226 -0
  131. package/.agent/skills/README.md +69 -0
  132. package/.agent/skills/_categories.yaml +145 -0
  133. package/.agent/skills/_router.yaml +232 -0
  134. package/.agent/skills/core/_index.yaml +12 -0
  135. package/.agent/skills/core/api-design/META.yaml +64 -0
  136. package/.agent/skills/core/api-design/SKILL.md +169 -0
  137. package/.agent/skills/core/api-design/data/api-versioning.yaml +217 -0
  138. package/.agent/skills/core/api-design/data/error-responses.yaml +135 -0
  139. package/.agent/skills/core/api-design/data/graphql-patterns.yaml +165 -0
  140. package/.agent/skills/core/api-design/data/grpc-patterns.yaml +165 -0
  141. package/.agent/skills/core/api-design/data/http-status-codes.yaml +176 -0
  142. package/.agent/skills/core/api-design/data/pagination.yaml +121 -0
  143. package/.agent/skills/core/api-design/data/rate-limiting.yaml +135 -0
  144. package/.agent/skills/core/api-design/data/rest-patterns.yaml +195 -0
  145. package/.agent/skills/core/api-design/data/test-apis.yaml +217 -0
  146. package/.agent/skills/core/authentication/META.yaml +73 -0
  147. package/.agent/skills/core/authentication/SKILL.md +166 -0
  148. package/.agent/skills/core/authentication/data/anti-patterns.yaml +135 -0
  149. package/.agent/skills/core/authentication/data/core-patterns.yaml +256 -0
  150. package/.agent/skills/core/authentication/data/jwt-patterns.yaml +255 -0
  151. package/.agent/skills/core/authentication/data/language-csharp.yaml +215 -0
  152. package/.agent/skills/core/authentication/data/language-go.yaml +215 -0
  153. package/.agent/skills/core/authentication/data/language-java.yaml +215 -0
  154. package/.agent/skills/core/authentication/data/language-mobile.yaml +215 -0
  155. package/.agent/skills/core/authentication/data/language-python.yaml +215 -0
  156. package/.agent/skills/core/authentication/data/language-rust.yaml +215 -0
  157. package/.agent/skills/core/authentication/data/language-typescript.yaml +215 -0
  158. package/.agent/skills/core/authentication/data/mfa-patterns.yaml +175 -0
  159. package/.agent/skills/core/authentication/data/oauth-patterns.yaml +255 -0
  160. package/.agent/skills/core/authentication/data/oauth.yaml +248 -0
  161. package/.agent/skills/core/authentication/data/passkeys-webauthn.yaml +215 -0
  162. package/.agent/skills/core/authentication/data/passkeys.yaml +208 -0
  163. package/.agent/skills/core/authentication/data/password-patterns.yaml +175 -0
  164. package/.agent/skills/core/authentication/data/password.yaml +168 -0
  165. package/.agent/skills/core/authentication/data/session-patterns.yaml +215 -0
  166. package/.agent/skills/core/error-handling/META.yaml +71 -0
  167. package/.agent/skills/core/error-handling/SKILL.md +156 -0
  168. package/.agent/skills/core/error-handling/data/anti-patterns.yaml +105 -0
  169. package/.agent/skills/core/error-handling/data/api-error-patterns.yaml +135 -0
  170. package/.agent/skills/core/error-handling/data/core-patterns.yaml +226 -0
  171. package/.agent/skills/core/error-handling/data/error-codes.yaml +165 -0
  172. package/.agent/skills/core/error-handling/data/error-messages.yaml +165 -0
  173. package/.agent/skills/core/error-handling/data/language-c-cpp.yaml +226 -0
  174. package/.agent/skills/core/error-handling/data/language-go-rust.yaml +226 -0
  175. package/.agent/skills/core/error-handling/data/language-python-java.yaml +226 -0
  176. package/.agent/skills/core/error-handling/data/language-swift-kotlin.yaml +226 -0
  177. package/.agent/skills/core/error-handling/data/language-typescript-php-ruby.yaml +226 -0
  178. package/.agent/skills/core/error-handling/data/resilience-patterns.yaml +191 -0
  179. package/.agent/skills/core/error-handling/data/ui-error-patterns.yaml +135 -0
  180. package/.agent/skills/core/logging/META.yaml +73 -0
  181. package/.agent/skills/core/logging/SKILL.md +184 -0
  182. package/.agent/skills/core/logging/data/aggregation-patterns.yaml +191 -0
  183. package/.agent/skills/core/logging/data/anti-patterns.yaml +121 -0
  184. package/.agent/skills/core/logging/data/core-patterns.yaml +226 -0
  185. package/.agent/skills/core/logging/data/language-csharp.yaml +191 -0
  186. package/.agent/skills/core/logging/data/language-go.yaml +191 -0
  187. package/.agent/skills/core/logging/data/language-java.yaml +191 -0
  188. package/.agent/skills/core/logging/data/language-kotlin.yaml +156 -0
  189. package/.agent/skills/core/logging/data/language-others.yaml +184 -0
  190. package/.agent/skills/core/logging/data/language-python.yaml +191 -0
  191. package/.agent/skills/core/logging/data/language-rust.yaml +191 -0
  192. package/.agent/skills/core/logging/data/language-swift.yaml +156 -0
  193. package/.agent/skills/core/logging/data/language-typescript.yaml +191 -0
  194. package/.agent/skills/core/logging/data/otel-logging.yaml +156 -0
  195. package/.agent/skills/core/observability/META.yaml +76 -0
  196. package/.agent/skills/core/observability/SKILL.md +153 -0
  197. package/.agent/skills/core/observability/data/alerting-patterns.yaml +165 -0
  198. package/.agent/skills/core/observability/data/anti-patterns.yaml +105 -0
  199. package/.agent/skills/core/observability/data/core-patterns.yaml +195 -0
  200. package/.agent/skills/core/observability/data/language-cpp.yaml +165 -0
  201. package/.agent/skills/core/observability/data/language-csharp.yaml +165 -0
  202. package/.agent/skills/core/observability/data/language-go.yaml +165 -0
  203. package/.agent/skills/core/observability/data/language-java.yaml +165 -0
  204. package/.agent/skills/core/observability/data/language-others.yaml +255 -0
  205. package/.agent/skills/core/observability/data/language-python.yaml +165 -0
  206. package/.agent/skills/core/observability/data/language-rust.yaml +165 -0
  207. package/.agent/skills/core/observability/data/language-typescript.yaml +165 -0
  208. package/.agent/skills/core/observability/data/metrics-patterns.yaml +135 -0
  209. package/.agent/skills/core/observability/data/metrics-prometheus.yaml +165 -0
  210. package/.agent/skills/core/observability/data/otel-core.yaml +195 -0
  211. package/.agent/skills/core/observability/data/profiling-patterns.yaml +135 -0
  212. package/.agent/skills/core/observability/data/tracing-patterns.yaml +165 -0
  213. package/.agent/skills/core/observability/data/tracing-tools.yaml +135 -0
  214. package/.agent/skills/core/security/ADVANCED.md +269 -0
  215. package/.agent/skills/core/security/META.yaml +97 -0
  216. package/.agent/skills/core/security/SKILL.md +234 -0
  217. package/.agent/skills/core/security/data/ai-ml-security.yaml +261 -0
  218. package/.agent/skills/core/security/data/api-security.yaml +230 -0
  219. package/.agent/skills/core/security/data/auth-patterns.yaml +195 -0
  220. package/.agent/skills/core/security/data/binary-exploitation.yaml +339 -0
  221. package/.agent/skills/core/security/data/cloud-security.yaml +269 -0
  222. package/.agent/skills/core/security/data/cwe-top25.yaml +415 -0
  223. package/.agent/skills/core/security/data/language-specific/c-security.yaml +295 -0
  224. package/.agent/skills/core/security/data/language-specific/cpp-security.yaml +295 -0
  225. package/.agent/skills/core/security/data/language-specific/csharp-security.yaml +219 -0
  226. package/.agent/skills/core/security/data/language-specific/go-security.yaml +219 -0
  227. package/.agent/skills/core/security/data/language-specific/java-security.yaml +295 -0
  228. package/.agent/skills/core/security/data/language-specific/kotlin-security.yaml +198 -0
  229. package/.agent/skills/core/security/data/language-specific/php-security.yaml +219 -0
  230. package/.agent/skills/core/security/data/language-specific/python-security.yaml +295 -0
  231. package/.agent/skills/core/security/data/language-specific/ruby-security.yaml +198 -0
  232. package/.agent/skills/core/security/data/language-specific/rust-security.yaml +240 -0
  233. package/.agent/skills/core/security/data/language-specific/solidity-security.yaml +369 -0
  234. package/.agent/skills/core/security/data/language-specific/swift-security.yaml +198 -0
  235. package/.agent/skills/core/security/data/language-specific/typescript-security.yaml +295 -0
  236. package/.agent/skills/core/security/data/mobile-security.yaml +369 -0
  237. package/.agent/skills/core/security/data/network-security.yaml +297 -0
  238. package/.agent/skills/core/security/data/owasp-top10.yaml +171 -0
  239. package/.agent/skills/core/security/data/reverse-engineering.yaml +497 -0
  240. package/.agent/skills/core/security/data/supply-chain.yaml +219 -0
  241. package/.agent/skills/cross-cutting/_index.yaml +15 -0
  242. package/.agent/skills/cross-cutting/audit-pro/META.yaml +43 -0
  243. package/.agent/skills/cross-cutting/audit-pro/data/checklists.yaml +644 -0
  244. package/.agent/skills/cross-cutting/audit-pro/data/scoring.yaml +101 -0
  245. package/.agent/skills/cross-cutting/aws/META.yaml +75 -0
  246. package/.agent/skills/cross-cutting/aws/data/ai_ml.yaml +194 -0
  247. package/.agent/skills/cross-cutting/aws/data/compute.yaml +191 -0
  248. package/.agent/skills/cross-cutting/aws/data/kubernetes.yaml +199 -0
  249. package/.agent/skills/cross-cutting/aws/data/storage.yaml +174 -0
  250. package/.agent/skills/cross-cutting/bun/META.yaml +58 -0
  251. package/.agent/skills/cross-cutting/bun/SKILL.md +357 -0
  252. package/.agent/skills/cross-cutting/bun/data/database.yaml +85 -0
  253. package/.agent/skills/cross-cutting/bun/data/runtime.yaml +170 -0
  254. package/.agent/skills/cross-cutting/bun/data/tooling.yaml +192 -0
  255. package/.agent/skills/cross-cutting/ci-cd/META.yaml +60 -0
  256. package/.agent/skills/cross-cutting/ci-cd/data/github_actions.yaml +248 -0
  257. package/.agent/skills/cross-cutting/ci-cd/data/security.yaml +211 -0
  258. package/.agent/skills/cross-cutting/coding-rules/META.yaml +61 -0
  259. package/.agent/skills/cross-cutting/coding-rules/SKILL.md +171 -0
  260. package/.agent/skills/cross-cutting/coding-rules/data/architecture-patterns.yaml +96 -0
  261. package/.agent/skills/cross-cutting/coding-rules/data/build-systems.yaml +346 -0
  262. package/.agent/skills/cross-cutting/coding-rules/data/coding-rules.yaml +647 -0
  263. package/.agent/skills/cross-cutting/coding-rules/data/concurrency-patterns.yaml +108 -0
  264. package/.agent/skills/cross-cutting/coding-rules/data/design-patterns.yaml +260 -0
  265. package/.agent/skills/cross-cutting/coding-rules/data/framework-signatures.yaml +344 -0
  266. package/.agent/skills/cross-cutting/coding-rules/data/memory-management.yaml +108 -0
  267. package/.agent/skills/cross-cutting/coding-rules/data/naming-conventions.yaml +320 -0
  268. package/.agent/skills/cross-cutting/coding-rules/data/performance-benchmarks.yaml +164 -0
  269. package/.agent/skills/cross-cutting/coding-rules/data/solid-principles.yaml +80 -0
  270. package/.agent/skills/cross-cutting/coding-rules/data/test-frameworks.yaml +183 -0
  271. package/.agent/skills/cross-cutting/database/ADVANCED.md +465 -0
  272. package/.agent/skills/cross-cutting/database/META.yaml +22 -0
  273. package/.agent/skills/cross-cutting/database/SKILL.md +816 -0
  274. package/.agent/skills/cross-cutting/database/data/anti_patterns.yaml +116 -0
  275. package/.agent/skills/cross-cutting/database/data/distributed.yaml +152 -0
  276. package/.agent/skills/cross-cutting/database/data/mongodb.yaml +132 -0
  277. package/.agent/skills/cross-cutting/database/data/mysql.yaml +130 -0
  278. package/.agent/skills/cross-cutting/database/data/orm.yaml +104 -0
  279. package/.agent/skills/cross-cutting/database/data/postgresql.yaml +170 -0
  280. package/.agent/skills/cross-cutting/database/data/redis.yaml +129 -0
  281. package/.agent/skills/cross-cutting/deno/META.yaml +68 -0
  282. package/.agent/skills/cross-cutting/deno/SKILL.md +343 -0
  283. package/.agent/skills/cross-cutting/deno/data/runtime.yaml +260 -0
  284. package/.agent/skills/cross-cutting/deno/data/security.yaml +168 -0
  285. package/.agent/skills/cross-cutting/deno/data/tooling.yaml +133 -0
  286. package/.agent/skills/cross-cutting/docker/META.yaml +65 -0
  287. package/.agent/skills/cross-cutting/docker/data/build.yaml +197 -0
  288. package/.agent/skills/cross-cutting/docker/data/compose.yaml +229 -0
  289. package/.agent/skills/cross-cutting/docker/data/security.yaml +164 -0
  290. package/.agent/skills/cross-cutting/electron/META.yaml +174 -0
  291. package/.agent/skills/cross-cutting/electron/SKILL.md +862 -0
  292. package/.agent/skills/cross-cutting/electron/data/build.yaml +105 -0
  293. package/.agent/skills/cross-cutting/electron/data/crash.yaml +103 -0
  294. package/.agent/skills/cross-cutting/electron/data/ipc.yaml +85 -0
  295. package/.agent/skills/cross-cutting/electron/data/native.yaml +157 -0
  296. package/.agent/skills/cross-cutting/electron/data/security.yaml +89 -0
  297. package/.agent/skills/cross-cutting/electron/data/storage.yaml +100 -0
  298. package/.agent/skills/cross-cutting/electron/data/testing.yaml +103 -0
  299. package/.agent/skills/cross-cutting/electron/data/updates.yaml +99 -0
  300. package/.agent/skills/cross-cutting/electron/data/window.yaml +83 -0
  301. package/.agent/skills/cross-cutting/kubernetes/META.yaml +70 -0
  302. package/.agent/skills/cross-cutting/kubernetes/data/networking.yaml +270 -0
  303. package/.agent/skills/cross-cutting/kubernetes/data/scheduling.yaml +267 -0
  304. package/.agent/skills/cross-cutting/kubernetes/data/security.yaml +253 -0
  305. package/.agent/skills/cross-cutting/kubernetes/data/workloads.yaml +251 -0
  306. package/.agent/skills/cross-cutting/sql/META.yaml +88 -0
  307. package/.agent/skills/cross-cutting/sql/SKILL.md +296 -0
  308. package/.agent/skills/cross-cutting/sql/data/indexing.yaml +147 -0
  309. package/.agent/skills/cross-cutting/sql/data/json.yaml +156 -0
  310. package/.agent/skills/cross-cutting/sql/data/performance.yaml +204 -0
  311. package/.agent/skills/cross-cutting/sql/data/queries.yaml +150 -0
  312. package/.agent/skills/cross-cutting/tailwind/META.yaml +72 -0
  313. package/.agent/skills/cross-cutting/tailwind/SKILL.md +344 -0
  314. package/.agent/skills/cross-cutting/tailwind/data/build.yaml +143 -0
  315. package/.agent/skills/cross-cutting/tailwind/data/config.yaml +109 -0
  316. package/.agent/skills/cross-cutting/tailwind/data/migration.yaml +149 -0
  317. package/.agent/skills/cross-cutting/tailwind/data/responsive.yaml +148 -0
  318. package/.agent/skills/cross-cutting/tailwind/data/states.yaml +152 -0
  319. package/.agent/skills/cross-cutting/tailwind/data/theme.yaml +126 -0
  320. package/.agent/skills/cross-cutting/tailwind/data/utilities.yaml +182 -0
  321. package/.agent/skills/cross-cutting/tailwind/data/variants.yaml +154 -0
  322. package/.agent/skills/cross-cutting/testing/ADVANCED.md +245 -0
  323. package/.agent/skills/cross-cutting/testing/META.yaml +49 -0
  324. package/.agent/skills/cross-cutting/testing/SKILL.md +263 -0
  325. package/.agent/skills/cross-cutting/testing/data/frameworks.yaml +300 -0
  326. package/.agent/skills/cross-cutting/testing/data/patterns.yaml +168 -0
  327. package/.agent/skills/cross-cutting/ui-ux-pro-max/META.yaml +108 -0
  328. package/.agent/skills/cross-cutting/ui-ux-pro-max/SKILL.md +565 -0
  329. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/charts.yaml +331 -0
  330. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/colors.yaml +1226 -0
  331. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/component-decision.yaml +287 -0
  332. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/component-mapping.yaml +318 -0
  333. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/design-tokens.yaml +525 -0
  334. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-animation.yaml +232 -0
  335. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-architecture.yaml +140 -0
  336. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-colors.yaml +467 -0
  337. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/directory-structure.yaml +75 -0
  338. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/icons.yaml +918 -0
  339. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/implementation-strategy.yaml +107 -0
  340. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/landing.yaml +372 -0
  341. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/platform-frameworks.yaml +195 -0
  342. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/platform-guidelines.yaml +177 -0
  343. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/products.yaml +1339 -0
  344. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/prompts.yaml +180 -0
  345. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/react-performance.yaml +504 -0
  346. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/desktop.yaml +228 -0
  347. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/flutter.yaml +508 -0
  348. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/html-tailwind.yaml +543 -0
  349. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nextjs.yaml +515 -0
  350. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nuxt-ui.yaml +519 -0
  351. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nuxtjs.yaml +599 -0
  352. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/react-native.yaml +496 -0
  353. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/react.yaml +526 -0
  354. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/shadcn.yaml +616 -0
  355. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/svelte.yaml +520 -0
  356. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/swiftui.yaml +486 -0
  357. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/vue.yaml +485 -0
  358. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/styles.yaml +1473 -0
  359. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/typography.yaml +647 -0
  360. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/ui-reasoning.yaml +1019 -0
  361. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/ux-guidelines.yaml +1009 -0
  362. package/.agent/skills/cross-cutting/ui-ux-pro-max/data/web-interface.yaml +347 -0
  363. package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/__pycache__/core.cpython-310.pyc +0 -0
  364. package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
  365. package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
  366. package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/core.py +393 -0
  367. package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/core_legacy.py +303 -0
  368. package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/design_system.py +496 -0
  369. package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/search.py +76 -0
  370. package/.agent/skills/cross-cutting/web-perf/META.yaml +92 -0
  371. package/.agent/skills/cross-cutting/web-perf/SKILL.md +181 -0
  372. package/.agent/skills/cross-cutting/web-perf/data/cls_optimization.yaml +189 -0
  373. package/.agent/skills/cross-cutting/web-perf/data/core_web_vitals.yaml +282 -0
  374. package/.agent/skills/cross-cutting/web-perf/data/inp_optimization.yaml +240 -0
  375. package/.agent/skills/cross-cutting/web-perf/data/lcp_optimization.yaml +202 -0
  376. package/.agent/skills/cross-cutting/web-perf/data/measurement.yaml +170 -0
  377. package/.agent/skills/devops/_index.yaml +9 -0
  378. package/.agent/skills/devops/aws/ADVANCED.md +547 -0
  379. package/.agent/skills/devops/aws/META.yaml +84 -0
  380. package/.agent/skills/devops/aws/SKILL.md +711 -0
  381. package/.agent/skills/devops/ci-cd/ADVANCED.md +529 -0
  382. package/.agent/skills/devops/ci-cd/META.yaml +21 -0
  383. package/.agent/skills/devops/ci-cd/SKILL.md +821 -0
  384. package/.agent/skills/devops/docker/ADVANCED.md +495 -0
  385. package/.agent/skills/devops/docker/META.yaml +20 -0
  386. package/.agent/skills/devops/docker/SKILL.md +653 -0
  387. package/.agent/skills/devops/kubernetes/ADVANCED.md +252 -0
  388. package/.agent/skills/devops/kubernetes/META.yaml +15 -0
  389. package/.agent/skills/devops/kubernetes/SKILL.md +621 -0
  390. package/.agent/skills/frameworks/_index.yaml +13 -0
  391. package/.agent/skills/frameworks/angular/META.yaml +70 -0
  392. package/.agent/skills/frameworks/angular/SKILL.md +319 -0
  393. package/.agent/skills/frameworks/angular/data/core.yaml +209 -0
  394. package/.agent/skills/frameworks/angular/data/performance.yaml +210 -0
  395. package/.agent/skills/frameworks/angular/data/server.yaml +175 -0
  396. package/.agent/skills/frameworks/flutter/ADVANCED.md +491 -0
  397. package/.agent/skills/frameworks/flutter/META.yaml +64 -0
  398. package/.agent/skills/frameworks/flutter/SKILL.md +541 -0
  399. package/.agent/skills/frameworks/flutter/data/core.yaml +210 -0
  400. package/.agent/skills/frameworks/flutter/data/platform.yaml +246 -0
  401. package/.agent/skills/frameworks/flutter/data/state.yaml +250 -0
  402. package/.agent/skills/frameworks/nextjs/ADVANCED.md +225 -0
  403. package/.agent/skills/frameworks/nextjs/META.yaml +67 -0
  404. package/.agent/skills/frameworks/nextjs/SKILL.md +593 -0
  405. package/.agent/skills/frameworks/nextjs/data/caching.yaml +210 -0
  406. package/.agent/skills/frameworks/nextjs/data/core.yaml +255 -0
  407. package/.agent/skills/frameworks/nextjs/data/server.yaml +248 -0
  408. package/.agent/skills/frameworks/nuxt/META.yaml +57 -0
  409. package/.agent/skills/frameworks/nuxt/SKILL.md +283 -0
  410. package/.agent/skills/frameworks/nuxt/data/core.yaml +309 -0
  411. package/.agent/skills/frameworks/nuxt/data/server.yaml +271 -0
  412. package/.agent/skills/frameworks/react/ADVANCED.md +676 -0
  413. package/.agent/skills/frameworks/react/META.yaml +60 -0
  414. package/.agent/skills/frameworks/react/SKILL.md +263 -0
  415. package/.agent/skills/frameworks/react/data/core.yaml +278 -0
  416. package/.agent/skills/frameworks/react/data/server.yaml +283 -0
  417. package/.agent/skills/frameworks/react-native/META.yaml +59 -0
  418. package/.agent/skills/frameworks/react-native/SKILL.md +301 -0
  419. package/.agent/skills/frameworks/react-native/data/core.yaml +260 -0
  420. package/.agent/skills/frameworks/react-native/data/platform.yaml +287 -0
  421. package/.agent/skills/frameworks/svelte/META.yaml +62 -0
  422. package/.agent/skills/frameworks/svelte/SKILL.md +398 -0
  423. package/.agent/skills/frameworks/svelte/data/runes.yaml +239 -0
  424. package/.agent/skills/frameworks/svelte/data/sveltekit.yaml +244 -0
  425. package/.agent/skills/frameworks/vue/ADVANCED.md +214 -0
  426. package/.agent/skills/frameworks/vue/META.yaml +58 -0
  427. package/.agent/skills/frameworks/vue/SKILL.md +356 -0
  428. package/.agent/skills/frameworks/vue/data/advanced.yaml +253 -0
  429. package/.agent/skills/frameworks/vue/data/core.yaml +270 -0
  430. package/.agent/skills/index.json +143 -0
  431. package/.agent/skills/languages/_index.yaml +33 -0
  432. package/.agent/skills/languages/asm/ADVANCED.md +750 -0
  433. package/.agent/skills/languages/asm/META.yaml +84 -0
  434. package/.agent/skills/languages/asm/SKILL.md +753 -0
  435. package/.agent/skills/languages/asm/data/advanced.yaml +295 -0
  436. package/.agent/skills/languages/asm/data/core.yaml +280 -0
  437. package/.agent/skills/languages/c/ADVANCED.md +625 -0
  438. package/.agent/skills/languages/c/META.yaml +58 -0
  439. package/.agent/skills/languages/c/SKILL.md +748 -0
  440. package/.agent/skills/languages/c/data/core.yaml +179 -0
  441. package/.agent/skills/languages/c/data/embedded.yaml +251 -0
  442. package/.agent/skills/languages/c/data/memory.yaml +253 -0
  443. package/.agent/skills/languages/clojure/META.yaml +13 -0
  444. package/.agent/skills/languages/clojure/SKILL.md +130 -0
  445. package/.agent/skills/languages/clojure/data/core.yaml +326 -0
  446. package/.agent/skills/languages/cpp/ADVANCED.md +457 -0
  447. package/.agent/skills/languages/cpp/META.yaml +61 -0
  448. package/.agent/skills/languages/cpp/SKILL.md +936 -0
  449. package/.agent/skills/languages/cpp/data/core.yaml +304 -0
  450. package/.agent/skills/languages/cpp/data/memory.yaml +247 -0
  451. package/.agent/skills/languages/cpp/data/modern.yaml +334 -0
  452. package/.agent/skills/languages/crystal/META.yaml +30 -0
  453. package/.agent/skills/languages/crystal/SKILL.md +117 -0
  454. package/.agent/skills/languages/crystal/data/async.yaml +264 -0
  455. package/.agent/skills/languages/crystal/data/core.yaml +279 -0
  456. package/.agent/skills/languages/csharp/ADVANCED.md +592 -0
  457. package/.agent/skills/languages/csharp/META.yaml +23 -0
  458. package/.agent/skills/languages/csharp/SKILL.md +620 -0
  459. package/.agent/skills/languages/csharp/data/aspnet.yaml +448 -0
  460. package/.agent/skills/languages/csharp/data/core.yaml +362 -0
  461. package/.agent/skills/languages/elixir/META.yaml +18 -0
  462. package/.agent/skills/languages/elixir/SKILL.md +368 -0
  463. package/.agent/skills/languages/elixir/data/core.yaml +392 -0
  464. package/.agent/skills/languages/fsharp/META.yaml +14 -0
  465. package/.agent/skills/languages/fsharp/SKILL.md +113 -0
  466. package/.agent/skills/languages/fsharp/data/core.yaml +396 -0
  467. package/.agent/skills/languages/go/ADVANCED.md +260 -0
  468. package/.agent/skills/languages/go/META.yaml +64 -0
  469. package/.agent/skills/languages/go/SKILL.md +489 -0
  470. package/.agent/skills/languages/go/data/concurrency.yaml +424 -0
  471. package/.agent/skills/languages/go/data/core.yaml +399 -0
  472. package/.agent/skills/languages/go/data/http.yaml +507 -0
  473. package/.agent/skills/languages/haskell/META.yaml +18 -0
  474. package/.agent/skills/languages/haskell/SKILL.md +305 -0
  475. package/.agent/skills/languages/haskell/data/core.yaml +347 -0
  476. package/.agent/skills/languages/java/ADVANCED.md +450 -0
  477. package/.agent/skills/languages/java/META.yaml +89 -0
  478. package/.agent/skills/languages/java/SKILL.md +495 -0
  479. package/.agent/skills/languages/java/data/core.yaml +307 -0
  480. package/.agent/skills/languages/java/data/spring.yaml +437 -0
  481. package/.agent/skills/languages/javascript/ADVANCED.md +530 -0
  482. package/.agent/skills/languages/javascript/META.yaml +105 -0
  483. package/.agent/skills/languages/javascript/SKILL.md +455 -0
  484. package/.agent/skills/languages/javascript/data/async.yaml +290 -0
  485. package/.agent/skills/languages/javascript/data/core.yaml +380 -0
  486. package/.agent/skills/languages/javascript/data/modern.yaml +269 -0
  487. package/.agent/skills/languages/julia/META.yaml +13 -0
  488. package/.agent/skills/languages/julia/SKILL.md +174 -0
  489. package/.agent/skills/languages/julia/data/core.yaml +356 -0
  490. package/.agent/skills/languages/kotlin/ADVANCED.md +539 -0
  491. package/.agent/skills/languages/kotlin/META.yaml +24 -0
  492. package/.agent/skills/languages/kotlin/SKILL.md +525 -0
  493. package/.agent/skills/languages/kotlin/data/android.yaml +495 -0
  494. package/.agent/skills/languages/kotlin/data/core.yaml +366 -0
  495. package/.agent/skills/languages/lua/ADVANCED.md +257 -0
  496. package/.agent/skills/languages/lua/META.yaml +58 -0
  497. package/.agent/skills/languages/lua/SKILL.md +492 -0
  498. package/.agent/skills/languages/lua/data/core.yaml +264 -0
  499. package/.agent/skills/languages/lua/data/embedding.yaml +300 -0
  500. package/.agent/skills/languages/nim/META.yaml +30 -0
  501. package/.agent/skills/languages/nim/SKILL.md +116 -0
  502. package/.agent/skills/languages/nim/data/async.yaml +257 -0
  503. package/.agent/skills/languages/nim/data/core.yaml +241 -0
  504. package/.agent/skills/languages/ocaml/META.yaml +13 -0
  505. package/.agent/skills/languages/ocaml/SKILL.md +123 -0
  506. package/.agent/skills/languages/ocaml/data/core.yaml +357 -0
  507. package/.agent/skills/languages/perl/META.yaml +13 -0
  508. package/.agent/skills/languages/perl/SKILL.md +115 -0
  509. package/.agent/skills/languages/perl/data/core.yaml +360 -0
  510. package/.agent/skills/languages/php/ADVANCED.md +199 -0
  511. package/.agent/skills/languages/php/META.yaml +18 -0
  512. package/.agent/skills/languages/php/SKILL.md +488 -0
  513. package/.agent/skills/languages/php/data/core.yaml +392 -0
  514. package/.agent/skills/languages/php/data/laravel.yaml +525 -0
  515. package/.agent/skills/languages/python/ADVANCED.md +207 -0
  516. package/.agent/skills/languages/python/META.yaml +91 -0
  517. package/.agent/skills/languages/python/SKILL.md +495 -0
  518. package/.agent/skills/languages/python/data/async.yaml +265 -0
  519. package/.agent/skills/languages/python/data/core.yaml +259 -0
  520. package/.agent/skills/languages/python/data/fastapi.yaml +296 -0
  521. package/.agent/skills/languages/python/data/testing.yaml +226 -0
  522. package/.agent/skills/languages/r/META.yaml +16 -0
  523. package/.agent/skills/languages/r/SKILL.md +348 -0
  524. package/.agent/skills/languages/r/data/core.yaml +355 -0
  525. package/.agent/skills/languages/ruby/ADVANCED.md +381 -0
  526. package/.agent/skills/languages/ruby/META.yaml +19 -0
  527. package/.agent/skills/languages/ruby/SKILL.md +417 -0
  528. package/.agent/skills/languages/ruby/data/core.yaml +448 -0
  529. package/.agent/skills/languages/ruby/data/rails.yaml +415 -0
  530. package/.agent/skills/languages/rust/ADVANCED.md +212 -0
  531. package/.agent/skills/languages/rust/META.yaml +87 -0
  532. package/.agent/skills/languages/rust/SKILL.md +377 -0
  533. package/.agent/skills/languages/rust/data/async.yaml +404 -0
  534. package/.agent/skills/languages/rust/data/axum.yaml +450 -0
  535. package/.agent/skills/languages/rust/data/core.yaml +356 -0
  536. package/.agent/skills/languages/scala/META.yaml +17 -0
  537. package/.agent/skills/languages/scala/SKILL.md +202 -0
  538. package/.agent/skills/languages/scala/data/core.yaml +349 -0
  539. package/.agent/skills/languages/solidity/META.yaml +13 -0
  540. package/.agent/skills/languages/solidity/SKILL.md +188 -0
  541. package/.agent/skills/languages/solidity/data/core.yaml +528 -0
  542. package/.agent/skills/languages/swift/ADVANCED.md +231 -0
  543. package/.agent/skills/languages/swift/META.yaml +18 -0
  544. package/.agent/skills/languages/swift/SKILL.md +342 -0
  545. package/.agent/skills/languages/swift/data/core.yaml +489 -0
  546. package/.agent/skills/languages/typescript/ADVANCED.md +186 -0
  547. package/.agent/skills/languages/typescript/META.yaml +92 -0
  548. package/.agent/skills/languages/typescript/SKILL.md +306 -0
  549. package/.agent/skills/languages/typescript/data/async.yaml +397 -0
  550. package/.agent/skills/languages/typescript/data/core.yaml +283 -0
  551. package/.agent/skills/languages/typescript/data/validation.yaml +338 -0
  552. package/.agent/skills/languages/zig/META.yaml +52 -0
  553. package/.agent/skills/languages/zig/SKILL.md +354 -0
  554. package/.agent/skills/languages/zig/data/async.yaml +314 -0
  555. package/.agent/skills/languages/zig/data/core.yaml +302 -0
  556. package/.agent/templates/README.md +42 -0
  557. package/.agent/templates/audit-report.md +153 -0
  558. package/.agent/templates/chains/debug/step1-reproduce.md +83 -0
  559. package/.agent/templates/chains/debug/step2-isolate.md +73 -0
  560. package/.agent/templates/chains/debug/step3-analyze.md +86 -0
  561. package/.agent/templates/chains/debug/step4-fix.md +85 -0
  562. package/.agent/templates/chains/debug/step5-verify.md +122 -0
  563. package/.agent/templates/chains/implement/step1-plan.md +88 -0
  564. package/.agent/templates/chains/implement/step2-code.md +87 -0
  565. package/.agent/templates/chains/implement/step3-test.md +87 -0
  566. package/.agent/templates/chains/implement/step4-doc.md +118 -0
  567. package/.agent/templates/chains/review/step1-understand.md +74 -0
  568. package/.agent/templates/chains/review/step2-analyze.md +110 -0
  569. package/.agent/templates/chains/review/step3-fix.md +93 -0
  570. package/.agent/templates/chains/review/step4-summary.md +104 -0
  571. package/.agent/templates/debug-report.md +50 -0
  572. package/.agent/templates/deploy-plan.md +54 -0
  573. package/.agent/templates/doc-template.md +57 -0
  574. package/.agent/templates/findings.md +122 -0
  575. package/.agent/templates/index.yaml +239 -0
  576. package/.agent/templates/migrate-plan.md +50 -0
  577. package/.agent/templates/phase-template.md +72 -0
  578. package/.agent/templates/project-plan.md +87 -0
  579. package/.agent/templates/prompts/context_block.md +114 -0
  580. package/.agent/templates/prompts/guardrails_block.md +116 -0
  581. package/.agent/templates/prompts/persona_base.md +155 -0
  582. package/.agent/templates/prompts/tools_block.md +137 -0
  583. package/.agent/templates/reflection/critic.md +110 -0
  584. package/.agent/templates/reflection/error_analysis.md +149 -0
  585. package/.agent/templates/reflection/success_analysis.md +174 -0
  586. package/.agent/templates/task-list.md +144 -0
  587. package/.agent/templates/tasks/audit.yaml +146 -0
  588. package/.agent/templates/tasks/bug_fix.yaml +121 -0
  589. package/.agent/templates/tasks/code_implementation.yaml +110 -0
  590. package/.agent/templates/tasks/refactor.yaml +157 -0
  591. package/.agent/templates/test-report.md +52 -0
  592. package/.agent/workflows/ap.md +135 -0
  593. package/.agent/workflows/code.md +130 -0
  594. package/.agent/workflows/debug.md +230 -0
  595. package/.agent/workflows/deploy.md +192 -0
  596. package/.agent/workflows/dev.md +137 -0
  597. package/.agent/workflows/doc.md +124 -0
  598. package/.agent/workflows/env.md +98 -0
  599. package/.agent/workflows/fix.md +76 -0
  600. package/.agent/workflows/generate.md +28 -0
  601. package/.agent/workflows/git.md +97 -0
  602. package/.agent/workflows/help.md +75 -0
  603. package/.agent/workflows/init.md +148 -0
  604. package/.agent/workflows/migrate.md +135 -0
  605. package/.agent/workflows/monitor.md +133 -0
  606. package/.agent/workflows/onboard.md +144 -0
  607. package/.agent/workflows/orchestrate.md +117 -0
  608. package/.agent/workflows/perf.md +106 -0
  609. package/.agent/workflows/plan.md +106 -0
  610. package/.agent/workflows/recap.md +101 -0
  611. package/.agent/workflows/refactor.md +161 -0
  612. package/.agent/workflows/revert.md +99 -0
  613. package/.agent/workflows/review.md +106 -0
  614. package/.agent/workflows/scaffold.md +119 -0
  615. package/.agent/workflows/security.md +186 -0
  616. package/.agent/workflows/status.md +103 -0
  617. package/.agent/workflows/test.md +157 -0
  618. package/.agent/workflows/think.md +126 -0
  619. package/.agent/workflows/upgrade.md +109 -0
  620. package/.agent/workflows/visualize.md +295 -0
  621. package/.agent/workflows/workflow.md +196 -0
  622. package/README.md +64 -0
  623. package/dist/commands/add.d.ts +2 -0
  624. package/dist/commands/add.d.ts.map +1 -0
  625. package/dist/commands/add.js +70 -0
  626. package/dist/commands/add.js.map +1 -0
  627. package/dist/commands/config.d.ts +4 -0
  628. package/dist/commands/config.d.ts.map +1 -0
  629. package/dist/commands/config.js +152 -0
  630. package/dist/commands/config.js.map +1 -0
  631. package/dist/commands/doctor.d.ts +4 -0
  632. package/dist/commands/doctor.d.ts.map +1 -0
  633. package/dist/commands/doctor.js +98 -0
  634. package/dist/commands/doctor.js.map +1 -0
  635. package/dist/commands/hsa.d.ts +4 -0
  636. package/dist/commands/hsa.d.ts.map +1 -0
  637. package/dist/commands/hsa.js +194 -0
  638. package/dist/commands/hsa.js.map +1 -0
  639. package/dist/commands/info.d.ts +2 -0
  640. package/dist/commands/info.d.ts.map +1 -0
  641. package/dist/commands/info.js +149 -0
  642. package/dist/commands/info.js.map +1 -0
  643. package/dist/commands/init.d.ts +4 -0
  644. package/dist/commands/init.d.ts.map +1 -0
  645. package/dist/commands/init.js +262 -0
  646. package/dist/commands/init.js.map +1 -0
  647. package/dist/commands/install-core.d.ts +4 -0
  648. package/dist/commands/install-core.d.ts.map +1 -0
  649. package/dist/commands/install-core.js +85 -0
  650. package/dist/commands/install-core.js.map +1 -0
  651. package/dist/commands/install-helpers.d.ts +27 -0
  652. package/dist/commands/install-helpers.d.ts.map +1 -0
  653. package/dist/commands/install-helpers.js +125 -0
  654. package/dist/commands/install-helpers.js.map +1 -0
  655. package/dist/commands/install-hsa.d.ts +18 -0
  656. package/dist/commands/install-hsa.d.ts.map +1 -0
  657. package/dist/commands/install-hsa.js +61 -0
  658. package/dist/commands/install-hsa.js.map +1 -0
  659. package/dist/commands/install.d.ts +4 -0
  660. package/dist/commands/install.d.ts.map +1 -0
  661. package/dist/commands/install.js +310 -0
  662. package/dist/commands/install.js.map +1 -0
  663. package/dist/commands/list.d.ts +4 -0
  664. package/dist/commands/list.d.ts.map +1 -0
  665. package/dist/commands/list.js +91 -0
  666. package/dist/commands/list.js.map +1 -0
  667. package/dist/commands/mcp-registry.d.ts +48 -0
  668. package/dist/commands/mcp-registry.d.ts.map +1 -0
  669. package/dist/commands/mcp-registry.js +246 -0
  670. package/dist/commands/mcp-registry.js.map +1 -0
  671. package/dist/commands/mcp-writers.d.ts +20 -0
  672. package/dist/commands/mcp-writers.d.ts.map +1 -0
  673. package/dist/commands/mcp-writers.js +144 -0
  674. package/dist/commands/mcp-writers.js.map +1 -0
  675. package/dist/commands/mcp.d.ts +10 -0
  676. package/dist/commands/mcp.d.ts.map +1 -0
  677. package/dist/commands/mcp.js +319 -0
  678. package/dist/commands/mcp.js.map +1 -0
  679. package/dist/commands/update.d.ts +4 -0
  680. package/dist/commands/update.d.ts.map +1 -0
  681. package/dist/commands/update.js +79 -0
  682. package/dist/commands/update.js.map +1 -0
  683. package/dist/constants/cursor-globs.d.ts +17 -0
  684. package/dist/constants/cursor-globs.d.ts.map +1 -0
  685. package/dist/constants/cursor-globs.js +62 -0
  686. package/dist/constants/cursor-globs.js.map +1 -0
  687. package/dist/constants/ide-install-specs.d.ts +36 -0
  688. package/dist/constants/ide-install-specs.d.ts.map +1 -0
  689. package/dist/constants/ide-install-specs.js +870 -0
  690. package/dist/constants/ide-install-specs.js.map +1 -0
  691. package/dist/constants/ides.d.ts +105 -0
  692. package/dist/constants/ides.d.ts.map +1 -0
  693. package/dist/constants/ides.js +412 -0
  694. package/dist/constants/ides.js.map +1 -0
  695. package/dist/constants/skills.d.ts +40 -0
  696. package/dist/constants/skills.d.ts.map +1 -0
  697. package/dist/constants/skills.js +78 -0
  698. package/dist/constants/skills.js.map +1 -0
  699. package/dist/constants.d.ts +39 -0
  700. package/dist/constants.d.ts.map +1 -0
  701. package/dist/constants.js +75 -0
  702. package/dist/constants.js.map +1 -0
  703. package/dist/index.d.ts +8 -0
  704. package/dist/index.d.ts.map +1 -0
  705. package/dist/index.js +122 -0
  706. package/dist/index.js.map +1 -0
  707. package/dist/types/flags.d.ts +47 -0
  708. package/dist/types/flags.d.ts.map +1 -0
  709. package/dist/types/flags.js +4 -0
  710. package/dist/types/flags.js.map +1 -0
  711. package/dist/types/ide-install.d.ts +175 -0
  712. package/dist/types/ide-install.d.ts.map +1 -0
  713. package/dist/types/ide-install.js +29 -0
  714. package/dist/types/ide-install.js.map +1 -0
  715. package/dist/utils/copy-helpers.d.ts +60 -0
  716. package/dist/utils/copy-helpers.d.ts.map +1 -0
  717. package/dist/utils/copy-helpers.js +617 -0
  718. package/dist/utils/copy-helpers.js.map +1 -0
  719. package/dist/utils/index.d.ts +3 -0
  720. package/dist/utils/index.d.ts.map +1 -0
  721. package/dist/utils/index.js +5 -0
  722. package/dist/utils/index.js.map +1 -0
  723. package/dist/utils/validation.d.ts +29 -0
  724. package/dist/utils/validation.d.ts.map +1 -0
  725. package/dist/utils/validation.js +211 -0
  726. package/dist/utils/validation.js.map +1 -0
  727. package/package.json +64 -0
@@ -0,0 +1,862 @@
1
+ ---
2
+ name: electron
3
+ detect:
4
+ [
5
+ "electron.vite.config.ts",
6
+ "main.ts:electron",
7
+ "preload.ts",
8
+ "forge.config.ts",
9
+ ]
10
+ version: "1.0.0"
11
+ category: desktop
12
+ tier: 1
13
+ ---
14
+
15
+ # Electron Patterns — DOMYH Awesome Code
16
+
17
+ > **Version**: Electron 35-40 (2025-2026)
18
+ > **Chromium**: 134.0.6998+
19
+ > **Node.js**: 22.14.0
20
+ > **Philosophy**: Context isolation, secure IPC, minimal privileges, performant builds
21
+
22
+ ---
23
+
24
+ ## 🎯 When to Use This Skill
25
+
26
+ Use for: Cross-platform desktop apps, web tech on desktop.
27
+ **NOT for**: Mobile (→ react-native), CLI tools (→ nodejs), Lightweight apps (→ tauri).
28
+
29
+ ---
30
+
31
+ ## 📦 What's New (2025-2026)
32
+
33
+ | Version | Feature | Description |
34
+ | ------- | ---------------------------------- | ----------------------------- |
35
+ | **35** | ServiceWorker Preload | MV3 extension support |
36
+ | **35** | `contextBridge.executeInMainWorld` | Safe cross-world execution |
37
+ | **35** | `roundedCorners` (Windows) | UI customization |
38
+ | **36** | ESM-first | Native ES modules default |
39
+ | **37** | Chrome Extensions API | Better extension support |
40
+ | **38** | WebGPU stable | Hardware-accelerated graphics |
41
+ | **39** | Utility Process V8 | Worker process improvements |
42
+ | **40** | Fuse improvements | Compile-time security flags |
43
+
44
+ ---
45
+
46
+ ## 🔨 Build Tools Comparison
47
+
48
+ | Tool | Purpose | Best For |
49
+ | -------------------- | ------------------- | ------------------------------------- |
50
+ | **electron-vite** | Dev + Build | Fast HMR, Vite ecosystem |
51
+ | **electron-forge** | Scaffolding + Build | Official, templates, plugins |
52
+ | **electron-builder** | Packaging + Publish | Distribution, installers, auto-update |
53
+
54
+ ### Recommended Combo
55
+
56
+ ```bash
57
+ # Development: electron-vite (fast HMR)
58
+ npm create @electron-vite/quick-start@latest my-app
59
+
60
+ # Packaging: electron-builder (mature, flexible)
61
+ npm install -D electron-builder
62
+
63
+ # Or full-featured: electron-forge
64
+ npm init electron-app@latest my-app -- --template=vite-typescript
65
+ ```
66
+
67
+ ### electron-vite Config
68
+
69
+ ```typescript
70
+ // electron.vite.config.ts
71
+ import { defineConfig, externalizeDepsPlugin } from "electron-vite";
72
+ import react from "@vitejs/plugin-react";
73
+
74
+ export default defineConfig({
75
+ main: {
76
+ plugins: [externalizeDepsPlugin()],
77
+ build: { rollupOptions: { external: ["better-sqlite3"] } },
78
+ },
79
+ preload: {
80
+ plugins: [externalizeDepsPlugin()],
81
+ },
82
+ renderer: {
83
+ plugins: [react()],
84
+ },
85
+ });
86
+ ```
87
+
88
+ ### electron-builder Config
89
+
90
+ ```json5
91
+ // electron-builder.json5
92
+ {
93
+ appId: "com.yourcompany.app",
94
+ productName: "MyApp",
95
+ directories: { output: "dist" },
96
+ files: ["out/**/*"],
97
+ mac: {
98
+ target: ["dmg", "zip"],
99
+ notarize: { teamId: "YOUR_TEAM_ID" },
100
+ hardenedRuntime: true,
101
+ },
102
+ win: {
103
+ target: ["nsis"],
104
+ signingHashAlgorithms: ["sha256"],
105
+ sign: "./scripts/sign.js",
106
+ },
107
+ linux: {
108
+ target: ["deb", "AppImage"],
109
+ },
110
+ publish: [
111
+ {
112
+ provider: "github",
113
+ owner: "yourname",
114
+ repo: "yourapp",
115
+ },
116
+ ],
117
+ }
118
+ ```
119
+
120
+ ---
121
+
122
+ ## 🔒 Security Best Practices
123
+
124
+ ### Context Isolation (Required)
125
+
126
+ ```typescript
127
+ // main.ts
128
+ import { BrowserWindow, app } from "electron";
129
+ import path from "path";
130
+
131
+ const mainWindow = new BrowserWindow({
132
+ width: 1200,
133
+ height: 800,
134
+ roundedCorners: true, // Windows 11
135
+ webPreferences: {
136
+ // ✅ Always enable
137
+ contextIsolation: true,
138
+ nodeIntegration: false,
139
+ sandbox: true,
140
+ preload: path.join(__dirname, "preload.js"),
141
+ devTools: !app.isPackaged,
142
+ // ✅ Only allow specific web features
143
+ spellcheck: false,
144
+ enableWebSQL: false,
145
+ },
146
+ });
147
+ ```
148
+
149
+ ### Secure Preload Script
150
+
151
+ ```typescript
152
+ // preload.ts
153
+ import { contextBridge, ipcRenderer } from "electron";
154
+
155
+ // ✅ Type-safe API exposure
156
+ const electronAPI = {
157
+ // File operations
158
+ openFile: () => ipcRenderer.invoke("dialog:openFile"),
159
+ saveFile: (data: string) => ipcRenderer.invoke("file:save", data),
160
+
161
+ // Event listeners (properly cleanup-able)
162
+ onUpdateProgress: (callback: (progress: number) => void) => {
163
+ const handler = (_: unknown, progress: number) => callback(progress);
164
+ ipcRenderer.on("update:progress", handler);
165
+ return () => ipcRenderer.removeListener("update:progress", handler);
166
+ },
167
+
168
+ // ❌ Never expose raw ipcRenderer
169
+ } as const;
170
+
171
+ contextBridge.exposeInMainWorld("electronAPI", electronAPI);
172
+
173
+ // TypeScript types for renderer
174
+ export type ElectronAPI = typeof electronAPI;
175
+ ```
176
+
177
+ ### TypeScript Integration
178
+
179
+ ```typescript
180
+ // preload.d.ts - Add to renderer's src/
181
+ import type { ElectronAPI } from "../preload/index";
182
+
183
+ declare global {
184
+ interface Window {
185
+ electronAPI: ElectronAPI;
186
+ }
187
+ }
188
+ export {};
189
+ ```
190
+
191
+ ---
192
+
193
+ ## 📡 IPC Communication
194
+
195
+ ### Main Process Handlers
196
+
197
+ ```typescript
198
+ // main.ts
199
+ import { ipcMain, dialog, BrowserWindow } from "electron";
200
+ import { z } from "zod";
201
+
202
+ // ✅ Schema validation
203
+ const SaveFileSchema = z.object({
204
+ path: z.string(),
205
+ content: z.string(),
206
+ });
207
+
208
+ ipcMain.handle("dialog:openFile", async (event) => {
209
+ const window = BrowserWindow.fromWebContents(event.sender);
210
+ if (!window) return null;
211
+
212
+ const result = await dialog.showOpenDialog(window, {
213
+ properties: ["openFile"],
214
+ filters: [{ name: "Text", extensions: ["txt", "md"] }],
215
+ });
216
+
217
+ if (result.canceled) return null;
218
+ return result.filePaths[0];
219
+ });
220
+
221
+ ipcMain.handle("file:save", async (event, data: unknown) => {
222
+ const parsed = SaveFileSchema.safeParse(data);
223
+ if (!parsed.success) {
224
+ throw new Error("Invalid data format");
225
+ }
226
+ // Save logic with validated data
227
+ return true;
228
+ });
229
+ ```
230
+
231
+ ---
232
+
233
+ ## 🧪 Testing Patterns
234
+
235
+ ### Unit Testing with Vitest
236
+
237
+ ```typescript
238
+ // src/main/__tests__/validators.test.ts
239
+ import { describe, it, expect } from "vitest";
240
+ import { validateFilePath, sanitizeInput } from "../validators";
241
+
242
+ describe("Input Validation", () => {
243
+ it("rejects path traversal", () => {
244
+ expect(validateFilePath("../etc/passwd")).toBe(false);
245
+ expect(validateFilePath("..\\windows\\system32")).toBe(false);
246
+ });
247
+
248
+ it("accepts valid paths", () => {
249
+ expect(validateFilePath("/home/user/documents/file.txt")).toBe(true);
250
+ });
251
+
252
+ it("sanitizes HTML input", () => {
253
+ expect(sanitizeInput("<script>alert(1)</script>")).toBe("");
254
+ });
255
+ });
256
+ ```
257
+
258
+ ### E2E Testing with Playwright
259
+
260
+ ```typescript
261
+ // e2e/app.spec.ts
262
+ import { test, expect, _electron as electron } from "@playwright/test";
263
+
264
+ test("app launches and shows main window", async () => {
265
+ const app = await electron.launch({ args: ["./dist/main.js"] });
266
+ const window = await app.firstWindow();
267
+
268
+ await expect(window).toHaveTitle(/MyApp/);
269
+
270
+ // Test IPC communication
271
+ const result = await window.evaluate(() => {
272
+ return window.electronAPI.getVersion();
273
+ });
274
+ expect(result).toMatch(/\d+\.\d+\.\d+/);
275
+
276
+ await app.close();
277
+ });
278
+
279
+ test("file dialog works", async () => {
280
+ const app = await electron.launch({ args: ["./dist/main.js"] });
281
+ const window = await app.firstWindow();
282
+
283
+ await window.click('button[data-testid="open-file"]');
284
+ // Dialog opens - mock or handle appropriately
285
+
286
+ await app.close();
287
+ });
288
+ ```
289
+
290
+ ### Playwright Config
291
+
292
+ ```typescript
293
+ // playwright.config.ts
294
+ import { defineConfig } from "@playwright/test";
295
+
296
+ export default defineConfig({
297
+ testDir: "./e2e",
298
+ timeout: 30000,
299
+ use: {
300
+ trace: "on-first-retry",
301
+ },
302
+ projects: [{ name: "electron" }],
303
+ });
304
+ ```
305
+
306
+ ---
307
+
308
+ ## 🔄 Auto Updates
309
+
310
+ ### electron-updater Setup
311
+
312
+ ```typescript
313
+ // main.ts
314
+ import { autoUpdater } from "electron-updater";
315
+ import { app, dialog, BrowserWindow } from "electron";
316
+ import log from "electron-log";
317
+
318
+ // Configure logging
319
+ autoUpdater.logger = log;
320
+ autoUpdater.autoDownload = false;
321
+
322
+ export function initAutoUpdater(mainWindow: BrowserWindow) {
323
+ // Check for updates on launch
324
+ autoUpdater.checkForUpdatesAndNotify();
325
+
326
+ autoUpdater.on("checking-for-update", () => {
327
+ log.info("Checking for update...");
328
+ });
329
+
330
+ autoUpdater.on("update-available", (info) => {
331
+ dialog
332
+ .showMessageBox(mainWindow, {
333
+ type: "info",
334
+ title: "Update Available",
335
+ message: `Version ${info.version} is available. Download now?`,
336
+ buttons: ["Download", "Later"],
337
+ })
338
+ .then(({ response }) => {
339
+ if (response === 0) autoUpdater.downloadUpdate();
340
+ });
341
+ });
342
+
343
+ autoUpdater.on("download-progress", (progress) => {
344
+ mainWindow.webContents.send("update:progress", progress.percent);
345
+ });
346
+
347
+ autoUpdater.on("update-downloaded", (info) => {
348
+ dialog
349
+ .showMessageBox(mainWindow, {
350
+ type: "info",
351
+ title: "Update Ready",
352
+ message: `Version ${info.version} is ready. Restart to apply?`,
353
+ buttons: ["Restart", "Later"],
354
+ })
355
+ .then(({ response }) => {
356
+ if (response === 0) autoUpdater.quitAndInstall();
357
+ });
358
+ });
359
+
360
+ autoUpdater.on("error", (err) => {
361
+ log.error("Auto-update error:", err);
362
+ });
363
+ }
364
+ ```
365
+
366
+ ### Code Signing (macOS)
367
+
368
+ ```bash
369
+ # macOS notarization
370
+ npx electron-builder --mac --publish always
371
+
372
+ # Required environment variables
373
+ export APPLE_ID="your@email.com"
374
+ export APPLE_APP_SPECIFIC_PASSWORD="xxxx-xxxx-xxxx-xxxx"
375
+ export APPLE_TEAM_ID="XXXXXXXXXX"
376
+ ```
377
+
378
+ ---
379
+
380
+ ## 💾 Data Persistence
381
+
382
+ ### better-sqlite3 (Best for Desktop)
383
+
384
+ ```typescript
385
+ // main/database.ts
386
+ import Database from "better-sqlite3";
387
+ import path from "path";
388
+ import { app } from "electron";
389
+
390
+ const dbPath = path.join(app.getPath("userData"), "app.db");
391
+ const db = new Database(dbPath);
392
+
393
+ // Enable WAL mode for better concurrent performance
394
+ db.pragma("journal_mode = WAL");
395
+
396
+ // Initialize schema
397
+ db.exec(`
398
+ CREATE TABLE IF NOT EXISTS settings (
399
+ key TEXT PRIMARY KEY,
400
+ value TEXT NOT NULL
401
+ )
402
+ `);
403
+
404
+ // Type-safe operations
405
+ export const settings = {
406
+ get: db.prepare("SELECT value FROM settings WHERE key = ?"),
407
+ set: db.prepare("INSERT OR REPLACE INTO settings (key, value) VALUES (?, ?)"),
408
+ };
409
+ ```
410
+
411
+ ### electron-store (Simple Key-Value)
412
+
413
+ ```typescript
414
+ // main/store.ts
415
+ import Store from "electron-store";
416
+
417
+ interface AppSettings {
418
+ theme: "light" | "dark" | "system";
419
+ windowBounds?: { width: number; height: number; x: number; y: number };
420
+ recentFiles: string[];
421
+ }
422
+
423
+ const store = new Store<AppSettings>({
424
+ defaults: {
425
+ theme: "system",
426
+ recentFiles: [],
427
+ },
428
+ encryptionKey: process.env.STORE_ENCRYPTION_KEY, // Optional
429
+ });
430
+
431
+ export function getSetting<K extends keyof AppSettings>(
432
+ key: K,
433
+ ): AppSettings[K] {
434
+ return store.get(key);
435
+ }
436
+
437
+ export function setSetting<K extends keyof AppSettings>(
438
+ key: K,
439
+ value: AppSettings[K],
440
+ ) {
441
+ store.set(key, value);
442
+ }
443
+ ```
444
+
445
+ ### safeStorage (Sensitive Data)
446
+
447
+ ```typescript
448
+ // main/secrets.ts
449
+ import { safeStorage } from "electron";
450
+ import fs from "fs";
451
+ import path from "path";
452
+ import { app } from "electron";
453
+
454
+ const secretsPath = path.join(app.getPath("userData"), "secrets.enc");
455
+
456
+ export function storeSecret(key: string, value: string) {
457
+ if (!safeStorage.isEncryptionAvailable()) {
458
+ throw new Error("Encryption not available");
459
+ }
460
+
461
+ const encrypted = safeStorage.encryptString(`${key}:${value}`);
462
+ // Append to secrets file or use a database
463
+ fs.appendFileSync(secretsPath, encrypted);
464
+ }
465
+
466
+ export function getSecret(key: string): string | null {
467
+ // Implementation to retrieve and decrypt
468
+ // ...
469
+ }
470
+ ```
471
+
472
+ ---
473
+
474
+ ## 📟 Native Integrations
475
+
476
+ ### System Tray
477
+
478
+ ```typescript
479
+ // main/tray.ts
480
+ import { Tray, Menu, nativeImage, app, BrowserWindow } from "electron";
481
+ import path from "path";
482
+
483
+ let tray: Tray | null = null;
484
+
485
+ export function createTray(mainWindow: BrowserWindow) {
486
+ const icon = nativeImage.createFromPath(
487
+ path.join(__dirname, "assets/tray-icon.png"),
488
+ );
489
+
490
+ tray = new Tray(icon);
491
+ tray.setToolTip("MyApp");
492
+
493
+ const contextMenu = Menu.buildFromTemplate([
494
+ { label: "Show", click: () => mainWindow.show() },
495
+ { type: "separator" },
496
+ { label: "Quit", click: () => app.quit() },
497
+ ]);
498
+
499
+ tray.setContextMenu(contextMenu);
500
+
501
+ // Click to show window
502
+ tray.on("click", () => {
503
+ mainWindow.isVisible() ? mainWindow.hide() : mainWindow.show();
504
+ });
505
+ }
506
+ ```
507
+
508
+ ### Global Shortcuts
509
+
510
+ ```typescript
511
+ // main/shortcuts.ts
512
+ import { globalShortcut, app, BrowserWindow } from "electron";
513
+
514
+ export function registerGlobalShortcuts(mainWindow: BrowserWindow) {
515
+ // Register when app is ready
516
+ app.whenReady().then(() => {
517
+ globalShortcut.register("CommandOrControl+Shift+X", () => {
518
+ if (mainWindow.isVisible()) {
519
+ mainWindow.hide();
520
+ } else {
521
+ mainWindow.show();
522
+ mainWindow.focus();
523
+ }
524
+ });
525
+ });
526
+
527
+ // Unregister on quit
528
+ app.on("will-quit", () => {
529
+ globalShortcut.unregisterAll();
530
+ });
531
+ }
532
+ ```
533
+
534
+ ### Power Monitor
535
+
536
+ ```typescript
537
+ // main/power.ts
538
+ import { powerMonitor } from "electron";
539
+
540
+ export function initPowerMonitor() {
541
+ powerMonitor.on("suspend", () => {
542
+ console.log("System suspended - saving state");
543
+ // Save draft, pause sync, etc.
544
+ });
545
+
546
+ powerMonitor.on("resume", () => {
547
+ console.log("System resumed - checking for updates");
548
+ // Resume sync, check for updates
549
+ });
550
+
551
+ powerMonitor.on("on-battery", () => {
552
+ console.log("On battery - reducing background tasks");
553
+ });
554
+
555
+ powerMonitor.on("on-ac", () => {
556
+ console.log("On AC power - resuming normal operations");
557
+ });
558
+ }
559
+ ```
560
+
561
+ ### Notifications
562
+
563
+ ```typescript
564
+ // main/notifications.ts
565
+ import { Notification } from "electron";
566
+
567
+ export function showNotification(title: string, body: string) {
568
+ if (!Notification.isSupported()) return;
569
+
570
+ new Notification({
571
+ title,
572
+ body,
573
+ icon: path.join(__dirname, "assets/icon.png"),
574
+ }).show();
575
+ }
576
+
577
+ // With actions (macOS)
578
+ export function showActionNotification(title: string, body: string) {
579
+ const notification = new Notification({
580
+ title,
581
+ body,
582
+ actions: [
583
+ { text: "View", type: "button" },
584
+ { text: "Dismiss", type: "button" },
585
+ ],
586
+ });
587
+
588
+ notification.on("action", (_, index) => {
589
+ if (index === 0) {
590
+ // Handle View action
591
+ }
592
+ });
593
+
594
+ notification.show();
595
+ }
596
+ ```
597
+
598
+ ---
599
+
600
+ ## 🔗 Deep Linking
601
+
602
+ ```typescript
603
+ // main.ts
604
+ import { app, BrowserWindow } from "electron";
605
+
606
+ const PROTOCOL = "my-app";
607
+
608
+ // Register protocol
609
+ if (process.defaultApp) {
610
+ app.setAsDefaultProtocolClient(PROTOCOL, process.execPath, [__dirname]);
611
+ } else {
612
+ app.setAsDefaultProtocolClient(PROTOCOL);
613
+ }
614
+
615
+ // Single instance lock
616
+ const gotTheLock = app.requestSingleInstanceLock();
617
+
618
+ if (!gotTheLock) {
619
+ app.quit();
620
+ } else {
621
+ app.on("second-instance", (event, argv) => {
622
+ // Windows/Linux: URL in argv
623
+ const url = argv.find((arg) => arg.startsWith(`${PROTOCOL}://`));
624
+ if (url) handleDeepLink(url);
625
+
626
+ // Focus window
627
+ if (mainWindow) {
628
+ if (mainWindow.isMinimized()) mainWindow.restore();
629
+ mainWindow.focus();
630
+ }
631
+ });
632
+
633
+ // macOS: URL via open-url event
634
+ app.on("open-url", (event, url) => {
635
+ event.preventDefault();
636
+ handleDeepLink(url);
637
+ });
638
+ }
639
+
640
+ function handleDeepLink(url: string) {
641
+ const parsed = new URL(url);
642
+ console.log("Deep link:", parsed.pathname, parsed.searchParams);
643
+ // Route to appropriate view
644
+ }
645
+ ```
646
+
647
+ ---
648
+
649
+ ## 💥 Crash Reporting
650
+
651
+ ### Built-in crashReporter
652
+
653
+ ```typescript
654
+ // main.ts
655
+ import { crashReporter } from "electron";
656
+
657
+ crashReporter.start({
658
+ productName: "MyApp",
659
+ submitURL: "https://your-crash-server.com/submit",
660
+ uploadToServer: true,
661
+ extra: {
662
+ app_version: app.getVersion(),
663
+ build_type: process.env.NODE_ENV,
664
+ },
665
+ });
666
+ ```
667
+
668
+ ### Sentry Integration
669
+
670
+ ```typescript
671
+ // main.ts
672
+ import * as Sentry from "@sentry/electron/main";
673
+
674
+ Sentry.init({
675
+ dsn: "https://your-dsn@sentry.io/project",
676
+ release: app.getVersion(),
677
+ });
678
+
679
+ // preload.ts
680
+ import * as Sentry from "@sentry/electron/renderer";
681
+
682
+ Sentry.init({
683
+ dsn: "https://your-dsn@sentry.io/project",
684
+ });
685
+ ```
686
+
687
+ ---
688
+
689
+ ## ⚡ Performance Optimization
690
+
691
+ ### Lazy Window Loading
692
+
693
+ ```typescript
694
+ // main/windows.ts
695
+ let settingsWindow: BrowserWindow | null = null;
696
+
697
+ export function getSettingsWindow(): BrowserWindow {
698
+ if (!settingsWindow || settingsWindow.isDestroyed()) {
699
+ settingsWindow = new BrowserWindow({
700
+ show: false,
701
+ webPreferences: { preload: settingsPreload },
702
+ });
703
+ settingsWindow.loadFile("settings.html");
704
+ }
705
+ return settingsWindow;
706
+ }
707
+
708
+ // Show when ready
709
+ ipcMain.handle("open-settings", () => {
710
+ const win = getSettingsWindow();
711
+ win.once("ready-to-show", () => win.show());
712
+ });
713
+ ```
714
+
715
+ ### Worker Threads for Heavy Tasks
716
+
717
+ ```typescript
718
+ // main/workers/heavy-task.ts
719
+ import { Worker, isMainThread, parentPort } from "worker_threads";
720
+
721
+ if (!isMainThread && parentPort) {
722
+ parentPort.on("message", (data) => {
723
+ const result = processHeavyTask(data);
724
+ parentPort!.postMessage(result);
725
+ });
726
+ }
727
+
728
+ // main.ts
729
+ const worker = new Worker("./workers/heavy-task.js");
730
+ worker.postMessage(largeDataset);
731
+ worker.on("message", (result) => {
732
+ mainWindow.webContents.send("task:complete", result);
733
+ });
734
+ ```
735
+
736
+ ---
737
+
738
+ ## ♿ Accessibility
739
+
740
+ ```typescript
741
+ // main.ts
742
+ import { app } from "electron";
743
+
744
+ // Check if accessibility is enabled
745
+ if (app.accessibilitySupportEnabled) {
746
+ console.log("Accessibility support enabled");
747
+ }
748
+
749
+ // Enable programmatically if needed
750
+ app.setAccessibilitySupportEnabled(true);
751
+
752
+ // Inform renderer about accessibility state
753
+ ipcMain.handle("get-accessibility-state", () => {
754
+ return app.accessibilitySupportEnabled;
755
+ });
756
+ ```
757
+
758
+ ### Renderer Best Practices
759
+
760
+ ```typescript
761
+ // Use semantic HTML and ARIA
762
+ <button
763
+ aria-label="Open file"
764
+ aria-keyshortcuts="Ctrl+O"
765
+ onClick={handleOpen}
766
+ >
767
+ Open
768
+ </button>
769
+
770
+ // Focus management
771
+ useEffect(() => {
772
+ if (isModalOpen) {
773
+ modalRef.current?.focus();
774
+ }
775
+ }, [isModalOpen]);
776
+ ```
777
+
778
+ ---
779
+
780
+ ## 📁 Project Structure
781
+
782
+ ```
783
+ my-electron-app/
784
+ ├── src/
785
+ │ ├── main/ # Main process
786
+ │ │ ├── index.ts # Entry point
787
+ │ │ ├── ipc.ts # IPC handlers
788
+ │ │ ├── tray.ts # System tray
789
+ │ │ ├── shortcuts.ts # Global shortcuts
790
+ │ │ ├── updates.ts # Auto-updater
791
+ │ │ └── database.ts # SQLite
792
+ │ ├── preload/ # Preload scripts
793
+ │ │ ├── index.ts # Main preload
794
+ │ │ └── index.d.ts # Type declarations
795
+ │ └── renderer/ # Renderer (React/Vue)
796
+ │ ├── App.tsx
797
+ │ └── main.tsx
798
+ ├── e2e/ # E2E tests
799
+ │ └── app.spec.ts
800
+ ├── electron.vite.config.ts
801
+ ├── electron-builder.json5
802
+ ├── playwright.config.ts
803
+ └── package.json
804
+ ```
805
+
806
+ ---
807
+
808
+ ## ✅ Best Practices Checklist
809
+
810
+ ### Security
811
+
812
+ - [ ] Context isolation enabled
813
+ - [ ] Node integration disabled
814
+ - [ ] Sandbox enabled
815
+ - [ ] CSP configured
816
+ - [ ] Input validation in IPC handlers
817
+ - [ ] Code signing configured
818
+
819
+ ### IPC
820
+
821
+ - [ ] Use invoke/handle pattern
822
+ - [ ] Limited API exposure
823
+ - [ ] Validate sender
824
+ - [ ] Type-safe preload API
825
+ - [ ] Cleanup event listeners
826
+
827
+ ### Performance
828
+
829
+ - [ ] Async IPC only
830
+ - [ ] No remote module
831
+ - [ ] Lazy window loading
832
+ - [ ] Worker threads for heavy tasks
833
+
834
+ ### Distribution
835
+
836
+ - [ ] Auto-update configured
837
+ - [ ] Crash reporting enabled
838
+ - [ ] Logging configured
839
+ - [ ] All platforms tested
840
+
841
+ ---
842
+
843
+ ## 🔌 HSA Integration
844
+
845
+ ```python
846
+ from hsa.adapters.runtime_adapters import (
847
+ search_electron_patterns,
848
+ get_electron_api,
849
+ )
850
+
851
+ # Search patterns
852
+ results = search_electron_patterns("auto update security")
853
+ # Returns: [{'name': 'autoUpdater', 'category': 'updates', ...}, ...]
854
+
855
+ # Get API info
856
+ api = get_electron_api("contextBridge")
857
+ # Returns: {'name': 'contextBridge', 'category': 'security', ...}
858
+ ```
859
+
860
+ ---
861
+
862
+ _DOMYH Awesome Code • Electron 35-40 • HSA v1.0.0 • 2026_