@opengsd/gsd-pi 1.0.2-dev.867e002 → 1.0.2-dev.88c4dc5

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 (337) hide show
  1. package/dist/onboarding.js +22 -3
  2. package/dist/resource-loader.js +3 -1
  3. package/dist/resources/.managed-resources-content-hash +1 -1
  4. package/dist/resources/extensions/context7/index.js +12 -2
  5. package/dist/resources/extensions/get-secrets-from-user.js +16 -16
  6. package/dist/resources/extensions/google-cli/index.js +30 -0
  7. package/dist/resources/extensions/google-cli/models.js +55 -0
  8. package/dist/resources/extensions/google-cli/package.json +11 -0
  9. package/dist/resources/extensions/google-cli/readiness.js +12 -0
  10. package/dist/resources/extensions/google-cli/stream-adapter.js +191 -0
  11. package/dist/resources/extensions/gsd/auto/loop.js +62 -1
  12. package/dist/resources/extensions/gsd/auto/orchestrator.js +4 -2
  13. package/dist/resources/extensions/gsd/auto/phases.js +37 -0
  14. package/dist/resources/extensions/gsd/auto/run-unit.js +8 -0
  15. package/dist/resources/extensions/gsd/auto/session.js +3 -0
  16. package/dist/resources/extensions/gsd/auto-dispatch.js +17 -7
  17. package/dist/resources/extensions/gsd/auto-post-unit.js +21 -11
  18. package/dist/resources/extensions/gsd/auto-prompts.js +5 -236
  19. package/dist/resources/extensions/gsd/auto-recovery.js +10 -5
  20. package/dist/resources/extensions/gsd/auto-start.js +232 -49
  21. package/dist/resources/extensions/gsd/auto.js +6 -1
  22. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +4 -3
  23. package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +7 -2
  24. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +39 -5
  25. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +17 -7
  26. package/dist/resources/extensions/gsd/bootstrap/system-context.js +3 -27
  27. package/dist/resources/extensions/gsd/closeout-recovery.js +7 -1
  28. package/dist/resources/extensions/gsd/commands/handlers/auto.js +9 -1
  29. package/dist/resources/extensions/gsd/commands-usage.js +105 -1
  30. package/dist/resources/extensions/gsd/config-overlay.js +20 -14
  31. package/dist/resources/extensions/gsd/context-overlay.js +22 -16
  32. package/dist/resources/extensions/gsd/dashboard-overlay.js +10 -23
  33. package/dist/resources/extensions/gsd/doctor-engine-checks.js +87 -0
  34. package/dist/resources/extensions/gsd/doctor-providers.js +54 -24
  35. package/dist/resources/extensions/gsd/doctor.js +6 -1
  36. package/dist/resources/extensions/gsd/git-conflict-state.js +26 -1
  37. package/dist/resources/extensions/gsd/guided-flow.js +5 -6
  38. package/dist/resources/extensions/gsd/key-manager.js +45 -13
  39. package/dist/resources/extensions/gsd/milestone-reopen-events.js +28 -0
  40. package/dist/resources/extensions/gsd/notification-overlay.js +8 -9
  41. package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +15 -13
  42. package/dist/resources/extensions/gsd/preferences-skills.js +11 -4
  43. package/dist/resources/extensions/gsd/preferences.js +14 -2
  44. package/dist/resources/extensions/gsd/prompt-loader.js +2 -0
  45. package/dist/resources/extensions/gsd/prompts/discuss.md +4 -2
  46. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +2 -0
  47. package/dist/resources/extensions/gsd/prompts/system.md +1 -3
  48. package/dist/resources/extensions/gsd/queue-reorder-ui.js +28 -18
  49. package/dist/resources/extensions/gsd/repository-registry.js +3 -1
  50. package/dist/resources/extensions/gsd/safety/evidence-collector.js +11 -4
  51. package/dist/resources/extensions/gsd/skill-activation.js +233 -0
  52. package/dist/resources/extensions/gsd/skill-catalog.data.js +820 -0
  53. package/dist/resources/extensions/gsd/skill-catalog.install.js +179 -0
  54. package/dist/resources/extensions/gsd/skill-catalog.js +5 -1028
  55. package/dist/resources/extensions/gsd/skill-discovery.js +121 -79
  56. package/dist/resources/extensions/gsd/skill-scope.js +52 -0
  57. package/dist/resources/extensions/gsd/skill-telemetry.js +6 -39
  58. package/dist/resources/extensions/gsd/skills.js +60 -0
  59. package/dist/resources/extensions/gsd/state-reconciliation/drift/artifact-db.js +351 -0
  60. package/dist/resources/extensions/gsd/state-reconciliation/index.js +41 -0
  61. package/dist/resources/extensions/gsd/state-reconciliation/registry.js +4 -0
  62. package/dist/resources/extensions/gsd/tools/complete-task.js +9 -0
  63. package/dist/resources/extensions/gsd/tools/exec-tool.js +42 -8
  64. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +63 -2
  65. package/dist/resources/extensions/gsd/tui/render-kit.js +51 -0
  66. package/dist/resources/extensions/gsd/unit-context-manifest.js +35 -26
  67. package/dist/resources/extensions/gsd/user-input-boundary.js +1 -1
  68. package/dist/resources/extensions/gsd/vision-ask.js +22 -0
  69. package/dist/resources/extensions/gsd/visualizer-overlay.js +8 -36
  70. package/dist/resources/extensions/gsd/worktree-lifecycle.js +24 -3
  71. package/dist/resources/extensions/search-the-web/native-search.js +57 -8
  72. package/dist/resources/extensions/shared/confirm-ui.js +9 -6
  73. package/dist/resources/extensions/shared/dialog-frame.js +42 -0
  74. package/dist/resources/extensions/shared/interview-ui.js +42 -30
  75. package/dist/resources/extensions/shared/next-action-ui.js +6 -6
  76. package/dist/resources/skills/create-skill/references/gsd-skill-ecosystem.md +1 -1
  77. package/dist/web/standalone/.next/BUILD_ID +1 -1
  78. package/dist/web/standalone/.next/app-path-routes-manifest.json +4 -4
  79. package/dist/web/standalone/.next/build-manifest.json +2 -2
  80. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  81. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  82. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  83. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  84. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  85. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  86. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  87. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  88. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  89. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  90. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  91. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  92. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  93. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  94. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  95. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  96. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  97. package/dist/web/standalone/.next/server/app/index.html +1 -1
  98. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  99. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  100. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  101. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  102. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  103. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  104. package/dist/web/standalone/.next/server/app-paths-manifest.json +4 -4
  105. package/dist/web/standalone/.next/server/chunks/1834.js +2 -2
  106. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  107. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  108. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  109. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  110. package/package.json +1 -1
  111. package/packages/cloud-mcp-gateway/package.json +2 -2
  112. package/packages/contracts/dist/rpc.test.js +5 -0
  113. package/packages/contracts/dist/rpc.test.js.map +1 -1
  114. package/packages/contracts/dist/workflow.d.ts +7 -0
  115. package/packages/contracts/dist/workflow.d.ts.map +1 -1
  116. package/packages/contracts/dist/workflow.js +8 -0
  117. package/packages/contracts/dist/workflow.js.map +1 -1
  118. package/packages/contracts/dist/workflow.test.js +1 -0
  119. package/packages/contracts/dist/workflow.test.js.map +1 -1
  120. package/packages/contracts/package.json +1 -1
  121. package/packages/daemon/package.json +4 -4
  122. package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts +1 -0
  123. package/packages/gsd-agent-core/dist/session/agent-session-extensions.d.ts.map +1 -1
  124. package/packages/gsd-agent-core/dist/session/agent-session-extensions.js +22 -8
  125. package/packages/gsd-agent-core/dist/session/agent-session-extensions.js.map +1 -1
  126. package/packages/gsd-agent-core/package.json +5 -5
  127. package/packages/gsd-agent-modes/dist/modes/interactive/components/dialog-container.d.ts +12 -0
  128. package/packages/gsd-agent-modes/dist/modes/interactive/components/dialog-container.d.ts.map +1 -0
  129. package/packages/gsd-agent-modes/dist/modes/interactive/components/dialog-container.js +45 -0
  130. package/packages/gsd-agent-modes/dist/modes/interactive/components/dialog-container.js.map +1 -0
  131. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts +3 -2
  132. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  133. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js +11 -11
  134. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-editor.js.map +1 -1
  135. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts +3 -3
  136. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  137. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js +13 -11
  138. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-input.js.map +1 -1
  139. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts +3 -3
  140. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  141. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js +12 -10
  142. package/packages/gsd-agent-modes/dist/modes/interactive/components/extension-selector.js.map +1 -1
  143. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts +1 -0
  144. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.d.ts.map +1 -1
  145. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js +1 -0
  146. package/packages/gsd-agent-modes/dist/modes/interactive/components/index.js.map +1 -1
  147. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts +1 -1
  148. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  149. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js +2 -2
  150. package/packages/gsd-agent-modes/dist/modes/interactive/components/login-dialog.js.map +1 -1
  151. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts +6 -1
  152. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  153. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js +9 -6
  154. package/packages/gsd-agent-modes/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  155. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.d.ts.map +1 -1
  156. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js +0 -1
  157. package/packages/gsd-agent-modes/dist/modes/interactive/components/transcript-design.js.map +1 -1
  158. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.d.ts +3 -0
  159. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.d.ts.map +1 -1
  160. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.js +144 -2
  161. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-auth.js.map +1 -1
  162. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-session.d.ts.map +1 -1
  163. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-session.js +2 -14
  164. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-selectors-session.js.map +1 -1
  165. package/packages/gsd-agent-modes/package.json +7 -7
  166. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  167. package/packages/mcp-server/dist/workflow-tools.js +28 -5
  168. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  169. package/packages/mcp-server/package.json +3 -3
  170. package/packages/native/package.json +1 -1
  171. package/packages/pi-agent-core/dist/harness/skills.d.ts.map +1 -1
  172. package/packages/pi-agent-core/dist/harness/skills.js +6 -0
  173. package/packages/pi-agent-core/dist/harness/skills.js.map +1 -1
  174. package/packages/pi-agent-core/dist/harness/system-prompt.d.ts +7 -0
  175. package/packages/pi-agent-core/dist/harness/system-prompt.d.ts.map +1 -1
  176. package/packages/pi-agent-core/dist/harness/system-prompt.js +7 -0
  177. package/packages/pi-agent-core/dist/harness/system-prompt.js.map +1 -1
  178. package/packages/pi-agent-core/package.json +1 -1
  179. package/packages/pi-ai/dist/models.generated.d.ts +8 -59
  180. package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
  181. package/packages/pi-ai/dist/models.generated.js +21 -72
  182. package/packages/pi-ai/dist/models.generated.js.map +1 -1
  183. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  184. package/packages/pi-ai/dist/providers/anthropic.js +50 -0
  185. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  186. package/packages/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
  187. package/packages/pi-ai/dist/providers/openai-responses-shared.js +28 -4
  188. package/packages/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
  189. package/packages/pi-ai/dist/types.d.ts +2 -0
  190. package/packages/pi-ai/dist/types.d.ts.map +1 -1
  191. package/packages/pi-ai/dist/types.js.map +1 -1
  192. package/packages/pi-ai/package.json +1 -1
  193. package/packages/pi-coding-agent/README.md +1 -1
  194. package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.d.ts +2 -2
  195. package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.d.ts.map +1 -1
  196. package/packages/pi-coding-agent/dist/core/extensions/extension-upstream-types.js.map +1 -1
  197. package/packages/pi-coding-agent/dist/core/extensions/loader.js +1 -1
  198. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  199. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  200. package/packages/pi-coding-agent/dist/core/extensions/runner.js +8 -2
  201. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  202. package/packages/pi-coding-agent/dist/core/skills.d.ts +3 -0
  203. package/packages/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
  204. package/packages/pi-coding-agent/dist/core/skills.js +3 -0
  205. package/packages/pi-coding-agent/dist/core/skills.js.map +1 -1
  206. package/packages/pi-coding-agent/package.json +7 -7
  207. package/packages/pi-tui/package.json +1 -1
  208. package/packages/rpc-client/package.json +2 -2
  209. package/pkg/package.json +1 -1
  210. package/src/resources/extensions/context7/index.ts +15 -2
  211. package/src/resources/extensions/get-secrets-from-user.ts +17 -16
  212. package/src/resources/extensions/google-cli/index.ts +34 -0
  213. package/src/resources/extensions/google-cli/models.ts +57 -0
  214. package/src/resources/extensions/google-cli/package.json +11 -0
  215. package/src/resources/extensions/google-cli/readiness.ts +15 -0
  216. package/src/resources/extensions/google-cli/stream-adapter.ts +245 -0
  217. package/src/resources/extensions/gsd/auto/loop.ts +74 -1
  218. package/src/resources/extensions/gsd/auto/orchestrator.ts +4 -2
  219. package/src/resources/extensions/gsd/auto/phases.ts +46 -0
  220. package/src/resources/extensions/gsd/auto/run-unit.ts +10 -0
  221. package/src/resources/extensions/gsd/auto/session.ts +3 -0
  222. package/src/resources/extensions/gsd/auto-dispatch.ts +31 -11
  223. package/src/resources/extensions/gsd/auto-post-unit.ts +43 -14
  224. package/src/resources/extensions/gsd/auto-prompts.ts +4 -284
  225. package/src/resources/extensions/gsd/auto-recovery.ts +10 -7
  226. package/src/resources/extensions/gsd/auto-start.ts +307 -56
  227. package/src/resources/extensions/gsd/auto.ts +6 -1
  228. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +4 -3
  229. package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +9 -4
  230. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +42 -5
  231. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +18 -6
  232. package/src/resources/extensions/gsd/bootstrap/system-context.ts +3 -28
  233. package/src/resources/extensions/gsd/closeout-recovery.ts +6 -1
  234. package/src/resources/extensions/gsd/commands/handlers/auto.ts +9 -1
  235. package/src/resources/extensions/gsd/commands-usage.ts +110 -5
  236. package/src/resources/extensions/gsd/config-overlay.ts +19 -16
  237. package/src/resources/extensions/gsd/context-overlay.ts +24 -19
  238. package/src/resources/extensions/gsd/dashboard-overlay.ts +14 -27
  239. package/src/resources/extensions/gsd/doctor-engine-checks.ts +99 -0
  240. package/src/resources/extensions/gsd/doctor-providers.ts +55 -27
  241. package/src/resources/extensions/gsd/doctor-types.ts +2 -0
  242. package/src/resources/extensions/gsd/doctor.ts +6 -1
  243. package/src/resources/extensions/gsd/git-conflict-state.ts +25 -1
  244. package/src/resources/extensions/gsd/guided-flow.ts +5 -6
  245. package/src/resources/extensions/gsd/key-manager.ts +57 -14
  246. package/src/resources/extensions/gsd/milestone-reopen-events.ts +28 -0
  247. package/src/resources/extensions/gsd/notification-overlay.ts +12 -11
  248. package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +16 -12
  249. package/src/resources/extensions/gsd/preferences-skills.ts +11 -4
  250. package/src/resources/extensions/gsd/preferences.ts +17 -2
  251. package/src/resources/extensions/gsd/prompt-loader.ts +2 -0
  252. package/src/resources/extensions/gsd/prompts/discuss.md +4 -2
  253. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +2 -0
  254. package/src/resources/extensions/gsd/prompts/system.md +1 -3
  255. package/src/resources/extensions/gsd/queue-reorder-ui.ts +29 -20
  256. package/src/resources/extensions/gsd/repository-registry.ts +3 -1
  257. package/src/resources/extensions/gsd/safety/evidence-collector.ts +11 -4
  258. package/src/resources/extensions/gsd/skill-activation.ts +292 -0
  259. package/src/resources/extensions/gsd/skill-catalog.data.ts +858 -0
  260. package/src/resources/extensions/gsd/skill-catalog.install.ts +205 -0
  261. package/src/resources/extensions/gsd/skill-catalog.ts +16 -1087
  262. package/src/resources/extensions/gsd/skill-discovery.ts +134 -78
  263. package/src/resources/extensions/gsd/skill-scope.ts +63 -0
  264. package/src/resources/extensions/gsd/skill-telemetry.ts +6 -40
  265. package/src/resources/extensions/gsd/skills.ts +75 -0
  266. package/src/resources/extensions/gsd/state-reconciliation/drift/artifact-db.ts +499 -0
  267. package/src/resources/extensions/gsd/state-reconciliation/index.ts +40 -0
  268. package/src/resources/extensions/gsd/state-reconciliation/registry.ts +8 -0
  269. package/src/resources/extensions/gsd/state-reconciliation/types.ts +30 -0
  270. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +328 -2
  271. package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +21 -0
  272. package/src/resources/extensions/gsd/tests/auto-post-unit-artifact-diagnostic.test.ts +28 -2
  273. package/src/resources/extensions/gsd/tests/auto-post-unit-evidence-crossref-4909.test.ts +30 -0
  274. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +41 -0
  275. package/src/resources/extensions/gsd/tests/auto-retry-mcp-churn-fixes.test.ts +12 -0
  276. package/src/resources/extensions/gsd/tests/auto-start-orphan-bootstrap.test.ts +436 -0
  277. package/src/resources/extensions/gsd/tests/closeout-recovery.test.ts +15 -0
  278. package/src/resources/extensions/gsd/tests/collect-from-manifest.test.ts +31 -0
  279. package/src/resources/extensions/gsd/tests/commands-context.test.ts +5 -3
  280. package/src/resources/extensions/gsd/tests/commands-dispatcher-workspace-git.test.ts +15 -2
  281. package/src/resources/extensions/gsd/tests/commands-usage.test.ts +97 -0
  282. package/src/resources/extensions/gsd/tests/context-chart.test.ts +9 -0
  283. package/src/resources/extensions/gsd/tests/dashboard-overlay.test.ts +25 -0
  284. package/src/resources/extensions/gsd/tests/discord-invite-links.test.ts +1 -0
  285. package/src/resources/extensions/gsd/tests/discuss-prompt.test.ts +4 -2
  286. package/src/resources/extensions/gsd/tests/discuss-tool-scoping.test.ts +1 -1
  287. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +105 -0
  288. package/src/resources/extensions/gsd/tests/doctor-scope-db-unavailable.test.ts +101 -1
  289. package/src/resources/extensions/gsd/tests/exec-sandbox.test.ts +30 -0
  290. package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +6 -0
  291. package/src/resources/extensions/gsd/tests/key-manager.test.ts +23 -4
  292. package/src/resources/extensions/gsd/tests/notification-overlay.test.ts +6 -1
  293. package/src/resources/extensions/gsd/tests/orphaned-worktree-audit.test.ts +70 -10
  294. package/src/resources/extensions/gsd/tests/parallel-monitor-overlay.test.ts +7 -1
  295. package/src/resources/extensions/gsd/tests/post-unit-retry-on-orchestrator-bridge.test.ts +93 -0
  296. package/src/resources/extensions/gsd/tests/queue-reorder-ui.test.ts +46 -0
  297. package/src/resources/extensions/gsd/tests/register-extension-guard.test.ts +116 -11
  298. package/src/resources/extensions/gsd/tests/repository-registry.test.ts +30 -1
  299. package/src/resources/extensions/gsd/tests/show-config-command.test.ts +4 -0
  300. package/src/resources/extensions/gsd/tests/skill-discovery.test.ts +111 -0
  301. package/src/resources/extensions/gsd/tests/skill-scope-auto.test.ts +67 -0
  302. package/src/resources/extensions/gsd/tests/skills.test.ts +55 -0
  303. package/src/resources/extensions/gsd/tests/start-auto-detached.test.ts +13 -2
  304. package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +303 -0
  305. package/src/resources/extensions/gsd/tests/token-tool-gating.test.ts +19 -0
  306. package/src/resources/extensions/gsd/tests/tool-param-optionality.test.ts +24 -1
  307. package/src/resources/extensions/gsd/tests/tui-border-assertions.ts +28 -0
  308. package/src/resources/extensions/gsd/tests/tui-render-kit.test.ts +14 -0
  309. package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +18 -0
  310. package/src/resources/extensions/gsd/tests/user-input-boundary.test.ts +26 -0
  311. package/src/resources/extensions/gsd/tests/vision-ask.test.ts +23 -0
  312. package/src/resources/extensions/gsd/tests/visualizer-overlay.test.ts +6 -1
  313. package/src/resources/extensions/gsd/tests/workflow-mcp-auto-prep.test.ts +74 -1
  314. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +82 -0
  315. package/src/resources/extensions/gsd/tests/workspace-git-preflight.test.ts +16 -1
  316. package/src/resources/extensions/gsd/tests/worktree-lifecycle.test.ts +28 -0
  317. package/src/resources/extensions/gsd/tests/zombie-gsd-state.test.ts +45 -1
  318. package/src/resources/extensions/gsd/tools/complete-task.ts +9 -0
  319. package/src/resources/extensions/gsd/tools/exec-tool.ts +42 -10
  320. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +82 -5
  321. package/src/resources/extensions/gsd/tui/render-kit.ts +82 -0
  322. package/src/resources/extensions/gsd/unit-context-manifest.ts +37 -26
  323. package/src/resources/extensions/gsd/user-input-boundary.ts +1 -1
  324. package/src/resources/extensions/gsd/vision-ask.ts +28 -0
  325. package/src/resources/extensions/gsd/visualizer-overlay.ts +12 -40
  326. package/src/resources/extensions/gsd/worktree-lifecycle.ts +37 -2
  327. package/src/resources/extensions/search-the-web/native-search.ts +60 -8
  328. package/src/resources/extensions/shared/confirm-ui.ts +8 -12
  329. package/src/resources/extensions/shared/dialog-frame.ts +71 -0
  330. package/src/resources/extensions/shared/interview-ui.ts +43 -42
  331. package/src/resources/extensions/shared/next-action-ui.ts +6 -6
  332. package/src/resources/extensions/shared/tests/confirm-ui.test.ts +57 -0
  333. package/src/resources/extensions/shared/tests/interview-ui-border.test.ts +163 -0
  334. package/src/resources/extensions/shared/tests/next-action-ui-hasui.test.ts +55 -0
  335. package/src/resources/skills/create-skill/references/gsd-skill-ecosystem.md +1 -1
  336. /package/dist/web/standalone/.next/static/{praHP_OATcjBkvAVejjGK → PkhJfy4kKo4yUHj1wY7_q}/_buildManifest.js +0 -0
  337. /package/dist/web/standalone/.next/static/{praHP_OATcjBkvAVejjGK → PkhJfy4kKo4yUHj1wY7_q}/_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
+ }