bigpowers 2.83.3 → 2.84.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/.codebuddy/skills/align-grid/SKILL.md +110 -0
  2. package/.codebuddy/skills/assess-impact/SKILL.md +91 -0
  3. package/.codebuddy/skills/audit-code/SKILL.md +187 -0
  4. package/.codebuddy/skills/audit-plan/SKILL.md +89 -0
  5. package/.codebuddy/skills/build-epic/SKILL.md +105 -0
  6. package/.codebuddy/skills/change-request/SKILL.md +121 -0
  7. package/.codebuddy/skills/commit-message/SKILL.md +140 -0
  8. package/.codebuddy/skills/compose-workflow/SKILL.md +82 -0
  9. package/.codebuddy/skills/context7-mcp/SKILL.md +55 -0
  10. package/.codebuddy/skills/craft-skill/SKILL.md +179 -0
  11. package/.codebuddy/skills/deepen-architecture/SKILL.md +260 -0
  12. package/.codebuddy/skills/define-language/SKILL.md +80 -0
  13. package/.codebuddy/skills/define-success/SKILL.md +65 -0
  14. package/.codebuddy/skills/delegate-task/SKILL.md +91 -0
  15. package/.codebuddy/skills/deploy/SKILL.md +198 -0
  16. package/.codebuddy/skills/design-interface/SKILL.md +97 -0
  17. package/.codebuddy/skills/develop-tdd/SKILL.md +406 -0
  18. package/.codebuddy/skills/diagnose-root/SKILL.md +24 -0
  19. package/.codebuddy/skills/diagnose-stall/SKILL.md +54 -0
  20. package/.codebuddy/skills/dispatch-agents/SKILL.md +118 -0
  21. package/.codebuddy/skills/edit-document/SKILL.md +23 -0
  22. package/.codebuddy/skills/elaborate-spec/SKILL.md +101 -0
  23. package/.codebuddy/skills/enforce-first/SKILL.md +32 -0
  24. package/.codebuddy/skills/evolve-skill/SKILL.md +55 -0
  25. package/.codebuddy/skills/execute-plan/SKILL.md +61 -0
  26. package/.codebuddy/skills/extract-design/SKILL.md +132 -0
  27. package/.codebuddy/skills/find-way/SKILL.md +191 -0
  28. package/.codebuddy/skills/fix-bug/SKILL.md +67 -0
  29. package/.codebuddy/skills/gate-trace/SKILL.md +88 -0
  30. package/.codebuddy/skills/generate-allure-report/SKILL.md +285 -0
  31. package/.codebuddy/skills/grill-me/SKILL.md +96 -0
  32. package/.codebuddy/skills/grill-with-docs/SKILL.md +41 -0
  33. package/.codebuddy/skills/guard-git/SKILL.md +231 -0
  34. package/.codebuddy/skills/harden-vps/SKILL.md +288 -0
  35. package/.codebuddy/skills/hook-commits/SKILL.md +94 -0
  36. package/.codebuddy/skills/inspect-quality/SKILL.md +106 -0
  37. package/.codebuddy/skills/investigate-bug/SKILL.md +127 -0
  38. package/.codebuddy/skills/kickoff-branch/SKILL.md +143 -0
  39. package/.codebuddy/skills/maintain-wiki/SKILL.md +64 -0
  40. package/.codebuddy/skills/map-codebase/SKILL.md +71 -0
  41. package/.codebuddy/skills/migrate-spec/SKILL.md +862 -0
  42. package/.codebuddy/skills/model-domain/SKILL.md +232 -0
  43. package/.codebuddy/skills/orchestrate-project/SKILL.md +174 -0
  44. package/.codebuddy/skills/organize-workspace/SKILL.md +164 -0
  45. package/.codebuddy/skills/plan-refactor/SKILL.md +87 -0
  46. package/.codebuddy/skills/plan-release/SKILL.md +145 -0
  47. package/.codebuddy/skills/plan-tests/SKILL.md +75 -0
  48. package/.codebuddy/skills/plan-work/SKILL.md +260 -0
  49. package/.codebuddy/skills/publish-package/SKILL.md +328 -0
  50. package/.codebuddy/skills/quick-fix/SKILL.md +114 -0
  51. package/.codebuddy/skills/release-branch/SKILL.md +298 -0
  52. package/.codebuddy/skills/request-review/SKILL.md +112 -0
  53. package/.codebuddy/skills/research-first/SKILL.md +87 -0
  54. package/.codebuddy/skills/reset-baseline/SKILL.md +21 -0
  55. package/.codebuddy/skills/respond-review/SKILL.md +71 -0
  56. package/.codebuddy/skills/run-benchmark/SKILL.md +85 -0
  57. package/.codebuddy/skills/run-evals/SKILL.md +80 -0
  58. package/.codebuddy/skills/run-planning/SKILL.md +101 -0
  59. package/.codebuddy/skills/scope-work/SKILL.md +63 -0
  60. package/.codebuddy/skills/search-skills/SKILL.md +73 -0
  61. package/.codebuddy/skills/security-review/SKILL.md +384 -0
  62. package/.codebuddy/skills/seed-conventions/SKILL.md +285 -0
  63. package/.codebuddy/skills/session-state/SKILL.md +146 -0
  64. package/.codebuddy/skills/setup-environment/SKILL.md +39 -0
  65. package/.codebuddy/skills/simulate-agents/SKILL.md +26 -0
  66. package/.codebuddy/skills/slice-tasks/SKILL.md +68 -0
  67. package/.codebuddy/skills/smoke-test/SKILL.md +242 -0
  68. package/.codebuddy/skills/spike-prototype/SKILL.md +95 -0
  69. package/.codebuddy/skills/stocktake-skills/SKILL.md +72 -0
  70. package/.codebuddy/skills/survey-context/SKILL.md +135 -0
  71. package/.codebuddy/skills/terse-mode/SKILL.md +42 -0
  72. package/.codebuddy/skills/trace-requirement/SKILL.md +69 -0
  73. package/.codebuddy/skills/using-bigpowers/SKILL.md +111 -0
  74. package/.codebuddy/skills/validate-contracts/SKILL.md +309 -0
  75. package/.codebuddy/skills/validate-fix/SKILL.md +106 -0
  76. package/.codebuddy/skills/verify-work/SKILL.md +191 -0
  77. package/.codebuddy/skills/visual-dashboard/SKILL.md +50 -0
  78. package/.codebuddy/skills/wire-ci/SKILL.md +375 -0
  79. package/.codebuddy/skills/wire-observability/SKILL.md +97 -0
  80. package/.codebuddy/skills/write-document/SKILL.md +255 -0
  81. package/.codex/skills/align-grid/SKILL.md +110 -0
  82. package/.codex/skills/assess-impact/SKILL.md +91 -0
  83. package/.codex/skills/audit-code/SKILL.md +187 -0
  84. package/.codex/skills/audit-plan/SKILL.md +89 -0
  85. package/.codex/skills/build-epic/SKILL.md +105 -0
  86. package/.codex/skills/change-request/SKILL.md +121 -0
  87. package/.codex/skills/commit-message/SKILL.md +140 -0
  88. package/.codex/skills/compose-workflow/SKILL.md +82 -0
  89. package/.codex/skills/context7-mcp/SKILL.md +55 -0
  90. package/.codex/skills/craft-skill/SKILL.md +179 -0
  91. package/.codex/skills/deepen-architecture/SKILL.md +260 -0
  92. package/.codex/skills/define-language/SKILL.md +80 -0
  93. package/.codex/skills/define-success/SKILL.md +65 -0
  94. package/.codex/skills/delegate-task/SKILL.md +91 -0
  95. package/.codex/skills/deploy/SKILL.md +198 -0
  96. package/.codex/skills/design-interface/SKILL.md +97 -0
  97. package/.codex/skills/develop-tdd/SKILL.md +406 -0
  98. package/.codex/skills/diagnose-root/SKILL.md +24 -0
  99. package/.codex/skills/diagnose-stall/SKILL.md +54 -0
  100. package/.codex/skills/dispatch-agents/SKILL.md +118 -0
  101. package/.codex/skills/edit-document/SKILL.md +23 -0
  102. package/.codex/skills/elaborate-spec/SKILL.md +101 -0
  103. package/.codex/skills/enforce-first/SKILL.md +32 -0
  104. package/.codex/skills/evolve-skill/SKILL.md +55 -0
  105. package/.codex/skills/execute-plan/SKILL.md +61 -0
  106. package/.codex/skills/extract-design/SKILL.md +132 -0
  107. package/.codex/skills/find-way/SKILL.md +191 -0
  108. package/.codex/skills/fix-bug/SKILL.md +67 -0
  109. package/.codex/skills/gate-trace/SKILL.md +88 -0
  110. package/.codex/skills/generate-allure-report/SKILL.md +285 -0
  111. package/.codex/skills/grill-me/SKILL.md +96 -0
  112. package/.codex/skills/grill-with-docs/SKILL.md +41 -0
  113. package/.codex/skills/guard-git/SKILL.md +231 -0
  114. package/.codex/skills/harden-vps/SKILL.md +288 -0
  115. package/.codex/skills/hook-commits/SKILL.md +94 -0
  116. package/.codex/skills/inspect-quality/SKILL.md +106 -0
  117. package/.codex/skills/investigate-bug/SKILL.md +127 -0
  118. package/.codex/skills/kickoff-branch/SKILL.md +143 -0
  119. package/.codex/skills/maintain-wiki/SKILL.md +64 -0
  120. package/.codex/skills/map-codebase/SKILL.md +71 -0
  121. package/.codex/skills/migrate-spec/SKILL.md +862 -0
  122. package/.codex/skills/model-domain/SKILL.md +232 -0
  123. package/.codex/skills/orchestrate-project/SKILL.md +174 -0
  124. package/.codex/skills/organize-workspace/SKILL.md +164 -0
  125. package/.codex/skills/plan-refactor/SKILL.md +87 -0
  126. package/.codex/skills/plan-release/SKILL.md +145 -0
  127. package/.codex/skills/plan-tests/SKILL.md +75 -0
  128. package/.codex/skills/plan-work/SKILL.md +260 -0
  129. package/.codex/skills/publish-package/SKILL.md +328 -0
  130. package/.codex/skills/quick-fix/SKILL.md +114 -0
  131. package/.codex/skills/release-branch/SKILL.md +298 -0
  132. package/.codex/skills/request-review/SKILL.md +112 -0
  133. package/.codex/skills/research-first/SKILL.md +87 -0
  134. package/.codex/skills/reset-baseline/SKILL.md +21 -0
  135. package/.codex/skills/respond-review/SKILL.md +71 -0
  136. package/.codex/skills/run-benchmark/SKILL.md +85 -0
  137. package/.codex/skills/run-evals/SKILL.md +80 -0
  138. package/.codex/skills/run-planning/SKILL.md +101 -0
  139. package/.codex/skills/scope-work/SKILL.md +63 -0
  140. package/.codex/skills/search-skills/SKILL.md +73 -0
  141. package/.codex/skills/security-review/SKILL.md +384 -0
  142. package/.codex/skills/seed-conventions/SKILL.md +285 -0
  143. package/.codex/skills/session-state/SKILL.md +146 -0
  144. package/.codex/skills/setup-environment/SKILL.md +39 -0
  145. package/.codex/skills/simulate-agents/SKILL.md +26 -0
  146. package/.codex/skills/slice-tasks/SKILL.md +68 -0
  147. package/.codex/skills/smoke-test/SKILL.md +242 -0
  148. package/.codex/skills/spike-prototype/SKILL.md +95 -0
  149. package/.codex/skills/stocktake-skills/SKILL.md +72 -0
  150. package/.codex/skills/survey-context/SKILL.md +135 -0
  151. package/.codex/skills/terse-mode/SKILL.md +42 -0
  152. package/.codex/skills/trace-requirement/SKILL.md +69 -0
  153. package/.codex/skills/using-bigpowers/SKILL.md +111 -0
  154. package/.codex/skills/validate-contracts/SKILL.md +309 -0
  155. package/.codex/skills/validate-fix/SKILL.md +106 -0
  156. package/.codex/skills/verify-work/SKILL.md +191 -0
  157. package/.codex/skills/visual-dashboard/SKILL.md +50 -0
  158. package/.codex/skills/wire-ci/SKILL.md +375 -0
  159. package/.codex/skills/wire-observability/SKILL.md +97 -0
  160. package/.codex/skills/write-document/SKILL.md +255 -0
  161. package/.kilocode/rules/align-grid.md +110 -0
  162. package/.kilocode/rules/assess-impact.md +91 -0
  163. package/.kilocode/rules/audit-code.md +187 -0
  164. package/.kilocode/rules/audit-plan.md +89 -0
  165. package/.kilocode/rules/build-epic.md +105 -0
  166. package/.kilocode/rules/change-request.md +121 -0
  167. package/.kilocode/rules/commit-message.md +140 -0
  168. package/.kilocode/rules/compose-workflow.md +82 -0
  169. package/.kilocode/rules/context7-mcp.md +55 -0
  170. package/.kilocode/rules/craft-skill.md +179 -0
  171. package/.kilocode/rules/deepen-architecture.md +260 -0
  172. package/.kilocode/rules/define-language.md +80 -0
  173. package/.kilocode/rules/define-success.md +65 -0
  174. package/.kilocode/rules/delegate-task.md +91 -0
  175. package/.kilocode/rules/deploy.md +198 -0
  176. package/.kilocode/rules/design-interface.md +97 -0
  177. package/.kilocode/rules/develop-tdd.md +406 -0
  178. package/.kilocode/rules/diagnose-root.md +24 -0
  179. package/.kilocode/rules/diagnose-stall.md +54 -0
  180. package/.kilocode/rules/dispatch-agents.md +118 -0
  181. package/.kilocode/rules/edit-document.md +23 -0
  182. package/.kilocode/rules/elaborate-spec.md +101 -0
  183. package/.kilocode/rules/enforce-first.md +32 -0
  184. package/.kilocode/rules/evolve-skill.md +55 -0
  185. package/.kilocode/rules/execute-plan.md +61 -0
  186. package/.kilocode/rules/extract-design.md +132 -0
  187. package/.kilocode/rules/find-way.md +191 -0
  188. package/.kilocode/rules/fix-bug.md +67 -0
  189. package/.kilocode/rules/gate-trace.md +88 -0
  190. package/.kilocode/rules/generate-allure-report.md +285 -0
  191. package/.kilocode/rules/grill-me.md +96 -0
  192. package/.kilocode/rules/grill-with-docs.md +41 -0
  193. package/.kilocode/rules/guard-git.md +231 -0
  194. package/.kilocode/rules/harden-vps.md +288 -0
  195. package/.kilocode/rules/hook-commits.md +94 -0
  196. package/.kilocode/rules/inspect-quality.md +106 -0
  197. package/.kilocode/rules/investigate-bug.md +127 -0
  198. package/.kilocode/rules/kickoff-branch.md +143 -0
  199. package/.kilocode/rules/maintain-wiki.md +64 -0
  200. package/.kilocode/rules/map-codebase.md +71 -0
  201. package/.kilocode/rules/migrate-spec.md +862 -0
  202. package/.kilocode/rules/model-domain.md +232 -0
  203. package/.kilocode/rules/orchestrate-project.md +174 -0
  204. package/.kilocode/rules/organize-workspace.md +164 -0
  205. package/.kilocode/rules/plan-refactor.md +87 -0
  206. package/.kilocode/rules/plan-release.md +145 -0
  207. package/.kilocode/rules/plan-tests.md +75 -0
  208. package/.kilocode/rules/plan-work.md +260 -0
  209. package/.kilocode/rules/publish-package.md +328 -0
  210. package/.kilocode/rules/quick-fix.md +114 -0
  211. package/.kilocode/rules/release-branch.md +298 -0
  212. package/.kilocode/rules/request-review.md +112 -0
  213. package/.kilocode/rules/research-first.md +87 -0
  214. package/.kilocode/rules/reset-baseline.md +21 -0
  215. package/.kilocode/rules/respond-review.md +71 -0
  216. package/.kilocode/rules/run-benchmark.md +85 -0
  217. package/.kilocode/rules/run-evals.md +80 -0
  218. package/.kilocode/rules/run-planning.md +101 -0
  219. package/.kilocode/rules/scope-work.md +63 -0
  220. package/.kilocode/rules/search-skills.md +73 -0
  221. package/.kilocode/rules/security-review.md +384 -0
  222. package/.kilocode/rules/seed-conventions.md +285 -0
  223. package/.kilocode/rules/session-state.md +146 -0
  224. package/.kilocode/rules/setup-environment.md +39 -0
  225. package/.kilocode/rules/simulate-agents.md +26 -0
  226. package/.kilocode/rules/slice-tasks.md +68 -0
  227. package/.kilocode/rules/smoke-test.md +242 -0
  228. package/.kilocode/rules/spike-prototype.md +95 -0
  229. package/.kilocode/rules/stocktake-skills.md +72 -0
  230. package/.kilocode/rules/survey-context.md +135 -0
  231. package/.kilocode/rules/terse-mode.md +42 -0
  232. package/.kilocode/rules/trace-requirement.md +69 -0
  233. package/.kilocode/rules/using-bigpowers.md +111 -0
  234. package/.kilocode/rules/validate-contracts.md +309 -0
  235. package/.kilocode/rules/validate-fix.md +106 -0
  236. package/.kilocode/rules/verify-work.md +191 -0
  237. package/.kilocode/rules/visual-dashboard.md +50 -0
  238. package/.kilocode/rules/wire-ci.md +375 -0
  239. package/.kilocode/rules/wire-observability.md +97 -0
  240. package/.kilocode/rules/write-document.md +255 -0
  241. package/.pi/package.json +1 -1
  242. package/.trae/skills/align-grid/SKILL.md +110 -0
  243. package/.trae/skills/assess-impact/SKILL.md +91 -0
  244. package/.trae/skills/audit-code/SKILL.md +187 -0
  245. package/.trae/skills/audit-plan/SKILL.md +89 -0
  246. package/.trae/skills/build-epic/SKILL.md +105 -0
  247. package/.trae/skills/change-request/SKILL.md +121 -0
  248. package/.trae/skills/commit-message/SKILL.md +140 -0
  249. package/.trae/skills/compose-workflow/SKILL.md +82 -0
  250. package/.trae/skills/context7-mcp/SKILL.md +55 -0
  251. package/.trae/skills/craft-skill/SKILL.md +179 -0
  252. package/.trae/skills/deepen-architecture/SKILL.md +260 -0
  253. package/.trae/skills/define-language/SKILL.md +80 -0
  254. package/.trae/skills/define-success/SKILL.md +65 -0
  255. package/.trae/skills/delegate-task/SKILL.md +91 -0
  256. package/.trae/skills/deploy/SKILL.md +198 -0
  257. package/.trae/skills/design-interface/SKILL.md +97 -0
  258. package/.trae/skills/develop-tdd/SKILL.md +406 -0
  259. package/.trae/skills/diagnose-root/SKILL.md +24 -0
  260. package/.trae/skills/diagnose-stall/SKILL.md +54 -0
  261. package/.trae/skills/dispatch-agents/SKILL.md +118 -0
  262. package/.trae/skills/edit-document/SKILL.md +23 -0
  263. package/.trae/skills/elaborate-spec/SKILL.md +101 -0
  264. package/.trae/skills/enforce-first/SKILL.md +32 -0
  265. package/.trae/skills/evolve-skill/SKILL.md +55 -0
  266. package/.trae/skills/execute-plan/SKILL.md +61 -0
  267. package/.trae/skills/extract-design/SKILL.md +132 -0
  268. package/.trae/skills/find-way/SKILL.md +191 -0
  269. package/.trae/skills/fix-bug/SKILL.md +67 -0
  270. package/.trae/skills/gate-trace/SKILL.md +88 -0
  271. package/.trae/skills/generate-allure-report/SKILL.md +285 -0
  272. package/.trae/skills/grill-me/SKILL.md +96 -0
  273. package/.trae/skills/grill-with-docs/SKILL.md +41 -0
  274. package/.trae/skills/guard-git/SKILL.md +231 -0
  275. package/.trae/skills/harden-vps/SKILL.md +288 -0
  276. package/.trae/skills/hook-commits/SKILL.md +94 -0
  277. package/.trae/skills/inspect-quality/SKILL.md +106 -0
  278. package/.trae/skills/investigate-bug/SKILL.md +127 -0
  279. package/.trae/skills/kickoff-branch/SKILL.md +143 -0
  280. package/.trae/skills/maintain-wiki/SKILL.md +64 -0
  281. package/.trae/skills/map-codebase/SKILL.md +71 -0
  282. package/.trae/skills/migrate-spec/SKILL.md +862 -0
  283. package/.trae/skills/model-domain/SKILL.md +232 -0
  284. package/.trae/skills/orchestrate-project/SKILL.md +174 -0
  285. package/.trae/skills/organize-workspace/SKILL.md +164 -0
  286. package/.trae/skills/plan-refactor/SKILL.md +87 -0
  287. package/.trae/skills/plan-release/SKILL.md +145 -0
  288. package/.trae/skills/plan-tests/SKILL.md +75 -0
  289. package/.trae/skills/plan-work/SKILL.md +260 -0
  290. package/.trae/skills/publish-package/SKILL.md +328 -0
  291. package/.trae/skills/quick-fix/SKILL.md +114 -0
  292. package/.trae/skills/release-branch/SKILL.md +298 -0
  293. package/.trae/skills/request-review/SKILL.md +112 -0
  294. package/.trae/skills/research-first/SKILL.md +87 -0
  295. package/.trae/skills/reset-baseline/SKILL.md +21 -0
  296. package/.trae/skills/respond-review/SKILL.md +71 -0
  297. package/.trae/skills/run-benchmark/SKILL.md +85 -0
  298. package/.trae/skills/run-evals/SKILL.md +80 -0
  299. package/.trae/skills/run-planning/SKILL.md +101 -0
  300. package/.trae/skills/scope-work/SKILL.md +63 -0
  301. package/.trae/skills/search-skills/SKILL.md +73 -0
  302. package/.trae/skills/security-review/SKILL.md +384 -0
  303. package/.trae/skills/seed-conventions/SKILL.md +285 -0
  304. package/.trae/skills/session-state/SKILL.md +146 -0
  305. package/.trae/skills/setup-environment/SKILL.md +39 -0
  306. package/.trae/skills/simulate-agents/SKILL.md +26 -0
  307. package/.trae/skills/slice-tasks/SKILL.md +68 -0
  308. package/.trae/skills/smoke-test/SKILL.md +242 -0
  309. package/.trae/skills/spike-prototype/SKILL.md +95 -0
  310. package/.trae/skills/stocktake-skills/SKILL.md +72 -0
  311. package/.trae/skills/survey-context/SKILL.md +135 -0
  312. package/.trae/skills/terse-mode/SKILL.md +42 -0
  313. package/.trae/skills/trace-requirement/SKILL.md +69 -0
  314. package/.trae/skills/using-bigpowers/SKILL.md +111 -0
  315. package/.trae/skills/validate-contracts/SKILL.md +309 -0
  316. package/.trae/skills/validate-fix/SKILL.md +106 -0
  317. package/.trae/skills/verify-work/SKILL.md +191 -0
  318. package/.trae/skills/visual-dashboard/SKILL.md +50 -0
  319. package/.trae/skills/wire-ci/SKILL.md +375 -0
  320. package/.trae/skills/wire-observability/SKILL.md +97 -0
  321. package/.trae/skills/write-document/SKILL.md +255 -0
  322. package/.windsurf/rules/align-grid.md +110 -0
  323. package/.windsurf/rules/assess-impact.md +91 -0
  324. package/.windsurf/rules/audit-code.md +187 -0
  325. package/.windsurf/rules/audit-plan.md +89 -0
  326. package/.windsurf/rules/build-epic.md +105 -0
  327. package/.windsurf/rules/change-request.md +121 -0
  328. package/.windsurf/rules/commit-message.md +140 -0
  329. package/.windsurf/rules/compose-workflow.md +82 -0
  330. package/.windsurf/rules/context7-mcp.md +55 -0
  331. package/.windsurf/rules/craft-skill.md +179 -0
  332. package/.windsurf/rules/deepen-architecture.md +260 -0
  333. package/.windsurf/rules/define-language.md +80 -0
  334. package/.windsurf/rules/define-success.md +65 -0
  335. package/.windsurf/rules/delegate-task.md +91 -0
  336. package/.windsurf/rules/deploy.md +198 -0
  337. package/.windsurf/rules/design-interface.md +97 -0
  338. package/.windsurf/rules/develop-tdd.md +406 -0
  339. package/.windsurf/rules/diagnose-root.md +24 -0
  340. package/.windsurf/rules/diagnose-stall.md +54 -0
  341. package/.windsurf/rules/dispatch-agents.md +118 -0
  342. package/.windsurf/rules/edit-document.md +23 -0
  343. package/.windsurf/rules/elaborate-spec.md +101 -0
  344. package/.windsurf/rules/enforce-first.md +32 -0
  345. package/.windsurf/rules/evolve-skill.md +55 -0
  346. package/.windsurf/rules/execute-plan.md +61 -0
  347. package/.windsurf/rules/extract-design.md +132 -0
  348. package/.windsurf/rules/find-way.md +191 -0
  349. package/.windsurf/rules/fix-bug.md +67 -0
  350. package/.windsurf/rules/gate-trace.md +88 -0
  351. package/.windsurf/rules/generate-allure-report.md +285 -0
  352. package/.windsurf/rules/grill-me.md +96 -0
  353. package/.windsurf/rules/grill-with-docs.md +41 -0
  354. package/.windsurf/rules/guard-git.md +231 -0
  355. package/.windsurf/rules/harden-vps.md +288 -0
  356. package/.windsurf/rules/hook-commits.md +94 -0
  357. package/.windsurf/rules/inspect-quality.md +106 -0
  358. package/.windsurf/rules/investigate-bug.md +127 -0
  359. package/.windsurf/rules/kickoff-branch.md +143 -0
  360. package/.windsurf/rules/maintain-wiki.md +64 -0
  361. package/.windsurf/rules/map-codebase.md +71 -0
  362. package/.windsurf/rules/migrate-spec.md +862 -0
  363. package/.windsurf/rules/model-domain.md +232 -0
  364. package/.windsurf/rules/orchestrate-project.md +174 -0
  365. package/.windsurf/rules/organize-workspace.md +164 -0
  366. package/.windsurf/rules/plan-refactor.md +87 -0
  367. package/.windsurf/rules/plan-release.md +145 -0
  368. package/.windsurf/rules/plan-tests.md +75 -0
  369. package/.windsurf/rules/plan-work.md +260 -0
  370. package/.windsurf/rules/publish-package.md +328 -0
  371. package/.windsurf/rules/quick-fix.md +114 -0
  372. package/.windsurf/rules/release-branch.md +298 -0
  373. package/.windsurf/rules/request-review.md +112 -0
  374. package/.windsurf/rules/research-first.md +87 -0
  375. package/.windsurf/rules/reset-baseline.md +21 -0
  376. package/.windsurf/rules/respond-review.md +71 -0
  377. package/.windsurf/rules/run-benchmark.md +85 -0
  378. package/.windsurf/rules/run-evals.md +80 -0
  379. package/.windsurf/rules/run-planning.md +101 -0
  380. package/.windsurf/rules/scope-work.md +63 -0
  381. package/.windsurf/rules/search-skills.md +73 -0
  382. package/.windsurf/rules/security-review.md +384 -0
  383. package/.windsurf/rules/seed-conventions.md +285 -0
  384. package/.windsurf/rules/session-state.md +146 -0
  385. package/.windsurf/rules/setup-environment.md +39 -0
  386. package/.windsurf/rules/simulate-agents.md +26 -0
  387. package/.windsurf/rules/slice-tasks.md +68 -0
  388. package/.windsurf/rules/smoke-test.md +242 -0
  389. package/.windsurf/rules/spike-prototype.md +95 -0
  390. package/.windsurf/rules/stocktake-skills.md +72 -0
  391. package/.windsurf/rules/survey-context.md +135 -0
  392. package/.windsurf/rules/terse-mode.md +42 -0
  393. package/.windsurf/rules/trace-requirement.md +69 -0
  394. package/.windsurf/rules/using-bigpowers.md +111 -0
  395. package/.windsurf/rules/validate-contracts.md +309 -0
  396. package/.windsurf/rules/validate-fix.md +106 -0
  397. package/.windsurf/rules/verify-work.md +191 -0
  398. package/.windsurf/rules/visual-dashboard.md +50 -0
  399. package/.windsurf/rules/wire-ci.md +375 -0
  400. package/.windsurf/rules/wire-observability.md +97 -0
  401. package/.windsurf/rules/write-document.md +255 -0
  402. package/CHANGELOG.md +37 -0
  403. package/CONVENTIONS.md +22 -0
  404. package/bin/setup.js +35 -7
  405. package/instructions +1 -0
  406. package/package.json +1 -1
  407. package/scripts/adapters/cline.sh +53 -3
  408. package/scripts/adapters/codebuddy.sh +58 -0
  409. package/scripts/adapters/codex.sh +58 -0
  410. package/scripts/adapters/copilot.sh +58 -0
  411. package/scripts/adapters/kilocode.sh +44 -3
  412. package/scripts/adapters/opencode.sh +58 -0
  413. package/scripts/adapters/qwen.sh +53 -1
  414. package/scripts/adapters/trae.sh +58 -0
  415. package/scripts/adapters/windsurf.sh +52 -0
  416. package/scripts/bp-yaml-set.sh +2 -0
  417. package/scripts/generate-wave-b-hub.py +31 -0
  418. package/scripts/hooks/cline/HOOKS.md +16 -0
  419. package/scripts/hooks/cline/hooks-manifest.json +12 -0
  420. package/scripts/hooks/cline/plugin/guard-git-plugin.ts +16 -0
  421. package/scripts/hooks/codebuddy/HOOKS.md +24 -0
  422. package/scripts/hooks/codebuddy/hooks-manifest.json +20 -0
  423. package/scripts/hooks/codebuddy/pre-tool-git-guard.sh +22 -0
  424. package/scripts/hooks/codebuddy/settings.example.json +16 -0
  425. package/scripts/hooks/codex/HOOKS.md +21 -0
  426. package/scripts/hooks/codex/hooks-manifest.json +17 -0
  427. package/scripts/hooks/codex/pre-tool-git-guard.sh +22 -0
  428. package/scripts/hooks/codex/settings.example.json +16 -0
  429. package/scripts/hooks/kilocode/HOOKS.md +16 -0
  430. package/scripts/hooks/kilocode/hooks-manifest.json +12 -0
  431. package/scripts/hooks/kilocode/plugin/guard-git-plugin.ts +16 -0
  432. package/scripts/hooks/qwen/HOOKS.md +27 -0
  433. package/scripts/hooks/qwen/hooks-manifest.json +23 -0
  434. package/scripts/hooks/qwen/pre-tool-git-guard.sh +22 -0
  435. package/scripts/hooks/qwen/settings.example.json +16 -0
  436. package/scripts/hooks/trae/HOOKS.md +17 -0
  437. package/scripts/hooks/trae/hooks-manifest.json +13 -0
  438. package/scripts/hooks/trae/pre-tool-git-guard.sh +22 -0
  439. package/scripts/hooks/trae/settings.example.json +16 -0
  440. package/scripts/hooks/windsurf/HOOKS.md +23 -0
  441. package/scripts/hooks/windsurf/hooks-manifest.json +19 -0
  442. package/scripts/hooks/windsurf/pre-tool-git-guard.sh +22 -0
  443. package/scripts/hooks/windsurf/settings.example.json +16 -0
  444. package/scripts/install.sh +33 -373
  445. package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
  446. package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
  447. package/scripts/lib/context-wire.sh +5 -0
  448. package/scripts/lib/install-grep.sh +18 -0
  449. package/scripts/lib/install-helpers.js +139 -2
  450. package/scripts/lib/install-targets-a.sh +227 -0
  451. package/scripts/lib/install-targets-b.sh +226 -0
  452. package/scripts/lib/install-targets-c.sh +128 -0
  453. package/scripts/lib/install-targets-d.sh +179 -0
  454. package/scripts/lib/srp-engine.py +2 -70
  455. package/scripts/lib/srp_engine_links.py +59 -0
  456. package/scripts/lib/wave_b_hub_codegen_helpers.py +273 -0
  457. package/scripts/lib/wave_b_hub_codegen_install.py +134 -0
  458. package/scripts/lib/wave_b_hub_config.py +130 -0
  459. package/scripts/lib/wave_b_hub_patch.py +213 -0
  460. package/scripts/record-cycle-time.sh +3 -14
  461. package/scripts/targets.yaml +75 -2
  462. package/scripts/test-agy-hub.sh +11 -10
  463. package/scripts/test-cline-adapter.sh +55 -0
  464. package/scripts/test-cline-hub.sh +48 -0
  465. package/scripts/test-codebuddy-adapter.sh +63 -0
  466. package/scripts/test-codebuddy-hub.sh +49 -0
  467. package/scripts/test-codex-adapter.sh +63 -0
  468. package/scripts/test-codex-hub.sh +49 -0
  469. package/scripts/test-copilot-adapter.sh +47 -0
  470. package/scripts/test-copilot-hub.sh +43 -0
  471. package/scripts/test-gemini-hub.sh +10 -9
  472. package/scripts/test-hermes-hub.sh +7 -6
  473. package/scripts/test-install-distribute-only.sh +3 -0
  474. package/scripts/test-install-helpers.js +9 -3
  475. package/scripts/test-kilocode-adapter.sh +55 -0
  476. package/scripts/test-kilocode-hub.sh +48 -0
  477. package/scripts/test-mimo-hub.sh +7 -6
  478. package/scripts/test-opencode-adapter.sh +47 -0
  479. package/scripts/test-opencode-hub.sh +43 -0
  480. package/scripts/test-qwen-adapter.sh +63 -0
  481. package/scripts/test-qwen-hub.sh +49 -0
  482. package/scripts/test-trae-adapter.sh +63 -0
  483. package/scripts/test-trae-hub.sh +49 -0
  484. package/scripts/test-windsurf-adapter.sh +63 -0
  485. package/scripts/test-windsurf-hub.sh +49 -0
  486. package/scripts/test-zcode-hub.sh +7 -6
  487. package/scripts/verify-install.sh +83 -29
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env bash
2
+ # story: e68s02
3
+ # Regression tests for Qwen Code install hub wiring (Wave B).
4
+ set -euo pipefail
5
+
6
+ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
7
+ PASS=0
8
+ FAIL=0
9
+
10
+ pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
11
+ fail() { echo "FAIL: $1" >&2; FAIL=$((FAIL + 1)); }
12
+
13
+ echo "=== test-qwen-hub.sh ==="
14
+
15
+ INSTALL_SH="$REPO_ROOT/scripts/install.sh"
16
+ source "$REPO_ROOT/scripts/lib/install-grep.sh"
17
+ HELPERS_JS="$REPO_ROOT/scripts/lib/install-helpers.js"
18
+ SETUP_JS="$REPO_ROOT/bin/setup.js"
19
+ TARGETS_YAML="$REPO_ROOT/scripts/targets.yaml"
20
+
21
+ install_grep -q 'install_qwen()' && pass 'install.sh: install_qwen()' || fail 'install.sh: missing install_qwen()'
22
+ install_grep -q 'uninstall_qwen()' && pass 'install.sh: uninstall_qwen()' || fail 'install.sh: missing uninstall_qwen()'
23
+ install_grep -q 'QWEN_SKILLS_DIR=' && pass 'install.sh: skills dir var' || fail 'install.sh: missing skills dir var'
24
+ install_grep -q 'install_qwen' && install_grep -q 'uninstall_qwen' && pass 'install.sh: dispatch wired' || fail 'install.sh: dispatch missing qwen'
25
+
26
+ DRY_OUT="$(bash "$INSTALL_SH" --dry-run 2>&1)"
27
+ grep -q 'Qwen Code →' <<< "$DRY_OUT" && pass 'dry-run: Qwen Code section' || fail 'dry-run: missing Qwen Code section'
28
+ DRY_UNINSTALL="$(bash "$INSTALL_SH" --dry-run --uninstall 2>&1)"
29
+ grep -q 'Qwen Code →' <<< "$DRY_UNINSTALL" && pass 'dry-run uninstall: Qwen Code section' || fail 'dry-run uninstall: missing Qwen Code section'
30
+
31
+ grep -q "case 'qwen'" "$HELPERS_JS" && pass 'install-helpers: qwen case' || fail 'install-helpers: missing qwen case'
32
+ install_grep -q 'QWEN_HOOK_SRC=' && pass 'install.sh: hook src' || fail 'install.sh: missing hook src'
33
+ install_grep -q 'pre-tool-git-guard.sh' && pass 'install.sh: git-guard hook' || fail 'install.sh: missing git-guard hook'
34
+
35
+ SETUP_SRC="$(cat "$SETUP_JS")"
36
+ echo "$SETUP_SRC" | grep -q "SUPPORTED_IDS = new Set" && pass 'setup.js: SUPPORTED_IDS set' || fail 'setup.js: missing SUPPORTED_IDS'
37
+ grep -q "'qwen'" <<< "$(sed -n "/SUPPORTED_IDS = new Set/,/);/p" "$SETUP_JS")" && pass 'setup.js: qwen in SUPPORTED_IDS' || fail 'setup.js: qwen not in SUPPORTED_IDS'
38
+
39
+ grep -q 'id: qwen' "$TARGETS_YAML" && pass 'targets.yaml: qwen row' || fail 'targets.yaml: missing qwen row'
40
+ grep -q 'adapter: qwen' "$TARGETS_YAML" && pass 'targets.yaml: qwen adapter' || fail 'targets.yaml: missing qwen adapter'
41
+ grep -q 'qwen_hooks_manifest' "$TARGETS_YAML" && pass 'targets.yaml: qwen_hooks_manifest' || fail 'targets.yaml: missing qwen_hooks_manifest'
42
+ grep -q 'install_qwen()' "$REPO_ROOT/scripts/verify-install.sh" && pass 'verify-install: install_qwen assertion' || fail 'verify-install: missing install_qwen assertion'
43
+
44
+ bash -n "$INSTALL_SH" && pass 'bash -n install.sh' || fail 'bash -n install.sh'
45
+ node --check "$HELPERS_JS" && pass 'node --check install-helpers.js' || fail 'node --check install-helpers.js'
46
+ node --check "$SETUP_JS" && pass 'node --check setup.js' || fail 'node --check setup.js'
47
+
48
+ echo "test-qwen-hub: $PASS passed, $FAIL failed"
49
+ [[ "$FAIL" -eq 0 ]] || exit 1
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env bash
2
+ # story: e70s01
3
+ # scenario: SC-e70s01-P1-02
4
+ # Regression tests for Trae adapter render + hook templates.
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
9
+
10
+ PASS=0
11
+ FAIL=0
12
+
13
+ pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
14
+ fail() { echo "FAIL: $1"; FAIL=$((FAIL + 1)); }
15
+
16
+ echo "=== test-trae-adapter.sh ==="
17
+
18
+ TMP=$(mktemp -d)
19
+ trap 'rm -rf "$TMP"' EXIT
20
+
21
+ if echo '{"name":"test-skill","description":"test desc","body":"test body"}' \
22
+ | TRAE_SKILLS="$TMP" bash "$REPO_ROOT/scripts/adapters/trae.sh" \
23
+ && [[ -f $TMP/test-skill/SKILL.md ]] \
24
+ && grep -q 'name: test-skill' $TMP/test-skill/SKILL.md \
25
+ && grep -q 'test body' $TMP/test-skill/SKILL.md; then
26
+ pass "render_skill emits artifact from stdin SkillIR"
27
+ else
28
+ fail "render_skill emits artifact from stdin SkillIR"
29
+ fi
30
+
31
+ if ! echo '{"name":"../escape","description":"d","body":"b"}' \
32
+ | TRAE_SKILLS="$TMP/bad" bash "$REPO_ROOT/scripts/adapters/trae.sh" 2>/dev/null; then
33
+ pass "rejects path traversal in skill name"
34
+ else
35
+ fail "rejects path traversal in skill name"
36
+ fi
37
+
38
+ if [[ -f "$REPO_ROOT/scripts/hooks/trae/pre-tool-git-guard.sh" ]] \
39
+ && [[ -f "$REPO_ROOT/scripts/hooks/trae/hooks-manifest.json" ]] \
40
+ && [[ -f "$REPO_ROOT/scripts/hooks/trae/settings.example.json" ]]; then
41
+ pass "hook template bundle present"
42
+ else
43
+ fail "hook template bundle present"
44
+ fi
45
+
46
+ BLOCK_OUT=$(echo '{"tool_input":{"command":"git push --force origin main"}}' \
47
+ | bash "$REPO_ROOT/scripts/hooks/trae/pre-tool-git-guard.sh")
48
+ if echo "$BLOCK_OUT" | grep -q 'block'; then
49
+ pass "pre-tool guard blocks dangerous command"
50
+ else
51
+ fail "pre-tool guard blocks dangerous command"
52
+ fi
53
+
54
+ ADAPTER_OUT=$(bash "$REPO_ROOT/scripts/test-adapters.sh" trae 2>&1 || true)
55
+ if echo "$ADAPTER_OUT" | grep -q '0 failed'; then
56
+ pass "test-adapters.sh trae"
57
+ else
58
+ fail "test-adapters.sh trae"
59
+ echo "$ADAPTER_OUT"
60
+ fi
61
+
62
+ echo "test-trae-adapter: $PASS passed, $FAIL failed"
63
+ [[ "$FAIL" -eq 0 ]] || exit 1
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env bash
2
+ # story: e70s02
3
+ # Regression tests for Trae install hub wiring (Wave B).
4
+ set -euo pipefail
5
+
6
+ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
7
+ PASS=0
8
+ FAIL=0
9
+
10
+ pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
11
+ fail() { echo "FAIL: $1" >&2; FAIL=$((FAIL + 1)); }
12
+
13
+ echo "=== test-trae-hub.sh ==="
14
+
15
+ INSTALL_SH="$REPO_ROOT/scripts/install.sh"
16
+ source "$REPO_ROOT/scripts/lib/install-grep.sh"
17
+ HELPERS_JS="$REPO_ROOT/scripts/lib/install-helpers.js"
18
+ SETUP_JS="$REPO_ROOT/bin/setup.js"
19
+ TARGETS_YAML="$REPO_ROOT/scripts/targets.yaml"
20
+
21
+ install_grep -q 'install_trae()' && pass 'install.sh: install_trae()' || fail 'install.sh: missing install_trae()'
22
+ install_grep -q 'uninstall_trae()' && pass 'install.sh: uninstall_trae()' || fail 'install.sh: missing uninstall_trae()'
23
+ install_grep -q 'TRAE_SKILLS_DIR=' && pass 'install.sh: skills dir var' || fail 'install.sh: missing skills dir var'
24
+ install_grep -q 'install_trae' && install_grep -q 'uninstall_trae' && pass 'install.sh: dispatch wired' || fail 'install.sh: dispatch missing trae'
25
+
26
+ DRY_OUT="$(bash "$INSTALL_SH" --dry-run 2>&1)"
27
+ grep -q 'Trae →' <<< "$DRY_OUT" && pass 'dry-run: Trae section' || fail 'dry-run: missing Trae section'
28
+ DRY_UNINSTALL="$(bash "$INSTALL_SH" --dry-run --uninstall 2>&1)"
29
+ grep -q 'Trae →' <<< "$DRY_UNINSTALL" && pass 'dry-run uninstall: Trae section' || fail 'dry-run uninstall: missing Trae section'
30
+
31
+ grep -q "case 'trae'" "$HELPERS_JS" && pass 'install-helpers: trae case' || fail 'install-helpers: missing trae case'
32
+ install_grep -q 'TRAE_HOOK_SRC=' && pass 'install.sh: hook src' || fail 'install.sh: missing hook src'
33
+ install_grep -q 'pre-tool-git-guard.sh' && pass 'install.sh: git-guard hook' || fail 'install.sh: missing git-guard hook'
34
+
35
+ SETUP_SRC="$(cat "$SETUP_JS")"
36
+ echo "$SETUP_SRC" | grep -q "SUPPORTED_IDS = new Set" && pass 'setup.js: SUPPORTED_IDS set' || fail 'setup.js: missing SUPPORTED_IDS'
37
+ grep -q "'trae'" <<< "$(sed -n "/SUPPORTED_IDS = new Set/,/);/p" "$SETUP_JS")" && pass 'setup.js: trae in SUPPORTED_IDS' || fail 'setup.js: trae not in SUPPORTED_IDS'
38
+
39
+ grep -q 'id: trae' "$TARGETS_YAML" && pass 'targets.yaml: trae row' || fail 'targets.yaml: missing trae row'
40
+ grep -q 'adapter: trae' "$TARGETS_YAML" && pass 'targets.yaml: trae adapter' || fail 'targets.yaml: missing trae adapter'
41
+ grep -q 'trae_hooks_manifest' "$TARGETS_YAML" && pass 'targets.yaml: trae_hooks_manifest' || fail 'targets.yaml: missing trae_hooks_manifest'
42
+ grep -q 'install_trae()' "$REPO_ROOT/scripts/verify-install.sh" && pass 'verify-install: install_trae assertion' || fail 'verify-install: missing install_trae assertion'
43
+
44
+ bash -n "$INSTALL_SH" && pass 'bash -n install.sh' || fail 'bash -n install.sh'
45
+ node --check "$HELPERS_JS" && pass 'node --check install-helpers.js' || fail 'node --check install-helpers.js'
46
+ node --check "$SETUP_JS" && pass 'node --check setup.js' || fail 'node --check setup.js'
47
+
48
+ echo "test-trae-hub: $PASS passed, $FAIL failed"
49
+ [[ "$FAIL" -eq 0 ]] || exit 1
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env bash
2
+ # story: e73s01
3
+ # scenario: SC-e73s01-P1-02
4
+ # Regression tests for Windsurf adapter render + hook templates.
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
9
+
10
+ PASS=0
11
+ FAIL=0
12
+
13
+ pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
14
+ fail() { echo "FAIL: $1"; FAIL=$((FAIL + 1)); }
15
+
16
+ echo "=== test-windsurf-adapter.sh ==="
17
+
18
+ TMP=$(mktemp -d)
19
+ trap 'rm -rf "$TMP"' EXIT
20
+
21
+ if echo '{"name":"test-skill","description":"test desc","body":"test body"}' \
22
+ | WINDSURF_RULES="$TMP" bash "$REPO_ROOT/scripts/adapters/windsurf.sh" \
23
+ && [[ -f $TMP/test-skill.md ]] \
24
+ && grep -q 'name: test-skill' $TMP/test-skill.md \
25
+ && grep -q 'test body' $TMP/test-skill.md; then
26
+ pass "render_skill emits artifact from stdin SkillIR"
27
+ else
28
+ fail "render_skill emits artifact from stdin SkillIR"
29
+ fi
30
+
31
+ if ! echo '{"name":"../escape","description":"d","body":"b"}' \
32
+ | WINDSURF_RULES="$TMP/bad" bash "$REPO_ROOT/scripts/adapters/windsurf.sh" 2>/dev/null; then
33
+ pass "rejects path traversal in skill name"
34
+ else
35
+ fail "rejects path traversal in skill name"
36
+ fi
37
+
38
+ if [[ -f "$REPO_ROOT/scripts/hooks/windsurf/pre-tool-git-guard.sh" ]] \
39
+ && [[ -f "$REPO_ROOT/scripts/hooks/windsurf/hooks-manifest.json" ]] \
40
+ && [[ -f "$REPO_ROOT/scripts/hooks/windsurf/settings.example.json" ]]; then
41
+ pass "hook template bundle present"
42
+ else
43
+ fail "hook template bundle present"
44
+ fi
45
+
46
+ BLOCK_OUT=$(echo '{"tool_input":{"command":"git push --force origin main"}}' \
47
+ | bash "$REPO_ROOT/scripts/hooks/windsurf/pre-tool-git-guard.sh")
48
+ if echo "$BLOCK_OUT" | grep -q 'block'; then
49
+ pass "pre-tool guard blocks dangerous command"
50
+ else
51
+ fail "pre-tool guard blocks dangerous command"
52
+ fi
53
+
54
+ ADAPTER_OUT=$(bash "$REPO_ROOT/scripts/test-adapters.sh" windsurf 2>&1 || true)
55
+ if echo "$ADAPTER_OUT" | grep -q '0 failed'; then
56
+ pass "test-adapters.sh windsurf"
57
+ else
58
+ fail "test-adapters.sh windsurf"
59
+ echo "$ADAPTER_OUT"
60
+ fi
61
+
62
+ echo "test-windsurf-adapter: $PASS passed, $FAIL failed"
63
+ [[ "$FAIL" -eq 0 ]] || exit 1
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env bash
2
+ # story: e73s02
3
+ # Regression tests for Windsurf install hub wiring (Wave B).
4
+ set -euo pipefail
5
+
6
+ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
7
+ PASS=0
8
+ FAIL=0
9
+
10
+ pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
11
+ fail() { echo "FAIL: $1" >&2; FAIL=$((FAIL + 1)); }
12
+
13
+ echo "=== test-windsurf-hub.sh ==="
14
+
15
+ INSTALL_SH="$REPO_ROOT/scripts/install.sh"
16
+ source "$REPO_ROOT/scripts/lib/install-grep.sh"
17
+ HELPERS_JS="$REPO_ROOT/scripts/lib/install-helpers.js"
18
+ SETUP_JS="$REPO_ROOT/bin/setup.js"
19
+ TARGETS_YAML="$REPO_ROOT/scripts/targets.yaml"
20
+
21
+ install_grep -q 'install_windsurf()' && pass 'install.sh: install_windsurf()' || fail 'install.sh: missing install_windsurf()'
22
+ install_grep -q 'uninstall_windsurf()' && pass 'install.sh: uninstall_windsurf()' || fail 'install.sh: missing uninstall_windsurf()'
23
+ install_grep -q 'WINDSURF_SKILLS_DIR=' && pass 'install.sh: skills dir var' || fail 'install.sh: missing skills dir var'
24
+ install_grep -q 'install_windsurf' && install_grep -q 'uninstall_windsurf' && pass 'install.sh: dispatch wired' || fail 'install.sh: dispatch missing windsurf'
25
+
26
+ DRY_OUT="$(bash "$INSTALL_SH" --dry-run 2>&1)"
27
+ grep -q 'Windsurf →' <<< "$DRY_OUT" && pass 'dry-run: Windsurf section' || fail 'dry-run: missing Windsurf section'
28
+ DRY_UNINSTALL="$(bash "$INSTALL_SH" --dry-run --uninstall 2>&1)"
29
+ grep -q 'Windsurf →' <<< "$DRY_UNINSTALL" && pass 'dry-run uninstall: Windsurf section' || fail 'dry-run uninstall: missing Windsurf section'
30
+
31
+ grep -q "case 'windsurf'" "$HELPERS_JS" && pass 'install-helpers: windsurf case' || fail 'install-helpers: missing windsurf case'
32
+ install_grep -q 'WINDSURF_HOOK_SRC=' && pass 'install.sh: hook src' || fail 'install.sh: missing hook src'
33
+ install_grep -q 'pre-tool-git-guard.sh' && pass 'install.sh: git-guard hook' || fail 'install.sh: missing git-guard hook'
34
+
35
+ SETUP_SRC="$(cat "$SETUP_JS")"
36
+ echo "$SETUP_SRC" | grep -q "SUPPORTED_IDS = new Set" && pass 'setup.js: SUPPORTED_IDS set' || fail 'setup.js: missing SUPPORTED_IDS'
37
+ grep -q "'windsurf'" <<< "$(sed -n "/SUPPORTED_IDS = new Set/,/);/p" "$SETUP_JS")" && pass 'setup.js: windsurf in SUPPORTED_IDS' || fail 'setup.js: windsurf not in SUPPORTED_IDS'
38
+
39
+ grep -q 'id: windsurf' "$TARGETS_YAML" && pass 'targets.yaml: windsurf row' || fail 'targets.yaml: missing windsurf row'
40
+ grep -q 'adapter: windsurf' "$TARGETS_YAML" && pass 'targets.yaml: windsurf adapter' || fail 'targets.yaml: missing windsurf adapter'
41
+ grep -q 'windsurf_hooks_manifest' "$TARGETS_YAML" && pass 'targets.yaml: windsurf_hooks_manifest' || fail 'targets.yaml: missing windsurf_hooks_manifest'
42
+ grep -q 'install_windsurf()' "$REPO_ROOT/scripts/verify-install.sh" && pass 'verify-install: install_windsurf assertion' || fail 'verify-install: missing install_windsurf assertion'
43
+
44
+ bash -n "$INSTALL_SH" && pass 'bash -n install.sh' || fail 'bash -n install.sh'
45
+ node --check "$HELPERS_JS" && pass 'node --check install-helpers.js' || fail 'node --check install-helpers.js'
46
+ node --check "$SETUP_JS" && pass 'node --check setup.js' || fail 'node --check setup.js'
47
+
48
+ echo "test-windsurf-hub: $PASS passed, $FAIL failed"
49
+ [[ "$FAIL" -eq 0 ]] || exit 1
@@ -13,19 +13,20 @@ fail() { echo "FAIL: $1" >&2; FAIL=$((FAIL + 1)); }
13
13
  echo "=== test-zcode-hub.sh ==="
