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