@cubis/foundry 0.3.32 → 0.3.33

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 (460) hide show
  1. package/README.md +23 -0
  2. package/bin/cubis.js +461 -37
  3. package/mcp/README.md +17 -0
  4. package/mcp/catalogs/default.json +14 -0
  5. package/mcp/powers/atlassian-mcp/POWER.md +91 -0
  6. package/mcp/powers/atlassian-mcp/SKILL.md +88 -0
  7. package/mcp/powers/building-mcp-server-on-cloudflare/POWER.md +261 -0
  8. package/mcp/powers/building-mcp-server-on-cloudflare/SKILL.md +258 -0
  9. package/mcp/powers/datadog-automation/POWER.md +238 -0
  10. package/mcp/powers/datadog-automation/SKILL.md +235 -0
  11. package/mcp/powers/github-automation/POWER.md +230 -0
  12. package/mcp/powers/github-automation/SKILL.md +227 -0
  13. package/mcp/powers/mcp-builder/POWER.md +179 -0
  14. package/mcp/powers/mcp-builder/SKILL.md +176 -0
  15. package/mcp/powers/mcp-developer/POWER.md +88 -0
  16. package/mcp/powers/mcp-developer/SKILL.md +85 -0
  17. package/mcp/powers/postman/POWER.md +243 -0
  18. package/mcp/powers/postman/SKILL.md +240 -0
  19. package/mcp/powers/sentry-automation/POWER.md +235 -0
  20. package/mcp/powers/sentry-automation/SKILL.md +232 -0
  21. package/mcp/skills/atlassian-mcp/SKILL.md +88 -0
  22. package/mcp/skills/building-mcp-server-on-cloudflare/SKILL.md +258 -0
  23. package/mcp/skills/datadog-automation/SKILL.md +235 -0
  24. package/mcp/skills/github-automation/SKILL.md +227 -0
  25. package/mcp/skills/mcp-builder/SKILL.md +176 -0
  26. package/mcp/skills/mcp-developer/SKILL.md +85 -0
  27. package/mcp/skills/postman/SKILL.md +240 -0
  28. package/mcp/skills/sentry-automation/SKILL.md +232 -0
  29. package/package.json +2 -1
  30. package/workflows/powers/architecture/POWER.md +12 -46
  31. package/workflows/powers/architecture/SKILL.md +12 -46
  32. package/workflows/powers/atlassian-mcp/POWER.md +11 -81
  33. package/workflows/powers/atlassian-mcp/SKILL.md +11 -81
  34. package/workflows/powers/building-mcp-server-on-cloudflare/POWER.md +12 -252
  35. package/workflows/powers/building-mcp-server-on-cloudflare/SKILL.md +12 -252
  36. package/workflows/powers/code-review-checklist/POWER.md +11 -99
  37. package/workflows/powers/code-review-checklist/SKILL.md +11 -99
  38. package/workflows/powers/csharp-pro/POWER.md +43 -0
  39. package/workflows/powers/csharp-pro/SKILL.md +40 -0
  40. package/workflows/powers/database-design/POWER.md +47 -5
  41. package/workflows/powers/database-design/SKILL.md +45 -4
  42. package/workflows/powers/database-optimizer/POWER.md +11 -23
  43. package/workflows/powers/database-optimizer/SKILL.md +5 -5
  44. package/workflows/powers/datadog-automation/POWER.md +12 -229
  45. package/workflows/powers/datadog-automation/SKILL.md +12 -229
  46. package/workflows/powers/debugging-wizard/POWER.md +12 -78
  47. package/workflows/powers/debugging-wizard/SKILL.md +12 -78
  48. package/workflows/powers/deployment-procedures/POWER.md +11 -231
  49. package/workflows/powers/deployment-procedures/SKILL.md +11 -231
  50. package/workflows/powers/drift-flutter/POWER.md +51 -0
  51. package/workflows/powers/drift-flutter/SKILL.md +2 -2
  52. package/workflows/powers/github-automation/POWER.md +12 -221
  53. package/workflows/powers/github-automation/SKILL.md +12 -221
  54. package/workflows/powers/golang-pro/POWER.md +38 -66
  55. package/workflows/powers/golang-pro/SKILL.md +38 -66
  56. package/workflows/powers/java-pro/POWER.md +43 -0
  57. package/workflows/powers/java-pro/SKILL.md +40 -0
  58. package/workflows/powers/javascript-pro/POWER.md +37 -67
  59. package/workflows/powers/javascript-pro/SKILL.md +37 -67
  60. package/workflows/powers/kotlin-pro/POWER.md +43 -0
  61. package/workflows/powers/kotlin-pro/SKILL.md +40 -0
  62. package/workflows/powers/mcp-builder/POWER.md +12 -170
  63. package/workflows/powers/mcp-builder/SKILL.md +12 -170
  64. package/workflows/powers/mcp-developer/POWER.md +11 -78
  65. package/workflows/powers/mcp-developer/SKILL.md +11 -78
  66. package/workflows/powers/nextjs-developer/POWER.md +41 -148
  67. package/workflows/powers/nextjs-developer/SKILL.md +41 -148
  68. package/workflows/powers/nextjs-react-expert/POWER.md +10 -281
  69. package/workflows/powers/nextjs-react-expert/SKILL.md +10 -281
  70. package/workflows/powers/nodejs-best-practices/POWER.md +33 -317
  71. package/workflows/powers/nodejs-best-practices/SKILL.md +33 -317
  72. package/workflows/powers/postman/POWER.md +11 -233
  73. package/workflows/powers/postman/SKILL.md +11 -233
  74. package/workflows/powers/python-patterns/POWER.md +11 -431
  75. package/workflows/powers/python-patterns/SKILL.md +11 -431
  76. package/workflows/powers/python-pro/POWER.md +38 -66
  77. package/workflows/powers/python-pro/SKILL.md +38 -66
  78. package/workflows/powers/react-best-practices/POWER.md +35 -118
  79. package/workflows/powers/react-best-practices/SKILL.md +35 -118
  80. package/workflows/powers/react-expert/POWER.md +38 -66
  81. package/workflows/powers/react-expert/SKILL.md +38 -66
  82. package/workflows/powers/rust-engineer/POWER.md +10 -75
  83. package/workflows/powers/rust-engineer/SKILL.md +10 -75
  84. package/workflows/powers/rust-pro/POWER.md +36 -163
  85. package/workflows/powers/rust-pro/SKILL.md +36 -163
  86. package/workflows/powers/sentry-automation/POWER.md +12 -226
  87. package/workflows/powers/sentry-automation/SKILL.md +12 -226
  88. package/workflows/powers/server-management/POWER.md +11 -151
  89. package/workflows/powers/server-management/SKILL.md +11 -151
  90. package/workflows/powers/tdd-workflow/POWER.md +12 -140
  91. package/workflows/powers/tdd-workflow/SKILL.md +12 -140
  92. package/workflows/powers/testing-patterns/POWER.md +11 -168
  93. package/workflows/powers/testing-patterns/SKILL.md +11 -168
  94. package/workflows/powers/typescript-pro/POWER.md +43 -70
  95. package/workflows/powers/typescript-pro/SKILL.md +43 -70
  96. package/workflows/powers/vercel-ai/POWER.md +43 -0
  97. package/workflows/powers/vercel-ai/SKILL.md +40 -0
  98. package/workflows/powers/vercel-ai-gateway/POWER.md +11 -69
  99. package/workflows/powers/vercel-ai-gateway/SKILL.md +11 -69
  100. package/workflows/powers/vercel-ai-sdk/POWER.md +11 -49
  101. package/workflows/powers/vercel-ai-sdk/SKILL.md +11 -49
  102. package/workflows/powers/vercel-caching/POWER.md +10 -72
  103. package/workflows/powers/vercel-caching/SKILL.md +10 -72
  104. package/workflows/powers/vercel-cli/POWER.md +11 -75
  105. package/workflows/powers/vercel-cli/SKILL.md +11 -75
  106. package/workflows/powers/vercel-delivery/POWER.md +45 -0
  107. package/workflows/powers/vercel-delivery/SKILL.md +42 -0
  108. package/workflows/powers/vercel-deployments/POWER.md +10 -90
  109. package/workflows/powers/vercel-deployments/SKILL.md +10 -90
  110. package/workflows/powers/vercel-domains/POWER.md +10 -69
  111. package/workflows/powers/vercel-domains/SKILL.md +10 -69
  112. package/workflows/powers/vercel-firewall/POWER.md +10 -61
  113. package/workflows/powers/vercel-firewall/SKILL.md +10 -61
  114. package/workflows/powers/vercel-flags/POWER.md +10 -62
  115. package/workflows/powers/vercel-flags/SKILL.md +10 -62
  116. package/workflows/powers/vercel-functions/POWER.md +10 -70
  117. package/workflows/powers/vercel-functions/SKILL.md +10 -70
  118. package/workflows/powers/vercel-routing/POWER.md +10 -68
  119. package/workflows/powers/vercel-routing/SKILL.md +10 -68
  120. package/workflows/powers/vercel-runtime/POWER.md +43 -0
  121. package/workflows/powers/vercel-runtime/SKILL.md +40 -0
  122. package/workflows/powers/vercel-security/POWER.md +43 -0
  123. package/workflows/powers/vercel-security/SKILL.md +40 -0
  124. package/workflows/powers/vulnerability-scanner/POWER.md +11 -266
  125. package/workflows/powers/vulnerability-scanner/SKILL.md +11 -266
  126. package/workflows/scripts/generate-powers.mjs +95 -202
  127. package/workflows/skills/atlassian-mcp/SKILL.md +11 -81
  128. package/workflows/skills/building-mcp-server-on-cloudflare/SKILL.md +12 -252
  129. package/workflows/skills/catalogs/core.json +30 -0
  130. package/workflows/skills/catalogs/web-backend.json +70 -0
  131. package/workflows/skills/csharp-pro/SKILL.md +40 -0
  132. package/workflows/skills/datadog-automation/SKILL.md +12 -229
  133. package/workflows/skills/github-automation/SKILL.md +12 -221
  134. package/workflows/skills/golang-pro/SKILL.md +38 -66
  135. package/workflows/skills/java-pro/SKILL.md +40 -0
  136. package/workflows/skills/javascript-pro/SKILL.md +37 -67
  137. package/workflows/skills/kotlin-pro/SKILL.md +40 -0
  138. package/workflows/skills/mcp-builder/SKILL.md +12 -170
  139. package/workflows/skills/mcp-developer/SKILL.md +11 -78
  140. package/workflows/skills/nextjs-developer/SKILL.md +41 -148
  141. package/workflows/skills/nextjs-react-expert/SKILL.md +5 -11
  142. package/workflows/skills/nodejs-best-practices/SKILL.md +33 -317
  143. package/workflows/skills/postman/SKILL.md +11 -233
  144. package/workflows/skills/python-pro/SKILL.md +38 -66
  145. package/workflows/skills/react-best-practices/SKILL.md +35 -118
  146. package/workflows/skills/react-expert/SKILL.md +38 -66
  147. package/workflows/skills/rust-pro/SKILL.md +36 -163
  148. package/workflows/skills/sentry-automation/SKILL.md +12 -226
  149. package/workflows/skills/skills_index.json +43 -57
  150. package/workflows/skills/typescript-pro/SKILL.md +43 -70
  151. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/backend-specialist.md +1 -1
  152. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/code-archaeologist.md +1 -1
  153. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/database-architect.md +1 -1
  154. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/debugger.md +1 -1
  155. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/devops-engineer.md +1 -1
  156. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/documentation-writer.md +1 -1
  157. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/explorer-agent.md +1 -1
  158. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/frontend-specialist.md +1 -1
  159. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/game-developer.md +1 -1
  160. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/mobile-developer.md +1 -1
  161. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/orchestrator.md +28 -400
  162. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/penetration-tester.md +1 -1
  163. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/performance-optimizer.md +1 -1
  164. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/product-manager.md +1 -1
  165. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/product-owner.md +1 -1
  166. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/project-planner.md +1 -1
  167. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/qa-automation-engineer.md +1 -1
  168. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/security-auditor.md +1 -1
  169. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/seo-specialist.md +1 -1
  170. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/test-engineer.md +1 -1
  171. package/workflows/workflows/agent-environment-setup/platforms/antigravity/agents/vercel-expert.md +1 -1
  172. package/workflows/workflows/agent-environment-setup/platforms/antigravity/rules/GEMINI.md +7 -6
  173. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/backend-specialist.md +1 -1
  174. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/code-archaeologist.md +1 -1
  175. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/database-architect.md +1 -1
  176. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/debugger.md +1 -1
  177. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/devops-engineer.md +1 -1
  178. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/documentation-writer.md +1 -1
  179. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/explorer-agent.md +1 -1
  180. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/frontend-specialist.md +1 -1
  181. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/game-developer.md +1 -1
  182. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/mobile-developer.md +1 -1
  183. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/orchestrator.md +28 -400
  184. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/penetration-tester.md +1 -1
  185. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/performance-optimizer.md +1 -1
  186. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/product-manager.md +1 -1
  187. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/product-owner.md +1 -1
  188. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/project-planner.md +1 -1
  189. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/qa-automation-engineer.md +1 -1
  190. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/security-auditor.md +1 -1
  191. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/seo-specialist.md +1 -1
  192. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/test-engineer.md +1 -1
  193. package/workflows/workflows/agent-environment-setup/platforms/codex/agents/vercel-expert.md +1 -1
  194. package/workflows/workflows/agent-environment-setup/platforms/codex/rules/AGENTS.md +7 -6
  195. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/backend-specialist.md +1 -1
  196. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/code-archaeologist.md +1 -1
  197. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/database-architect.md +1 -1
  198. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/debugger.md +1 -1
  199. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/devops-engineer.md +1 -1
  200. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/documentation-writer.md +1 -1
  201. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/explorer-agent.md +1 -1
  202. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/frontend-specialist.md +1 -1
  203. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/game-developer.md +1 -1
  204. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/mobile-developer.md +1 -1
  205. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/orchestrator.md +28 -400
  206. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/penetration-tester.md +1 -1
  207. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/performance-optimizer.md +1 -1
  208. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/product-manager.md +1 -1
  209. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/product-owner.md +1 -1
  210. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/project-planner.md +1 -1
  211. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/qa-automation-engineer.md +1 -1
  212. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/security-auditor.md +1 -1
  213. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/seo-specialist.md +1 -1
  214. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/test-engineer.md +1 -1
  215. package/workflows/workflows/agent-environment-setup/platforms/copilot/agents/vercel-expert.md +1 -1
  216. package/workflows/workflows/agent-environment-setup/platforms/copilot/rules/AGENTS.md +7 -6
  217. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/csharp-pro/SKILL.md +40 -0
  218. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/golang-pro/SKILL.md +38 -66
  219. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/java-pro/SKILL.md +40 -0
  220. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/javascript-pro/SKILL.md +37 -67
  221. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/kotlin-pro/SKILL.md +40 -0
  222. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/nextjs-developer/SKILL.md +41 -148
  223. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/nextjs-react-expert/SKILL.md +6 -12
  224. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/nodejs-best-practices/SKILL.md +33 -317
  225. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/python-pro/SKILL.md +38 -66
  226. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/react-best-practices/SKILL.md +35 -118
  227. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/react-expert/SKILL.md +38 -66
  228. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/rust-pro/SKILL.md +36 -163
  229. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/skills_index.json +43 -57
  230. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/typescript-pro/SKILL.md +43 -70
  231. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/csharp-pro/SKILL.md +40 -0
  232. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/golang-pro/SKILL.md +38 -66
  233. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/java-pro/SKILL.md +40 -0
  234. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/javascript-pro/SKILL.md +37 -67
  235. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/kotlin-pro/SKILL.md +40 -0
  236. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/nextjs-developer/SKILL.md +41 -148
  237. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/nextjs-react-expert/SKILL.md +6 -12
  238. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/nodejs-best-practices/SKILL.md +33 -317
  239. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/python-pro/SKILL.md +38 -66
  240. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/react-best-practices/SKILL.md +35 -118
  241. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/react-expert/SKILL.md +38 -66
  242. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/rust-pro/SKILL.md +36 -163
  243. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/skills_index.json +43 -57
  244. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/typescript-pro/SKILL.md +43 -70
  245. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/csharp-pro/SKILL.md +40 -0
  246. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/golang-pro/SKILL.md +38 -66
  247. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/java-pro/SKILL.md +40 -0
  248. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/javascript-pro/SKILL.md +37 -67
  249. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/kotlin-pro/SKILL.md +40 -0
  250. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/nextjs-developer/SKILL.md +41 -148
  251. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/nextjs-react-expert/SKILL.md +6 -12
  252. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/nodejs-best-practices/SKILL.md +33 -317
  253. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/python-pro/SKILL.md +38 -66
  254. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/react-best-practices/SKILL.md +35 -118
  255. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/react-expert/SKILL.md +38 -66
  256. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/rust-pro/SKILL.md +36 -163
  257. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/skills_index.json +43 -57
  258. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/typescript-pro/SKILL.md +43 -70
  259. package/workflows/workflows/agent-environment-setup/shared/agents/backend-specialist.md +1 -1
  260. package/workflows/workflows/agent-environment-setup/shared/agents/code-archaeologist.md +1 -1
  261. package/workflows/workflows/agent-environment-setup/shared/agents/database-architect.md +1 -1
  262. package/workflows/workflows/agent-environment-setup/shared/agents/debugger.md +1 -1
  263. package/workflows/workflows/agent-environment-setup/shared/agents/devops-engineer.md +1 -1
  264. package/workflows/workflows/agent-environment-setup/shared/agents/documentation-writer.md +1 -1
  265. package/workflows/workflows/agent-environment-setup/shared/agents/explorer-agent.md +1 -1
  266. package/workflows/workflows/agent-environment-setup/shared/agents/frontend-specialist.md +1 -1
  267. package/workflows/workflows/agent-environment-setup/shared/agents/game-developer.md +1 -1
  268. package/workflows/workflows/agent-environment-setup/shared/agents/mobile-developer.md +1 -1
  269. package/workflows/workflows/agent-environment-setup/shared/agents/orchestrator.md +28 -400
  270. package/workflows/workflows/agent-environment-setup/shared/agents/penetration-tester.md +1 -1
  271. package/workflows/workflows/agent-environment-setup/shared/agents/performance-optimizer.md +1 -1
  272. package/workflows/workflows/agent-environment-setup/shared/agents/product-manager.md +1 -1
  273. package/workflows/workflows/agent-environment-setup/shared/agents/product-owner.md +1 -1
  274. package/workflows/workflows/agent-environment-setup/shared/agents/project-planner.md +1 -1
  275. package/workflows/workflows/agent-environment-setup/shared/agents/qa-automation-engineer.md +1 -1
  276. package/workflows/workflows/agent-environment-setup/shared/agents/security-auditor.md +1 -1
  277. package/workflows/workflows/agent-environment-setup/shared/agents/seo-specialist.md +1 -1
  278. package/workflows/workflows/agent-environment-setup/shared/agents/test-engineer.md +1 -1
  279. package/workflows/workflows/agent-environment-setup/shared/agents/vercel-expert.md +1 -1
  280. package/workflows/powers/sub-agents/scripts/run_subagent.py.bak +0 -512
  281. /package/{workflows → mcp}/powers/atlassian-mcp/steering/authentication-patterns.md +0 -0
  282. /package/{workflows → mcp}/powers/atlassian-mcp/steering/common-workflows.md +0 -0
  283. /package/{workflows → mcp}/powers/atlassian-mcp/steering/confluence-operations.md +0 -0
  284. /package/{workflows → mcp}/powers/atlassian-mcp/steering/jira-queries.md +0 -0
  285. /package/{workflows → mcp}/powers/atlassian-mcp/steering/mcp-server-setup.md +0 -0
  286. /package/{workflows → mcp}/powers/building-mcp-server-on-cloudflare/steering/examples.md +0 -0
  287. /package/{workflows → mcp}/powers/building-mcp-server-on-cloudflare/steering/oauth-setup.md +0 -0
  288. /package/{workflows → mcp}/powers/building-mcp-server-on-cloudflare/steering/troubleshooting.md +0 -0
  289. /package/{workflows → mcp}/powers/mcp-builder/LICENSE.txt +0 -0
  290. /package/{workflows → mcp}/powers/mcp-builder/reference/evaluation.md +0 -0
  291. /package/{workflows → mcp}/powers/mcp-builder/reference/mcp_best_practices.md +0 -0
  292. /package/{workflows → mcp}/powers/mcp-builder/reference/node_mcp_server.md +0 -0
  293. /package/{workflows → mcp}/powers/mcp-builder/reference/python_mcp_server.md +0 -0
  294. /package/{workflows → mcp}/powers/mcp-builder/scripts/connections.py +0 -0
  295. /package/{workflows → mcp}/powers/mcp-builder/scripts/evaluation.py +0 -0
  296. /package/{workflows → mcp}/powers/mcp-builder/scripts/example_evaluation.xml +0 -0
  297. /package/{workflows → mcp}/powers/mcp-builder/scripts/requirements.txt +0 -0
  298. /package/{workflows → mcp}/powers/mcp-developer/steering/protocol.md +0 -0
  299. /package/{workflows → mcp}/powers/mcp-developer/steering/python-sdk.md +0 -0
  300. /package/{workflows → mcp}/powers/mcp-developer/steering/resources.md +0 -0
  301. /package/{workflows → mcp}/powers/mcp-developer/steering/tools.md +0 -0
  302. /package/{workflows → mcp}/powers/mcp-developer/steering/typescript-sdk.md +0 -0
  303. /package/{workflows → mcp}/powers/postman/flutter-expert/POWER.md +0 -0
  304. /package/{workflows → mcp}/powers/postman/flutter-expert/SKILL.md +0 -0
  305. /package/{workflows → mcp}/powers/postman/flutter-expert/steering/bloc-state.md +0 -0
  306. /package/{workflows → mcp}/powers/postman/flutter-expert/steering/engineering-principles.md +0 -0
  307. /package/{workflows → mcp}/powers/postman/flutter-expert/steering/gorouter-navigation.md +0 -0
  308. /package/{workflows → mcp}/powers/postman/flutter-expert/steering/performance.md +0 -0
  309. /package/{workflows → mcp}/powers/postman/flutter-expert/steering/project-structure.md +0 -0
  310. /package/{workflows → mcp}/powers/postman/flutter-expert/steering/riverpod-state.md +0 -0
  311. /package/{workflows → mcp}/powers/postman/flutter-expert/steering/widget-patterns.md +0 -0
  312. /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/POWER.md +0 -0
  313. /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/SKILL.md +0 -0
  314. /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/steering/log_redaction.md +0 -0
  315. /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/steering/network_hardening.md +0 -0
  316. /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/steering/secret-scanning.md +0 -0
  317. /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/steering/secure_storage_policy.md +0 -0
  318. /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/steering/vulnerability-patterns.md +0 -0
  319. /package/{workflows → mcp}/powers/postman/flutter-security-reviewer/templates/security_review_response.md +0 -0
  320. /package/{workflows → mcp}/powers/postman/flutter-test-master/POWER.md +0 -0
  321. /package/{workflows → mcp}/powers/postman/flutter-test-master/SKILL.md +0 -0
  322. /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/golden-testing.md +0 -0
  323. /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/integration-testing.md +0 -0
  324. /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/property-testing.md +0 -0
  325. /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/riverpod-testing.md +0 -0
  326. /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/test-utilities.md +0 -0
  327. /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/unit-testing.md +0 -0
  328. /package/{workflows → mcp}/powers/postman/flutter-test-master/steering/widget-testing.md +0 -0
  329. /package/{workflows → mcp}/powers/postman/git-commit/POWER.md +0 -0
  330. /package/{workflows → mcp}/powers/postman/git-commit/SKILL.md +0 -0
  331. /package/{workflows → mcp}/powers/postman/gorouter-restoration/POWER.md +0 -0
  332. /package/{workflows → mcp}/powers/postman/gorouter-restoration/SKILL.md +0 -0
  333. /package/{workflows → mcp}/powers/postman/gorouter-restoration/steering/guard_patterns.md +0 -0
  334. /package/{workflows → mcp}/powers/postman/gorouter-restoration/steering/tab_preservation.md +0 -0
  335. /package/{workflows → mcp}/powers/postman/gorouter-restoration/templates/guard_redirect.md +0 -0
  336. /package/{workflows → mcp}/powers/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -0
  337. /package/{workflows → mcp}/powers/postman/mcp.json +0 -0
  338. /package/{workflows → mcp}/powers/postman/microservices-architect/POWER.md +0 -0
  339. /package/{workflows → mcp}/powers/postman/microservices-architect/SKILL.md +0 -0
  340. /package/{workflows → mcp}/powers/postman/microservices-architect/steering/communication.md +0 -0
  341. /package/{workflows → mcp}/powers/postman/microservices-architect/steering/data.md +0 -0
  342. /package/{workflows → mcp}/powers/postman/microservices-architect/steering/decomposition.md +0 -0
  343. /package/{workflows → mcp}/powers/postman/microservices-architect/steering/observability.md +0 -0
  344. /package/{workflows → mcp}/powers/postman/microservices-architect/steering/patterns.md +0 -0
  345. /package/{workflows → mcp}/powers/postman/nestjs-expert/POWER.md +0 -0
  346. /package/{workflows → mcp}/powers/postman/nestjs-expert/SKILL.md +0 -0
  347. /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/authentication.md +0 -0
  348. /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/controllers-routing.md +0 -0
  349. /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/dtos-validation.md +0 -0
  350. /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/migration-from-express.md +0 -0
  351. /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/secure-sessions.md +0 -0
  352. /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/services-di.md +0 -0
  353. /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/strangler-fig-pattern.md +0 -0
  354. /package/{workflows → mcp}/powers/postman/nestjs-expert/steering/testing-patterns.md +0 -0
  355. /package/{workflows → mcp}/powers/postman/oneup-design/POWER.md +0 -0
  356. /package/{workflows → mcp}/powers/postman/oneup-design/SKILL.md +0 -0
  357. /package/{workflows → mcp}/powers/postman/oneup-design/steering/colors.md +0 -0
  358. /package/{workflows → mcp}/powers/postman/oneup-design/steering/components.md +0 -0
  359. /package/{workflows → mcp}/powers/postman/oneup-design/steering/spacing.md +0 -0
  360. /package/{workflows → mcp}/powers/postman/openapi-docs/POWER.md +0 -0
  361. /package/{workflows → mcp}/powers/postman/openapi-docs/SKILL.md +0 -0
  362. /package/{workflows → mcp}/powers/postman/openapi-docs/steering/crud-templates.md +0 -0
  363. /package/{workflows → mcp}/powers/postman/openapi-docs/steering/framework-express.md +0 -0
  364. /package/{workflows → mcp}/powers/postman/openapi-docs/steering/framework-fastapi.md +0 -0
  365. /package/{workflows → mcp}/powers/postman/openapi-docs/steering/framework-nestjs.md +0 -0
  366. /package/{workflows → mcp}/powers/postman/openapi-docs/steering/framework-raw-openapi.md +0 -0
  367. /package/{workflows → mcp}/powers/postman/openapi-docs/steering/openapi-checklist.md +0 -0
  368. /package/{workflows → mcp}/powers/postman/openapi-docs/steering/stoplight-ui.md +0 -0
  369. /package/{workflows → mcp}/powers/postman/steering/steering.md +0 -0
  370. /package/{workflows → mcp}/skills/atlassian-mcp/references/authentication-patterns.md +0 -0
  371. /package/{workflows → mcp}/skills/atlassian-mcp/references/common-workflows.md +0 -0
  372. /package/{workflows → mcp}/skills/atlassian-mcp/references/confluence-operations.md +0 -0
  373. /package/{workflows → mcp}/skills/atlassian-mcp/references/jira-queries.md +0 -0
  374. /package/{workflows → mcp}/skills/atlassian-mcp/references/mcp-server-setup.md +0 -0
  375. /package/{workflows → mcp}/skills/building-mcp-server-on-cloudflare/references/examples.md +0 -0
  376. /package/{workflows → mcp}/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +0 -0
  377. /package/{workflows → mcp}/skills/building-mcp-server-on-cloudflare/references/tool-patterns.md +0 -0
  378. /package/{workflows → mcp}/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +0 -0
  379. /package/{workflows → mcp}/skills/mcp-builder/LICENSE.txt +0 -0
  380. /package/{workflows → mcp}/skills/mcp-builder/reference/evaluation.md +0 -0
  381. /package/{workflows → mcp}/skills/mcp-builder/reference/mcp_best_practices.md +0 -0
  382. /package/{workflows → mcp}/skills/mcp-builder/reference/node_mcp_server.md +0 -0
  383. /package/{workflows → mcp}/skills/mcp-builder/reference/python_mcp_server.md +0 -0
  384. /package/{workflows → mcp}/skills/mcp-builder/scripts/connections.py +0 -0
  385. /package/{workflows → mcp}/skills/mcp-builder/scripts/evaluation.py +0 -0
  386. /package/{workflows → mcp}/skills/mcp-builder/scripts/example_evaluation.xml +0 -0
  387. /package/{workflows → mcp}/skills/mcp-builder/scripts/requirements.txt +0 -0
  388. /package/{workflows → mcp}/skills/mcp-developer/references/protocol.md +0 -0
  389. /package/{workflows → mcp}/skills/mcp-developer/references/python-sdk.md +0 -0
  390. /package/{workflows → mcp}/skills/mcp-developer/references/resources.md +0 -0
  391. /package/{workflows → mcp}/skills/mcp-developer/references/tools.md +0 -0
  392. /package/{workflows → mcp}/skills/mcp-developer/references/typescript-sdk.md +0 -0
  393. /package/{workflows → mcp}/skills/postman/POWER.md +0 -0
  394. /package/{workflows → mcp}/skills/postman/flutter-expert/POWER.md +0 -0
  395. /package/{workflows → mcp}/skills/postman/flutter-expert/SKILL.md +0 -0
  396. /package/{workflows → mcp}/skills/postman/flutter-expert/references/bloc-state.md +0 -0
  397. /package/{workflows → mcp}/skills/postman/flutter-expert/references/engineering-principles.md +0 -0
  398. /package/{workflows → mcp}/skills/postman/flutter-expert/references/gorouter-navigation.md +0 -0
  399. /package/{workflows → mcp}/skills/postman/flutter-expert/references/performance.md +0 -0
  400. /package/{workflows → mcp}/skills/postman/flutter-expert/references/project-structure.md +0 -0
  401. /package/{workflows → mcp}/skills/postman/flutter-expert/references/riverpod-state.md +0 -0
  402. /package/{workflows → mcp}/skills/postman/flutter-expert/references/widget-patterns.md +0 -0
  403. /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/POWER.md +0 -0
  404. /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/SKILL.md +0 -0
  405. /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/references/log_redaction.md +0 -0
  406. /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/references/network_hardening.md +0 -0
  407. /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/references/secret-scanning.md +0 -0
  408. /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/references/secure_storage_policy.md +0 -0
  409. /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/references/vulnerability-patterns.md +0 -0
  410. /package/{workflows → mcp}/skills/postman/flutter-security-reviewer/templates/security_review_response.md +0 -0
  411. /package/{workflows → mcp}/skills/postman/flutter-test-master/POWER.md +0 -0
  412. /package/{workflows → mcp}/skills/postman/flutter-test-master/SKILL.md +0 -0
  413. /package/{workflows → mcp}/skills/postman/flutter-test-master/references/golden-testing.md +0 -0
  414. /package/{workflows → mcp}/skills/postman/flutter-test-master/references/integration-testing.md +0 -0
  415. /package/{workflows → mcp}/skills/postman/flutter-test-master/references/property-testing.md +0 -0
  416. /package/{workflows → mcp}/skills/postman/flutter-test-master/references/riverpod-testing.md +0 -0
  417. /package/{workflows → mcp}/skills/postman/flutter-test-master/references/test-utilities.md +0 -0
  418. /package/{workflows → mcp}/skills/postman/flutter-test-master/references/unit-testing.md +0 -0
  419. /package/{workflows → mcp}/skills/postman/flutter-test-master/references/widget-testing.md +0 -0
  420. /package/{workflows → mcp}/skills/postman/git-commit/POWER.md +0 -0
  421. /package/{workflows → mcp}/skills/postman/git-commit/SKILL.md +0 -0
  422. /package/{workflows → mcp}/skills/postman/gorouter-restoration/POWER.md +0 -0
  423. /package/{workflows → mcp}/skills/postman/gorouter-restoration/SKILL.md +0 -0
  424. /package/{workflows → mcp}/skills/postman/gorouter-restoration/references/guard_patterns.md +0 -0
  425. /package/{workflows → mcp}/skills/postman/gorouter-restoration/references/tab_preservation.md +0 -0
  426. /package/{workflows → mcp}/skills/postman/gorouter-restoration/templates/guard_redirect.md +0 -0
  427. /package/{workflows → mcp}/skills/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -0
  428. /package/{workflows → mcp}/skills/postman/mcp.json +0 -0
  429. /package/{workflows → mcp}/skills/postman/microservices-architect/POWER.md +0 -0
  430. /package/{workflows → mcp}/skills/postman/microservices-architect/SKILL.md +0 -0
  431. /package/{workflows → mcp}/skills/postman/microservices-architect/references/communication.md +0 -0
  432. /package/{workflows → mcp}/skills/postman/microservices-architect/references/data.md +0 -0
  433. /package/{workflows → mcp}/skills/postman/microservices-architect/references/decomposition.md +0 -0
  434. /package/{workflows → mcp}/skills/postman/microservices-architect/references/observability.md +0 -0
  435. /package/{workflows → mcp}/skills/postman/microservices-architect/references/patterns.md +0 -0
  436. /package/{workflows → mcp}/skills/postman/nestjs-expert/POWER.md +0 -0
  437. /package/{workflows → mcp}/skills/postman/nestjs-expert/SKILL.md +0 -0
  438. /package/{workflows → mcp}/skills/postman/nestjs-expert/references/authentication.md +0 -0
  439. /package/{workflows → mcp}/skills/postman/nestjs-expert/references/controllers-routing.md +0 -0
  440. /package/{workflows → mcp}/skills/postman/nestjs-expert/references/dtos-validation.md +0 -0
  441. /package/{workflows → mcp}/skills/postman/nestjs-expert/references/migration-from-express.md +0 -0
  442. /package/{workflows → mcp}/skills/postman/nestjs-expert/references/secure-sessions.md +0 -0
  443. /package/{workflows → mcp}/skills/postman/nestjs-expert/references/services-di.md +0 -0
  444. /package/{workflows → mcp}/skills/postman/nestjs-expert/references/strangler-fig-pattern.md +0 -0
  445. /package/{workflows → mcp}/skills/postman/nestjs-expert/references/testing-patterns.md +0 -0
  446. /package/{workflows → mcp}/skills/postman/oneup-design/POWER.md +0 -0
  447. /package/{workflows → mcp}/skills/postman/oneup-design/SKILL.md +0 -0
  448. /package/{workflows → mcp}/skills/postman/oneup-design/references/colors.md +0 -0
  449. /package/{workflows → mcp}/skills/postman/oneup-design/references/components.md +0 -0
  450. /package/{workflows → mcp}/skills/postman/oneup-design/references/spacing.md +0 -0
  451. /package/{workflows → mcp}/skills/postman/openapi-docs/POWER.md +0 -0
  452. /package/{workflows → mcp}/skills/postman/openapi-docs/SKILL.md +0 -0
  453. /package/{workflows → mcp}/skills/postman/openapi-docs/references/crud-templates.md +0 -0
  454. /package/{workflows → mcp}/skills/postman/openapi-docs/references/framework-express.md +0 -0
  455. /package/{workflows → mcp}/skills/postman/openapi-docs/references/framework-fastapi.md +0 -0
  456. /package/{workflows → mcp}/skills/postman/openapi-docs/references/framework-nestjs.md +0 -0
  457. /package/{workflows → mcp}/skills/postman/openapi-docs/references/framework-raw-openapi.md +0 -0
  458. /package/{workflows → mcp}/skills/postman/openapi-docs/references/openapi-checklist.md +0 -0
  459. /package/{workflows → mcp}/skills/postman/openapi-docs/references/stoplight-ui.md +0 -0
  460. /package/{workflows → mcp}/skills/postman/references/steering.md +0 -0