14
14
 
15
15
  INSTALL_SH="$REPO_ROOT/scripts/install.sh"
16
+ source "$REPO_ROOT/scripts/lib/install-grep.sh"
16
17
  HELPERS_JS="$REPO_ROOT/scripts/lib/install-helpers.js"
17
18
  SETUP_JS="$REPO_ROOT/bin/setup.js"
18
19
  TARGETS_YAML="$REPO_ROOT/scripts/targets.yaml"
19
20
 
20
- grep -q 'install_zcode()' "$INSTALL_SH" && pass 'install.sh: install_zcode()' || fail 'install.sh: missing install_zcode()'
21
- grep -q 'uninstall_zcode()' "$INSTALL_SH" && pass 'install.sh: uninstall_zcode()' || fail 'install.sh: missing uninstall_zcode()'
22
- grep -q 'ZCODE_SKILLS_DIR=' "$INSTALL_SH" && pass 'install.sh: ZCODE_SKILLS_DIR' || fail 'install.sh: missing ZCODE_SKILLS_DIR'
23
- grep -q 'install_zcode' "$INSTALL_SH" && grep -q 'uninstall_zcode' "$INSTALL_SH" && pass 'install.sh: dispatch wired' || fail 'install.sh: dispatch missing zcode'
21
+ install_grep -q 'install_zcode()' && pass 'install.sh: install_zcode()' || fail 'install.sh: missing install_zcode()'
22
+ install_grep -q 'uninstall_zcode()' && pass 'install.sh: uninstall_zcode()' || fail 'install.sh: missing uninstall_zcode()'
23
+ install_grep -q 'ZCODE_SKILLS_DIR=' && pass 'install.sh: ZCODE_SKILLS_DIR' || fail 'install.sh: missing ZCODE_SKILLS_DIR'
24
+ install_grep -q 'install_zcode' && install_grep -q 'uninstall_zcode' && pass 'install.sh: dispatch wired' || fail 'install.sh: dispatch missing zcode'
24
25
 
