bigpowers 2.86.5 → 2.86.7

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 (548) hide show
  1. package/.agents/skills/commit-message/SKILL.md +1 -1
  2. package/.agents/skills/evolve-skill/SKILL.md +1 -1
  3. package/.agents/skills/guard-git/SKILL.md +8 -8
  4. package/.agents/skills/kickoff-branch/SKILL.md +1 -1
  5. package/.agents/skills/migrate-spec/SKILL.md +52 -6
  6. package/.agents/skills/plan-work/SKILL.md +17 -5
  7. package/.agents/skills/publish-package/SKILL.md +15 -5
  8. package/.agents/skills/release-branch/SKILL.md +12 -8
  9. package/.agents/skills/seed-conventions/SKILL.md +20 -10
  10. package/.agents/skills/smoke-test/SKILL.md +9 -5
  11. package/.agents/skills/validate-contracts/SKILL.md +15 -6
  12. package/.agents/skills/wire-ci/SKILL.md +12 -5
  13. package/.agents/skills/write-document/SKILL.md +31 -5
  14. package/.cline/skills/align-grid/SKILL.md +110 -0
  15. package/.cline/skills/assess-impact/SKILL.md +91 -0
  16. package/.cline/skills/audit-code/SKILL.md +184 -0
  17. package/.cline/skills/audit-plan/SKILL.md +89 -0
  18. package/.cline/skills/build-epic/SKILL.md +105 -0
  19. package/.cline/skills/change-request/SKILL.md +121 -0
  20. package/.cline/skills/commit-message/SKILL.md +140 -0
  21. package/.cline/skills/compose-workflow/SKILL.md +82 -0
  22. package/.cline/skills/context7-mcp/SKILL.md +55 -0
  23. package/.cline/skills/craft-skill/SKILL.md +196 -0
  24. package/.cline/skills/deepen-architecture/SKILL.md +260 -0
  25. package/.cline/skills/define-language/SKILL.md +80 -0
  26. package/.cline/skills/define-success/SKILL.md +12 -0
  27. package/.cline/skills/delegate-task/SKILL.md +91 -0
  28. package/.cline/skills/deploy/SKILL.md +198 -0
  29. package/.cline/skills/design-interface/SKILL.md +97 -0
  30. package/.cline/skills/develop-tdd/SKILL.md +416 -0
  31. package/.cline/skills/diagnose-root/SKILL.md +24 -0
  32. package/.cline/skills/diagnose-stall/SKILL.md +54 -0
  33. package/.cline/skills/dispatch-agents/SKILL.md +118 -0
  34. package/.cline/skills/edit-document/SKILL.md +23 -0
  35. package/.cline/skills/elaborate-spec/SKILL.md +101 -0
  36. package/.cline/skills/enforce-first/SKILL.md +45 -0
  37. package/.cline/skills/evolve-skill/SKILL.md +55 -0
  38. package/.cline/skills/execute-plan/SKILL.md +61 -0
  39. package/.cline/skills/extract-design/SKILL.md +132 -0
  40. package/.cline/skills/find-way/SKILL.md +191 -0
  41. package/.cline/skills/fix-bug/SKILL.md +67 -0
  42. package/.cline/skills/gate-trace/SKILL.md +92 -0
  43. package/.cline/skills/generate-allure-report/SKILL.md +285 -0
  44. package/.cline/skills/grill-me/SKILL.md +108 -0
  45. package/.cline/skills/grill-with-docs/SKILL.md +53 -0
  46. package/.cline/skills/guard-git/SKILL.md +231 -0
  47. package/.cline/skills/harden-vps/SKILL.md +291 -0
  48. package/.cline/skills/hook-commits/SKILL.md +94 -0
  49. package/.cline/skills/inspect-quality/SKILL.md +106 -0
  50. package/.cline/skills/investigate-bug/SKILL.md +127 -0
  51. package/.cline/skills/kickoff-branch/SKILL.md +143 -0
  52. package/.cline/skills/maintain-wiki/SKILL.md +64 -0
  53. package/.cline/skills/map-codebase/SKILL.md +71 -0
  54. package/.cline/skills/migrate-spec/SKILL.md +908 -0
  55. package/.cline/skills/model-domain/SKILL.md +232 -0
  56. package/.cline/skills/orchestrate-project/SKILL.md +174 -0
  57. package/.cline/skills/organize-workspace/SKILL.md +164 -0
  58. package/.cline/skills/plan-refactor/SKILL.md +87 -0
  59. package/.cline/skills/plan-release/SKILL.md +145 -0
  60. package/.cline/skills/plan-tests/SKILL.md +75 -0
  61. package/.cline/skills/plan-work/SKILL.md +272 -0
  62. package/.cline/skills/publish-package/SKILL.md +338 -0
  63. package/.cline/skills/quick-fix/SKILL.md +114 -0
  64. package/.cline/skills/release-branch/SKILL.md +302 -0
  65. package/.cline/skills/request-review/SKILL.md +113 -0
  66. package/.cline/skills/research-first/SKILL.md +87 -0
  67. package/.cline/skills/reset-baseline/SKILL.md +21 -0
  68. package/.cline/skills/respond-review/SKILL.md +71 -0
  69. package/.cline/skills/run-benchmark/SKILL.md +85 -0
  70. package/.cline/skills/run-evals/SKILL.md +80 -0
  71. package/.cline/skills/run-planning/SKILL.md +101 -0
  72. package/.cline/skills/scope-work/SKILL.md +63 -0
  73. package/.cline/skills/search-skills/SKILL.md +73 -0
  74. package/.cline/skills/security-review/SKILL.md +384 -0
  75. package/.cline/skills/seed-conventions/SKILL.md +312 -0
  76. package/.cline/skills/session-state/SKILL.md +146 -0
  77. package/.cline/skills/setup-environment/SKILL.md +39 -0
  78. package/.cline/skills/simulate-agents/SKILL.md +26 -0
  79. package/.cline/skills/slice-tasks/SKILL.md +68 -0
  80. package/.cline/skills/smoke-test/SKILL.md +261 -0
  81. package/.cline/skills/spike-prototype/SKILL.md +95 -0
  82. package/.cline/skills/stocktake-skills/SKILL.md +74 -0
  83. package/.cline/skills/survey-context/SKILL.md +135 -0
  84. package/.cline/skills/terse-mode/SKILL.md +42 -0
  85. package/.cline/skills/trace-requirement/SKILL.md +69 -0
  86. package/.cline/skills/using-bigpowers/SKILL.md +111 -0
  87. package/.cline/skills/validate-contracts/SKILL.md +286 -0
  88. package/.cline/skills/validate-fix/SKILL.md +147 -0
  89. package/.cline/skills/verify-work/SKILL.md +191 -0
  90. package/.cline/skills/visual-dashboard/SKILL.md +50 -0
  91. package/.cline/skills/wire-ci/SKILL.md +381 -0
  92. package/.cline/skills/wire-observability/SKILL.md +97 -0
  93. package/.cline/skills/write-document/SKILL.md +281 -0
  94. package/.codebuddy/skills/commit-message/SKILL.md +1 -1
  95. package/.codebuddy/skills/evolve-skill/SKILL.md +1 -1
  96. package/.codebuddy/skills/guard-git/SKILL.md +8 -8
  97. package/.codebuddy/skills/kickoff-branch/SKILL.md +1 -1
  98. package/.codebuddy/skills/migrate-spec/SKILL.md +52 -6
  99. package/.codebuddy/skills/plan-work/SKILL.md +17 -5
  100. package/.codebuddy/skills/publish-package/SKILL.md +15 -5
  101. package/.codebuddy/skills/release-branch/SKILL.md +12 -8
  102. package/.codebuddy/skills/seed-conventions/SKILL.md +20 -10
  103. package/.codebuddy/skills/smoke-test/SKILL.md +9 -5
  104. package/.codebuddy/skills/validate-contracts/SKILL.md +15 -6
  105. package/.codebuddy/skills/wire-ci/SKILL.md +12 -5
  106. package/.codebuddy/skills/write-document/SKILL.md +31 -5
  107. package/.codex/skills/commit-message/SKILL.md +1 -1
  108. package/.codex/skills/evolve-skill/SKILL.md +1 -1
  109. package/.codex/skills/guard-git/SKILL.md +8 -8
  110. package/.codex/skills/kickoff-branch/SKILL.md +1 -1
  111. package/.codex/skills/migrate-spec/SKILL.md +52 -6
  112. package/.codex/skills/plan-work/SKILL.md +17 -5
  113. package/.codex/skills/publish-package/SKILL.md +15 -5
  114. package/.codex/skills/release-branch/SKILL.md +12 -8
  115. package/.codex/skills/seed-conventions/SKILL.md +20 -10
  116. package/.codex/skills/smoke-test/SKILL.md +9 -5
  117. package/.codex/skills/validate-contracts/SKILL.md +15 -6
  118. package/.codex/skills/wire-ci/SKILL.md +12 -5
  119. package/.codex/skills/write-document/SKILL.md +31 -5
  120. package/.copilot/skills/align-grid/SKILL.md +110 -0
  121. package/.copilot/skills/assess-impact/SKILL.md +91 -0
  122. package/.copilot/skills/audit-code/SKILL.md +184 -0
  123. package/.copilot/skills/audit-plan/SKILL.md +89 -0
  124. package/.copilot/skills/build-epic/SKILL.md +105 -0
  125. package/.copilot/skills/change-request/SKILL.md +121 -0
  126. package/.copilot/skills/commit-message/SKILL.md +140 -0
  127. package/.copilot/skills/compose-workflow/SKILL.md +82 -0
  128. package/.copilot/skills/context7-mcp/SKILL.md +55 -0
  129. package/.copilot/skills/craft-skill/SKILL.md +196 -0
  130. package/.copilot/skills/deepen-architecture/SKILL.md +260 -0
  131. package/.copilot/skills/define-language/SKILL.md +80 -0
  132. package/.copilot/skills/define-success/SKILL.md +12 -0
  133. package/.copilot/skills/delegate-task/SKILL.md +91 -0
  134. package/.copilot/skills/deploy/SKILL.md +198 -0
  135. package/.copilot/skills/design-interface/SKILL.md +97 -0
  136. package/.copilot/skills/develop-tdd/SKILL.md +416 -0
  137. package/.copilot/skills/diagnose-root/SKILL.md +24 -0
  138. package/.copilot/skills/diagnose-stall/SKILL.md +54 -0
  139. package/.copilot/skills/dispatch-agents/SKILL.md +118 -0
  140. package/.copilot/skills/edit-document/SKILL.md +23 -0
  141. package/.copilot/skills/elaborate-spec/SKILL.md +101 -0
  142. package/.copilot/skills/enforce-first/SKILL.md +45 -0
  143. package/.copilot/skills/evolve-skill/SKILL.md +55 -0
  144. package/.copilot/skills/execute-plan/SKILL.md +61 -0
  145. package/.copilot/skills/extract-design/SKILL.md +132 -0
  146. package/.copilot/skills/find-way/SKILL.md +191 -0
  147. package/.copilot/skills/fix-bug/SKILL.md +67 -0
  148. package/.copilot/skills/gate-trace/SKILL.md +92 -0
  149. package/.copilot/skills/generate-allure-report/SKILL.md +285 -0
  150. package/.copilot/skills/grill-me/SKILL.md +108 -0
  151. package/.copilot/skills/grill-with-docs/SKILL.md +53 -0
  152. package/.copilot/skills/guard-git/SKILL.md +231 -0
  153. package/.copilot/skills/harden-vps/SKILL.md +291 -0
  154. package/.copilot/skills/hook-commits/SKILL.md +94 -0
  155. package/.copilot/skills/inspect-quality/SKILL.md +106 -0
  156. package/.copilot/skills/investigate-bug/SKILL.md +127 -0
  157. package/.copilot/skills/kickoff-branch/SKILL.md +143 -0
  158. package/.copilot/skills/maintain-wiki/SKILL.md +64 -0
  159. package/.copilot/skills/map-codebase/SKILL.md +71 -0
  160. package/.copilot/skills/migrate-spec/SKILL.md +908 -0
  161. package/.copilot/skills/model-domain/SKILL.md +232 -0
  162. package/.copilot/skills/orchestrate-project/SKILL.md +174 -0
  163. package/.copilot/skills/organize-workspace/SKILL.md +164 -0
  164. package/.copilot/skills/plan-refactor/SKILL.md +87 -0
  165. package/.copilot/skills/plan-release/SKILL.md +145 -0
  166. package/.copilot/skills/plan-tests/SKILL.md +75 -0
  167. package/.copilot/skills/plan-work/SKILL.md +272 -0
  168. package/.copilot/skills/publish-package/SKILL.md +338 -0
  169. package/.copilot/skills/quick-fix/SKILL.md +114 -0
  170. package/.copilot/skills/release-branch/SKILL.md +302 -0
  171. package/.copilot/skills/request-review/SKILL.md +113 -0
  172. package/.copilot/skills/research-first/SKILL.md +87 -0
  173. package/.copilot/skills/reset-baseline/SKILL.md +21 -0
  174. package/.copilot/skills/respond-review/SKILL.md +71 -0
  175. package/.copilot/skills/run-benchmark/SKILL.md +85 -0
  176. package/.copilot/skills/run-evals/SKILL.md +80 -0
  177. package/.copilot/skills/run-planning/SKILL.md +101 -0
  178. package/.copilot/skills/scope-work/SKILL.md +63 -0
  179. package/.copilot/skills/search-skills/SKILL.md +73 -0
  180. package/.copilot/skills/security-review/SKILL.md +384 -0
  181. package/.copilot/skills/seed-conventions/SKILL.md +312 -0
  182. package/.copilot/skills/session-state/SKILL.md +146 -0
  183. package/.copilot/skills/setup-environment/SKILL.md +39 -0
  184. package/.copilot/skills/simulate-agents/SKILL.md +26 -0
  185. package/.copilot/skills/slice-tasks/SKILL.md +68 -0
  186. package/.copilot/skills/smoke-test/SKILL.md +261 -0
  187. package/.copilot/skills/spike-prototype/SKILL.md +95 -0
  188. package/.copilot/skills/stocktake-skills/SKILL.md +74 -0
  189. package/.copilot/skills/survey-context/SKILL.md +135 -0
  190. package/.copilot/skills/terse-mode/SKILL.md +42 -0
  191. package/.copilot/skills/trace-requirement/SKILL.md +69 -0
  192. package/.copilot/skills/using-bigpowers/SKILL.md +111 -0
  193. package/.copilot/skills/validate-contracts/SKILL.md +286 -0
  194. package/.copilot/skills/validate-fix/SKILL.md +147 -0
  195. package/.copilot/skills/verify-work/SKILL.md +191 -0
  196. package/.copilot/skills/visual-dashboard/SKILL.md +50 -0
  197. package/.copilot/skills/wire-ci/SKILL.md +381 -0
  198. package/.copilot/skills/wire-observability/SKILL.md +97 -0
  199. package/.copilot/skills/write-document/SKILL.md +281 -0
  200. package/.hermes/skills/commit-message/SKILL.md +1 -1
  201. package/.hermes/skills/evolve-skill/SKILL.md +1 -1
  202. package/.hermes/skills/guard-git/SKILL.md +8 -8
  203. package/.hermes/skills/kickoff-branch/SKILL.md +1 -1
  204. package/.hermes/skills/migrate-spec/SKILL.md +52 -6
  205. package/.hermes/skills/plan-work/SKILL.md +17 -5
  206. package/.hermes/skills/publish-package/SKILL.md +15 -5
  207. package/.hermes/skills/release-branch/SKILL.md +12 -8
  208. package/.hermes/skills/seed-conventions/SKILL.md +20 -10
  209. package/.hermes/skills/smoke-test/SKILL.md +9 -5
  210. package/.hermes/skills/validate-contracts/SKILL.md +15 -6
  211. package/.hermes/skills/wire-ci/SKILL.md +12 -5
  212. package/.hermes/skills/write-document/SKILL.md +31 -5
  213. package/.kilocode/rules/commit-message.md +1 -1
  214. package/.kilocode/rules/evolve-skill.md +1 -1
  215. package/.kilocode/rules/guard-git.md +8 -8
  216. package/.kilocode/rules/kickoff-branch.md +1 -1
  217. package/.kilocode/rules/migrate-spec.md +52 -6
  218. package/.kilocode/rules/plan-work.md +17 -5
  219. package/.kilocode/rules/publish-package.md +15 -5
  220. package/.kilocode/rules/release-branch.md +12 -8
  221. package/.kilocode/rules/seed-conventions.md +20 -10
  222. package/.kilocode/rules/smoke-test.md +9 -5
  223. package/.kilocode/rules/validate-contracts.md +15 -6
  224. package/.kilocode/rules/wire-ci.md +12 -5
  225. package/.kilocode/rules/write-document.md +31 -5
  226. package/.mimocode/skills/commit-message/SKILL.md +1 -1
  227. package/.mimocode/skills/evolve-skill/SKILL.md +1 -1
  228. package/.mimocode/skills/guard-git/SKILL.md +8 -8
  229. package/.mimocode/skills/kickoff-branch/SKILL.md +1 -1
  230. package/.mimocode/skills/migrate-spec/SKILL.md +52 -6
  231. package/.mimocode/skills/plan-work/SKILL.md +17 -5
  232. package/.mimocode/skills/publish-package/SKILL.md +15 -5
  233. package/.mimocode/skills/release-branch/SKILL.md +12 -8
  234. package/.mimocode/skills/seed-conventions/SKILL.md +20 -10
  235. package/.mimocode/skills/smoke-test/SKILL.md +9 -5
  236. package/.mimocode/skills/validate-contracts/SKILL.md +15 -6
  237. package/.mimocode/skills/wire-ci/SKILL.md +12 -5
  238. package/.mimocode/skills/write-document/SKILL.md +31 -5
  239. package/.opencode/skills/align-grid/SKILL.md +110 -0
  240. package/.opencode/skills/assess-impact/SKILL.md +91 -0
  241. package/.opencode/skills/audit-code/SKILL.md +184 -0
  242. package/.opencode/skills/audit-plan/SKILL.md +89 -0
  243. package/.opencode/skills/build-epic/SKILL.md +105 -0
  244. package/.opencode/skills/change-request/SKILL.md +121 -0
  245. package/.opencode/skills/commit-message/SKILL.md +140 -0
  246. package/.opencode/skills/compose-workflow/SKILL.md +82 -0
  247. package/.opencode/skills/context7-mcp/SKILL.md +55 -0
  248. package/.opencode/skills/craft-skill/SKILL.md +196 -0
  249. package/.opencode/skills/deepen-architecture/SKILL.md +260 -0
  250. package/.opencode/skills/define-language/SKILL.md +80 -0
  251. package/.opencode/skills/define-success/SKILL.md +12 -0
  252. package/.opencode/skills/delegate-task/SKILL.md +91 -0
  253. package/.opencode/skills/deploy/SKILL.md +198 -0
  254. package/.opencode/skills/design-interface/SKILL.md +97 -0
  255. package/.opencode/skills/develop-tdd/SKILL.md +416 -0
  256. package/.opencode/skills/diagnose-root/SKILL.md +24 -0
  257. package/.opencode/skills/diagnose-stall/SKILL.md +54 -0
  258. package/.opencode/skills/dispatch-agents/SKILL.md +118 -0
  259. package/.opencode/skills/edit-document/SKILL.md +23 -0
  260. package/.opencode/skills/elaborate-spec/SKILL.md +101 -0
  261. package/.opencode/skills/enforce-first/SKILL.md +45 -0
  262. package/.opencode/skills/evolve-skill/SKILL.md +55 -0
  263. package/.opencode/skills/execute-plan/SKILL.md +61 -0
  264. package/.opencode/skills/extract-design/SKILL.md +132 -0
  265. package/.opencode/skills/find-way/SKILL.md +191 -0
  266. package/.opencode/skills/fix-bug/SKILL.md +67 -0
  267. package/.opencode/skills/gate-trace/SKILL.md +92 -0
  268. package/.opencode/skills/generate-allure-report/SKILL.md +285 -0
  269. package/.opencode/skills/grill-me/SKILL.md +108 -0
  270. package/.opencode/skills/grill-with-docs/SKILL.md +53 -0
  271. package/.opencode/skills/guard-git/SKILL.md +231 -0
  272. package/.opencode/skills/harden-vps/SKILL.md +291 -0
  273. package/.opencode/skills/hook-commits/SKILL.md +94 -0
  274. package/.opencode/skills/inspect-quality/SKILL.md +106 -0
  275. package/.opencode/skills/investigate-bug/SKILL.md +127 -0
  276. package/.opencode/skills/kickoff-branch/SKILL.md +143 -0
  277. package/.opencode/skills/maintain-wiki/SKILL.md +64 -0
  278. package/.opencode/skills/map-codebase/SKILL.md +71 -0
  279. package/.opencode/skills/migrate-spec/SKILL.md +908 -0
  280. package/.opencode/skills/model-domain/SKILL.md +232 -0
  281. package/.opencode/skills/orchestrate-project/SKILL.md +174 -0
  282. package/.opencode/skills/organize-workspace/SKILL.md +164 -0
  283. package/.opencode/skills/plan-refactor/SKILL.md +87 -0
  284. package/.opencode/skills/plan-release/SKILL.md +145 -0
  285. package/.opencode/skills/plan-tests/SKILL.md +75 -0
  286. package/.opencode/skills/plan-work/SKILL.md +272 -0
  287. package/.opencode/skills/publish-package/SKILL.md +338 -0
  288. package/.opencode/skills/quick-fix/SKILL.md +114 -0
  289. package/.opencode/skills/release-branch/SKILL.md +302 -0
  290. package/.opencode/skills/request-review/SKILL.md +113 -0
  291. package/.opencode/skills/research-first/SKILL.md +87 -0
  292. package/.opencode/skills/reset-baseline/SKILL.md +21 -0
  293. package/.opencode/skills/respond-review/SKILL.md +71 -0
  294. package/.opencode/skills/run-benchmark/SKILL.md +85 -0
  295. package/.opencode/skills/run-evals/SKILL.md +80 -0
  296. package/.opencode/skills/run-planning/SKILL.md +101 -0
  297. package/.opencode/skills/scope-work/SKILL.md +63 -0
  298. package/.opencode/skills/search-skills/SKILL.md +73 -0
  299. package/.opencode/skills/security-review/SKILL.md +384 -0
  300. package/.opencode/skills/seed-conventions/SKILL.md +312 -0
  301. package/.opencode/skills/session-state/SKILL.md +146 -0
  302. package/.opencode/skills/setup-environment/SKILL.md +39 -0
  303. package/.opencode/skills/simulate-agents/SKILL.md +26 -0
  304. package/.opencode/skills/slice-tasks/SKILL.md +68 -0
  305. package/.opencode/skills/smoke-test/SKILL.md +261 -0
  306. package/.opencode/skills/spike-prototype/SKILL.md +95 -0
  307. package/.opencode/skills/stocktake-skills/SKILL.md +74 -0
  308. package/.opencode/skills/survey-context/SKILL.md +135 -0
  309. package/.opencode/skills/terse-mode/SKILL.md +42 -0
  310. package/.opencode/skills/trace-requirement/SKILL.md +69 -0
  311. package/.opencode/skills/using-bigpowers/SKILL.md +111 -0
  312. package/.opencode/skills/validate-contracts/SKILL.md +286 -0
  313. package/.opencode/skills/validate-fix/SKILL.md +147 -0
  314. package/.opencode/skills/verify-work/SKILL.md +191 -0
  315. package/.opencode/skills/visual-dashboard/SKILL.md +50 -0
  316. package/.opencode/skills/wire-ci/SKILL.md +381 -0
  317. package/.opencode/skills/wire-observability/SKILL.md +97 -0
  318. package/.opencode/skills/write-document/SKILL.md +281 -0
  319. package/.pi/package.json +1 -1
  320. package/.pi/prompts/commit-message.md +1 -1
  321. package/.pi/prompts/evolve-skill.md +1 -1
  322. package/.pi/prompts/guard-git.md +8 -8
  323. package/.pi/prompts/kickoff-branch.md +1 -1
  324. package/.pi/prompts/migrate-spec.md +52 -6
  325. package/.pi/prompts/plan-work.md +17 -5
  326. package/.pi/prompts/publish-package.md +15 -5
  327. package/.pi/prompts/release-branch.md +12 -8
  328. package/.pi/prompts/seed-conventions.md +20 -10
  329. package/.pi/prompts/smoke-test.md +9 -5
  330. package/.pi/prompts/validate-contracts.md +15 -6
  331. package/.pi/prompts/wire-ci.md +12 -5
  332. package/.pi/prompts/write-document.md +31 -5
  333. package/.pi/skills/commit-message/SKILL.md +1 -1
  334. package/.pi/skills/evolve-skill/SKILL.md +1 -1
  335. package/.pi/skills/guard-git/SKILL.md +8 -8
  336. package/.pi/skills/kickoff-branch/SKILL.md +1 -1
  337. package/.pi/skills/migrate-spec/SKILL.md +52 -6
  338. package/.pi/skills/plan-work/SKILL.md +17 -5
  339. package/.pi/skills/publish-package/SKILL.md +15 -5
  340. package/.pi/skills/release-branch/SKILL.md +12 -8
  341. package/.pi/skills/seed-conventions/SKILL.md +20 -10
  342. package/.pi/skills/smoke-test/SKILL.md +9 -5
  343. package/.pi/skills/validate-contracts/SKILL.md +15 -6
  344. package/.pi/skills/wire-ci/SKILL.md +12 -5
  345. package/.pi/skills/write-document/SKILL.md +31 -5
  346. package/.qwen/skills/align-grid/SKILL.md +110 -0
  347. package/.qwen/skills/assess-impact/SKILL.md +91 -0
  348. package/.qwen/skills/audit-code/SKILL.md +184 -0
  349. package/.qwen/skills/audit-plan/SKILL.md +89 -0
  350. package/.qwen/skills/build-epic/SKILL.md +105 -0
  351. package/.qwen/skills/change-request/SKILL.md +121 -0
  352. package/.qwen/skills/commit-message/SKILL.md +140 -0
  353. package/.qwen/skills/compose-workflow/SKILL.md +82 -0
  354. package/.qwen/skills/context7-mcp/SKILL.md +55 -0
  355. package/.qwen/skills/craft-skill/SKILL.md +196 -0
  356. package/.qwen/skills/deepen-architecture/SKILL.md +260 -0
  357. package/.qwen/skills/define-language/SKILL.md +80 -0
  358. package/.qwen/skills/define-success/SKILL.md +12 -0
  359. package/.qwen/skills/delegate-task/SKILL.md +91 -0
  360. package/.qwen/skills/deploy/SKILL.md +198 -0
  361. package/.qwen/skills/design-interface/SKILL.md +97 -0
  362. package/.qwen/skills/develop-tdd/SKILL.md +416 -0
  363. package/.qwen/skills/diagnose-root/SKILL.md +24 -0
  364. package/.qwen/skills/diagnose-stall/SKILL.md +54 -0
  365. package/.qwen/skills/dispatch-agents/SKILL.md +118 -0
  366. package/.qwen/skills/edit-document/SKILL.md +23 -0
  367. package/.qwen/skills/elaborate-spec/SKILL.md +101 -0
  368. package/.qwen/skills/enforce-first/SKILL.md +45 -0
  369. package/.qwen/skills/evolve-skill/SKILL.md +55 -0
  370. package/.qwen/skills/execute-plan/SKILL.md +61 -0
  371. package/.qwen/skills/extract-design/SKILL.md +132 -0
  372. package/.qwen/skills/find-way/SKILL.md +191 -0
  373. package/.qwen/skills/fix-bug/SKILL.md +67 -0
  374. package/.qwen/skills/gate-trace/SKILL.md +92 -0
  375. package/.qwen/skills/generate-allure-report/SKILL.md +285 -0
  376. package/.qwen/skills/grill-me/SKILL.md +108 -0
  377. package/.qwen/skills/grill-with-docs/SKILL.md +53 -0
  378. package/.qwen/skills/guard-git/SKILL.md +231 -0
  379. package/.qwen/skills/harden-vps/SKILL.md +291 -0
  380. package/.qwen/skills/hook-commits/SKILL.md +94 -0
  381. package/.qwen/skills/inspect-quality/SKILL.md +106 -0
  382. package/.qwen/skills/investigate-bug/SKILL.md +127 -0
  383. package/.qwen/skills/kickoff-branch/SKILL.md +143 -0
  384. package/.qwen/skills/maintain-wiki/SKILL.md +64 -0
  385. package/.qwen/skills/map-codebase/SKILL.md +71 -0
  386. package/.qwen/skills/migrate-spec/SKILL.md +908 -0
  387. package/.qwen/skills/model-domain/SKILL.md +232 -0
  388. package/.qwen/skills/orchestrate-project/SKILL.md +174 -0
  389. package/.qwen/skills/organize-workspace/SKILL.md +164 -0
  390. package/.qwen/skills/plan-refactor/SKILL.md +87 -0
  391. package/.qwen/skills/plan-release/SKILL.md +145 -0
  392. package/.qwen/skills/plan-tests/SKILL.md +75 -0
  393. package/.qwen/skills/plan-work/SKILL.md +272 -0
  394. package/.qwen/skills/publish-package/SKILL.md +338 -0
  395. package/.qwen/skills/quick-fix/SKILL.md +114 -0
  396. package/.qwen/skills/release-branch/SKILL.md +302 -0
  397. package/.qwen/skills/request-review/SKILL.md +113 -0
  398. package/.qwen/skills/research-first/SKILL.md +87 -0
  399. package/.qwen/skills/reset-baseline/SKILL.md +21 -0
  400. package/.qwen/skills/respond-review/SKILL.md +71 -0
  401. package/.qwen/skills/run-benchmark/SKILL.md +85 -0
  402. package/.qwen/skills/run-evals/SKILL.md +80 -0
  403. package/.qwen/skills/run-planning/SKILL.md +101 -0
  404. package/.qwen/skills/scope-work/SKILL.md +63 -0
  405. package/.qwen/skills/search-skills/SKILL.md +73 -0
  406. package/.qwen/skills/security-review/SKILL.md +384 -0
  407. package/.qwen/skills/seed-conventions/SKILL.md +312 -0
  408. package/.qwen/skills/session-state/SKILL.md +146 -0
  409. package/.qwen/skills/setup-environment/SKILL.md +39 -0
  410. package/.qwen/skills/simulate-agents/SKILL.md +26 -0
  411. package/.qwen/skills/slice-tasks/SKILL.md +68 -0
  412. package/.qwen/skills/smoke-test/SKILL.md +261 -0
  413. package/.qwen/skills/spike-prototype/SKILL.md +95 -0
  414. package/.qwen/skills/stocktake-skills/SKILL.md +74 -0
  415. package/.qwen/skills/survey-context/SKILL.md +135 -0
  416. package/.qwen/skills/terse-mode/SKILL.md +42 -0
  417. package/.qwen/skills/trace-requirement/SKILL.md +69 -0
  418. package/.qwen/skills/using-bigpowers/SKILL.md +111 -0
  419. package/.qwen/skills/validate-contracts/SKILL.md +286 -0
  420. package/.qwen/skills/validate-fix/SKILL.md +147 -0
  421. package/.qwen/skills/verify-work/SKILL.md +191 -0
  422. package/.qwen/skills/visual-dashboard/SKILL.md +50 -0
  423. package/.qwen/skills/wire-ci/SKILL.md +381 -0
  424. package/.qwen/skills/wire-observability/SKILL.md +97 -0
  425. package/.qwen/skills/write-document/SKILL.md +281 -0
  426. package/.trae/skills/commit-message/SKILL.md +1 -1
  427. package/.trae/skills/evolve-skill/SKILL.md +1 -1
  428. package/.trae/skills/guard-git/SKILL.md +8 -8
  429. package/.trae/skills/kickoff-branch/SKILL.md +1 -1
  430. package/.trae/skills/migrate-spec/SKILL.md +52 -6
  431. package/.trae/skills/plan-work/SKILL.md +17 -5
  432. package/.trae/skills/publish-package/SKILL.md +15 -5
  433. package/.trae/skills/release-branch/SKILL.md +12 -8
  434. package/.trae/skills/seed-conventions/SKILL.md +20 -10
  435. package/.trae/skills/smoke-test/SKILL.md +9 -5
  436. package/.trae/skills/validate-contracts/SKILL.md +15 -6
  437. package/.trae/skills/wire-ci/SKILL.md +12 -5
  438. package/.trae/skills/write-document/SKILL.md +31 -5
  439. package/.windsurf/rules/commit-message.md +1 -1
  440. package/.windsurf/rules/evolve-skill.md +1 -1
  441. package/.windsurf/rules/guard-git.md +8 -8
  442. package/.windsurf/rules/kickoff-branch.md +1 -1
  443. package/.windsurf/rules/migrate-spec.md +52 -6
  444. package/.windsurf/rules/plan-work.md +17 -5
  445. package/.windsurf/rules/publish-package.md +15 -5
  446. package/.windsurf/rules/release-branch.md +12 -8
  447. package/.windsurf/rules/seed-conventions.md +20 -10
  448. package/.windsurf/rules/smoke-test.md +9 -5
  449. package/.windsurf/rules/validate-contracts.md +15 -6
  450. package/.windsurf/rules/wire-ci.md +12 -5
  451. package/.windsurf/rules/write-document.md +31 -5
  452. package/.zcode/skills/commit-message/SKILL.md +1 -1
  453. package/.zcode/skills/evolve-skill/SKILL.md +1 -1
  454. package/.zcode/skills/guard-git/SKILL.md +8 -8
  455. package/.zcode/skills/kickoff-branch/SKILL.md +1 -1
  456. package/.zcode/skills/migrate-spec/SKILL.md +52 -6
  457. package/.zcode/skills/plan-work/SKILL.md +17 -5
  458. package/.zcode/skills/publish-package/SKILL.md +15 -5
  459. package/.zcode/skills/release-branch/SKILL.md +12 -8
  460. package/.zcode/skills/seed-conventions/SKILL.md +20 -10
  461. package/.zcode/skills/smoke-test/SKILL.md +9 -5
  462. package/.zcode/skills/validate-contracts/SKILL.md +15 -6
  463. package/.zcode/skills/wire-ci/SKILL.md +12 -5
  464. package/.zcode/skills/write-document/SKILL.md +31 -5
  465. package/CHANGELOG.md +14 -0
  466. package/CONVENTIONS.md +2 -0
  467. package/package.json +1 -1
  468. package/scripts/adapters/agy.sh +3 -0
  469. package/scripts/adapters/continue.sh +3 -0
  470. package/scripts/adapters/cursor.sh +3 -0
  471. package/scripts/adapters/gemini.sh +5 -24
  472. package/scripts/adapters/mimo.sh +3 -0
  473. package/scripts/adapters/omp.sh +3 -0
  474. package/scripts/adapters/pi.sh +6 -3
  475. package/scripts/adapters/zcode.sh +3 -0
  476. package/scripts/adapters/zed.sh +3 -0
  477. package/scripts/generate-context-bundle.sh +6 -0
  478. package/scripts/generate-reference-nav.sh +89 -0
  479. package/scripts/generate-viz-graph.sh +4 -0
  480. package/scripts/generate-workflow-diagrams.sh +102 -0
  481. package/scripts/golden-g13-script-orphans.sh +167 -0
  482. package/scripts/golden-g14-adapter-dispatch.sh +113 -0
  483. package/scripts/golden-g15-compliance-runner-selftest.sh +126 -0
  484. package/scripts/golden-g16-spec-version-gap.sh +72 -0
  485. package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
  486. package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
  487. package/scripts/lib/adapter-guard.sh +30 -0
  488. package/scripts/lib/audit-compliance-report.sh +32 -7
  489. package/scripts/lib/audit-compliance-runner.sh +14 -1
  490. package/scripts/lib/golden-suite-gates.sh +43 -3
  491. package/scripts/lib/install-targets-b.sh +0 -8
  492. package/scripts/lib/sync-render.sh +0 -43
  493. package/scripts/lib/test-assertions.sh +4 -0
  494. package/scripts/snapshot-catalog-baseline.sh +4 -0
  495. package/scripts/targets.yaml +35 -13
  496. package/scripts/test-adapter-render.sh +114 -0
  497. package/scripts/test-adapters.sh +10 -3
  498. package/scripts/test-completeness-critic-scope.sh +18 -19
  499. package/scripts/test-generate-epics-wiki-zero-stories.sh +12 -13
  500. package/scripts/test-golden-g11-worktree-venv.sh +16 -18
  501. package/scripts/test-install-distribute-only.sh +27 -26
  502. package/scripts/test-install-hub.sh +141 -0
  503. package/scripts/test-setup-no-pyyaml.sh +16 -17
  504. package/scripts/test-target-contracts.sh +15 -13
  505. package/scripts/test-tombstone-mechanism.sh +31 -33
  506. package/skills/commit-message/REFERENCE.md +1 -1
  507. package/skills/evolve-skill/REFERENCE.md +1 -1
  508. package/skills/guard-git/REFERENCE.md +8 -8
  509. package/skills/kickoff-branch/SKILL.md +1 -1
  510. package/skills/migrate-spec/REFERENCE.md +52 -6
  511. package/skills/plan-work/REFERENCE.md +17 -5
  512. package/skills/publish-package/REFERENCE.md +15 -5
  513. package/skills/release-branch/REFERENCE.md +12 -8
  514. package/skills/seed-conventions/REFERENCE.md +20 -10
  515. package/skills/smoke-test/REFERENCE.md +9 -5
  516. package/skills/validate-contracts/REFERENCE.md +15 -6
  517. package/skills/wire-ci/REFERENCE.md +12 -5
  518. package/skills/write-document/REFERENCE.md +31 -5
  519. package/skills-lock.json +1 -1
  520. package/scripts/add-model-frontmatter.sh +0 -32
  521. package/scripts/install-cursor-skills-local.sh +0 -15
  522. package/scripts/install-cursor-skills.sh +0 -24
  523. package/scripts/project-survey.sh +0 -63
  524. package/scripts/test-agy-hub.sh +0 -60
  525. package/scripts/test-cline-adapter.sh +0 -55
  526. package/scripts/test-cline-hub.sh +0 -48
  527. package/scripts/test-codebuddy-adapter.sh +0 -63
  528. package/scripts/test-codebuddy-hub.sh +0 -49
  529. package/scripts/test-codex-adapter.sh +0 -63
  530. package/scripts/test-codex-hub.sh +0 -49
  531. package/scripts/test-copilot-adapter.sh +0 -47
  532. package/scripts/test-copilot-hub.sh +0 -43
  533. package/scripts/test-gemini-adapter.sh +0 -70
  534. package/scripts/test-gemini-hub.sh +0 -56
  535. package/scripts/test-hermes-adapter.sh +0 -85
  536. package/scripts/test-hermes-hub.sh +0 -52
  537. package/scripts/test-kilocode-adapter.sh +0 -55
  538. package/scripts/test-kilocode-hub.sh +0 -48
  539. package/scripts/test-mimo-hub.sh +0 -52
  540. package/scripts/test-opencode-adapter.sh +0 -47
  541. package/scripts/test-opencode-hub.sh +0 -43
  542. package/scripts/test-qwen-adapter.sh +0 -63
  543. package/scripts/test-qwen-hub.sh +0 -49
  544. package/scripts/test-trae-adapter.sh +0 -63
  545. package/scripts/test-trae-hub.sh +0 -49
  546. package/scripts/test-windsurf-adapter.sh +0 -63
  547. package/scripts/test-windsurf-hub.sh +0 -49
  548. package/scripts/test-zcode-hub.sh +0 -52