package/bin/cubis.js CHANGED
@@ -249,6 +249,13 @@ const TECH_RUST_FRAMEWORK_SIGNALS = [
249
249
  ["rocket", "Rocket"],
250
250
  ["tokio", "Tokio"]
251
251
  ];
252
+ const SKILL_PROFILES = new Set(["core", "web-backend", "full"]);
253
+ const DEFAULT_SKILL_PROFILE = "core";
254
+ const CATALOG_FILES = Object.freeze({
255
+ core: path.join("skills", "catalogs", "core.json"),
256
+ "web-backend": path.join("skills", "catalogs", "web-backend.json"),
257
+ mcp: path.join("catalogs", "default.json")
258
+ });
252
259
 
253
260
  function platformInstallsCustomAgents(platformId) {
254
261
  const profile = WORKFLOW_PROFILES[platformId];
@@ -287,6 +294,22 @@ function agentAssetsRoot() {
287
294
  return existsSync(preferred) ? preferred : packageRoot();
288
295
  }
289
296
 
297
+ function workflowSkillsRoot() {
298
+ return path.join(agentAssetsRoot(), "skills");
299
+ }
300
+
301
+ function mcpRoot() {
302
+ return path.join(packageRoot(), "mcp");
303
+ }
304
+
305
+ function mcpSkillsRoot() {
306
+ return path.join(mcpRoot(), "skills");
307
+ }
308
+
309
+ function mcpCatalogRoot() {
310
+ return path.join(mcpRoot(), "catalogs");
311
+ }
312
+
290
313
  function expandPath(inputPath, cwd = process.cwd()) {
291
314
  if (!inputPath) return cwd;
292
315
  if (inputPath === "~") return os.homedir();
@@ -308,6 +331,32 @@ function normalizeScope(value) {
308
331
  throw new Error(`Unknown scope '${value}'. Use --scope project or --scope global.`);
309
332
  }
310
333
 
334
+ function normalizeSkillProfile(value) {
335
+ const normalized = String(value || DEFAULT_SKILL_PROFILE)
336
+ .trim()
337
+ .toLowerCase();
338
+ if (!SKILL_PROFILES.has(normalized)) {
339
+ throw new Error(`Unknown skill profile '${value}'. Use core|web-backend|full.`);
340
+ }
341
+ return normalized;
342
+ }
343
+
344
+ function resolveWorkflowSkillInstallOptions(options) {
345
+ const allSkills = Boolean(options.allSkills);
346
+ let skillProfile = normalizeSkillProfile(options.skillProfile || DEFAULT_SKILL_PROFILE);
347
+ let includeMcp = Boolean(options.includeMcp);
348
+
349
+ if (allSkills) {
350
+ skillProfile = "full";
351
+ includeMcp = true;
352
+ }
353
+
354
+ return {
355
+ skillProfile,
356
+ includeMcp
357
+ };
358
+ }
359
+
311
360
  function normalizeMcpScope(value, fallback = "project") {
312
361
  if (!value) return fallback;
313
362
  const normalized = value.trim().toLowerCase();
@@ -1144,6 +1193,20 @@ async function collectTechSnapshot(rootDir) {
1144
1193
  keyScripts.push({ name, command: packageScripts.get(name) });
1145
1194
  }
1146
1195
 
1196
+ const mcpSignals = [];
1197
+ const mcpSignalPaths = [
1198
+ "cbx_config.json",
1199
+ ".cbx/mcp",
1200
+ ".vscode/mcp.json",
1201
+ ".gemini/settings.json",
1202
+ ".copilot/mcp-config.json"
1203
+ ];
1204
+ for (const signalPath of mcpSignalPaths) {
1205
+ if (fileExists(signalPath)) {
1206
+ mcpSignals.push(signalPath);
1207
+ }
1208
+ }
1209
+
1147
1210
  return {
1148
1211
  rootDir,
1149
1212
  scannedFiles: discoveredFiles.length,
@@ -1158,7 +1221,8 @@ async function collectTechSnapshot(rootDir) {
1158
1221
  go: toSortedArray(goModules),
1159
1222
  python: toSortedArray(pythonPackages),
1160
1223
  rust: toSortedArray(rustCrates)
1161
- }
1224
+ },
1225
+ mcpSignals: toSortedArray(mcpSignals)
1162
1226
  };
1163
1227
  }
1164
1228
 
@@ -1178,13 +1242,66 @@ function appendTechPackageSection(lines, heading, packages) {
1178
1242
  lines.push("");
1179
1243
  }
1180
1244
 
1181
- function buildTechMd(snapshot) {
1245
+ function inferRecommendedSkills(snapshot) {
1246
+ const recommended = new Set();
1247
+ const hasFramework = (name) => snapshot.frameworks.includes(name);
1248
+
1249
+ if (hasFramework("Next.js")) {
1250
+ recommended.add("nextjs-developer");
1251
+ recommended.add("react-expert");
1252
+ recommended.add("typescript-pro");
1253
+ }
1254
+ if (hasFramework("React")) {
1255
+ recommended.add("react-expert");
1256
+ }
1257
+ if (hasFramework("NestJS")) {
1258
+ recommended.add("nestjs-expert");
1259
+ recommended.add("nodejs-best-practices");
1260
+ }
1261
+ if (hasFramework("FastAPI")) {
1262
+ recommended.add("fastapi-expert");
1263
+ recommended.add("python-pro");
1264
+ }
1265
+ if (hasFramework("Go Modules")) {
1266
+ recommended.add("golang-pro");
1267
+ }
1268
+ if (hasFramework("Rust Cargo")) {
1269
+ recommended.add("rust-pro");
1270
+ }
1271
+ if (hasFramework("Flutter")) {
1272
+ recommended.add("flutter-expert");
1273
+ recommended.add("mobile-design");
1274
+ }
1275
+ if (recommended.size === 0) {
1276
+ recommended.add("clean-code");
1277
+ recommended.add("plan-writing");
1278
+ }
1279
+
1280
+ return [...recommended].sort((a, b) => a.localeCompare(b));
1281
+ }
1282
+
1283
+ function inferContextBudget(snapshot) {
1284
+ const webBackendSignals = new Set(["Next.js", "React", "NestJS", "FastAPI", "Go Modules", "Rust Cargo"]);
1285
+ const webBackendDetected = snapshot.frameworks.some((framework) => webBackendSignals.has(framework));
1286
+ const suggestedProfile = webBackendDetected ? "web-backend" : "core";
1287
+ const includeMcp = Array.isArray(snapshot.mcpSignals) && snapshot.mcpSignals.length > 0;
1288
+ return {
1289
+ suggestedProfile,
1290
+ includeMcp
1291
+ };
1292
+ }
1293
+
1294
+ function buildTechMd(snapshot, { compact = false } = {}) {
1182
1295
  const lines = [];
1296
+ const recommendedSkills = inferRecommendedSkills(snapshot);
1297
+ const contextBudget = inferContextBudget(snapshot);
1298
+
1183
1299
  lines.push("# TECH.md");
1184
1300
  lines.push("");
1185
1301
  lines.push(`Generated by cbx on ${new Date().toISOString()}.`);
1186
1302
  lines.push(`Root: \`${toPosixPath(snapshot.rootDir)}\``);
1187
1303
  lines.push(`Files scanned: ${snapshot.scannedFiles} (max ${TECH_SCAN_MAX_FILES}).`);
1304
+ lines.push(`Mode: ${compact ? "compact" : "full"}.`);
1188
1305
  lines.push("");
1189
1306
 
1190
1307
  lines.push("## Stack Snapshot");
@@ -1207,43 +1324,69 @@ function buildTechMd(snapshot) {
1207
1324
  }
1208
1325
  lines.push("");
1209
1326
 
1210
- lines.push("## Package Signals");
1211
- appendTechPackageSection(lines, "JavaScript / TypeScript (package.json)", snapshot.packageSignals.javascript);
1212
- appendTechPackageSection(lines, "Dart / Flutter (pubspec.yaml)", snapshot.packageSignals.dart);
1213
- appendTechPackageSection(lines, "Go Modules (go.mod)", snapshot.packageSignals.go);
1214
- appendTechPackageSection(lines, "Python Packages (requirements / pyproject)", snapshot.packageSignals.python);
1215
- appendTechPackageSection(lines, "Rust Crates (Cargo.toml)", snapshot.packageSignals.rust);
1216
-
1217
- lines.push("## Tooling and Lockfiles");
1218
- if (snapshot.lockfiles.length === 0) {
1219
- lines.push("- No lockfiles detected.");
1220
- } else {
1221
- lines.push(`- ${snapshot.lockfiles.join(", ")}`);
1327
+ lines.push("## Recommended Skills");
1328
+ for (const skillId of recommendedSkills) {
1329
+ lines.push(`- \`${skillId}\``);
1222
1330
  }
1223
1331
  lines.push("");
1224
1332
 
1225
- lines.push("## Key Scripts");
1226
- if (snapshot.keyScripts.length === 0) {
1227
- lines.push("- No common scripts detected.");
1333
+ lines.push("## MCP Footprint");
1334
+ if (!snapshot.mcpSignals || snapshot.mcpSignals.length === 0) {
1335
+ lines.push("- No MCP configuration signals detected in workspace.");
1228
1336
  } else {
1229
- for (const script of snapshot.keyScripts) {
1230
- lines.push(`- \`${script.name}\`: \`${script.command}\``);
1337
+ for (const signal of snapshot.mcpSignals) {
1338
+ lines.push(`- \`${signal}\``);
1231
1339
  }
1232
1340
  }
1233
1341
  lines.push("");
1234
1342
 
1235
- lines.push("## Important Top-Level Paths");
1236
- if (snapshot.topDirs.length === 0) {
1237
- lines.push("- No significant top-level directories detected.");
1238
- } else {
1239
- for (const dir of snapshot.topDirs) {
1240
- lines.push(`- \`${dir}/\``);
1343
+ lines.push("## Context Budget Notes");
1344
+ lines.push(`- Suggested install profile: \`${contextBudget.suggestedProfile}\``);
1345
+ lines.push(`- Suggested MCP inclusion: \`${contextBudget.includeMcp ? "--include-mcp" : "skip --include-mcp"}\``);
1346
+ lines.push("- Use `--all-skills` only when task scope clearly requires full catalog breadth.");
1347
+ lines.push("");
1348
+
1349
+ if (!compact) {
1350
+ lines.push("## Package Signals");
1351
+ appendTechPackageSection(lines, "JavaScript / TypeScript (package.json)", snapshot.packageSignals.javascript);
1352
+ appendTechPackageSection(lines, "Dart / Flutter (pubspec.yaml)", snapshot.packageSignals.dart);
1353
+ appendTechPackageSection(lines, "Go Modules (go.mod)", snapshot.packageSignals.go);
1354
+ appendTechPackageSection(lines, "Python Packages (requirements / pyproject)", snapshot.packageSignals.python);
1355
+ appendTechPackageSection(lines, "Rust Crates (Cargo.toml)", snapshot.packageSignals.rust);
1356
+
1357
+ lines.push("## Tooling and Lockfiles");
1358
+ if (snapshot.lockfiles.length === 0) {
1359
+ lines.push("- No lockfiles detected.");
1360
+ } else {
1361
+ lines.push(`- ${snapshot.lockfiles.join(", ")}`);
1362
+ }
1363
+ lines.push("");
1364
+
1365
+ lines.push("## Key Scripts");
1366
+ if (snapshot.keyScripts.length === 0) {
1367
+ lines.push("- No common scripts detected.");
1368
+ } else {
1369
+ for (const script of snapshot.keyScripts) {
1370
+ lines.push(`- \`${script.name}\`: \`${script.command}\``);
1371
+ }
1372
+ }
1373
+ lines.push("");
1374
+
1375
+ lines.push("## Important Top-Level Paths");
1376
+ if (snapshot.topDirs.length === 0) {
1377
+ lines.push("- No significant top-level directories detected.");
1378
+ } else {
1379
+ for (const dir of snapshot.topDirs) {
1380
+ lines.push(`- \`${dir}/\``);
1381
+ }
1241
1382
  }
1383
+ lines.push("");
1242
1384
  }
1243
- lines.push("");
1244
1385
 
1245
1386
  lines.push("## Maintenance");
1246
- lines.push("- Re-run `cbx rules tech-md --overwrite` after major stack or architecture changes.");
1387
+ lines.push(
1388
+ `- Re-run \`cbx rules tech-md --overwrite${compact ? " --compact" : ""}\` after major stack or architecture changes.`
1389
+ );
1247
1390
  lines.push("");
1248
1391
 
1249
1392
  return lines.join("\n");
@@ -1489,7 +1632,7 @@ function extractSkillIdFromIndexPath(indexPathValue) {
1489
1632
  }
1490
1633
 
1491
1634
  async function resolveTopLevelSkillIdsFromIndex() {
1492
- const skillsRoot = path.join(agentAssetsRoot(), "skills");
1635
+ const skillsRoot = workflowSkillsRoot();
1493
1636
  const indexPath = path.join(skillsRoot, "skills_index.json");
1494
1637
  if (!(await pathExists(indexPath))) return [];
1495
1638
 
@@ -1531,11 +1674,97 @@ async function resolveTopLevelSkillIdsFromIndex() {
1531
1674
  return topLevelIds;
1532
1675
  }
1533
1676
 
1534
- async function resolveInstallSkillIds({ platformSpec, extraSkillIds = [] }) {
1535
- const indexedSkillIds = await resolveTopLevelSkillIdsFromIndex();
1677
+ async function readSkillCatalogIds(catalogPath) {
1678
+ if (!(await pathExists(catalogPath))) return [];
1679
+ let parsed;
1680
+ try {
1681
+ parsed = JSON.parse(await readFile(catalogPath, "utf8"));
1682
+ } catch {
1683
+ return [];
1684
+ }
1685
+
1686
+ const values = Array.isArray(parsed) ? parsed : Array.isArray(parsed?.skills) ? parsed.skills : [];
1687
+ const ids = [];
1688
+ const seen = new Set();
1689
+ for (const value of values) {
1690
+ const id = String(value || "").trim();
1691
+ if (!id || id.startsWith(".")) continue;
1692
+ const key = id.toLowerCase();
1693
+ if (seen.has(key)) continue;
1694
+ seen.add(key);
1695
+ ids.push(id);
1696
+ }
1697
+ return ids;
1698
+ }
1699
+
1700
+ async function listTopLevelSkillIdsFromRoot(rootPath) {
1701
+ if (!(await pathExists(rootPath))) return [];
1702
+ const entries = await readdir(rootPath, { withFileTypes: true });
1703
+ const out = [];
1704
+ for (const entry of entries) {
1705
+ if (!entry.isDirectory() || entry.name.startsWith(".")) continue;
1706
+ const skillId = entry.name;
1707
+ const skillFile = path.join(rootPath, skillId, "SKILL.md");
1708
+ if (!(await pathExists(skillFile))) continue;
1709
+ out.push(skillId);
1710
+ }
1711
+ return out.sort((a, b) => a.localeCompare(b));
1712
+ }
1713
+
1714
+ async function resolveSkillSourceDirectory(skillId) {
1715
+ const normalized = String(skillId || "").trim();
1716
+ if (!normalized) return null;
1717
+ const candidates = [
1718
+ path.join(mcpSkillsRoot(), normalized),
1719
+ path.join(workflowSkillsRoot(), normalized)
1720
+ ];
1721
+ for (const candidate of candidates) {
1722
+ const skillFile = path.join(candidate, "SKILL.md");
1723
+ if ((await pathExists(candidate)) && (await pathExists(skillFile))) {
1724
+ return candidate;
1725
+ }
1726
+ }
1727
+ return null;
1728
+ }
1729
+
1730
+ async function resolveCatalogSkillIds({
1731
+ profile,
1732
+ includeMcp
1733
+ }) {
1734
+ const workflowCatalogPath = path.join(workflowSkillsRoot(), CATALOG_FILES[profile] || "");
1735
+ const workflowCatalogIds = await readSkillCatalogIds(workflowCatalogPath);
1736
+ const workflowProfileIds =
1737
+ workflowCatalogIds.length > 0
1738
+ ? workflowCatalogIds
1739
+ : profile === "full"
1740
+ ? await listTopLevelSkillIdsFromRoot(workflowSkillsRoot())
1741
+ : [];
1742
+
1743
+ if (!includeMcp) return workflowProfileIds;
1744
+
1745
+ const mcpCatalogPath = path.join(mcpCatalogRoot(), CATALOG_FILES.mcp);
1746
+ const mcpCatalogIds = await readSkillCatalogIds(mcpCatalogPath);
1747
+ const mcpIds = mcpCatalogIds.length > 0 ? mcpCatalogIds : await listTopLevelSkillIdsFromRoot(mcpSkillsRoot());
1748
+ return unique([...workflowProfileIds, ...mcpIds]);
1749
+ }
1750
+
1751
+ async function resolveInstallSkillIds({
1752
+ platformSpec,
1753
+ extraSkillIds = [],
1754
+ skillProfile = DEFAULT_SKILL_PROFILE,
1755
+ includeMcp = false
1756
+ }) {
1536
1757
  const fallbackManifestSkillIds = Array.isArray(platformSpec.skills) ? platformSpec.skills : [];
1758
+ const catalogSelectedIds = await resolveCatalogSkillIds({
1759
+ profile: normalizeSkillProfile(skillProfile),
1760
+ includeMcp
1761
+ });
1537
1762
 
1538
- let selected = indexedSkillIds.length > 0 ? indexedSkillIds : fallbackManifestSkillIds;
1763
+ let selected = catalogSelectedIds.length > 0 ? catalogSelectedIds : fallbackManifestSkillIds;
1764
+ if (selected.length === 0) {
1765
+ const indexedSkillIds = await resolveTopLevelSkillIdsFromIndex();
1766
+ selected = indexedSkillIds;
1767
+ }
1539
1768
  if (Array.isArray(platformSpec.skillAllowList) && platformSpec.skillAllowList.length > 0) {
1540
1769
  const allow = new Set(platformSpec.skillAllowList.map((item) => String(item).toLowerCase()));
1541
1770
  selected = selected.filter((skillId) => allow.has(String(skillId).toLowerCase()));
@@ -3738,6 +3967,8 @@ async function installBundleArtifacts({
3738
3967
  overwrite,
3739
3968
  profilePathsOverride = null,
3740
3969
  extraSkillIds = [],
3970
+ skillProfile = DEFAULT_SKILL_PROFILE,
3971
+ includeMcp = false,
3741
3972
  terminalVerifierSelection = null,
3742
3973
  dryRun = false,
3743
3974
  cwd = process.cwd()
@@ -3838,14 +4069,18 @@ async function installBundleArtifacts({
3838
4069
 
3839
4070
  const skillIds = await resolveInstallSkillIds({
3840
4071
  platformSpec,
3841
- extraSkillIds
4072
+ extraSkillIds,
4073
+ skillProfile,
4074
+ includeMcp
3842
4075
  });
3843
4076
  for (const skillId of skillIds) {
3844
- const source = path.join(agentAssetsRoot(), "skills", skillId);
4077
+ const source = await resolveSkillSourceDirectory(skillId);
3845
4078
  const destination = path.join(profilePaths.skillsDir, skillId);
3846
4079
 
3847
- if (!(await pathExists(source))) {
3848
- throw new Error(`Missing skill source directory: ${source}`);
4080
+ if (!source) {
4081
+ throw new Error(
4082
+ `Missing skill source directory for '${skillId}' (checked ${workflowSkillsRoot()} and ${mcpSkillsRoot()}).`
4083
+ );
3849
4084
  }
3850
4085
 
3851
4086
  const result = await copyArtifact({ source, destination, overwrite, dryRun });
@@ -3855,7 +4090,7 @@ async function installBundleArtifacts({
3855
4090
  }
3856
4091
 
3857
4092
  // Copy skills_index.json if it exists in the package skills root
3858
- const skillsIndexSource = path.join(agentAssetsRoot(), "skills", "skills_index.json");
4093
+ const skillsIndexSource = path.join(workflowSkillsRoot(), "skills_index.json");
3859
4094
  if (await pathExists(skillsIndexSource)) {
3860
4095
  const skillsIndexDest = path.join(profilePaths.skillsDir, "skills_index.json");
3861
4096
  const indexResult = await copyArtifact({ source: skillsIndexSource, destination: skillsIndexDest, overwrite, dryRun });
@@ -4638,6 +4873,13 @@ function withInstallOptions(command) {
4638
4873
  "--terminal-verifier <provider>",
4639
4874
  "Antigravity only: verifier provider (codex|gemini). Implies --terminal-integration."
4640
4875
  )
4876
+ .option(
4877
+ "--skill-profile <profile>",
4878
+ "skill install profile: core|web-backend|full (default: core)",
4879
+ DEFAULT_SKILL_PROFILE
4880
+ )
4881
+ .option("--include-mcp", "include MCP catalog skills in install selection")
4882
+ .option("--all-skills", "alias for --skill-profile full --include-mcp")
4641
4883
  .option("--dry-run", "preview install without writing files")
4642
4884
  .option("-y, --yes", "skip interactive confirmation");
4643
4885
  }
@@ -4849,6 +5091,7 @@ async function runWorkflowInstall(options) {
4849
5091
  options,
4850
5092
  cwd
4851
5093
  });
5094
+ const skillInstallOptions = resolveWorkflowSkillInstallOptions(options);
4852
5095
 
4853
5096
  const installResult = await installBundleArtifacts({
4854
5097
  bundleId,
@@ -4858,6 +5101,8 @@ async function runWorkflowInstall(options) {
4858
5101
  overwrite: Boolean(options.overwrite),
4859
5102
  profilePathsOverride: artifactProfilePaths,
4860
5103
  extraSkillIds: postmanSelection.enabled ? [POSTMAN_SKILL_ID] : [],
5104
+ skillProfile: skillInstallOptions.skillProfile,
5105
+ includeMcp: skillInstallOptions.includeMcp,
4861
5106
  terminalVerifierSelection,
4862
5107
  dryRun,
4863
5108
  cwd
@@ -4970,6 +5215,147 @@ async function runWorkflowInstall(options) {
4970
5215
  }
4971
5216
  }
4972
5217
 
5218
+ async function listInstalledTopLevelSkillDirs(skillsDir) {
5219
+ if (!skillsDir || !(await pathExists(skillsDir))) return [];
5220
+ const entries = await readdir(skillsDir, { withFileTypes: true });
5221
+ const out = [];
5222
+ for (const entry of entries) {
5223
+ if (!entry.isDirectory() || entry.name.startsWith(".")) continue;
5224
+ const skillId = entry.name;
5225
+ const skillFile = path.join(skillsDir, skillId, "SKILL.md");
5226
+ if (!(await pathExists(skillFile))) continue;
5227
+ out.push(path.join(skillsDir, skillId));
5228
+ }
5229
+ return out.sort((a, b) => path.basename(a).localeCompare(path.basename(b)));
5230
+ }
5231
+
5232
+ function isProtectedInstalledSkillId(skillId) {
5233
+ const normalized = String(skillId || "").trim().toLowerCase();
5234
+ if (!normalized) return true;
5235
+ if (normalized.startsWith("workflow-") || normalized.startsWith("agent-")) return true;
5236
+ return normalized.startsWith(".");
5237
+ }
5238
+
5239
+ async function runWorkflowPruneSkills(options) {
5240
+ try {
5241
+ const cwd = process.cwd();
5242
+ const scope = normalizeScope(options.scope);
5243
+ const dryRun = Boolean(options.dryRun);
5244
+ const platform = await resolvePlatform(options.platform, scope, cwd);
5245
+ const profilePaths = await resolveArtifactProfilePaths(platform, scope, cwd);
5246
+ const bundleId = await chooseBundle(options.bundle || "agent-environment-setup");
5247
+ const manifest = await readBundleManifest(bundleId);
5248
+ const platformSpec = manifest.platforms?.[platform];
5249
+ if (!platformSpec) {
5250
+ throw new Error(`Bundle '${bundleId}' does not define platform '${platform}'.`);
5251
+ }
5252
+ if (!profilePaths.skillsDir || !(await pathExists(profilePaths.skillsDir))) {
5253
+ console.log(`No skills directory found at ${profilePaths.skillsDir || "(unset)"}. Nothing to prune.`);
5254
+ return;
5255
+ }
5256
+
5257
+ const skillInstallOptions = resolveWorkflowSkillInstallOptions(options);
5258
+ const desiredSkillIds = await resolveInstallSkillIds({
5259
+ platformSpec,
5260
+ extraSkillIds: [],
5261
+ skillProfile: skillInstallOptions.skillProfile,
5262
+ includeMcp: skillInstallOptions.includeMcp
5263
+ });
5264
+ const desiredSet = new Set(desiredSkillIds.map((skillId) => String(skillId).toLowerCase()));
5265
+
5266
+ const installedSkillDirs = await listInstalledTopLevelSkillDirs(profilePaths.skillsDir);
5267
+ const installedSkillIds = installedSkillDirs.map((dirPath) => path.basename(dirPath));
5268
+ const nestedPlan = await cleanupNestedDuplicateSkills({
5269
+ skillsRootDir: profilePaths.skillsDir,
5270
+ installedSkillDirs,
5271
+ dryRun: true
5272
+ });
5273
+
5274
+ const removeOutOfProfile = installedSkillIds
5275
+ .filter((skillId) => !isProtectedInstalledSkillId(skillId))
5276
+ .filter((skillId) => !desiredSet.has(skillId.toLowerCase()))
5277
+ .sort((a, b) => a.localeCompare(b));
5278
+
5279
+ const hasWork = nestedPlan.length > 0 || removeOutOfProfile.length > 0;
5280
+ if (!hasWork) {
5281
+ console.log("No stale skills found. Installed set already matches selected profile.");
5282
+ console.log(
5283
+ `Profile: ${skillInstallOptions.skillProfile} (include MCP: ${skillInstallOptions.includeMcp ? "yes" : "no"})`
5284
+ );
5285
+ return;
5286
+ }
5287
+
5288
+ if (!dryRun && !options.yes && process.stdin.isTTY) {
5289
+ const proceed = await confirm({
5290
+ message: `Prune ${nestedPlan.length + removeOutOfProfile.length} stale skill path(s) for ${platform} (${scope})?`,
5291
+ default: true
5292
+ });
5293
+ if (!proceed) {
5294
+ console.log("Cancelled.");
5295
+ process.exit(0);
5296
+ }
5297
+ }
5298
+
5299
+ const nestedResult = await cleanupNestedDuplicateSkills({
5300
+ skillsRootDir: profilePaths.skillsDir,
5301
+ installedSkillDirs,
5302
+ dryRun
5303
+ });
5304
+
5305
+ const removedOutOfProfile = [];
5306
+ for (const skillId of removeOutOfProfile) {
5307
+ const targetDir = path.join(profilePaths.skillsDir, skillId);
5308
+ if (!dryRun) {
5309
+ await rm(targetDir, { recursive: true, force: true });
5310
+ }
5311
+ removedOutOfProfile.push({
5312
+ skillId,
5313
+ path: targetDir,
5314
+ action: dryRun ? "would-remove" : "removed"
5315
+ });
5316
+ }
5317
+
5318
+ const beforeCount = installedSkillIds.length;
5319
+ const afterCount = dryRun
5320
+ ? beforeCount - nestedResult.length - removedOutOfProfile.length
5321
+ : (await listInstalledTopLevelSkillDirs(profilePaths.skillsDir)).length;
5322
+
5323
+ console.log("Skill prune summary:");
5324
+ console.log(`- Platform/scope: ${platform}/${scope}`);
5325
+ console.log(`- Bundle: ${bundleId}`);
5326
+ console.log(
5327
+ `- Profile: ${skillInstallOptions.skillProfile} (include MCP: ${skillInstallOptions.includeMcp ? "yes" : "no"})`
5328
+ );
5329
+ console.log(`- Installed before: ${beforeCount}`);
5330
+ console.log(`- Nested duplicates: ${nestedResult.length}`);
5331
+ console.log(`- Out-of-profile: ${removedOutOfProfile.length}`);
5332
+ console.log(`- Installed after: ${afterCount}`);
5333
+
5334
+ if (nestedResult.length > 0) {
5335
+ console.log("\nNested duplicate removals:");
5336
+ for (const item of nestedResult) {
5337
+ console.log(`- ${item.action}: ${item.path}`);
5338
+ }
5339
+ }
5340
+ if (removedOutOfProfile.length > 0) {
5341
+ console.log("\nOut-of-profile removals:");
5342
+ for (const item of removedOutOfProfile) {
5343
+ console.log(`- ${item.action}: ${item.path}`);
5344
+ }
5345
+ }
5346
+ if (dryRun) {
5347
+ console.log("\nDry-run complete. Re-run without `--dry-run` to apply changes.");
5348
+ }
5349
+ } catch (error) {
5350
+ if (error?.name === "ExitPromptError") {
5351
+ console.error("\nCancelled.");
5352
+ process.exit(130);
5353
+ }
5354
+ console.error(`\nError: ${error.message}`);
5355
+ process.exit(1);
5356
+ }
5357
+ }
5358
+
4973
5359
  async function runWorkflowRemove(target, options) {
4974
5360
  try {
4975
5361
  if (!target) {
@@ -5737,11 +6123,12 @@ async function runRulesTechMd(options) {
5737
6123
  try {
5738
6124
  const dryRun = Boolean(options.dryRun);
5739
6125
  const overwrite = Boolean(options.overwrite);
6126
+ const compact = Boolean(options.compact);
5740
6127
  const cwd = process.cwd();
5741
6128
  const workspaceRoot = findWorkspaceRoot(cwd);
5742
6129
  const outputPath = options.output ? expandPath(options.output, cwd) : path.join(workspaceRoot, "TECH.md");
5743
6130
  const snapshot = await collectTechSnapshot(workspaceRoot);
5744
- const content = buildTechMd(snapshot);
6131
+ const content = buildTechMd(snapshot, { compact });
5745
6132
  const result = await writeTextFile({
5746
6133
  targetPath: outputPath,
5747
6134
  content: `${content}\n`,
@@ -5753,6 +6140,7 @@ async function runRulesTechMd(options) {
5753
6140
  console.log(`File: ${result.filePath}`);
5754
6141
  console.log(`Root scanned: ${toPosixPath(workspaceRoot)}`);
5755
6142
  console.log(`Files scanned: ${snapshot.scannedFiles}`);
6143
+ console.log(`Mode: ${compact ? "compact" : "full"}`);
5756
6144
  if (dryRun) {
5757
6145
  console.log("\nDry-run complete. Re-run without `--dry-run` to apply changes.");
5758
6146
  }
@@ -5791,6 +6179,22 @@ withWorkflowBaseOptions(
5791
6179
  .option("-y, --yes", "skip interactive confirmation")
5792
6180
  ).action(runWorkflowRemove);
5793
6181
 
6182
+ withWorkflowBaseOptions(
6183
+ workflowsCommand
6184
+ .command("prune-skills")
6185
+ .description("Prune nested duplicates and out-of-profile installed skills")
6186
+ .option("-b, --bundle <bundle>", "bundle id (default: agent-environment-setup)")
6187
+ .option(
6188
+ "--skill-profile <profile>",
6189
+ "skill prune profile: core|web-backend|full (default: core)",
6190
+ DEFAULT_SKILL_PROFILE
6191
+ )
6192
+ .option("--include-mcp", "include MCP catalog skills in desired profile set")
6193
+ .option("--all-skills", "alias for --skill-profile full --include-mcp")
6194
+ .option("--dry-run", "preview prune operations without deleting files")
6195
+ .option("-y, --yes", "skip interactive confirmation")
6196
+ ).action(runWorkflowPruneSkills);
6197
+
5794
6198
  withWorkflowBaseOptions(
5795
6199
  workflowsCommand
5796
6200
  .command("sync-rules")
@@ -5857,6 +6261,25 @@ withWorkflowBaseOptions(
5857
6261
  await runWorkflowRemove(target, options);
5858
6262
  });
5859
6263
 
6264
+ withWorkflowBaseOptions(
6265
+ skillsCommand
6266
+ .command("prune-skills")
6267
+ .description("Alias for workflows prune-skills")
6268
+ .option("-b, --bundle <bundle>", "bundle id (default: agent-environment-setup)")
6269
+ .option(
6270
+ "--skill-profile <profile>",
6271
+ "skill prune profile: core|web-backend|full (default: core)",
6272
+ DEFAULT_SKILL_PROFILE
6273
+ )
6274
+ .option("--include-mcp", "include MCP catalog skills in desired profile set")
6275
+ .option("--all-skills", "alias for --skill-profile full --include-mcp")
6276
+ .option("--dry-run", "preview prune operations without deleting files")
6277
+ .option("-y, --yes", "skip interactive confirmation")
6278
+ ).action(async (options) => {
6279
+ printSkillsDeprecation();
6280
+ await runWorkflowPruneSkills(options);
6281
+ });
6282
+
5860
6283
  withWorkflowBaseOptions(
5861
6284
  skillsCommand
5862
6285
  .command("sync-rules")
@@ -5920,6 +6343,7 @@ rulesCommand
5920
6343
  .description("Scan the codebase and generate/update TECH.md")
5921
6344
  .option("--output <path>", "output path (default: <workspace-root>/TECH.md)")
5922
6345
  .option("--overwrite", "overwrite existing TECH.md")
6346
+ .option("--compact", "generate compact TECH.md (stack + context budget only)")
5923
6347
  .option("--dry-run", "preview generation without writing files")
5924
6348
  .action(runRulesTechMd);
5925
6349
 
package/mcp/README.md ADDED
@@ -0,0 +1,17 @@
1
+ # MCP Skill Catalog
2
+
3
+ This directory contains MCP-focused skills and powers separated from workflow-first skills.
4
+
5
+ ## Layout
6
+
7
+ - `mcp/skills/<skill-id>/...`: canonical MCP skills
8
+ - `mcp/powers/<skill-id>/...`: canonical MCP powers
9
+ - `mcp/catalogs/default.json`: default MCP profile used by `--include-mcp`
10
+
11
+ ## Install Behavior
12
+
13
+ - `cbx workflows install` defaults to workflow profile `core` (no MCP skills).
14
+ - Add `--include-mcp` to append MCP skills from `mcp/catalogs/default.json`.
15
+ - Use `--all-skills` to install workflow full profile + MCP skills.
16
+
17
+ Legacy wrappers remain in `workflows/skills/*` and `workflows/powers/*` for compatibility.