25
26
  DRY_OUT="$(bash "$INSTALL_SH" --dry-run 2>&1)"
26
- echo "$DRY_OUT" | grep -q 'ZCode →' && pass 'dry-run: ZCode section' || fail 'dry-run: missing ZCode section'
27
+ grep -q 'ZCode →' <<< "$DRY_OUT" && pass 'dry-run: ZCode section' || fail 'dry-run: missing ZCode section'
27
28
  DRY_UNINSTALL="$(bash "$INSTALL_SH" --dry-run --uninstall 2>&1)"
28
- echo "$DRY_UNINSTALL" | grep -q 'ZCode →' && pass 'dry-run uninstall: ZCode section' || fail 'dry-run uninstall: missing ZCode section'
29
+ grep -q 'ZCode →' <<< "$DRY_UNINSTALL" && pass 'dry-run uninstall: ZCode section' || fail 'dry-run uninstall: missing ZCode section'
29
30
 
30
31
  grep -q "case 'zcode'" "$HELPERS_JS" && pass 'install-helpers: zcode global case' || fail 'install-helpers: missing zcode global case'
31
32
  grep -q "case 'zcode'" "$HELPERS_JS" && pass 'install-helpers: zcode cases present' || fail 'install-helpers: missing zcode cases'
@@ -1,10 +1,20 @@
1
1
  #!/usr/bin/env bash
