@opengsd/gsd-pi 1.0.2-dev.e9a1b49 → 1.0.2-dev.fb7ddf1

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 (490) hide show
  1. package/README.md +63 -12
  2. package/dist/headless-answers.js +2 -1
  3. package/dist/headless-events.d.ts +1 -0
  4. package/dist/headless-events.js +8 -1
  5. package/dist/onboarding.js +22 -3
  6. package/dist/resource-loader.d.ts +7 -0
  7. package/dist/resource-loader.js +44 -9
  8. package/dist/resources/.managed-resources-content-hash +1 -1
  9. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +34 -11
  10. package/dist/resources/extensions/context7/index.js +12 -2
  11. package/dist/resources/extensions/get-secrets-from-user.js +16 -16
  12. package/dist/resources/extensions/google-cli/index.js +30 -0
  13. package/dist/resources/extensions/google-cli/models.js +55 -0
  14. package/dist/resources/extensions/google-cli/package.json +11 -0
  15. package/dist/resources/extensions/google-cli/readiness.js +12 -0
  16. package/dist/resources/extensions/google-cli/stream-adapter.js +191 -0
  17. package/dist/resources/extensions/gsd/auto/loop.js +81 -1
  18. package/dist/resources/extensions/gsd/auto/orchestrator.js +4 -2
  19. package/dist/resources/extensions/gsd/auto/phases.js +38 -1
  20. package/dist/resources/extensions/gsd/auto/run-unit.js +8 -0
  21. package/dist/resources/extensions/gsd/auto/session.js +3 -0
  22. package/dist/resources/extensions/gsd/auto-dispatch.js +17 -7
  23. package/dist/resources/extensions/gsd/auto-post-unit.js +65 -16
  24. package/dist/resources/extensions/gsd/auto-prompts.js +5 -236
  25. package/dist/resources/extensions/gsd/auto-recovery.js +10 -5
  26. package/dist/resources/extensions/gsd/auto-start.js +232 -49
  27. package/dist/resources/extensions/gsd/auto-tool-tracking.js +2 -1
  28. package/dist/resources/extensions/gsd/auto-verification.js +14 -2
  29. package/dist/resources/extensions/gsd/auto-worktree.js +36 -55
  30. package/dist/resources/extensions/gsd/auto.js +40 -2
  31. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +4 -3
  32. package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +7 -2
  33. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +39 -5
  34. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +107 -27
  35. package/dist/resources/extensions/gsd/bootstrap/system-context.js +3 -27
  36. package/dist/resources/extensions/gsd/bootstrap/tool-search-shim.js +4 -4
  37. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +1 -1
  38. package/dist/resources/extensions/gsd/closeout-recovery.js +7 -1
  39. package/dist/resources/extensions/gsd/commands/handlers/auto.js +9 -1
  40. package/dist/resources/extensions/gsd/commands-handlers.js +3 -0
  41. package/dist/resources/extensions/gsd/commands-usage.js +105 -1
  42. package/dist/resources/extensions/gsd/config-overlay.js +20 -14
  43. package/dist/resources/extensions/gsd/context-overlay.js +22 -16
  44. package/dist/resources/extensions/gsd/dashboard-overlay.js +10 -23
  45. package/dist/resources/extensions/gsd/doctor-engine-checks.js +87 -0
  46. package/dist/resources/extensions/gsd/doctor-git-checks.js +70 -5
  47. package/dist/resources/extensions/gsd/doctor-providers.js +54 -24
  48. package/dist/resources/extensions/gsd/doctor.js +7 -2
  49. package/dist/resources/extensions/gsd/git-conflict-state.js +26 -1
  50. package/dist/resources/extensions/gsd/guided-flow.js +5 -6
  51. package/dist/resources/extensions/gsd/key-manager.js +45 -13
  52. package/dist/resources/extensions/gsd/mcp-filter.js +57 -18
  53. package/dist/resources/extensions/gsd/mcp-project-config.js +15 -9
  54. package/dist/resources/extensions/gsd/migration-auto-check.js +5 -1
  55. package/dist/resources/extensions/gsd/milestone-actions.js +3 -0
  56. package/dist/resources/extensions/gsd/milestone-reopen-events.js +28 -0
  57. package/dist/resources/extensions/gsd/notification-overlay.js +8 -9
  58. package/dist/resources/extensions/gsd/parallel-merge.js +6 -4
  59. package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +15 -13
  60. package/dist/resources/extensions/gsd/post-execution-checks.js +5 -4
  61. package/dist/resources/extensions/gsd/preferences-skills.js +11 -4
  62. package/dist/resources/extensions/gsd/preferences.js +14 -2
  63. package/dist/resources/extensions/gsd/prompt-loader.js +2 -0
  64. package/dist/resources/extensions/gsd/prompts/discuss.md +4 -2
  65. package/dist/resources/extensions/gsd/prompts/gate-evaluate.md +1 -1
  66. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +2 -0
  67. package/dist/resources/extensions/gsd/prompts/system.md +3 -20
  68. package/dist/resources/extensions/gsd/queue-reorder-ui.js +28 -18
  69. package/dist/resources/extensions/gsd/repo-identity.js +36 -6
  70. package/dist/resources/extensions/gsd/repository-registry.js +3 -1
  71. package/dist/resources/extensions/gsd/safety/evidence-collector.js +13 -6
  72. package/dist/resources/extensions/gsd/skill-activation.js +233 -0
  73. package/dist/resources/extensions/gsd/skill-catalog.data.js +820 -0
  74. package/dist/resources/extensions/gsd/skill-catalog.install.js +179 -0
  75. package/dist/resources/extensions/gsd/skill-catalog.js +5 -1028
  76. package/dist/resources/extensions/gsd/skill-discovery.js +121 -79
  77. package/dist/resources/extensions/gsd/skill-scope.js +52 -0
  78. package/dist/resources/extensions/gsd/skill-telemetry.js +6 -39
  79. package/dist/resources/extensions/gsd/skills/gsd-headless/SKILL.md +1 -1
  80. package/dist/resources/extensions/gsd/skills.js +60 -0
  81. package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +351 -0
  82. package/dist/resources/extensions/gsd/state-reconciliation/index.js +41 -0
  83. package/dist/resources/extensions/gsd/state-reconciliation/registry.js +4 -0
  84. package/dist/resources/extensions/gsd/tools/complete-task.js +9 -0
  85. package/dist/resources/extensions/gsd/tools/exec-tool.js +42 -8
  86. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +63 -2
  87. package/dist/resources/extensions/gsd/tui/render-kit.js +51 -0
  88. package/dist/resources/extensions/gsd/unit-context-manifest.js +35 -26
  89. package/dist/resources/extensions/gsd/user-input-boundary.js +1 -1
  90. package/dist/resources/extensions/gsd/vision-ask.js +22 -0
  91. package/dist/resources/extensions/gsd/visualizer-overlay.js +8 -36
  92. package/dist/resources/extensions/gsd/worktree-lifecycle.js +24 -3
  93. package/dist/resources/extensions/gsd/worktree-post-create-hook.js +117 -0
  94. package/dist/resources/extensions/gsd/worktree-state-projection.js +29 -0
  95. package/dist/resources/extensions/search-the-web/native-search.js +57 -8
  96. package/dist/resources/extensions/shared/confirm-ui.js +9 -6
  97. package/dist/resources/extensions/shared/dialog-frame.js +42 -0
  98. package/dist/resources/extensions/shared/interview-ui.js +42 -30
  99. package/dist/resources/extensions/shared/next-action-ui.js +6 -6
  100. package/dist/resources/extensions/subagent/index.js +8 -15
  101. package/dist/resources/shared/package-manager-detection.js +36 -0
  102. package/dist/resources/skills/agent-browser/SKILL.md +1 -1
  103. package/dist/resources/skills/api-design/SKILL.md +1 -1
  104. package/dist/resources/skills/code-optimizer/SKILL.md +6 -11
  105. package/dist/resources/skills/create-gsd-extension/SKILL.md +1 -1
  106. package/dist/resources/skills/create-mcp-server/SKILL.md +1 -1
  107. package/dist/resources/skills/create-skill/references/gsd-skill-ecosystem.md +1 -1
  108. package/dist/resources/skills/create-skill/workflows/verify-skill.md +2 -10
  109. package/dist/resources/skills/debug-like-expert/references/when-to-research.md +1 -5
  110. package/dist/resources/skills/decompose-into-slices/SKILL.md +3 -3
  111. package/dist/resources/skills/dependency-upgrade/SKILL.md +1 -1
  112. package/dist/resources/skills/forensics/SKILL.md +2 -2
  113. package/dist/resources/skills/grill-me/SKILL.md +1 -1
  114. package/dist/resources/skills/handoff/SKILL.md +1 -1
  115. package/dist/resources/skills/make-interfaces-feel-better/SKILL.md +1 -1
  116. package/dist/resources/skills/observability/SKILL.md +1 -1
  117. package/dist/resources/skills/security-review/SKILL.md +1 -1
  118. package/dist/resources/skills/spike-wrap-up/SKILL.md +1 -1
  119. package/dist/resources/skills/tdd/SKILL.md +1 -1
  120. package/dist/resources/skills/write-docs/SKILL.md +1 -1
  121. package/dist/resources/skills/write-milestone-brief/SKILL.md +1 -1
  122. package/dist/update-check.d.ts +6 -2
  123. package/dist/update-check.js +7 -3
  124. package/dist/web/standalone/.next/BUILD_ID +1 -1
  125. package/dist/web/standalone/.next/app-path-routes-manifest.json +8 -8
  126. package/dist/web/standalone/.next/build-manifest.json +2 -2
  127. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  128. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  129. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  130. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  131. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  132. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  133. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  134. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  135. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  136. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  137. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  138. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  139. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  140. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  141. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  142. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  143. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  144. package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
  145. package/dist/web/standalone/.next/server/app/index.html +1 -1
  146. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  147. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  148. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  149. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  150. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  151. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  152. package/dist/web/standalone/.next/server/app-paths-manifest.json +8 -8
  153. package/dist/web/standalone/.next/server/chunks/1834.js +2 -2
  154. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  155. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  156. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  157. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  158. package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
  159. package/dist/worktree-cli.d.ts +0 -2
  160. package/dist/worktree-cli.js +21 -9
  161. package/package.json +5 -2
  162. package/packages/cloud-mcp-gateway/bin/gsd-cloud-mcp-gateway.js +14 -0
  163. package/packages/cloud-mcp-gateway/package.json +4 -3
  164. package/packages/contracts/dist/rpc.test.js +5 -0
  165. package/packages/contracts/dist/rpc.test.js.map +1 -1
  166. package/packages/contracts/dist/workflow.d.ts +15 -0
  167. package/packages/contracts/dist/workflow.d.ts.map +1 -1
  168. package/packages/contracts/dist/workflow.js +16 -0
  169. package/packages/contracts/dist/workflow.js.map +1 -1
  170. package/packages/contracts/dist/workflow.test.js +1 -0
  171. package/packages/contracts/dist/workflow.test.js.map +1 -1
  172. package/packages/contracts/package.json +1 -1
  173. package/packages/daemon/package.json +4 -4
  174. package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts +1 -0
  175. package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts.map +1 -1
  176. package/packages/gsd-agent-core/dist/session/agent-session-extensions.js +22 -8
  177. package/packages/gsd-agent-core/dist/session/agent-session-extensions.js.map +1 -1
  178. package/packages/gsd-agent-core/package.json +5 -5
  179. package/packages/gsd-agent-modes/dist/modes/interactive/components/dialog-container.d.ts +12 -0
  180. package/packages/gsd-agent-modes/dist/modes/interactive/components/dialog-container.d.ts.map +1 -0
  181. package/packages/gsd-agent-modes/dist/modes/interactive/components/dialog-container.js +45 -0
  182. package/packages/gsd-agent-modes/dist/modes/interactive/components/dialog-container.js.map +1 -0
  183. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts +3 -2
  184. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  185. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js +11 -11
  186. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js.map +1 -1
  187. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts +3 -3
  188. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  189. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js +13 -11
  190. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js.map +1 -1
  191. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts +3 -3
  192. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  193. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js +12 -10
  194. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js.map +1 -1
  195. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts +1 -0
  196. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts.map +1 -1
  197. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js +1 -0
  198. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js.map +1 -1
  199. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +1 -1
  200. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  201. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +2 -2
  202. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +1 -1
  203. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts +6 -1
  204. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  205. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js +9 -6
  206. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  207. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  208. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +3 -1
  209. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
  210. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.d.ts.map +1 -1
  211. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js +0 -2
  212. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js.map +1 -1
  213. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.d.ts +1 -0
  214. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.d.ts.map +1 -1
  215. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.js +1 -0
  216. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-class-constants.js.map +1 -1
  217. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  218. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +2 -1
  219. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
  220. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.d.ts +3 -0
  221. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.d.ts.map +1 -1
  222. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.js +144 -2
  223. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.js.map +1 -1
  224. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-session.d.ts.map +1 -1
  225. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-session.js +2 -14
  226. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-session.js.map +1 -1
  227. package/packages/gsd-agent-modes/package.json +7 -7
  228. package/packages/mcp-server/bin/gsd-mcp-server.js +14 -0
  229. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  230. package/packages/mcp-server/dist/server.js +7 -1
  231. package/packages/mcp-server/dist/server.js.map +1 -1
  232. package/packages/mcp-server/dist/workflow-tools.d.ts +13 -1
  233. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  234. package/packages/mcp-server/dist/workflow-tools.js +47 -8
  235. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  236. package/packages/mcp-server/package.json +5 -4
  237. package/packages/native/package.json +1 -1
  238. package/packages/pi-agent-core/dist/agent-loop.js +16 -14
  239. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  240. package/packages/pi-agent-core/dist/harness/skills.d.ts.map +1 -1
  241. package/packages/pi-agent-core/dist/harness/skills.js +6 -0
  242. package/packages/pi-agent-core/dist/harness/skills.js.map +1 -1
  243. package/packages/pi-agent-core/dist/harness/system-prompt.d.ts +7 -0
  244. package/packages/pi-agent-core/dist/harness/system-prompt.d.ts.map +1 -1
  245. package/packages/pi-agent-core/dist/harness/system-prompt.js +7 -0
  246. package/packages/pi-agent-core/dist/harness/system-prompt.js.map +1 -1
  247. package/packages/pi-agent-core/package.json +1 -1
  248. package/packages/pi-ai/bin/pi-ai.js +14 -0
  249. package/packages/pi-ai/dist/models.generated.d.ts +48 -206
  250. package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
  251. package/packages/pi-ai/dist/models.generated.js +73 -226
  252. package/packages/pi-ai/dist/models.generated.js.map +1 -1
  253. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  254. package/packages/pi-ai/dist/providers/anthropic.js +50 -0
  255. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  256. package/packages/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
  257. package/packages/pi-ai/dist/providers/openai-responses-shared.js +28 -4
  258. package/packages/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
  259. package/packages/pi-ai/dist/types.d.ts +2 -0
  260. package/packages/pi-ai/dist/types.d.ts.map +1 -1
  261. package/packages/pi-ai/dist/types.js.map +1 -1
  262. package/packages/pi-ai/dist/utils/tests/tool-search-shim.test.js +29 -1
  263. package/packages/pi-ai/dist/utils/tests/tool-search-shim.test.js.map +1 -1
  264. package/packages/pi-ai/dist/utils/tool-search-shim.d.ts +4 -1
  265. package/packages/pi-ai/dist/utils/tool-search-shim.d.ts.map +1 -1
  266. package/packages/pi-ai/dist/utils/tool-search-shim.js +58 -10
  267. package/packages/pi-ai/dist/utils/tool-search-shim.js.map +1 -1
  268. package/packages/pi-ai/dist/utils/tool-shims.d.ts +1 -1
  269. package/packages/pi-ai/dist/utils/tool-shims.d.ts.map +1 -1
  270. package/packages/pi-ai/dist/utils/tool-shims.js.map +1 -1
  271. package/packages/pi-ai/package.json +3 -2
  272. package/packages/pi-coding-agent/README.md +1 -1
  273. package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.d.ts +2 -2
  274. package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.d.ts.map +1 -1
  275. package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.js.map +1 -1
  276. package/packages/pi-coding-agent/dist/core/extensions/loader.js +1 -1
  277. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  278. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  279. package/packages/pi-coding-agent/dist/core/extensions/runner.js +8 -2
  280. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  281. package/packages/pi-coding-agent/dist/core/skills.d.ts +3 -0
  282. package/packages/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
  283. package/packages/pi-coding-agent/dist/core/skills.js +3 -0
  284. package/packages/pi-coding-agent/dist/core/skills.js.map +1 -1
  285. package/packages/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
  286. package/packages/pi-coding-agent/dist/core/tools/edit.js +5 -7
  287. package/packages/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
  288. package/packages/pi-coding-agent/dist/core/tools/read.d.ts +2 -2
  289. package/packages/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  290. package/packages/pi-coding-agent/dist/core/tools/read.js +5 -4
  291. package/packages/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  292. package/packages/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
  293. package/packages/pi-coding-agent/dist/core/tools/write.js +0 -1
  294. package/packages/pi-coding-agent/dist/core/tools/write.js.map +1 -1
  295. package/packages/pi-coding-agent/package.json +8 -8
  296. package/packages/pi-tui/package.json +1 -1
  297. package/packages/rpc-client/package.json +2 -2
  298. package/pkg/package.json +1 -1
  299. package/scripts/install/deps.js +10 -0
  300. package/scripts/install/detect-existing.js +17 -3
  301. package/scripts/install/npm-global.js +103 -33
  302. package/scripts/install.js +1 -0
  303. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +36 -11
  304. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +86 -19
  305. package/src/resources/extensions/context7/index.ts +15 -2
  306. package/src/resources/extensions/get-secrets-from-user.ts +17 -16
  307. package/src/resources/extensions/google-cli/index.ts +34 -0
  308. package/src/resources/extensions/google-cli/models.ts +57 -0
  309. package/src/resources/extensions/google-cli/package.json +11 -0
  310. package/src/resources/extensions/google-cli/readiness.ts +15 -0
  311. package/src/resources/extensions/google-cli/stream-adapter.ts +245 -0
  312. package/src/resources/extensions/gsd/auto/loop.ts +96 -1
  313. package/src/resources/extensions/gsd/auto/orchestrator.ts +4 -2
  314. package/src/resources/extensions/gsd/auto/phases.ts +47 -1
  315. package/src/resources/extensions/gsd/auto/run-unit.ts +10 -0
  316. package/src/resources/extensions/gsd/auto/session.ts +3 -0
  317. package/src/resources/extensions/gsd/auto-dispatch.ts +31 -11
  318. package/src/resources/extensions/gsd/auto-post-unit.ts +101 -18
  319. package/src/resources/extensions/gsd/auto-prompts.ts +4 -284
  320. package/src/resources/extensions/gsd/auto-recovery.ts +10 -7
  321. package/src/resources/extensions/gsd/auto-start.ts +307 -56
  322. package/src/resources/extensions/gsd/auto-tool-tracking.ts +3 -1
  323. package/src/resources/extensions/gsd/auto-verification.ts +18 -2
  324. package/src/resources/extensions/gsd/auto-worktree.ts +47 -57
  325. package/src/resources/extensions/gsd/auto.ts +50 -2
  326. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +4 -3
  327. package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +9 -4
  328. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +42 -5
  329. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +124 -25
  330. package/src/resources/extensions/gsd/bootstrap/system-context.ts +3 -28
  331. package/src/resources/extensions/gsd/bootstrap/tool-search-shim.ts +4 -4
  332. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +1 -1
  333. package/src/resources/extensions/gsd/closeout-recovery.ts +6 -1
  334. package/src/resources/extensions/gsd/commands/handlers/auto.ts +9 -1
  335. package/src/resources/extensions/gsd/commands-handlers.ts +2 -0
  336. package/src/resources/extensions/gsd/commands-usage.ts +110 -5
  337. package/src/resources/extensions/gsd/config-overlay.ts +19 -16
  338. package/src/resources/extensions/gsd/context-overlay.ts +24 -19
  339. package/src/resources/extensions/gsd/dashboard-overlay.ts +14 -27
  340. package/src/resources/extensions/gsd/doctor-engine-checks.ts +99 -0
  341. package/src/resources/extensions/gsd/doctor-git-checks.ts +72 -5
  342. package/src/resources/extensions/gsd/doctor-providers.ts +55 -27
  343. package/src/resources/extensions/gsd/doctor-types.ts +2 -0
  344. package/src/resources/extensions/gsd/doctor.ts +7 -2
  345. package/src/resources/extensions/gsd/git-conflict-state.ts +25 -1
  346. package/src/resources/extensions/gsd/guided-flow.ts +5 -6
  347. package/src/resources/extensions/gsd/key-manager.ts +57 -14
  348. package/src/resources/extensions/gsd/mcp-filter.ts +64 -17
  349. package/src/resources/extensions/gsd/mcp-project-config.ts +24 -9
  350. package/src/resources/extensions/gsd/migration-auto-check.ts +6 -0
  351. package/src/resources/extensions/gsd/milestone-actions.ts +2 -0
  352. package/src/resources/extensions/gsd/milestone-reopen-events.ts +28 -0
  353. package/src/resources/extensions/gsd/notification-overlay.ts +12 -11
  354. package/src/resources/extensions/gsd/parallel-merge.ts +6 -4
  355. package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +16 -12
  356. package/src/resources/extensions/gsd/post-execution-checks.ts +7 -4
  357. package/src/resources/extensions/gsd/preferences-skills.ts +11 -4
  358. package/src/resources/extensions/gsd/preferences.ts +17 -2
  359. package/src/resources/extensions/gsd/prompt-loader.ts +2 -0
  360. package/src/resources/extensions/gsd/prompts/discuss.md +4 -2
  361. package/src/resources/extensions/gsd/prompts/gate-evaluate.md +1 -1
  362. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +2 -0
  363. package/src/resources/extensions/gsd/prompts/system.md +3 -20
  364. package/src/resources/extensions/gsd/queue-reorder-ui.ts +29 -20
  365. package/src/resources/extensions/gsd/repo-identity.ts +35 -7
  366. package/src/resources/extensions/gsd/repository-registry.ts +3 -1
  367. package/src/resources/extensions/gsd/safety/evidence-collector.ts +13 -6
  368. package/src/resources/extensions/gsd/skill-activation.ts +292 -0
  369. package/src/resources/extensions/gsd/skill-catalog.data.ts +858 -0
  370. package/src/resources/extensions/gsd/skill-catalog.install.ts +205 -0
  371. package/src/resources/extensions/gsd/skill-catalog.ts +16 -1087
  372. package/src/resources/extensions/gsd/skill-discovery.ts +134 -78
  373. package/src/resources/extensions/gsd/skill-scope.ts +63 -0
  374. package/src/resources/extensions/gsd/skill-telemetry.ts +6 -40
  375. package/src/resources/extensions/gsd/skills/gsd-headless/SKILL.md +1 -1
  376. package/src/resources/extensions/gsd/skills.ts +75 -0
  377. package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +499 -0
  378. package/src/resources/extensions/gsd/state-reconciliation/index.ts +40 -0
  379. package/src/resources/extensions/gsd/state-reconciliation/registry.ts +8 -0
  380. package/src/resources/extensions/gsd/state-reconciliation/types.ts +30 -0
  381. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +328 -2
  382. package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +75 -0
  383. package/src/resources/extensions/gsd/tests/auto-post-unit-artifact-diagnostic.test.ts +28 -2
  384. package/src/resources/extensions/gsd/tests/auto-post-unit-evidence-crossref-4909.test.ts +30 -0
  385. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +41 -0
  386. package/src/resources/extensions/gsd/tests/auto-retry-mcp-churn-fixes.test.ts +24 -0
  387. package/src/resources/extensions/gsd/tests/auto-start-orphan-bootstrap.test.ts +436 -0
  388. package/src/resources/extensions/gsd/tests/auto-worktree-untracked-content.test.ts +53 -0
  389. package/src/resources/extensions/gsd/tests/closeout-recovery.test.ts +15 -0
  390. package/src/resources/extensions/gsd/tests/collect-from-manifest.test.ts +31 -0
  391. package/src/resources/extensions/gsd/tests/commands-context.test.ts +5 -3
  392. package/src/resources/extensions/gsd/tests/commands-dispatcher-workspace-git.test.ts +15 -2
  393. package/src/resources/extensions/gsd/tests/commands-usage.test.ts +97 -0
  394. package/src/resources/extensions/gsd/tests/complete-slice-reopen-handoff.test.ts +40 -3
  395. package/src/resources/extensions/gsd/tests/context-chart.test.ts +9 -0
  396. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +64 -0
  397. package/src/resources/extensions/gsd/tests/dashboard-overlay.test.ts +25 -0
  398. package/src/resources/extensions/gsd/tests/discord-invite-links.test.ts +1 -0
  399. package/src/resources/extensions/gsd/tests/discuss-prompt.test.ts +4 -2
  400. package/src/resources/extensions/gsd/tests/discuss-tool-scoping.test.ts +1 -1
  401. package/src/resources/extensions/gsd/tests/doctor-empty-worktree.test.ts +71 -1
  402. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +105 -0
  403. package/src/resources/extensions/gsd/tests/doctor-scope-db-unavailable.test.ts +101 -1
  404. package/src/resources/extensions/gsd/tests/exec-sandbox.test.ts +30 -0
  405. package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +6 -0
  406. package/src/resources/extensions/gsd/tests/headless-answers.test.ts +22 -3
  407. package/src/resources/extensions/gsd/tests/integration/parallel-merge.test.ts +43 -0
  408. package/src/resources/extensions/gsd/tests/interactive-tool-idle-exemption.test.ts +8 -0
  409. package/src/resources/extensions/gsd/tests/key-manager.test.ts +23 -4
  410. package/src/resources/extensions/gsd/tests/mcp-filter.test.ts +19 -1
  411. package/src/resources/extensions/gsd/tests/mcp-project-config.test.ts +24 -0
  412. package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +56 -1
  413. package/src/resources/extensions/gsd/tests/notification-overlay.test.ts +6 -1
  414. package/src/resources/extensions/gsd/tests/orphaned-worktree-audit.test.ts +70 -10
  415. package/src/resources/extensions/gsd/tests/parallel-monitor-overlay.test.ts +7 -1
  416. package/src/resources/extensions/gsd/tests/park-milestone.test.ts +9 -0
  417. package/src/resources/extensions/gsd/tests/post-exec-retry-bypass.test.ts +127 -10
  418. package/src/resources/extensions/gsd/tests/post-execution-checks.test.ts +44 -0
  419. package/src/resources/extensions/gsd/tests/post-unit-retry-on-orchestrator-bridge.test.ts +93 -0
  420. package/src/resources/extensions/gsd/tests/project-relocation-recovery.test.ts +101 -0
  421. package/src/resources/extensions/gsd/tests/queue-reorder-ui.test.ts +46 -0
  422. package/src/resources/extensions/gsd/tests/register-extension-guard.test.ts +116 -11
  423. package/src/resources/extensions/gsd/tests/repo-identity-worktree.test.ts +27 -0
  424. package/src/resources/extensions/gsd/tests/repository-registry.test.ts +30 -1
  425. package/src/resources/extensions/gsd/tests/show-config-command.test.ts +4 -0
  426. package/src/resources/extensions/gsd/tests/skill-discovery.test.ts +111 -0
  427. package/src/resources/extensions/gsd/tests/skill-scope-auto.test.ts +67 -0
  428. package/src/resources/extensions/gsd/tests/skills.test.ts +55 -0
  429. package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +13 -2
  430. package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +303 -0
  431. package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +67 -1
  432. package/src/resources/extensions/gsd/tests/tool-param-optionality.test.ts +24 -1
  433. package/src/resources/extensions/gsd/tests/tui-border-assertions.ts +28 -0
  434. package/src/resources/extensions/gsd/tests/tui-render-kit.test.ts +14 -0
  435. package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +18 -0
  436. package/src/resources/extensions/gsd/tests/user-input-boundary.test.ts +26 -0
  437. package/src/resources/extensions/gsd/tests/vision-ask.test.ts +23 -0
  438. package/src/resources/extensions/gsd/tests/visualizer-overlay.test.ts +6 -1
  439. package/src/resources/extensions/gsd/tests/workflow-mcp-auto-prep.test.ts +133 -0
  440. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +82 -0
  441. package/src/resources/extensions/gsd/tests/workspace-git-preflight.test.ts +16 -1
  442. package/src/resources/extensions/gsd/tests/worktree-lifecycle.test.ts +28 -0
  443. package/src/resources/extensions/gsd/tests/worktree-post-create-hook.test.ts +141 -1
  444. package/src/resources/extensions/gsd/tests/worktree-state-projection.test.ts +38 -1
  445. package/src/resources/extensions/gsd/tests/write-gate-planning-unit.test.ts +10 -0
  446. package/src/resources/extensions/gsd/tests/zombie-gsd-state.test.ts +45 -1
  447. package/src/resources/extensions/gsd/tools/complete-task.ts +9 -0
  448. package/src/resources/extensions/gsd/tools/exec-tool.ts +42 -10
  449. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +82 -5
  450. package/src/resources/extensions/gsd/tui/render-kit.ts +82 -0
  451. package/src/resources/extensions/gsd/unit-context-manifest.ts +37 -26
  452. package/src/resources/extensions/gsd/user-input-boundary.ts +1 -1
  453. package/src/resources/extensions/gsd/vision-ask.ts +28 -0
  454. package/src/resources/extensions/gsd/visualizer-overlay.ts +12 -40
  455. package/src/resources/extensions/gsd/worktree-lifecycle.ts +37 -2
  456. package/src/resources/extensions/gsd/worktree-post-create-hook.ts +127 -0
  457. package/src/resources/extensions/gsd/worktree-state-projection.ts +33 -0
  458. package/src/resources/extensions/search-the-web/native-search.ts +60 -8
  459. package/src/resources/extensions/shared/confirm-ui.ts +8 -12
  460. package/src/resources/extensions/shared/dialog-frame.ts +71 -0
  461. package/src/resources/extensions/shared/interview-ui.ts +43 -42
  462. package/src/resources/extensions/shared/next-action-ui.ts +6 -6
  463. package/src/resources/extensions/shared/tests/confirm-ui.test.ts +57 -0
  464. package/src/resources/extensions/shared/tests/interview-ui-border.test.ts +163 -0
  465. package/src/resources/extensions/shared/tests/next-action-ui-hasui.test.ts +55 -0
  466. package/src/resources/extensions/subagent/index.ts +8 -15
  467. package/src/resources/shared/package-manager-detection.ts +39 -0
  468. package/src/resources/skills/agent-browser/SKILL.md +1 -1
  469. package/src/resources/skills/api-design/SKILL.md +1 -1
  470. package/src/resources/skills/code-optimizer/SKILL.md +6 -11
  471. package/src/resources/skills/create-gsd-extension/SKILL.md +1 -1
  472. package/src/resources/skills/create-mcp-server/SKILL.md +1 -1
  473. package/src/resources/skills/create-skill/references/gsd-skill-ecosystem.md +1 -1
  474. package/src/resources/skills/create-skill/workflows/verify-skill.md +2 -10
  475. package/src/resources/skills/debug-like-expert/references/when-to-research.md +1 -5
  476. package/src/resources/skills/decompose-into-slices/SKILL.md +3 -3
  477. package/src/resources/skills/dependency-upgrade/SKILL.md +1 -1
  478. package/src/resources/skills/forensics/SKILL.md +2 -2
  479. package/src/resources/skills/grill-me/SKILL.md +1 -1
  480. package/src/resources/skills/handoff/SKILL.md +1 -1
  481. package/src/resources/skills/make-interfaces-feel-better/SKILL.md +1 -1
  482. package/src/resources/skills/observability/SKILL.md +1 -1
  483. package/src/resources/skills/security-review/SKILL.md +1 -1
  484. package/src/resources/skills/spike-wrap-up/SKILL.md +1 -1
  485. package/src/resources/skills/tdd/SKILL.md +1 -1
  486. package/src/resources/skills/write-docs/SKILL.md +1 -1
  487. package/src/resources/skills/write-milestone-brief/SKILL.md +1 -1
  488. package/dist/tsconfig.extensions.tsbuildinfo +0 -1
  489. /package/dist/web/standalone/.next/static/{BEjZM0MLHLibeMFbjtMol → tH1tnDYt1E0hK9Ien73Z0}/_buildManifest.js +0 -0
  490. /package/dist/web/standalone/.next/static/{BEjZM0MLHLibeMFbjtMol → tH1tnDYt1E0hK9Ien73Z0}/_ssgManifest.js +0 -0