@@ -107,10 +107,6 @@ install_agy() {
107
107
  echo " NOTE: Antigravity uses ~/.gemini/antigravity-cli/skills/ — not .gemini/extensions/ (Gemini CLI)"
108
108
  }
109
109
 
110
- install_antigravity() {
111
- install_agy
112
- }
113
-
114
110
  uninstall_agy() {
115
111
  echo ""
116
112
  echo "Antigravity CLI → removing management from $AGY_CONFIG_DIR/"
@@ -122,10 +118,6 @@ uninstall_agy() {
122
118
  fi
123
119
  }
124
120
 
125
- uninstall_antigravity() {
126
- uninstall_agy
127
- }
128
-
129
121
  # ── Codex CLI (e65s02) ───────────────────────────────────────────────────────
130
122
 
131
123
  CODEX_CONFIG_DIR="$HOME/.codex"
@@ -54,49 +54,6 @@ render_gemini_command() {
54
54
  } > "$GEMINI_COMMANDS/$IR_NAME.toml"
55
55
  }
56
56
 
57
- render_gemini_hooks_manifest() {
58
- local hookdir="${GEMINI_HOOKS_DIR:-$GEMINI_EXT_DIR/hooks}"
59
- mkdir -p "$hookdir"
60
- cat > "$hookdir/hooks-manifest.json" <<'JSON'
61
- {
62
- "schema_version": 1,
63
- "target": "gemini",
64
- "config_path": "~/.gemini/settings.json",
65
- "events_total": 11,
66
- "events": [
67
- "BeforeTool",
68
- "AfterTool",
69
- "BeforeAgent",
70
- "AfterAgent",
71
- "BeforeModel",
72
- "BeforeToolSelection",
73
- "AfterModel",
74
- "SessionStart",
75
- "SessionEnd",
76
- "Notification",
77
- "PreCompress"
78
- ],
79
- "shipped_hooks": [
80
- {
81
- "event": "SessionStart",
82
- "script": "session-start",
83
- "matcher": "startup|clear|compact",
84
- "wave": "a",
85
- "status": "shipped"
86
- },
87
- {
88
- "event": "BeforeTool",
89
- "script": "before-tool-git-guard.sh",
90
- "matcher": "run_shell_command",
91
- "wave": "a",
92
- "status": "template"
93
- }
94
- ],
95
- "polyglot_launcher": "run-hook.cmd"
96
- }
97
- JSON
98
- }
99
-
100
57
  render_pi_skill() {
101
58
  mkdir -p "$PI_SKILLS/$IR_NAME"
102
59
  {
@@ -19,3 +19,7 @@ ta_cleanup() {
19
19
  ta_pass() { echo " PASS $1"; TA_PASS=$((TA_PASS + 1)); }
20
20
 
21
21
  ta_fail() { echo " FAIL $1"; TA_FAIL=$((TA_FAIL + 1)); }
22
+
23
+ # Strip ANSI color codes — used by scripts that grep the colored output of a
24
+ # gate/skill they're testing, where the escape codes would break the match.
25
+ ta_strip_ansi() { sed -E 's/\x1b\[[0-9;]*m//g'; }
@@ -2,6 +2,10 @@
2
2
  # story: e54s01
3
3
  # snapshot-catalog-baseline.sh — freeze the live skill catalog into a dated,
4
4
  # immutable YAML baseline for e56's reclassification diff.
5
+ # bp-manual-utility: e56 (reclassify-catalog) is still `backlog` in
6
+ # execution-status.yaml — its sole consumer hasn't started, so there is
7
+ # nothing to wire this into yet. Promote to a gate when e56 kicks off; run
8
+ # manually until then: bash scripts/snapshot-catalog-baseline.sh
5
9
  set -euo pipefail
6
10
 
7
11
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -47,7 +47,9 @@ targets:
47
47
  - id: cline
48
48
  name: Cline
49
49
  tier: default_on
50
- skill: null
50
+ skill:
51
+ adapter: cline
52
+ output: .cline/skills
51
53
  context:
52
54
  adapter: cline
53
55
  mode: native
@@ -164,7 +166,9 @@ targets:
164
166
  # story: e68s02
165
167
  name: Qwen (Alibaba)
166
168
  tier: opt_in
167
- skill: null
169
+ skill:
170
+ adapter: qwen
171
+ output: .qwen/skills
168
172
  context:
169
173
  adapter: qwen
170
174
  mode: symlink
@@ -172,17 +176,6 @@ targets:
172
176
  contracts:
173
177
  - agents_md_exists
174
178
  - qwen_hooks_manifest
175
- name: Kilocode
176
- tier: opt_in
177
- skill:
178
- adapter: kilocode
179
- output: .kilocode/rules
180
- context:
181
- adapter: kilocode
182
- mode: copy
183
- file: AGENTS.md
184
- contracts:
185
- - agents_md_exists
186
179
 
187
180
  # Wave D (e37s12)
188
181
  - id: continue
@@ -303,3 +296,32 @@ targets:
303
296
  file: AGENTS.md
304
297
  contracts:
305
298
  - windsurf_hooks_manifest
299
+
300
+ # Registered by BUG-2026-07-26-null-skill-adapters-install-nothing: both ship
301
+ # a render_skill() adapter and an install function, but had no registry row,
302
+ # so srp-engine never rendered for them and install found nothing.
303
+ - id: opencode
304
+ name: OpenCode
305
+ tier: opt_in
306
+ skill:
307
+ adapter: opencode
308
+ output: .opencode/skills
309
+ context:
310
+ adapter: opencode
311
+ mode: symlink
312
+ file: AGENTS.md
313
+ contracts:
314
+ - agents_md_exists
315
+
316
+ - id: copilot
317
+ name: Copilot CLI
318
+ tier: opt_in
319
+ skill:
320
+ adapter: copilot
321
+ output: .copilot/skills
322
+ context:
323
+ adapter: copilot
324
+ mode: copy
325
+ file: AGENTS.md
326
+ contracts:
327
+ - agents_md_exists
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05
3
+ # test-adapter-render.sh — render, path-traversal and hook-guard checks for
4
+ # every adapter, replacing 11 hand-written test-<target>-adapter.sh scripts.
5
+ #
6
+ # The 11 originals were the same five assertions with the target name
7
+ # substituted, none of them reachable from any gate, and they covered 11 of the
8
+ # 18 adapters that define render_skill(). Their fifth assertion was pure
9
+ # delegation to test-adapters.sh, which is already registry-driven.
10
+ #
11
+ # Adapters are discovered from scripts/adapters/*.sh, and each adapter's output
12
+ # directory variable is read out of its own source (they vary: *_SKILLS,
13
+ # *_RULES, *_EXT_DIR), so adding an adapter needs no edit here.
14
+ #
15
+ # Usage: bash scripts/test-adapter-render.sh
16
+ set -euo pipefail
17
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
18
+ resolve_repo_root
19
+ cd "$REPO_ROOT"
20
+
21
+ TA_PASS=0
22
+ TA_FAIL=0
23
+ TA_TMPDIR=""
24
+
25
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/test-assertions.sh"
26
+ trap ta_cleanup EXIT
27
+
28
+ TA_TMPDIR=$(mktemp -d)
29
+ TMP_ROOT="$TA_TMPDIR"
30
+ echo "=== test-adapter-render.sh ==="
31
+
32
+ for adapter in scripts/adapters/*.sh; do
33
+ id="$(basename "$adapter" .sh)"
34
+
35
+ grep -q "^render_skill()" "$adapter" || continue
36
+
37
+ # Adapters are sourced, not executed: several (continue, omp, zed) are stubs
38
+ # with no stdin entrypoint and would silently no-op — and exit 0 — if run as
39
+ # scripts. Sourcing and calling render_skill directly is how test-adapters.sh
40
+ # drives them, and it exercises every adapter the same way.
41
+ #
42
+ # An adapter may read more than one output variable (gemini uses GEMINI_SKILLS
43
+ # and GEMINI_EXT_DIR), so point all of them at the sandbox rather than
44
+ # guessing which one matters.
45
+ mapfile -t outvars < <(grep -oE '\$\{?[A-Z][A-Z0-9_]*_(SKILLS|RULES|EXT_DIR|OUT|COMMANDS|PROMPTS|HOOKS_DIR)[:-]' "$adapter" \
46
+ | tr -d '${:-' | sort -u)
47
+ if [[ ${#outvars[@]} -eq 0 ]]; then
48
+ echo " skip: $id — no output directory variable found"
49
+ continue
50
+ fi
51
+
52
+ render_into() { # $1 = destination dir, $2 = skill name
53
+ local dir="$1" nm="$2" v
54
+ local -a envs=()
55
+ for v in "${outvars[@]}"; do envs+=("$v=$dir"); done
56
+ ( set +e
57
+ env "${envs[@]}" bash -c '
58
+ source "$1" 2>/dev/null || exit 1
59
+ IR_NAME="$2"; IR_DESCRIPTION="test desc"; IR_BODY="test body"
60
+ IR_DESC_ESCAPED="test desc"; IR_MODEL=""
61
+ declare -f render_skill >/dev/null || exit 1
62
+ render_skill
63
+ ' _ "$PWD/$adapter" "$nm" >/dev/null 2>&1 )
64
+ }
65
+
66
+ dest="$TMP_ROOT/$id"
67
+ mkdir -p "$dest"
68
+ if render_into "$dest" "test-skill" && [[ -n "$(find "$dest" -mindepth 1 2>/dev/null)" ]]; then
69
+ ta_pass "$id: render_skill writes an artifact from a SkillIR"
70
+ else
71
+ ta_fail "$id: render_skill produced no artifact (${outvars[*]})"
72
+ fi
73
+
74
+ # Path traversal must be refused — this is the security assertion the
75
+ # per-target scripts carried and nothing else covers.
76
+ #
77
+ # Each adapter gets its own sandbox parent so the escape probe is isolated:
78
+ # ../escape from <sandbox>/out lands in <sandbox>, and a single shared parent
79
+ # would make one adapter's artifact fail every later adapter.
80
+ sandbox="$TMP_ROOT/sandbox-$id"
81
+ mkdir -p "$sandbox/out"
82
+ if render_into "$sandbox/out" "../escape"; then
83
+ ta_fail "$id: accepted a path-traversal skill name"
84
+ else
85
+ ta_pass "$id: rejects path traversal in skill name"
86
+ fi
87
+ if [[ -e "$sandbox/escape" ]]; then
88
+ ta_fail "$id: path traversal escaped into $sandbox"
89
+ else
90
+ ta_pass "$id: traversal wrote nothing outside the destination"
91
+ fi
92
+
93
+ # Hook bundle + guard behaviour, only where the target ships hooks.
94
+ hookdir="scripts/hooks/$id"
95
+ guard="$hookdir/pre-tool-git-guard.sh"
96
+ if [[ -f "$guard" ]]; then
97
+ out="$(echo '{"tool_input":{"command":"git push --force origin main"}}' \
98
+ | bash "$guard" 2>/dev/null || true)"
99
+ grep -q 'block' <<<"$out" \
100
+ && ta_pass "$id: pre-tool guard blocks a dangerous git command" \
101
+ || ta_fail "$id: pre-tool guard did not block git push --force"
102
+ fi
103
+ done
104
+
105
+ # The generic adapter-contract runner stays the source of truth for
106
+ # render_skill/wire_context wiring; assert it is green rather than restating it.
107
+ if bash scripts/test-adapters.sh 2>&1 | grep -q '0 failed'; then
108
+ ta_pass "test-adapters.sh reports 0 failed across the registry"
109
+ else
110
+ ta_fail "test-adapters.sh reported failures"
111
+ fi
112
+
113
+ echo "test-adapter-render: $TA_PASS passed, $TA_FAIL failed"
114
+ [[ "$TA_FAIL" -eq 0 ]] || exit 1
@@ -40,8 +40,13 @@ test_adapter() {
40
40
  [[ -f "$adapter_file" ]] || { ta_fail "$id: adapter missing"; return; }
41
41
  ta_pass "$id: exists"
42
42
 
43
+ # </dev/null is load-bearing. The caller feeds the target list into a
44
+ # `while read` loop, so a sourced adapter inherits it on fd 0 — and every
45
+ # adapter ends in a main block that reads stdin. agy.sh was consuming the
46
+ # remaining target list and running render_skill with an empty IR_NAME, so
47
+ # this "registry-driven" runner silently tested exactly one adapter.
43
48
  # shellcheck source=/dev/null
44
- source "$adapter_file" 2>/dev/null && ta_pass "$id: sourceable" || { ta_fail "$id: source error"; return; }
49
+ source "$adapter_file" </dev/null 2>/dev/null && ta_pass "$id: sourceable" || { ta_fail "$id: source error"; return; }
45
50
 
46
51
  local has_skill has_context mode
47
52
  has_skill=$(yq -r ".targets[] | select(.id==\"$id\") | .skill != null" "$TARGETS_FILE")
@@ -62,11 +67,13 @@ test_adapter() {
62
67
  # to print 5 PASS lines and report 4. Capture the status, tally in-process.
63
68
  if (
64
69
  cd "$TA_TMPDIR"
70
+ # </dev/null for the same reason as above — this subshell also inherits
71
+ # the caller's target list on fd 0.
65
72
  # shellcheck source=/dev/null
66
- source "$adapter_file"
73
+ source "$adapter_file" </dev/null
67
74
  wire_context >/dev/null 2>&1 || true
68
75
  wire_context >/dev/null 2>&1
69
- ); then
76
+ ) </dev/null; then
70
77
  ta_pass "$id: idempotent wire_context"
71
78
  else
72
79
  ta_fail "$id: wire_context failed"
@@ -15,9 +15,12 @@ RED='\033[0;31m'
15
15
  GREEN='\033[0;32m'
16
16
  NC='\033[0m'
17
17
 
18
- FAILURES=0
19
- tt_pass() { echo -e "${GREEN}PASS${NC} $1"; }
20
- tt_fail() { echo -e "${RED}FAIL${NC} $1"; FAILURES=$((FAILURES + 1)); }
18
+ TA_PASS=0
19
+ TA_FAIL=0
20
+ TA_TMPDIR=""
21
+ source "$REPO_ROOT/scripts/lib/test-assertions.sh"
22
+ # NOT `trap ta_cleanup EXIT` — this script's cleanup restores backed-up
23
+ # specs/state.yaml and specs/traceability-matrix.json, not a TA_TMPDIR.
21
24
 
22
25
  STATE_FILE="specs/state.yaml"
23
26
  MATRIX_FILE="specs/traceability-matrix.json"
@@ -26,12 +29,12 @@ MATRIX_BACKUP=$(mktemp)
26
29
  cp "$STATE_FILE" "$STATE_BACKUP"
27
30
  cp "$MATRIX_FILE" "$MATRIX_BACKUP"
28
31
 
29
- cleanup() {
32
+ completeness_critic_test_cleanup() {
30
33
  cp "$STATE_BACKUP" "$STATE_FILE"
31
34
  cp "$MATRIX_BACKUP" "$MATRIX_FILE"
32
35
  rm -f "$STATE_BACKUP" "$MATRIX_BACKUP"
33
36
  }
34
- trap cleanup EXIT
37
+ trap completeness_critic_test_cleanup EXIT
35
38
 
36
39
  run_critic() {
37
40
  bash scripts/lib/completeness-critic.sh 2>&1 || true
@@ -56,18 +59,18 @@ sed -i.bak '/^active_story:/d' "$STATE_FILE" && rm -f "${STATE_FILE}.bak"
56
59
  write_matrix '[]'
57
60
  output=$(run_critic)
58
61
  if echo "$output" | grep -q "\[WARNING\].*no active_story set"; then
59
- tt_pass "unset active_story produces an explicit WARNING"
62
+ ta_pass "unset active_story produces an explicit WARNING"
60
63
  else
61
- tt_fail "unset active_story did not produce the expected WARNING"
64
+ ta_fail "unset active_story did not produce the expected WARNING"
62
65
  fi
63
66
 
64
67
  # --- Scenario: active_story set but absent from the matrix → WARNING ---
65
68
  printf 'active_story: e99s99\n' >> "$STATE_FILE"
66
69
  output=$(run_critic)
67
70
  if echo "$output" | grep -q "\[WARNING\].*e99s99 not found"; then
68
- tt_pass "unresolved active_story produces an explicit WARNING"
71
+ ta_pass "unresolved active_story produces an explicit WARNING"
69
72
  else
70
- tt_fail "unresolved active_story did not produce the expected WARNING"
73
+ ta_fail "unresolved active_story did not produce the expected WARNING"
71
74
  fi
72
75
  sed -i.bak '/^active_story:/d' "$STATE_FILE" && rm -f "${STATE_FILE}.bak"
73
76
 
@@ -76,24 +79,20 @@ printf 'active_story: e00s01\n' >> "$STATE_FILE"
76
79
  write_matrix '[]'
77
80
  output=$(run_critic)
78
81
  if echo "$output" | grep -q "\[BLOCKER\] active story e00s01 has zero explicit story-tag links"; then
79
- tt_pass "active story with zero tags is correctly flagged as BLOCKER"
82
+ ta_pass "active story with zero tags is correctly flagged as BLOCKER"
80
83
  else
81
- tt_fail "active story with zero tags was not flagged as BLOCKER"
84
+ ta_fail "active story with zero tags was not flagged as BLOCKER"
82
85
  fi
83
86
 
84
87
  # --- Scenario: active story IS tagged → no BLOCKER, even though sibling e00s02 is untagged ---
85
88
  write_matrix '[{"method": "explicit_tag", "file": "scripts/fixture.sh", "line": 1, "confidence": 1.0}]'
86
89
  output=$(run_critic)
87
90
  if echo "$output" | grep -q "\[BLOCKER\] active story e00s01"; then
88
- tt_fail "tagged active story incorrectly flagged as BLOCKER"
91
+ ta_fail "tagged active story incorrectly flagged as BLOCKER"
89
92
  else
90
- tt_pass "tagged active story is not flagged, and untagged sibling e00s02 does not leak into the check"
93
+ ta_pass "tagged active story is not flagged, and untagged sibling e00s02 does not leak into the check"
91
94
  fi
92
95
 
93
96
  echo "---"
94
- if [[ "$FAILURES" -eq 0 ]]; then
95
- echo -e "${GREEN}test-completeness-critic-scope: ALL PASS${NC}"
96
- else
97
- echo -e "${RED}test-completeness-critic-scope: $FAILURES failure(s)${NC}"
98
- fi
99
- exit "$FAILURES"
97
+ echo "test-completeness-critic-scope: $TA_PASS passed, $TA_FAIL failed"
98
+ exit "$TA_FAIL"
@@ -16,19 +16,22 @@ RED='\033[0;31m'
16
16
  GREEN='\033[0;32m'
17
17
  NC='\033[0m'
18
18
 
19
- FAILURES=0
20
- tt_pass() { echo -e "${GREEN}PASS${NC} $1"; }
21
- tt_fail() { echo -e "${RED}FAIL${NC} $1"; FAILURES=$((FAILURES + 1)); }
19
+ TA_PASS=0
20
+ TA_FAIL=0
21
+ TA_TMPDIR=""
22
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/test-assertions.sh"
23
+ # NOT `trap ta_cleanup EXIT` — this script's cleanup removes a named fixture
24
+ # epic dir and its OKF bundle, not a TA_TMPDIR.
22
25
 
23
26
  FIXTURE_ID="e00"
24
27
  FIXTURE_DIR="specs/epics/e00-zero-story-fixture"
25
28
  FIXTURE_BUNDLE="specs/epics-wiki/${FIXTURE_ID}.okf.md"
26
29
 
27
- cleanup() {
30
+ epics_wiki_test_cleanup() {
28
31
  rm -rf "$FIXTURE_DIR"
29
32
  rm -f "$FIXTURE_BUNDLE"
30
33
  }
31
- trap cleanup EXIT
34
+ trap epics_wiki_test_cleanup EXIT
32
35
 
33
36
  mkdir -p "$FIXTURE_DIR"
34
37
  cat > "${FIXTURE_DIR}/epic.yaml" <<'FIXTUREEOF'
@@ -50,15 +53,11 @@ FIXTUREEOF
50
53
  bash scripts/generate-epics-wiki.sh > /dev/null
51
54
 
52
55
  if [[ ! -f "$FIXTURE_BUNDLE" ]]; then
53
- tt_pass "generate-epics-wiki.sh skips a zero-story epic (no bundle emitted)"
56
+ ta_pass "generate-epics-wiki.sh skips a zero-story epic (no bundle emitted)"
54
57
  else
55
- tt_fail "generate-epics-wiki.sh emitted a bundle for a zero-story epic: $FIXTURE_BUNDLE"
58
+ ta_fail "generate-epics-wiki.sh emitted a bundle for a zero-story epic: $FIXTURE_BUNDLE"
56
59
  fi
57
60
 
58
61
  echo "---"
59
- if [[ "$FAILURES" -eq 0 ]]; then
60
- echo -e "${GREEN}test-generate-epics-wiki-zero-stories: ALL PASS${NC}"
61
- else
62
- echo -e "${RED}test-generate-epics-wiki-zero-stories: $FAILURES failure(s)${NC}"
63
- fi
64
- exit "$FAILURES"
62
+ echo "test-generate-epics-wiki-zero-stories: $TA_PASS passed, $TA_FAIL failed"
63
+ exit "$TA_FAIL"
@@ -15,10 +15,12 @@ RED='\033[0;31m'
15
15
  GREEN='\033[0;32m'
16
16
  NC='\033[0m'
17
17
 
18
- FAILURES=0
19
- tt_pass() { echo -e "${GREEN}PASS${NC} $1"; }
20
- tt_fail() { echo -e "${RED}FAIL${NC} $1"; FAILURES=$((FAILURES + 1)); }
21
- strip_ansi() { sed -E 's/\x1b\[[0-9;]*m//g'; }
18
+ TA_PASS=0
19
+ TA_FAIL=0
20
+ TA_TMPDIR=""
21
+ source "$REPO_ROOT/scripts/lib/test-assertions.sh"
22
+ # NOT `trap ta_cleanup EXIT` — this script's cleanup moves a real .venv aside
23
+ # and back, not a TA_TMPDIR.
22
24
 
23
25
  VENV_MOVED=0
24
26
  if [[ -e .venv ]]; then
@@ -26,38 +28,34 @@ if [[ -e .venv ]]; then
26
28
  VENV_MOVED=1
27
29
  fi
28
30
 
29
- cleanup() {
31
+ golden_g11_test_cleanup() {
30
32
  rm -rf .venv
31
33
  if [[ "$VENV_MOVED" -eq 1 ]]; then
32
34
  mv .venv.test-golden-g11-backup .venv
33
35
  fi
34
36
  }
35
- trap cleanup EXIT
37
+ trap golden_g11_test_cleanup EXIT
36
38
 
37
39
  # --- Scenario: .venv absent (fresh worktree) → gate still PASSes ---
38
40
  if [[ -e .venv ]]; then
39
- tt_fail "test setup failed to remove .venv before running the gate"
41
+ ta_fail "test setup failed to remove .venv before running the gate"
40
42
  else
41
- output=$(bash scripts/golden-g11-gitignore-venv.sh 2>&1 | strip_ansi) && exit_code=0 || exit_code=$?
43
+ output=$(bash scripts/golden-g11-gitignore-venv.sh 2>&1 | ta_strip_ansi) && exit_code=0 || exit_code=$?
42
44
  if [[ "$exit_code" -eq 0 ]] && echo "$output" | grep -q "PASS git check-ignore .venv"; then
43
- tt_pass "gate PASSes when .venv does not exist on disk"
45
+ ta_pass "gate PASSes when .venv does not exist on disk"
44
46
  else
45
- tt_fail "gate did not PASS with .venv absent (exit=$exit_code)"
47
+ ta_fail "gate did not PASS with .venv absent (exit=$exit_code)"
46
48
  fi
47
49
 
48
50
  # The gate must clean up the .venv it created for the check — a fresh
49
51
  # worktree shouldn't be left with a stray directory after a gate run.
50
52
  if [[ ! -e .venv ]]; then
51
- tt_pass "gate removes the .venv it created for the check"
53
+ ta_pass "gate removes the .venv it created for the check"
52
54
  else
53
- tt_fail "gate left a stray .venv behind after the check"
55
+ ta_fail "gate left a stray .venv behind after the check"
54
56
  fi
55
57
  fi
56
58
 
57
59
  echo "---"
58
- if [[ "$FAILURES" -eq 0 ]]; then
59
- echo -e "${GREEN}test-golden-g11-worktree-venv: ALL PASS${NC}"
60
- else
61
- echo -e "${RED}test-golden-g11-worktree-venv: $FAILURES failure(s)${NC}"
62
- fi
63
- exit "$FAILURES"
60
+ echo "test-golden-g11-worktree-venv: $TA_PASS passed, $TA_FAIL failed"
61
+ exit "$TA_FAIL"
@@ -5,24 +5,25 @@
5
5
  set -euo pipefail
6
6
 
7
7
  REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
8
- PASS=0
9
- FAIL=0
8
+ TA_PASS=0
9
+ TA_FAIL=0
10
+ TA_TMPDIR=""
10
11
 
11
- pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
12
- fail() { echo "FAIL: $1" >&2; FAIL=$((FAIL + 1)); }
12
+ source "$REPO_ROOT/scripts/lib/test-assertions.sh"
13
+ trap ta_cleanup EXIT
13
14
 
14
15
  echo "=== test-install-distribute-only.sh ==="
15
16
 
16
17
  SYNC_SH="$REPO_ROOT/scripts/sync-skills.sh"
17
18
  SETUP_JS="$REPO_ROOT/bin/setup.js"
18
19
 
19
- grep -q -- '--distribute-only' "$SYNC_SH" && pass 'sync-skills.sh: --distribute-only flag defined' \
20
- || fail 'sync-skills.sh: missing --distribute-only flag'
21
- grep -q "sync-skills.sh --distribute-only" "$SETUP_JS" && pass 'setup.js: invokes sync-skills.sh with --distribute-only' \
22
- || fail 'setup.js: does not pass --distribute-only'
20
+ grep -q -- '--distribute-only' "$SYNC_SH" && ta_pass 'sync-skills.sh: --distribute-only flag defined' \
21
+ || ta_fail 'sync-skills.sh: missing --distribute-only flag'
22
+ grep -q "sync-skills.sh --distribute-only" "$SETUP_JS" && ta_pass 'setup.js: invokes sync-skills.sh with --distribute-only' \
23
+ || ta_fail 'setup.js: does not pass --distribute-only'
23
24
  grep -q "runInheritedAsync('bash scripts/sync-skills.sh --distribute-only')" "$SETUP_JS" \
24
- && pass 'setup.js: sync-skills call is async (spinner can animate)' \
25
- || fail 'setup.js: sync-skills call reverted to blocking runInherited (spinner would freeze)'
25
+ && ta_pass 'setup.js: sync-skills call is async (spinner can animate)' \
26
+ || ta_fail 'setup.js: sync-skills call reverted to blocking runInherited (spinner would freeze)'
26
27
 
27
28
  hash_of() { [[ -f "$1" ]] && shasum -a 256 "$1" | awk '{print $1}' || echo "absent"; }
28
29
  listing_of() { [[ -d "$1" ]] && (find "$1" -maxdepth 1 -type f | sort) || echo "absent"; }
@@ -34,29 +35,29 @@ EPICS_WIKI_BEFORE=$(listing_of "$REPO_ROOT/specs/epics-wiki")
34
35
 
35
36
  OUT="$(cd "$REPO_ROOT" && bash scripts/sync-skills.sh --distribute-only 2>&1)"
36
37
  echo "$OUT" | grep -q -- '--distribute-only: dev-maintenance regen skipped' \
37
- && pass 'sync-skills.sh --distribute-only: confirmation message printed' \
38
- || fail 'sync-skills.sh --distribute-only: missing confirmation message'
38
+ && ta_pass 'sync-skills.sh --distribute-only: confirmation message printed' \
39
+ || ta_fail 'sync-skills.sh --distribute-only: missing confirmation message'
39
40
  echo "$OUT" | grep -q 'Generating OKF wikis' \
40
- && fail 'sync-skills.sh --distribute-only: still generated OKF wikis' \
41
- || pass 'sync-skills.sh --distribute-only: no OKF wiki generation'
41
+ && ta_fail 'sync-skills.sh --distribute-only: still generated OKF wikis' \
42
+ || ta_pass 'sync-skills.sh --distribute-only: no OKF wiki generation'
42
43
  echo "$OUT" | grep -q 'regenerate-lockfile' \
43
- && fail 'sync-skills.sh --distribute-only: still regenerated lockfile' \
44
- || pass 'sync-skills.sh --distribute-only: no lockfile regen'
44
+ && ta_fail 'sync-skills.sh --distribute-only: still regenerated lockfile' \
45
+ || ta_pass 'sync-skills.sh --distribute-only: no lockfile regen'
45
46
 
46
47
  [[ "$(hash_of "$REPO_ROOT/skills-lock.json")" == "$LOCK_BEFORE" ]] \
47
- && pass 'skills-lock.json untouched' || fail 'skills-lock.json was modified'
48
+ && ta_pass 'skills-lock.json untouched' || ta_fail 'skills-lock.json was modified'
48
49
  [[ "$(hash_of "$REPO_ROOT/SKILL-INDEX.md")" == "$INDEX_BEFORE" ]] \
49
- && pass 'SKILL-INDEX.md untouched' || fail 'SKILL-INDEX.md was modified'
50
+ && ta_pass 'SKILL-INDEX.md untouched' || ta_fail 'SKILL-INDEX.md was modified'
50
51
  [[ "$(hash_of "$REPO_ROOT/specs/SKILL-SEARCH-INDEX_LATEST.md")" == "$SEARCH_INDEX_BEFORE" ]] \
51
- && pass 'SKILL-SEARCH-INDEX_LATEST.md untouched' || fail 'SKILL-SEARCH-INDEX_LATEST.md was modified'
52
+ && ta_pass 'SKILL-SEARCH-INDEX_LATEST.md untouched' || ta_fail 'SKILL-SEARCH-INDEX_LATEST.md was modified'
52
53
  [[ "$(listing_of "$REPO_ROOT/specs/epics-wiki")" == "$EPICS_WIKI_BEFORE" ]] \
53
- && pass 'specs/epics-wiki/ untouched' || fail 'specs/epics-wiki/ was modified'
54
+ && ta_pass 'specs/epics-wiki/ untouched' || ta_fail 'specs/epics-wiki/ was modified'
54
55
 
55
- [[ -f "$REPO_ROOT/.cursor/rules/fix-bug.mdc" ]] && pass 'skills still distributed (.cursor/rules populated)' \
56
- || fail 'skill distribution did not run'
56
+ [[ -f "$REPO_ROOT/.cursor/rules/fix-bug.mdc" ]] && ta_pass 'skills still distributed (.cursor/rules populated)' \
57
+ || ta_fail 'skill distribution did not run'
57
58
 
58
- bash -n "$SYNC_SH" && pass 'bash -n sync-skills.sh' || fail 'bash -n sync-skills.sh'
59
- node --check "$SETUP_JS" && pass 'node --check setup.js' || fail 'node --check setup.js'
59
+ bash -n "$SYNC_SH" && ta_pass 'bash -n sync-skills.sh' || ta_fail 'bash -n sync-skills.sh'
60
+ node --check "$SETUP_JS" && ta_pass 'node --check setup.js' || ta_fail 'node --check setup.js'
60
61
 
61
- echo "test-install-distribute-only: $PASS passed, $FAIL failed"
62
- [[ "$FAIL" -eq 0 ]] || exit 1
62
+ echo "test-install-distribute-only: $TA_PASS passed, $TA_FAIL failed"
63
+ [[ "$TA_FAIL" -eq 0 ]] || exit 1