2
2
  # story: e47s04 e37s02 e37s04 e37s08
3
3
  # story: e74s02
4
+ # story: e71s02
5
+ # story: e62s02
6
+ # story: e73s02
7
+ # story: e70s02
8
+ # story: e67s02
9
+ # story: e66s02
10
+ # story: e72s02
11
+ # story: e68s02
12
+ # story: e65s02
4
13
  # verify-install.sh — manual assertion harness for install + seed wiring + Reach matrix
5
14
  set -euo pipefail
6
15
  source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
7
16
  resolve_repo_root
17
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/install-grep.sh"
8
18
 
9
19
  MATRIX_MODE=0
10
20
  FULL_MATRIX=0
@@ -64,14 +74,14 @@ trap ta_cleanup EXIT
64
74
  echo "=== install.sh --dry-run ==="
65
75
  DRY_OUT="$("$REPO_ROOT/scripts/install.sh" --dry-run 2>&1)"
66
76
 
67
- echo "$DRY_OUT" | grep -q 'pi →' && ta_pass "install --dry-run includes pi" || ta_fail "install --dry-run missing pi"
77
+ grep -q 'pi →' <<< "$DRY_OUT" && ta_pass "install --dry-run includes pi" || ta_fail "install --dry-run missing pi"
68
78
  DRY_UNINSTALL="$("$REPO_ROOT/scripts/install.sh" --dry-run --uninstall 2>&1)"