@@ -0,0 +1,858 @@
1
+ /**
2
+ * Curated skill pack catalog data — tech stack → skills.sh repo mappings.
3
+ */
4
+
5
+ import type { ProjectSignals, XcodePlatform } from "./detection.js";
6
+
7
+ // ─── Catalog Types ────────────────────────────────────────────────────────────
8
+
9
+ export interface SkillPack {
10
+ /** Human-readable name shown in the wizard */
11
+ label: string;
12
+ /** Short description */
13
+ description: string;
14
+ /** skills.sh repo identifier (owner/repo) */
15
+ repo: string;
16
+ /** Specific skill names to install from the repo */
17
+ skills: string[];
18
+ /** Which detected primaryLanguage values trigger this pack */
19
+ matchLanguages?: string[];
20
+ /** Which detected project files trigger this pack */
21
+ matchFiles?: string[];
22
+ /** Trigger when Xcode project targets one of these platforms */
23
+ matchXcodePlatforms?: XcodePlatform[];
24
+ /** Always include this pack in brownfield recommendations */
25
+ matchAlways?: boolean;
26
+ }
27
+
28
+ // ─── Curated Catalog ──────────────────────────────────────────────────────────
29
+
30
+ export const SKILL_CATALOG: SkillPack[] = [
31
+ // ── Swift (language-level — any Swift project) ────────────────────────────
32
+ {
33
+ label: "SwiftUI",
34
+ description: "SwiftUI layout, navigation, animations, gestures, Liquid Glass",
35
+ repo: "dpearson2699/swift-ios-skills",
36
+ skills: [
37
+ "swiftui-animation",
38
+ "swiftui-gestures",
39
+ "swiftui-layout-components",
40
+ "swiftui-liquid-glass",
41
+ "swiftui-navigation",
42
+ "swiftui-patterns",
43
+ "swiftui-performance",
44
+ "swiftui-uikit-interop",
45
+ ],
46
+ matchLanguages: ["swift"],
47
+ matchFiles: ["Package.swift"],
48
+ },
49
+ {
50
+ label: "Swift Core",
51
+ description: "Swift language, concurrency, Codable, Charts, Testing, SwiftData",
52
+ repo: "dpearson2699/swift-ios-skills",
53
+ skills: [
54
+ "swift-codable",
55
+ "swift-charts",
56
+ "swift-concurrency",
57
+ "swift-language",
58
+ "swift-testing",
59
+ "swiftdata",
60
+ ],
61
+ matchLanguages: ["swift"],
62
+ matchFiles: ["Package.swift"],
63
+ },
64
+ // ── iOS (Xcode project targeting iphoneos required) ───────────────────────
65
+ {
66
+ label: "iOS App Frameworks",
67
+ description: "App Intents, Widgets, StoreKit, MapKit, Live Activities, push notifications",
68
+ repo: "dpearson2699/swift-ios-skills",
69
+ skills: [
70
+ "alarmkit",
71
+ "app-clips",
72
+ "app-intents",
73
+ "live-activities",
74
+ "mapkit-location",
75
+ "photos-camera-media",
76
+ "push-notifications",
77
+ "storekit",
78
+ "tipkit",
79
+ "widgetkit",
80
+ ],
81
+ matchXcodePlatforms: ["iphoneos"],
82
+ },
83
+ {
84
+ label: "iOS Data Frameworks",
85
+ description: "CloudKit, HealthKit, MusicKit, WeatherKit, Contacts, Calendar",
86
+ repo: "dpearson2699/swift-ios-skills",
87
+ skills: [
88
+ "cloudkit-sync",
89
+ "contacts-framework",
90
+ "eventkit-calendar",
91
+ "healthkit",
92
+ "musickit-audio",
93
+ "passkit-wallet",
94
+ "weatherkit",
95
+ ],
96
+ matchXcodePlatforms: ["iphoneos"],
97
+ },
98
+ {
99
+ label: "iOS AI & ML",
100
+ description: "Core ML, Vision, on-device AI, speech recognition, NLP",
101
+ repo: "dpearson2699/swift-ios-skills",
102
+ skills: [
103
+ "apple-on-device-ai",
104
+ "coreml",
105
+ "natural-language",
106
+ "speech-recognition",
107
+ "vision-framework",
108
+ ],
109
+ matchXcodePlatforms: ["iphoneos"],
110
+ },
111
+ {
112
+ label: "iOS Engineering",
113
+ description: "Networking, security, accessibility, localization, Instruments, App Store review",
114
+ repo: "dpearson2699/swift-ios-skills",
115
+ skills: [
116
+ "app-store-review",
117
+ "authentication",
118
+ "background-processing",
119
+ "debugging-instruments",
120
+ "device-integrity",
121
+ "ios-accessibility",
122
+ "ios-localization",
123
+ "ios-networking",
124
+ "ios-security",
125
+ "metrickit-diagnostics",
126
+ ],
127
+ matchXcodePlatforms: ["iphoneos"],
128
+ },
129
+ {
130
+ label: "iOS Hardware",
131
+ description: "Bluetooth, CoreMotion, NFC, PencilKit, RealityKit AR",
132
+ repo: "dpearson2699/swift-ios-skills",
133
+ skills: [
134
+ "core-bluetooth",
135
+ "core-motion",
136
+ "core-nfc",
137
+ "pencilkit-drawing",
138
+ "realitykit-ar",
139
+ ],
140
+ matchXcodePlatforms: ["iphoneos"],
141
+ },
142
+ {
143
+ label: "iOS Platform",
144
+ description: "CallKit, EnergyKit, HomeKit, SharePlay, PermissionKit",
145
+ repo: "dpearson2699/swift-ios-skills",
146
+ skills: [
147
+ "callkit-voip",
148
+ "energykit",
149
+ "homekit-matter",
150
+ "permissionkit",
151
+ "shareplay-activities",
152
+ ],
153
+ matchXcodePlatforms: ["iphoneos"],
154
+ },
155
+ // ── React / Next.js ───────────────────────────────────────────────────────
156
+ {
157
+ label: "React & Web Frontend",
158
+ description: "React best practices and composition patterns",
159
+ repo: "vercel-labs/agent-skills",
160
+ skills: [
161
+ "vercel-react-best-practices",
162
+ "vercel-composition-patterns",
163
+ ],
164
+ matchLanguages: ["javascript/typescript"],
165
+ },
166
+ {
167
+ label: "shadcn/ui",
168
+ description: "shadcn/ui component library patterns and usage",
169
+ repo: "shadcn/ui",
170
+ skills: ["shadcn"],
171
+ matchLanguages: ["javascript/typescript"],
172
+ },
173
+ // ── React Native ──────────────────────────────────────────────────────────
174
+ {
175
+ label: "React Native",
176
+ description: "React Native and Expo best practices for performant mobile apps",
177
+ repo: "vercel-labs/agent-skills",
178
+ skills: ["vercel-react-native-skills"],
179
+ matchFiles: ["metro.config.js", "metro.config.ts", "react-native.config.js"],
180
+ },
181
+ {
182
+ label: "React Native Architecture",
183
+ description: "React Native app architecture, navigation, and cross-platform design patterns",
184
+ repo: "wshobson/agents",
185
+ skills: ["react-native-architecture", "react-native-design"],
186
+ matchFiles: ["metro.config.js", "metro.config.ts", "react-native.config.js"],
187
+ },
188
+ // ── TypeScript & JS Ecosystem (wshobson/agents — 41K combined installs) ──
189
+ {
190
+ label: "TypeScript & JS Development",
191
+ description: "Advanced TypeScript types, Node.js backend, testing, and modern JS patterns",
192
+ repo: "wshobson/agents",
193
+ skills: [
194
+ "typescript-advanced-types",
195
+ "nodejs-backend-patterns",
196
+ "javascript-testing-patterns",
197
+ "modern-javascript-patterns",
198
+ ],
199
+ matchLanguages: ["javascript/typescript"],
200
+ },
201
+ // ── React State (wshobson/agents — 8.1K combined installs) ─────────────
202
+ {
203
+ label: "React State & Patterns",
204
+ description: "State management with Zustand, Jotai, React Query, and React modernization",
205
+ repo: "wshobson/agents",
206
+ skills: ["react-state-management", "react-modernization"],
207
+ matchLanguages: ["javascript/typescript"],
208
+ },
209
+ // ── Tailwind CSS (wshobson/agents — 22.8K installs) ───────────────────
210
+ {
211
+ label: "Tailwind CSS",
212
+ description: "Tailwind v4 design system, CVA patterns, and utility-first CSS",
213
+ repo: "wshobson/agents",
214
+ skills: ["tailwind-design-system"],
215
+ matchFiles: [
216
+ "tailwind.config.js",
217
+ "tailwind.config.ts",
218
+ "tailwind.config.mjs",
219
+ "tailwind.config.cjs",
220
+ ],
221
+ },
222
+ // ── General Frontend ──────────────────────────────────────────────────────
223
+ {
224
+ label: "Frontend Design & UX",
225
+ description: "Frontend design, accessibility, and browser automation",
226
+ repo: "anthropics/skills",
227
+ skills: ["frontend-design"],
228
+ matchLanguages: ["javascript/typescript"],
229
+ },
230
+ // ── Angular ───────────────────────────────────────────────────────────────
231
+ {
232
+ label: "Angular",
233
+ description: "Angular components, signals, forms, routing, and testing",
234
+ repo: "analogjs/angular-skills",
235
+ skills: [
236
+ "angular-component",
237
+ "angular-signals",
238
+ "angular-forms",
239
+ "angular-routing",
240
+ "angular-testing",
241
+ ],
242
+ matchFiles: ["angular.json"],
243
+ },
244
+ {
245
+ label: "Angular Migration",
246
+ description: "Migrate from AngularJS to Angular with hybrid mode and incremental rewriting",
247
+ repo: "wshobson/agents",
248
+ skills: ["angular-migration"],
249
+ matchFiles: ["angular.json"],
250
+ },
251
+ // ── Vue.js / Nuxt ────────────────────────────────────────────────────────
252
+ {
253
+ label: "Vue.js",
254
+ description: "Vue best practices, Pinia state, Vue Router, and testing",
255
+ repo: "vuejs-ai/skills",
256
+ skills: [
257
+ "vue-best-practices",
258
+ "vue-pinia-best-practices",
259
+ "vue-router-best-practices",
260
+ "vue-testing-best-practices",
261
+ ],
262
+ matchFiles: ["nuxt.config.ts", "nuxt.config.js", "vue.config.js", "vue.config.ts", "*.vue"],
263
+ },
264
+ // ── Svelte / SvelteKit ────────────────────────────────────────────────────
265
+ {
266
+ label: "Svelte",
267
+ description: "Svelte code patterns and SvelteKit best practices",
268
+ repo: "sveltejs/ai-tools",
269
+ skills: ["svelte-code-writer", "svelte-core-bestpractices"],
270
+ matchFiles: ["svelte.config.js", "svelte.config.ts"],
271
+ },
272
+ // ── Next.js ───────────────────────────────────────────────────────────────
273
+ {
274
+ label: "Next.js",
275
+ description: "Next.js app router, server components, and deployment patterns",
276
+ repo: "vercel-labs/vercel-plugin",
277
+ skills: ["nextjs"],
278
+ matchFiles: ["next.config.js", "next.config.ts", "next.config.mjs"],
279
+ },
280
+ {
281
+ label: "Next.js App Router Patterns",
282
+ description: "Next.js 14+ App Router, React Server Components, and streaming",
283
+ repo: "wshobson/agents",
284
+ skills: ["nextjs-app-router-patterns"],
285
+ matchFiles: ["next.config.js", "next.config.ts", "next.config.mjs"],
286
+ },
287
+ // ── Java / Spring Boot ────────────────────────────────────────────────────
288
+ {
289
+ label: "Java & Spring Boot",
290
+ description: "Spring Boot best practices, DI, RESTful APIs, JPA, testing, and security",
291
+ repo: "github/awesome-copilot",
292
+ skills: ["java-springboot"],
293
+ matchFiles: ["dep:spring-boot"],
294
+ },
295
+ // ── .NET / C# ────────────────────────────────────────────────────────────
296
+ {
297
+ label: ".NET & C#",
298
+ description: ".NET best practices, design patterns, and upgrade guidance",
299
+ repo: "github/awesome-copilot",
300
+ skills: ["dotnet-best-practices", "dotnet-design-pattern-review"],
301
+ matchLanguages: ["csharp"],
302
+ matchFiles: ["*.csproj"],
303
+ },
304
+ {
305
+ label: ".NET Backend Patterns",
306
+ description: ".NET backend architecture, middleware, and production patterns",
307
+ repo: "wshobson/agents",
308
+ skills: ["dotnet-backend-patterns"],
309
+ matchFiles: ["*.csproj", "*.fsproj", "*.sln"],
310
+ },
311
+ // ── Flutter / Dart ────────────────────────────────────────────────────────
312
+ {
313
+ label: "Flutter",
314
+ description: "Flutter layouts, architecture, state management, and testing",
315
+ repo: "flutter/skills",
316
+ skills: [
317
+ "flutter-building-layouts",
318
+ "flutter-architecting-apps",
319
+ "flutter-managing-state",
320
+ "flutter-testing-apps",
321
+ ],
322
+ matchLanguages: ["dart/flutter"],
323
+ matchFiles: ["pubspec.yaml"],
324
+ },
325
+ // ── PHP / Laravel ─────────────────────────────────────────────────────────
326
+ {
327
+ label: "PHP & Laravel",
328
+ description: "Laravel patterns, PHP best practices, and testing",
329
+ repo: "jeffallan/claude-skills",
330
+ skills: ["laravel-specialist", "php-pro"],
331
+ matchLanguages: ["php"],
332
+ matchFiles: ["composer.json"],
333
+ },
334
+ // ── Django ────────────────────────────────────────────────────────────────
335
+ {
336
+ label: "Django",
337
+ description: "Django expert patterns, models, views, and middleware",
338
+ repo: "vintasoftware/django-ai-plugins",
339
+ skills: ["django-expert"],
340
+ matchFiles: ["manage.py"],
341
+ },
342
+ // ── Rust ──────────────────────────────────────────────────────────────────
343
+ {
344
+ label: "Rust",
345
+ description: "Rust language patterns and best practices",
346
+ repo: "anthropics/skills",
347
+ skills: ["rust-best-practices"],
348
+ matchLanguages: ["rust"],
349
+ matchFiles: ["Cargo.toml"],
350
+ },
351
+ {
352
+ label: "Rust Async Patterns",
353
+ description: "Async Rust with Tokio, futures, and proper error handling",
354
+ repo: "wshobson/agents",
355
+ skills: ["rust-async-patterns"],
356
+ matchLanguages: ["rust"],
357
+ matchFiles: ["Cargo.toml"],
358
+ },
359
+ // ── Python ────────────────────────────────────────────────────────────────
360
+ {
361
+ label: "Python",
362
+ description: "Python patterns and best practices",
363
+ repo: "anthropics/skills",
364
+ skills: ["python-best-practices"],
365
+ matchLanguages: ["python"],
366
+ matchFiles: ["pyproject.toml", "setup.py", "requirements.txt"],
367
+ },
368
+ {
369
+ label: "Python Advanced",
370
+ description: "Python performance, testing, async patterns, and uv package manager",
371
+ repo: "wshobson/agents",
372
+ skills: [
373
+ "python-performance-optimization",
374
+ "python-testing-patterns",
375
+ "async-python-patterns",
376
+ "uv-package-manager",
377
+ ],
378
+ matchLanguages: ["python"],
379
+ matchFiles: ["pyproject.toml", "setup.py", "requirements.txt"],
380
+ },
381
+ // FastAPI — detected by scanning requirements.txt / pyproject.toml for the
382
+ // "fastapi" dependency. Uses the "dep:fastapi" synthetic marker from detection.ts.
383
+ {
384
+ label: "FastAPI",
385
+ description: "Production-ready FastAPI projects with async patterns and error handling",
386
+ repo: "wshobson/agents",
387
+ skills: ["fastapi-templates"],
388
+ matchFiles: ["dep:fastapi"],
389
+ },
390
+ // ── Go ────────────────────────────────────────────────────────────────────
391
+ {
392
+ label: "Go",
393
+ description: "Go language patterns and best practices",
394
+ repo: "anthropics/skills",
395
+ skills: ["go-best-practices"],
396
+ matchLanguages: ["go"],
397
+ matchFiles: ["go.mod"],
398
+ },
399
+ {
400
+ label: "Go Concurrency Patterns",
401
+ description: "Go concurrency with channels, worker pools, and context cancellation",
402
+ repo: "wshobson/agents",
403
+ skills: ["go-concurrency-patterns"],
404
+ matchLanguages: ["go"],
405
+ matchFiles: ["go.mod"],
406
+ },
407
+ // ── Database / ORM ─────────────────────────────────────────────────────────
408
+ {
409
+ label: "Prisma",
410
+ description: "Prisma ORM setup, schema design, client API, and migrations",
411
+ repo: "prisma/skills",
412
+ skills: [
413
+ "prisma-database-setup",
414
+ "prisma-client-api",
415
+ "prisma-cli",
416
+ ],
417
+ matchFiles: ["prisma/schema.prisma"],
418
+ },
419
+ {
420
+ label: "Supabase & Postgres",
421
+ description: "Supabase project setup, auth, Postgres best practices, and Firestore",
422
+ repo: "supabase/agent-skills",
423
+ skills: ["supabase-postgres-best-practices"],
424
+ matchFiles: ["supabase/config.toml"],
425
+ },
426
+ {
427
+ label: "PostgreSQL Design",
428
+ description: "PostgreSQL table design, indexing strategies, and query optimization",
429
+ repo: "wshobson/agents",
430
+ skills: ["postgresql-table-design"],
431
+ matchFiles: ["supabase/config.toml", "*.sql"],
432
+ },
433
+ {
434
+ label: "SQL Optimization & Review",
435
+ description: "Universal SQL performance optimization, security (injection prevention), and code review",
436
+ repo: "github/awesome-copilot",
437
+ skills: ["sql-optimization", "sql-code-review"],
438
+ matchFiles: [
439
+ "*.sql",
440
+ "*.sqlite",
441
+ "prisma/schema.prisma",
442
+ "supabase/config.toml",
443
+ "drizzle.config.ts",
444
+ "drizzle.config.js",
445
+ ],
446
+ },
447
+ {
448
+ label: "Redis",
449
+ description: "Redis development patterns and best practices",
450
+ repo: "redis/agent-skills",
451
+ skills: ["redis-development"],
452
+ matchFiles: ["redis.conf"],
453
+ },
454
+ // ── Cloud Platforms ────────────────────────────────────────────────────────
455
+ {
456
+ label: "Firebase",
457
+ description: "Firebase setup, auth, Firestore, hosting, and AI Logic",
458
+ repo: "firebase/agent-skills",
459
+ skills: [
460
+ "firebase-basics",
461
+ "firebase-auth-basics",
462
+ "firebase-firestore-basics",
463
+ "firebase-hosting-basics",
464
+ "firebase-ai-logic",
465
+ ],
466
+ matchFiles: ["firebase.json"],
467
+ },
468
+ {
469
+ label: "Azure",
470
+ description: "Azure deployment, AI services, storage, cost optimization, and diagnostics",
471
+ repo: "microsoft/github-copilot-for-azure",
472
+ skills: [
473
+ "azure-deploy",
474
+ "azure-ai",
475
+ "azure-storage",
476
+ "azure-cost-optimization",
477
+ "azure-diagnostics",
478
+ ],
479
+ matchFiles: ["azure-pipelines.yml"],
480
+ },
481
+ {
482
+ label: "AWS",
483
+ description: "AWS deployment, Lambda, and serverless patterns",
484
+ repo: "awslabs/agent-plugins",
485
+ skills: ["deploy", "aws-lambda", "aws-serverless-deployment"],
486
+ matchFiles: ["cdk.json", "samconfig.toml", "serverless.yml", "serverless.yaml"],
487
+ },
488
+ // ── Container / DevOps ─────────────────────────────────────────────────────
489
+ {
490
+ label: "Docker",
491
+ description: "Multi-stage Dockerfiles, layer optimization, and security hardening",
492
+ repo: "github/awesome-copilot",
493
+ skills: ["multi-stage-dockerfile"],
494
+ matchFiles: ["Dockerfile", "docker-compose.yml", "docker-compose.yaml"],
495
+ },
496
+ // ── Infrastructure as Code ─────────────────────────────────────────────────
497
+ {
498
+ label: "Terraform",
499
+ description: "Terraform style guide, testing, and stack patterns",
500
+ repo: "hashicorp/agent-skills",
501
+ skills: ["terraform-style-guide", "terraform-test", "terraform-stacks"],
502
+ matchFiles: ["main.tf"],
503
+ },
504
+ // ── Android (wshobson/agents — 7K installs) ────────────────────────────────
505
+ {
506
+ label: "Android",
507
+ description: "Android app design following Material Design 3 guidelines",
508
+ repo: "wshobson/agents",
509
+ skills: ["mobile-android-design"],
510
+ matchFiles: ["app/build.gradle", "app/build.gradle.kts"],
511
+ },
512
+ // ── Kubernetes (wshobson/agents — 4 skills) ────────────────────────────────
513
+ {
514
+ label: "Kubernetes",
515
+ description: "K8s manifests, Helm charts, GitOps workflows, and security policies",
516
+ repo: "wshobson/agents",
517
+ skills: [
518
+ "k8s-manifest-generator",
519
+ "helm-chart-scaffolding",
520
+ "gitops-workflow",
521
+ "k8s-security-policies",
522
+ ],
523
+ matchFiles: ["Chart.yaml", "kustomization.yaml"],
524
+ },
525
+ // ── CI/CD (wshobson/agents — 3 skills) ─────────────────────────────────────
526
+ {
527
+ label: "CI/CD Automation",
528
+ description: "Pipeline design, GitHub Actions workflows, and secrets management",
529
+ repo: "wshobson/agents",
530
+ skills: [
531
+ "deployment-pipeline-design",
532
+ "github-actions-templates",
533
+ "secrets-management",
534
+ ],
535
+ matchFiles: [".github/workflows"],
536
+ },
537
+ // ── Blockchain / Web3 (wshobson/agents — 3 skills) ─────────────────────────
538
+ {
539
+ label: "Blockchain & Web3",
540
+ description: "Solidity security, DeFi protocols, and smart contract testing",
541
+ repo: "wshobson/agents",
542
+ skills: ["solidity-security", "defi-protocol-templates", "web3-testing"],
543
+ matchFiles: ["hardhat.config.js", "hardhat.config.ts", "foundry.toml"],
544
+ },
545
+ // ── Data Engineering (wshobson/agents — 4 skills) ──────────────────────────
546
+ {
547
+ label: "Data Engineering",
548
+ description: "dbt transformations, Airflow DAGs, Spark optimization, and data quality",
549
+ repo: "wshobson/agents",
550
+ skills: [
551
+ "dbt-transformation-patterns",
552
+ "airflow-dag-patterns",
553
+ "spark-optimization",
554
+ "data-quality-frameworks",
555
+ ],
556
+ matchFiles: ["dbt_project.yml", "airflow.cfg"],
557
+ },
558
+ // ── Game Development — Unity (wshobson/agents) ─────────────────────────────
559
+ {
560
+ label: "Unity",
561
+ description: "Unity ECS patterns for high-performance game systems",
562
+ repo: "wshobson/agents",
563
+ skills: ["unity-ecs-patterns"],
564
+ matchFiles: ["ProjectSettings/ProjectVersion.txt"],
565
+ },
566
+ // ── Game Development — Godot (wshobson/agents) ─────────────────────────────
567
+ {
568
+ label: "Godot",
569
+ description: "Godot GDScript best practices and scene composition",
570
+ repo: "wshobson/agents",
571
+ skills: ["godot-gdscript-patterns"],
572
+ matchFiles: ["project.godot"],
573
+ },
574
+ // ── Essential (all projects) ────────────────────────────────────────────
575
+ {
576
+ label: "Skill Discovery",
577
+ description: "Find and install new agent skills from the ecosystem",
578
+ repo: "vercel-labs/skills",
579
+ skills: ["find-skills"],
580
+ matchAlways: true,
581
+ },
582
+ {
583
+ label: "Skill Authoring",
584
+ description: "Create, audit, and refine SKILL.md files",
585
+ repo: "anthropics/skills",
586
+ skills: ["skill-creator"],
587
+ matchAlways: true,
588
+ },
589
+ {
590
+ label: "Browser Automation",
591
+ description: "Browser automation for web scraping, testing, and interaction",
592
+ repo: "vercel-labs/agent-browser",
593
+ skills: ["agent-browser"],
594
+ matchAlways: true,
595
+ },
596
+ // ── General Tooling ───────────────────────────────────────────────────────
597
+ {
598
+ label: "Document Handling",
599
+ description: "PDF, DOCX, XLSX, PPTX creation and manipulation",
600
+ repo: "anthropics/skills",
601
+ skills: ["pdf", "docx", "xlsx", "pptx"],
602
+ matchAlways: true,
603
+ },
604
+ // ── Code Quality (wshobson/agents — matchAlways) ──────────────────────────
605
+ {
606
+ label: "Code Review & Quality",
607
+ description: "Code review excellence and error handling patterns",
608
+ repo: "wshobson/agents",
609
+ skills: ["code-review-excellence", "error-handling-patterns"],
610
+ matchAlways: true,
611
+ },
612
+ {
613
+ label: "Git Advanced Workflows",
614
+ description: "Advanced Git rebasing, cherry-picking, bisect, worktrees, and reflog",
615
+ repo: "wshobson/agents",
616
+ skills: ["git-advanced-workflows"],
617
+ matchAlways: true,
618
+ },
619
+ ];
620
+
621
+ // ─── Greenfield Tech Stack Choices ────────────────────────────────────────────
622
+
623
+ /**
624
+ * Tech stack → pack mappings for programmatic use.
625
+ *
626
+ * NOT shown directly to users during init (greenfield installs essentials
627
+ * only and defers stack-specific skills). These mappings are available for:
628
+ * 1. The LLM to install skills after establishing a design
629
+ * 2. The `/gsd skills` command (explicit user request)
630
+ * 3. Re-running brownfield detection after project files are created
631
+ */
632
+ export const GREENFIELD_STACKS: Array<{
633
+ id: string;
634
+ label: string;
635
+ description: string;
636
+ packs: string[];
637
+ }> = [
638
+ {
639
+ id: "ios",
640
+ label: "iOS App",
641
+ description: "Full iOS development — SwiftUI, Swift, and all iOS frameworks",
642
+ packs: [
643
+ "SwiftUI",
644
+ "Swift Core",
645
+ "iOS App Frameworks",
646
+ "iOS Data Frameworks",
647
+ "iOS AI & ML",
648
+ "iOS Engineering",
649
+ "iOS Hardware",
650
+ "iOS Platform",
651
+ ],
652
+ },
653
+ {
654
+ id: "swift",
655
+ label: "Swift (non-iOS)",
656
+ description: "Swift packages, server-side Swift, CLI tools, SwiftUI without iOS",
657
+ packs: ["SwiftUI", "Swift Core"],
658
+ },
659
+ {
660
+ id: "react-web",
661
+ label: "React Web",
662
+ description: "React, Next.js, shadcn/ui, web frontend",
663
+ packs: ["React & Web Frontend", "TypeScript & JS Development", "React State & Patterns", "Tailwind CSS", "shadcn/ui", "Frontend Design & UX"],
664
+ },
665
+ {
666
+ id: "react-native",
667
+ label: "React Native",
668
+ description: "Cross-platform mobile with React Native",
669
+ packs: ["React Native", "React Native Architecture", "React & Web Frontend", "TypeScript & JS Development"],
670
+ },
671
+ {
672
+ id: "fullstack-js",
673
+ label: "Full-Stack JavaScript/TypeScript",
674
+ description: "Node.js backend + React frontend",
675
+ packs: ["React & Web Frontend", "TypeScript & JS Development", "React State & Patterns", "Tailwind CSS", "shadcn/ui", "Frontend Design & UX", "Prisma"],
676
+ },
677
+ {
678
+ id: "rust",
679
+ label: "Rust",
680
+ description: "Systems programming with Rust",
681
+ packs: ["Rust", "Rust Async Patterns"],
682
+ },
683
+ {
684
+ id: "python",
685
+ label: "Python",
686
+ description: "Python applications, scripts, or ML",
687
+ packs: ["Python", "Python Advanced"],
688
+ },
689
+ {
690
+ id: "go",
691
+ label: "Go",
692
+ description: "Go services and CLIs",
693
+ packs: ["Go", "Go Concurrency Patterns"],
694
+ },
695
+ {
696
+ id: "firebase",
697
+ label: "Firebase",
698
+ description: "Firebase backend — auth, Firestore, hosting, AI",
699
+ packs: ["Firebase"],
700
+ },
701
+ {
702
+ id: "aws",
703
+ label: "AWS",
704
+ description: "AWS deployment, Lambda, serverless",
705
+ packs: ["AWS"],
706
+ },
707
+ {
708
+ id: "azure",
709
+ label: "Azure",
710
+ description: "Azure deployment, AI, storage, diagnostics",
711
+ packs: ["Azure"],
712
+ },
713
+ {
714
+ id: "angular",
715
+ label: "Angular",
716
+ description: "Angular components, signals, forms, routing",
717
+ packs: ["Angular", "Angular Migration", "Frontend Design & UX"],
718
+ },
719
+ {
720
+ id: "vue",
721
+ label: "Vue.js / Nuxt",
722
+ description: "Vue.js with Pinia, Vue Router, and testing",
723
+ packs: ["Vue.js", "Frontend Design & UX"],
724
+ },
725
+ {
726
+ id: "svelte",
727
+ label: "Svelte / SvelteKit",
728
+ description: "Svelte 5 and SvelteKit patterns",
729
+ packs: ["Svelte", "Tailwind CSS", "Frontend Design & UX"],
730
+ },
731
+ {
732
+ id: "nextjs",
733
+ label: "Next.js",
734
+ description: "Next.js app router, React, and Vercel deployment",
735
+ packs: ["Next.js", "Next.js App Router Patterns", "React & Web Frontend", "TypeScript & JS Development", "Tailwind CSS", "shadcn/ui"],
736
+ },
737
+ {
738
+ id: "flutter",
739
+ label: "Flutter",
740
+ description: "Cross-platform Flutter/Dart development",
741
+ packs: ["Flutter"],
742
+ },
743
+ {
744
+ id: "java",
745
+ label: "Java / Spring Boot",
746
+ description: "Spring Boot APIs, JPA, and testing",
747
+ packs: ["Java & Spring Boot"],
748
+ },
749
+ {
750
+ id: "dotnet",
751
+ label: ".NET / C#",
752
+ description: "ASP.NET Core, Entity Framework, and design patterns",
753
+ packs: [".NET & C#", ".NET Backend Patterns"],
754
+ },
755
+ {
756
+ id: "php",
757
+ label: "PHP / Laravel",
758
+ description: "Laravel patterns and PHP best practices",
759
+ packs: ["PHP & Laravel"],
760
+ },
761
+ {
762
+ id: "django",
763
+ label: "Django",
764
+ description: "Django models, views, middleware, and Celery",
765
+ packs: ["Django", "Python", "Python Advanced"],
766
+ },
767
+ {
768
+ id: "fastapi",
769
+ label: "FastAPI",
770
+ description: "FastAPI web APIs with async patterns",
771
+ packs: ["FastAPI", "Python", "Python Advanced"],
772
+ },
773
+ {
774
+ id: "android",
775
+ label: "Android / Kotlin",
776
+ description: "Android app development with Material Design 3",
777
+ packs: ["Android"],
778
+ },
779
+ {
780
+ id: "kubernetes",
781
+ label: "Kubernetes",
782
+ description: "Kubernetes manifests, Helm charts, and GitOps",
783
+ packs: ["Kubernetes", "Docker"],
784
+ },
785
+ {
786
+ id: "blockchain",
787
+ label: "Blockchain / Web3",
788
+ description: "Solidity, DeFi protocols, and smart contract testing",
789
+ packs: ["Blockchain & Web3"],
790
+ },
791
+ {
792
+ id: "data-engineering",
793
+ label: "Data Engineering",
794
+ description: "dbt, Airflow, Spark, and data quality",
795
+ packs: ["Data Engineering", "Python", "Python Advanced"],
796
+ },
797
+ {
798
+ id: "unity",
799
+ label: "Unity",
800
+ description: "Unity game development with ECS patterns",
801
+ packs: ["Unity"],
802
+ },
803
+ {
804
+ id: "godot",
805
+ label: "Godot",
806
+ description: "Godot game development with GDScript",
807
+ packs: ["Godot"],
808
+ },
809
+ {
810
+ id: "other",
811
+ label: "Other / Skip",
812
+ description: "Install skills later with npx skills add",
813
+ packs: [],
814
+ },
815
+ ];
816
+
817
+ // ─── Detection → Pack Matching ────────────────────────────────────────────────
818
+
819
+ /**
820
+ * Match project signals to relevant skill packs.
821
+ * Returns packs in catalog order (not sorted by match type).
822
+ */
823
+ export function matchPacksForProject(signals: ProjectSignals): SkillPack[] {
824
+ const matched = new Set<SkillPack>();
825
+
826
+ for (const pack of SKILL_CATALOG) {
827
+ // Language match
828
+ if (pack.matchLanguages && signals.primaryLanguage) {
829
+ if (pack.matchLanguages.includes(signals.primaryLanguage)) {
830
+ matched.add(pack);
831
+ continue;
832
+ }
833
+ }
834
+
835
+ // File match
836
+ if (pack.matchFiles) {
837
+ for (const file of pack.matchFiles) {
838
+ if (signals.detectedFiles.includes(file)) {
839
+ matched.add(pack);
840
+ break;
841
+ }
842
+ }
843
+ }
844
+
845
+ // Xcode platform match (e.g. iOS packs only when SDKROOT = iphoneos)
846
+ if (pack.matchXcodePlatforms && signals.xcodePlatforms.length > 0) {
847
+ const hasMatch = pack.matchXcodePlatforms.some((p) => signals.xcodePlatforms.includes(p));
848
+ if (hasMatch) matched.add(pack);
849
+ }
850
+
851
+ // Always-include packs (essentials)
852
+ if (pack.matchAlways) {
853
+ matched.add(pack);
854
+ }
855
+ }
856
+
857
+ return [...matched];
858
+ }