69
- echo "$DRY_UNINSTALL" | grep -q 'pi →' && ta_pass "uninstall --dry-run includes pi" || ta_fail "uninstall --dry-run missing pi"
70
- echo "$DRY_OUT" | grep -qi 'opencode' && ta_fail "install references opencode" || ta_pass "install has no opencode reference"
71
- echo "$DRY_OUT" | grep -q 'Claude Code →' && ta_pass "install includes Claude Code" || ta_fail "install missing Claude Code"
72
- echo "$DRY_OUT" | grep -q 'Gemini CLI →' && ta_pass "install includes Gemini CLI" || ta_fail "install missing Gemini CLI"
73
- echo "$DRY_OUT" | grep -q 'Cursor →' && ta_pass "install includes Cursor" || ta_fail "install missing Cursor"
74
- echo "$DRY_OUT" | grep -q 'Hermes Agent →' && ta_pass "install includes Hermes Agent" || ta_fail "install missing Hermes Agent"
79
+ grep -q 'pi →' <<< "$DRY_UNINSTALL" && ta_pass "uninstall --dry-run includes pi" || ta_fail "uninstall --dry-run missing pi"
80
+ grep -q 'OpenCode →' <<< "$DRY_OUT" && ta_pass "install includes OpenCode" || ta_fail "install missing OpenCode"
81
+ grep -q 'Claude Code →' <<< "$DRY_OUT" && ta_pass "install includes Claude Code" || ta_fail "install missing Claude Code"
82
+ grep -q 'Gemini CLI →' <<< "$DRY_OUT" && ta_pass "install includes Gemini CLI" || ta_fail "install missing Gemini CLI"
83
+ grep -q 'Cursor →' <<< "$DRY_OUT" && ta_pass "install includes Cursor" || ta_fail "install missing Cursor"
84
+ grep -q 'Hermes Agent →' <<< "$DRY_OUT" && ta_pass "install includes Hermes Agent" || ta_fail "install missing Hermes Agent"
75
85
 
76
86
  for tool in "Claude Code" "pi"; do
77
87
  section=$(echo "$DRY_OUT" | sed -n "/${tool} →/,/^$/p")
@@ -102,7 +112,7 @@ echo ""
102
112
  echo "=== Optional Codex wave (e37s04) ==="
103
113
  if grep -qi 'codex' "$REPO_ROOT/skills/seed-conventions/SKILL.md" 2>/dev/null; then
104
114
  grep -qi 'config.toml' "$REPO_ROOT/skills/seed-conventions/REFERENCE.md" && ta_pass "Codex: REFERENCE config.toml" || ta_fail "Codex: missing config.toml"
105
- echo "$DRY_OUT" | grep -qi 'codex' && ta_pass "Codex: install --dry-run mentions codex" || ta_fail "Codex: install missing codex"
115
+ grep -qi 'codex' <<< "$DRY_OUT" && ta_pass "Codex: install --dry-run mentions codex" || ta_fail "Codex: install missing codex"
106
116
  else
107
117
  ta_pass "Codex: wave absent — assertions skipped"
108
118
  fi
@@ -127,40 +137,84 @@ fi
127
137
 
128
138
  echo ""
129
139
  echo "=== install.sh source ==="
130
- grep -q 'install_pi()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_pi()" || ta_fail "source: missing install_pi()"
131
- grep -q 'uninstall_pi()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_pi()" || ta_fail "source: missing uninstall_pi()"
132
- grep -q 'PI_SKILLS_DIR="$PI_CONFIG_DIR/agent/skills"' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: targets ~/.pi/agent/skills/" || ta_fail "source: wrong pi target"
133
- grep -q 'install_hermes()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_hermes()" || ta_fail "source: missing install_hermes()"
134
- grep -q 'uninstall_hermes()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_hermes()" || ta_fail "source: missing uninstall_hermes()"
135
- grep -q 'HERMES_SKILLS_DIR=' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: targets ~/.hermes/skills/" || ta_fail "source: wrong hermes target"
140
+ install_grep -q 'install_pi()' && ta_pass "source: install_pi()" || ta_fail "source: missing install_pi()"
141
+ install_grep -q 'uninstall_pi()' && ta_pass "source: uninstall_pi()" || ta_fail "source: missing uninstall_pi()"
142
+ install_grep -q 'PI_SKILLS_DIR="$PI_CONFIG_DIR/agent/skills"' && ta_pass "source: targets ~/.pi/agent/skills/" || ta_fail "source: wrong pi target"
143
+ install_grep -q 'install_hermes()' && ta_pass "source: install_hermes()" || ta_fail "source: missing install_hermes()"
144
+ install_grep -q 'uninstall_hermes()' && ta_pass "source: uninstall_hermes()" || ta_fail "source: missing uninstall_hermes()"
145
+ install_grep -q 'HERMES_SKILLS_DIR=' && ta_pass "source: targets ~/.hermes/skills/" || ta_fail "source: wrong hermes target"
136
146
  grep -q "'hermes'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: hermes supported" || ta_fail "setup.js: hermes not in SUPPORTED_IDS"
137
147
  grep -q "case 'hermes'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: hermes case" || ta_fail "install-helpers: missing hermes case"
138
- grep -q 'install_zcode()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_zcode()" || ta_fail "source: missing install_zcode()"
139
- grep -q 'uninstall_zcode()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_zcode()" || ta_fail "source: missing uninstall_zcode()"
140
- grep -q 'ZCODE_SKILLS_DIR=' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: targets ~/.zcode/skills/" || ta_fail "source: wrong zcode target"
148
+ install_grep -q 'install_zcode()' && ta_pass "source: install_zcode()" || ta_fail "source: missing install_zcode()"
149
+ install_grep -q 'uninstall_zcode()' && ta_pass "source: uninstall_zcode()" || ta_fail "source: missing uninstall_zcode()"
150
+ install_grep -q 'ZCODE_SKILLS_DIR=' && ta_pass "source: targets ~/.zcode/skills/" || ta_fail "source: wrong zcode target"
141
151
  grep -q "'zcode'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: zcode supported" || ta_fail "setup.js: zcode not in SUPPORTED_IDS"
142
152
  grep -q "case 'zcode'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: zcode case" || ta_fail "install-helpers: missing zcode case"
143
- grep -q 'install_mimo()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_mimo()" || ta_fail "source: missing install_mimo()"
144
- grep -q 'uninstall_mimo()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_mimo()" || ta_fail "source: missing uninstall_mimo()"
145
- grep -q 'MIMO_SKILLS_DIR=' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: targets ~/.mimocode/skills/" || ta_fail "source: wrong mimo target"
153
+ install_grep -q 'install_mimo()' && ta_pass "source: install_mimo()" || ta_fail "source: missing install_mimo()"
154
+ install_grep -q 'uninstall_mimo()' && ta_pass "source: uninstall_mimo()" || ta_fail "source: missing uninstall_mimo()"
155
+ install_grep -q 'MIMO_SKILLS_DIR=' && ta_pass "source: targets ~/.mimocode/skills/" || ta_fail "source: wrong mimo target"
146
156
  grep -q "'mimo'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: mimo supported" || ta_fail "setup.js: mimo not in SUPPORTED_IDS"
147
157
  grep -q "case 'mimo'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: mimo case" || ta_fail "install-helpers: missing mimo case"
148
- grep -q 'install_gemini()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_gemini()" || ta_fail "source: missing install_gemini()"
149
- grep -q 'uninstall_gemini()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_gemini()" || ta_fail "source: missing uninstall_gemini()"
150
- grep -q 'before-tool-git-guard.sh' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: gemini Wave A hook templates" || ta_fail "source: missing gemini hook templates"
158
+ install_grep -q 'install_gemini()' && ta_pass "source: install_gemini()" || ta_fail "source: missing install_gemini()"
159
+ install_grep -q 'uninstall_gemini()' && ta_pass "source: uninstall_gemini()" || ta_fail "source: missing uninstall_gemini()"
160
+ install_grep -q 'before-tool-git-guard.sh' && ta_pass "source: gemini Wave A hook templates" || ta_fail "source: missing gemini hook templates"
151
161
  grep -q "'gemini'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: gemini supported" || ta_fail "setup.js: gemini not in SUPPORTED_IDS"
152
162
  grep -q "case 'gemini'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: gemini case" || ta_fail "install-helpers: missing gemini case"
153
163
  grep -q 'gemini_hooks_manifest' "$REPO_ROOT/scripts/targets.yaml" && ta_pass "targets.yaml: gemini_hooks_manifest" || ta_fail "targets.yaml: missing gemini_hooks_manifest"
154
- grep -q 'install_agy()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_agy()" || ta_fail "source: missing install_agy()"
155
- grep -q 'uninstall_agy()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_agy()" || ta_fail "source: missing uninstall_agy()"
156
- grep -q 'AGY_SKILLS_DIR=' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: targets ~/.gemini/antigravity-cli/skills/" || ta_fail "source: wrong agy target"
164
+ install_grep -q 'install_agy()' && ta_pass "source: install_agy()" || ta_fail "source: missing install_agy()"
165
+ install_grep -q 'uninstall_agy()' && ta_pass "source: uninstall_agy()" || ta_fail "source: missing uninstall_agy()"
166
+ install_grep -q 'AGY_SKILLS_DIR=' && ta_pass "source: targets ~/.gemini/antigravity-cli/skills/" || ta_fail "source: wrong agy target"
157
167
  grep -q "'antigravity'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: antigravity supported" || ta_fail "setup.js: antigravity not in SUPPORTED_IDS"
158
168
  grep -q "'agy'" "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: agy supported" || ta_fail "setup.js: agy not in SUPPORTED_IDS"
159
169
  grep -q "case 'antigravity'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: antigravity case" || ta_fail "install-helpers: missing antigravity case"
160
170
  grep -q "case 'agy'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: agy case" || ta_fail "install-helpers: missing agy case"
161
- ! grep -q '\.gemini/extensions/bigpowers' <<< "$(sed -n '/install_agy/,/^}/p' "$REPO_ROOT/scripts/install.sh")" && ta_pass "source: agy avoids gemini extension path" || ta_fail "source: agy touches gemini extension path"
162
- ! grep -q 'install_opencode\|print_opencode_instructions' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: no opencode functions" || ta_fail "source: opencode functions remain"
163
-
171
+ ! install_grep -q '\.gemini/extensions/bigpowers' <<< "$(sed -n '/install_agy/,/^}/p')" && ta_pass "source: agy avoids gemini extension path" || ta_fail "source: agy touches gemini extension path"
172
+
173
+ install_grep -q 'install_codex()' && ta_pass "source: install_codex()" || ta_fail "source: missing install_codex()"
174
+ install_grep -q 'uninstall_codex()' && ta_pass "source: uninstall_codex()" || ta_fail "source: missing uninstall_codex()"
175
+ install_grep -q 'CODEX_SKILLS_DIR=' && ta_pass "source: codex skills dir" || ta_fail "source: missing codex skills dir"
176
+ grep -q "'codex'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: codex supported" || ta_fail "setup.js: codex not in SUPPORTED_IDS"
177
+ grep -q "case 'codex'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: codex case" || ta_fail "install-helpers: missing codex case"
178
+ install_grep -q 'install_qwen()' && ta_pass "source: install_qwen()" || ta_fail "source: missing install_qwen()"
179
+ install_grep -q 'uninstall_qwen()' && ta_pass "source: uninstall_qwen()" || ta_fail "source: missing uninstall_qwen()"
180
+ install_grep -q 'QWEN_SKILLS_DIR=' && ta_pass "source: qwen skills dir" || ta_fail "source: missing qwen skills dir"
181
+ grep -q "'qwen'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: qwen supported" || ta_fail "setup.js: qwen not in SUPPORTED_IDS"
182
+ grep -q "case 'qwen'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: qwen case" || ta_fail "install-helpers: missing qwen case"
183
+ install_grep -q 'install_codebuddy()' && ta_pass "source: install_codebuddy()" || ta_fail "source: missing install_codebuddy()"
184
+ install_grep -q 'uninstall_codebuddy()' && ta_pass "source: uninstall_codebuddy()" || ta_fail "source: missing uninstall_codebuddy()"
185
+ install_grep -q 'CODEBUDDY_SKILLS_DIR=' && ta_pass "source: codebuddy skills dir" || ta_fail "source: missing codebuddy skills dir"
186
+ grep -q "'codebuddy'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: codebuddy supported" || ta_fail "setup.js: codebuddy not in SUPPORTED_IDS"
187
+ grep -q "case 'codebuddy'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: codebuddy case" || ta_fail "install-helpers: missing codebuddy case"
188
+ install_grep -q 'install_cline()' && ta_pass "source: install_cline()" || ta_fail "source: missing install_cline()"
189
+ install_grep -q 'uninstall_cline()' && ta_pass "source: uninstall_cline()" || ta_fail "source: missing uninstall_cline()"
190
+ install_grep -q 'CLINE_SKILLS_DIR=' && ta_pass "source: cline skills dir" || ta_fail "source: missing cline skills dir"
191
+ grep -q "'cline'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: cline supported" || ta_fail "setup.js: cline not in SUPPORTED_IDS"
192
+ grep -q "case 'cline'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: cline case" || ta_fail "install-helpers: missing cline case"
193
+ install_grep -q 'install_kilocode()' && ta_pass "source: install_kilocode()" || ta_fail "source: missing install_kilocode()"
194
+ install_grep -q 'uninstall_kilocode()' && ta_pass "source: uninstall_kilocode()" || ta_fail "source: missing uninstall_kilocode()"
195
+ install_grep -q 'KILOCODE_SKILLS_DIR=' && ta_pass "source: kilocode skills dir" || ta_fail "source: missing kilocode skills dir"
196
+ grep -q "'kilo'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: kilo supported" || ta_fail "setup.js: kilo not in SUPPORTED_IDS"
197
+ grep -q "case 'kilo'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: kilo case" || ta_fail "install-helpers: missing kilo case"
198
+ install_grep -q 'install_trae()' && ta_pass "source: install_trae()" || ta_fail "source: missing install_trae()"
199
+ install_grep -q 'uninstall_trae()' && ta_pass "source: uninstall_trae()" || ta_fail "source: missing uninstall_trae()"
200
+ install_grep -q 'TRAE_SKILLS_DIR=' && ta_pass "source: trae skills dir" || ta_fail "source: missing trae skills dir"
201
+ grep -q "'trae'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: trae supported" || ta_fail "setup.js: trae not in SUPPORTED_IDS"
202
+ grep -q "case 'trae'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: trae case" || ta_fail "install-helpers: missing trae case"
203
+ install_grep -q 'install_windsurf()' && ta_pass "source: install_windsurf()" || ta_fail "source: missing install_windsurf()"
204
+ install_grep -q 'uninstall_windsurf()' && ta_pass "source: uninstall_windsurf()" || ta_fail "source: missing uninstall_windsurf()"
205
+ install_grep -q 'WINDSURF_SKILLS_DIR=' && ta_pass "source: windsurf skills dir" || ta_fail "source: missing windsurf skills dir"
206
+ grep -q "'windsurf'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: windsurf supported" || ta_fail "setup.js: windsurf not in SUPPORTED_IDS"
207
+ grep -q "case 'windsurf'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: windsurf case" || ta_fail "install-helpers: missing windsurf case"
208
+ install_grep -q 'install_opencode()' && ta_pass "source: install_opencode()" || ta_fail "source: missing install_opencode()"
209
+ install_grep -q 'uninstall_opencode()' && ta_pass "source: uninstall_opencode()" || ta_fail "source: missing uninstall_opencode()"
210
+ install_grep -q 'OPENCODE_SKILLS_DIR=' && ta_pass "source: opencode skills dir" || ta_fail "source: missing opencode skills dir"
211
+ grep -q "'opencode'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: opencode supported" || ta_fail "setup.js: opencode not in SUPPORTED_IDS"
212
+ grep -q "case 'opencode'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: opencode case" || ta_fail "install-helpers: missing opencode case"
213
+ install_grep -q 'install_copilot()' && ta_pass "source: install_copilot()" || ta_fail "source: missing install_copilot()"
214
+ install_grep -q 'uninstall_copilot()' && ta_pass "source: uninstall_copilot()" || ta_fail "source: missing uninstall_copilot()"
215
+ install_grep -q 'COPILOT_SKILLS_DIR=' && ta_pass "source: copilot skills dir" || ta_fail "source: missing copilot skills dir"
216
+ grep -q "'copilot'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: copilot supported" || ta_fail "setup.js: copilot not in SUPPORTED_IDS"
217
+ grep -q "case 'copilot'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: copilot case" || ta_fail "install-helpers: missing copilot case"
164
218
  echo ""
165
219
  echo "──────────────────────────────────────────"
166
220
  echo "verify-install: $TA_PASS passed, $TA_FAIL failed"