bigpowers 2.86.4 → 2.86.6

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 (568) hide show
  1. package/.agents/skills/commit-message/SKILL.md +1 -1
  2. package/.agents/skills/craft-skill/SKILL.md +2 -2
  3. package/.agents/skills/define-success/SKILL.md +6 -59
  4. package/.agents/skills/deploy/SKILL.md +1 -1
  5. package/.agents/skills/elaborate-spec/SKILL.md +1 -1
  6. package/.agents/skills/evolve-skill/SKILL.md +1 -1
  7. package/.agents/skills/harden-vps/SKILL.md +63 -60
  8. package/.agents/skills/investigate-bug/SKILL.md +2 -2
  9. package/.agents/skills/orchestrate-project/SKILL.md +1 -1
  10. package/.agents/skills/plan-refactor/SKILL.md +2 -2
  11. package/.agents/skills/plan-release/SKILL.md +2 -2
  12. package/.agents/skills/plan-work/SKILL.md +1 -1
  13. package/.agents/skills/using-bigpowers/SKILL.md +2 -2
  14. package/.agents/skills/wire-ci/SKILL.md +11 -14
  15. package/.agents/skills/write-document/SKILL.md +1 -1
  16. package/.cline/skills/align-grid/SKILL.md +110 -0
  17. package/.cline/skills/assess-impact/SKILL.md +91 -0
  18. package/.cline/skills/audit-code/SKILL.md +184 -0
  19. package/.cline/skills/audit-plan/SKILL.md +89 -0
  20. package/.cline/skills/build-epic/SKILL.md +105 -0
  21. package/.cline/skills/change-request/SKILL.md +121 -0
  22. package/.cline/skills/commit-message/SKILL.md +140 -0
  23. package/.cline/skills/compose-workflow/SKILL.md +82 -0
  24. package/.cline/skills/context7-mcp/SKILL.md +55 -0
  25. package/.cline/skills/craft-skill/SKILL.md +196 -0
  26. package/.cline/skills/deepen-architecture/SKILL.md +260 -0
  27. package/.cline/skills/define-language/SKILL.md +80 -0
  28. package/.cline/skills/define-success/SKILL.md +12 -0
  29. package/.cline/skills/delegate-task/SKILL.md +91 -0
  30. package/.cline/skills/deploy/SKILL.md +198 -0
  31. package/.cline/skills/design-interface/SKILL.md +97 -0
  32. package/.cline/skills/develop-tdd/SKILL.md +416 -0
  33. package/.cline/skills/diagnose-root/SKILL.md +24 -0
  34. package/.cline/skills/diagnose-stall/SKILL.md +54 -0
  35. package/.cline/skills/dispatch-agents/SKILL.md +118 -0
  36. package/.cline/skills/edit-document/SKILL.md +23 -0
  37. package/.cline/skills/elaborate-spec/SKILL.md +101 -0
  38. package/.cline/skills/enforce-first/SKILL.md +45 -0
  39. package/.cline/skills/evolve-skill/SKILL.md +55 -0
  40. package/.cline/skills/execute-plan/SKILL.md +61 -0
  41. package/.cline/skills/extract-design/SKILL.md +132 -0
  42. package/.cline/skills/find-way/SKILL.md +191 -0
  43. package/.cline/skills/fix-bug/SKILL.md +67 -0
  44. package/.cline/skills/gate-trace/SKILL.md +92 -0
  45. package/.cline/skills/generate-allure-report/SKILL.md +285 -0
  46. package/.cline/skills/grill-me/SKILL.md +108 -0
  47. package/.cline/skills/grill-with-docs/SKILL.md +53 -0
  48. package/.cline/skills/guard-git/SKILL.md +231 -0
  49. package/.cline/skills/harden-vps/SKILL.md +291 -0
  50. package/.cline/skills/hook-commits/SKILL.md +94 -0
  51. package/.cline/skills/inspect-quality/SKILL.md +106 -0
  52. package/.cline/skills/investigate-bug/SKILL.md +127 -0
  53. package/.cline/skills/kickoff-branch/SKILL.md +143 -0
  54. package/.cline/skills/maintain-wiki/SKILL.md +64 -0
  55. package/.cline/skills/map-codebase/SKILL.md +71 -0
  56. package/.cline/skills/migrate-spec/SKILL.md +862 -0
  57. package/.cline/skills/model-domain/SKILL.md +232 -0
  58. package/.cline/skills/orchestrate-project/SKILL.md +174 -0
  59. package/.cline/skills/organize-workspace/SKILL.md +164 -0
  60. package/.cline/skills/plan-refactor/SKILL.md +87 -0
  61. package/.cline/skills/plan-release/SKILL.md +145 -0
  62. package/.cline/skills/plan-tests/SKILL.md +75 -0
  63. package/.cline/skills/plan-work/SKILL.md +260 -0
  64. package/.cline/skills/publish-package/SKILL.md +328 -0
  65. package/.cline/skills/quick-fix/SKILL.md +114 -0
  66. package/.cline/skills/release-branch/SKILL.md +298 -0
  67. package/.cline/skills/request-review/SKILL.md +113 -0
  68. package/.cline/skills/research-first/SKILL.md +87 -0
  69. package/.cline/skills/reset-baseline/SKILL.md +21 -0
  70. package/.cline/skills/respond-review/SKILL.md +71 -0
  71. package/.cline/skills/run-benchmark/SKILL.md +85 -0
  72. package/.cline/skills/run-evals/SKILL.md +80 -0
  73. package/.cline/skills/run-planning/SKILL.md +101 -0
  74. package/.cline/skills/scope-work/SKILL.md +63 -0
  75. package/.cline/skills/search-skills/SKILL.md +73 -0
  76. package/.cline/skills/security-review/SKILL.md +384 -0
  77. package/.cline/skills/seed-conventions/SKILL.md +302 -0
  78. package/.cline/skills/session-state/SKILL.md +146 -0
  79. package/.cline/skills/setup-environment/SKILL.md +39 -0
  80. package/.cline/skills/simulate-agents/SKILL.md +26 -0
  81. package/.cline/skills/slice-tasks/SKILL.md +68 -0
  82. package/.cline/skills/smoke-test/SKILL.md +257 -0
  83. package/.cline/skills/spike-prototype/SKILL.md +95 -0
  84. package/.cline/skills/stocktake-skills/SKILL.md +74 -0
  85. package/.cline/skills/survey-context/SKILL.md +135 -0
  86. package/.cline/skills/terse-mode/SKILL.md +42 -0
  87. package/.cline/skills/trace-requirement/SKILL.md +69 -0
  88. package/.cline/skills/using-bigpowers/SKILL.md +111 -0
  89. package/.cline/skills/validate-contracts/SKILL.md +277 -0
  90. package/.cline/skills/validate-fix/SKILL.md +147 -0
  91. package/.cline/skills/verify-work/SKILL.md +191 -0
  92. package/.cline/skills/visual-dashboard/SKILL.md +50 -0
  93. package/.cline/skills/wire-ci/SKILL.md +374 -0
  94. package/.cline/skills/wire-observability/SKILL.md +97 -0
  95. package/.cline/skills/write-document/SKILL.md +255 -0
  96. package/.codebuddy/skills/commit-message/SKILL.md +1 -1
  97. package/.codebuddy/skills/craft-skill/SKILL.md +2 -2
  98. package/.codebuddy/skills/define-success/SKILL.md +6 -59
  99. package/.codebuddy/skills/deploy/SKILL.md +1 -1
  100. package/.codebuddy/skills/elaborate-spec/SKILL.md +1 -1
  101. package/.codebuddy/skills/evolve-skill/SKILL.md +1 -1
  102. package/.codebuddy/skills/harden-vps/SKILL.md +63 -60
  103. package/.codebuddy/skills/investigate-bug/SKILL.md +2 -2
  104. package/.codebuddy/skills/orchestrate-project/SKILL.md +1 -1
  105. package/.codebuddy/skills/plan-refactor/SKILL.md +2 -2
  106. package/.codebuddy/skills/plan-release/SKILL.md +2 -2
  107. package/.codebuddy/skills/plan-work/SKILL.md +1 -1
  108. package/.codebuddy/skills/using-bigpowers/SKILL.md +2 -2
  109. package/.codebuddy/skills/wire-ci/SKILL.md +11 -14
  110. package/.codebuddy/skills/write-document/SKILL.md +1 -1
  111. package/.codex/skills/commit-message/SKILL.md +1 -1
  112. package/.codex/skills/craft-skill/SKILL.md +2 -2
  113. package/.codex/skills/define-success/SKILL.md +6 -59
  114. package/.codex/skills/deploy/SKILL.md +1 -1
  115. package/.codex/skills/elaborate-spec/SKILL.md +1 -1
  116. package/.codex/skills/evolve-skill/SKILL.md +1 -1
  117. package/.codex/skills/harden-vps/SKILL.md +63 -60
  118. package/.codex/skills/investigate-bug/SKILL.md +2 -2
  119. package/.codex/skills/orchestrate-project/SKILL.md +1 -1
  120. package/.codex/skills/plan-refactor/SKILL.md +2 -2
  121. package/.codex/skills/plan-release/SKILL.md +2 -2
  122. package/.codex/skills/plan-work/SKILL.md +1 -1
  123. package/.codex/skills/using-bigpowers/SKILL.md +2 -2
  124. package/.codex/skills/wire-ci/SKILL.md +11 -14
  125. package/.codex/skills/write-document/SKILL.md +1 -1
  126. package/.copilot/skills/align-grid/SKILL.md +110 -0
  127. package/.copilot/skills/assess-impact/SKILL.md +91 -0
  128. package/.copilot/skills/audit-code/SKILL.md +184 -0
  129. package/.copilot/skills/audit-plan/SKILL.md +89 -0
  130. package/.copilot/skills/build-epic/SKILL.md +105 -0
  131. package/.copilot/skills/change-request/SKILL.md +121 -0
  132. package/.copilot/skills/commit-message/SKILL.md +140 -0
  133. package/.copilot/skills/compose-workflow/SKILL.md +82 -0
  134. package/.copilot/skills/context7-mcp/SKILL.md +55 -0
  135. package/.copilot/skills/craft-skill/SKILL.md +196 -0
  136. package/.copilot/skills/deepen-architecture/SKILL.md +260 -0
  137. package/.copilot/skills/define-language/SKILL.md +80 -0
  138. package/.copilot/skills/define-success/SKILL.md +12 -0
  139. package/.copilot/skills/delegate-task/SKILL.md +91 -0
  140. package/.copilot/skills/deploy/SKILL.md +198 -0
  141. package/.copilot/skills/design-interface/SKILL.md +97 -0
  142. package/.copilot/skills/develop-tdd/SKILL.md +416 -0
  143. package/.copilot/skills/diagnose-root/SKILL.md +24 -0
  144. package/.copilot/skills/diagnose-stall/SKILL.md +54 -0
  145. package/.copilot/skills/dispatch-agents/SKILL.md +118 -0
  146. package/.copilot/skills/edit-document/SKILL.md +23 -0
  147. package/.copilot/skills/elaborate-spec/SKILL.md +101 -0
  148. package/.copilot/skills/enforce-first/SKILL.md +45 -0
  149. package/.copilot/skills/evolve-skill/SKILL.md +55 -0
  150. package/.copilot/skills/execute-plan/SKILL.md +61 -0
  151. package/.copilot/skills/extract-design/SKILL.md +132 -0
  152. package/.copilot/skills/find-way/SKILL.md +191 -0
  153. package/.copilot/skills/fix-bug/SKILL.md +67 -0
  154. package/.copilot/skills/gate-trace/SKILL.md +92 -0
  155. package/.copilot/skills/generate-allure-report/SKILL.md +285 -0
  156. package/.copilot/skills/grill-me/SKILL.md +108 -0
  157. package/.copilot/skills/grill-with-docs/SKILL.md +53 -0
  158. package/.copilot/skills/guard-git/SKILL.md +231 -0
  159. package/.copilot/skills/harden-vps/SKILL.md +291 -0
  160. package/.copilot/skills/hook-commits/SKILL.md +94 -0
  161. package/.copilot/skills/inspect-quality/SKILL.md +106 -0
  162. package/.copilot/skills/investigate-bug/SKILL.md +127 -0
  163. package/.copilot/skills/kickoff-branch/SKILL.md +143 -0
  164. package/.copilot/skills/maintain-wiki/SKILL.md +64 -0
  165. package/.copilot/skills/map-codebase/SKILL.md +71 -0
  166. package/.copilot/skills/migrate-spec/SKILL.md +862 -0
  167. package/.copilot/skills/model-domain/SKILL.md +232 -0
  168. package/.copilot/skills/orchestrate-project/SKILL.md +174 -0
  169. package/.copilot/skills/organize-workspace/SKILL.md +164 -0
  170. package/.copilot/skills/plan-refactor/SKILL.md +87 -0
  171. package/.copilot/skills/plan-release/SKILL.md +145 -0
  172. package/.copilot/skills/plan-tests/SKILL.md +75 -0
  173. package/.copilot/skills/plan-work/SKILL.md +260 -0
  174. package/.copilot/skills/publish-package/SKILL.md +328 -0
  175. package/.copilot/skills/quick-fix/SKILL.md +114 -0
  176. package/.copilot/skills/release-branch/SKILL.md +298 -0
  177. package/.copilot/skills/request-review/SKILL.md +113 -0
  178. package/.copilot/skills/research-first/SKILL.md +87 -0
  179. package/.copilot/skills/reset-baseline/SKILL.md +21 -0
  180. package/.copilot/skills/respond-review/SKILL.md +71 -0
  181. package/.copilot/skills/run-benchmark/SKILL.md +85 -0
  182. package/.copilot/skills/run-evals/SKILL.md +80 -0
  183. package/.copilot/skills/run-planning/SKILL.md +101 -0
  184. package/.copilot/skills/scope-work/SKILL.md +63 -0
  185. package/.copilot/skills/search-skills/SKILL.md +73 -0
  186. package/.copilot/skills/security-review/SKILL.md +384 -0
  187. package/.copilot/skills/seed-conventions/SKILL.md +302 -0
  188. package/.copilot/skills/session-state/SKILL.md +146 -0
  189. package/.copilot/skills/setup-environment/SKILL.md +39 -0
  190. package/.copilot/skills/simulate-agents/SKILL.md +26 -0
  191. package/.copilot/skills/slice-tasks/SKILL.md +68 -0
  192. package/.copilot/skills/smoke-test/SKILL.md +257 -0
  193. package/.copilot/skills/spike-prototype/SKILL.md +95 -0
  194. package/.copilot/skills/stocktake-skills/SKILL.md +74 -0
  195. package/.copilot/skills/survey-context/SKILL.md +135 -0
  196. package/.copilot/skills/terse-mode/SKILL.md +42 -0
  197. package/.copilot/skills/trace-requirement/SKILL.md +69 -0
  198. package/.copilot/skills/using-bigpowers/SKILL.md +111 -0
  199. package/.copilot/skills/validate-contracts/SKILL.md +277 -0
  200. package/.copilot/skills/validate-fix/SKILL.md +147 -0
  201. package/.copilot/skills/verify-work/SKILL.md +191 -0
  202. package/.copilot/skills/visual-dashboard/SKILL.md +50 -0
  203. package/.copilot/skills/wire-ci/SKILL.md +374 -0
  204. package/.copilot/skills/wire-observability/SKILL.md +97 -0
  205. package/.copilot/skills/write-document/SKILL.md +255 -0
  206. package/.hermes/skills/commit-message/SKILL.md +1 -1
  207. package/.hermes/skills/craft-skill/SKILL.md +2 -2
  208. package/.hermes/skills/define-success/SKILL.md +6 -59
  209. package/.hermes/skills/deploy/SKILL.md +1 -1
  210. package/.hermes/skills/elaborate-spec/SKILL.md +1 -1
  211. package/.hermes/skills/evolve-skill/SKILL.md +1 -1
  212. package/.hermes/skills/harden-vps/SKILL.md +63 -60
  213. package/.hermes/skills/investigate-bug/SKILL.md +2 -2
  214. package/.hermes/skills/orchestrate-project/SKILL.md +1 -1
  215. package/.hermes/skills/plan-refactor/SKILL.md +2 -2
  216. package/.hermes/skills/plan-release/SKILL.md +2 -2
  217. package/.hermes/skills/plan-work/SKILL.md +1 -1
  218. package/.hermes/skills/using-bigpowers/SKILL.md +2 -2
  219. package/.hermes/skills/wire-ci/SKILL.md +11 -14
  220. package/.hermes/skills/write-document/SKILL.md +1 -1
  221. package/.kilocode/rules/commit-message.md +1 -1
  222. package/.kilocode/rules/craft-skill.md +2 -2
  223. package/.kilocode/rules/define-success.md +6 -59
  224. package/.kilocode/rules/deploy.md +1 -1
  225. package/.kilocode/rules/elaborate-spec.md +1 -1
  226. package/.kilocode/rules/evolve-skill.md +1 -1
  227. package/.kilocode/rules/harden-vps.md +63 -60
  228. package/.kilocode/rules/investigate-bug.md +2 -2
  229. package/.kilocode/rules/orchestrate-project.md +1 -1
  230. package/.kilocode/rules/plan-refactor.md +2 -2
  231. package/.kilocode/rules/plan-release.md +2 -2
  232. package/.kilocode/rules/plan-work.md +1 -1
  233. package/.kilocode/rules/using-bigpowers.md +2 -2
  234. package/.kilocode/rules/wire-ci.md +11 -14
  235. package/.kilocode/rules/write-document.md +1 -1
  236. package/.mimocode/skills/commit-message/SKILL.md +1 -1
  237. package/.mimocode/skills/craft-skill/SKILL.md +2 -2
  238. package/.mimocode/skills/define-success/SKILL.md +6 -59
  239. package/.mimocode/skills/deploy/SKILL.md +1 -1
  240. package/.mimocode/skills/elaborate-spec/SKILL.md +1 -1
  241. package/.mimocode/skills/evolve-skill/SKILL.md +1 -1
  242. package/.mimocode/skills/harden-vps/SKILL.md +63 -60
  243. package/.mimocode/skills/investigate-bug/SKILL.md +2 -2
  244. package/.mimocode/skills/orchestrate-project/SKILL.md +1 -1
  245. package/.mimocode/skills/plan-refactor/SKILL.md +2 -2
  246. package/.mimocode/skills/plan-release/SKILL.md +2 -2
  247. package/.mimocode/skills/plan-work/SKILL.md +1 -1
  248. package/.mimocode/skills/using-bigpowers/SKILL.md +2 -2
  249. package/.mimocode/skills/wire-ci/SKILL.md +11 -14
  250. package/.mimocode/skills/write-document/SKILL.md +1 -1
  251. package/.opencode/skills/align-grid/SKILL.md +110 -0
  252. package/.opencode/skills/assess-impact/SKILL.md +91 -0
  253. package/.opencode/skills/audit-code/SKILL.md +184 -0
  254. package/.opencode/skills/audit-plan/SKILL.md +89 -0
  255. package/.opencode/skills/build-epic/SKILL.md +105 -0
  256. package/.opencode/skills/change-request/SKILL.md +121 -0
  257. package/.opencode/skills/commit-message/SKILL.md +140 -0
  258. package/.opencode/skills/compose-workflow/SKILL.md +82 -0
  259. package/.opencode/skills/context7-mcp/SKILL.md +55 -0
  260. package/.opencode/skills/craft-skill/SKILL.md +196 -0
  261. package/.opencode/skills/deepen-architecture/SKILL.md +260 -0
  262. package/.opencode/skills/define-language/SKILL.md +80 -0
  263. package/.opencode/skills/define-success/SKILL.md +12 -0
  264. package/.opencode/skills/delegate-task/SKILL.md +91 -0
  265. package/.opencode/skills/deploy/SKILL.md +198 -0
  266. package/.opencode/skills/design-interface/SKILL.md +97 -0
  267. package/.opencode/skills/develop-tdd/SKILL.md +416 -0
  268. package/.opencode/skills/diagnose-root/SKILL.md +24 -0
  269. package/.opencode/skills/diagnose-stall/SKILL.md +54 -0
  270. package/.opencode/skills/dispatch-agents/SKILL.md +118 -0
  271. package/.opencode/skills/edit-document/SKILL.md +23 -0
  272. package/.opencode/skills/elaborate-spec/SKILL.md +101 -0
  273. package/.opencode/skills/enforce-first/SKILL.md +45 -0
  274. package/.opencode/skills/evolve-skill/SKILL.md +55 -0
  275. package/.opencode/skills/execute-plan/SKILL.md +61 -0
  276. package/.opencode/skills/extract-design/SKILL.md +132 -0
  277. package/.opencode/skills/find-way/SKILL.md +191 -0
  278. package/.opencode/skills/fix-bug/SKILL.md +67 -0
  279. package/.opencode/skills/gate-trace/SKILL.md +92 -0
  280. package/.opencode/skills/generate-allure-report/SKILL.md +285 -0
  281. package/.opencode/skills/grill-me/SKILL.md +108 -0
  282. package/.opencode/skills/grill-with-docs/SKILL.md +53 -0
  283. package/.opencode/skills/guard-git/SKILL.md +231 -0
  284. package/.opencode/skills/harden-vps/SKILL.md +291 -0
  285. package/.opencode/skills/hook-commits/SKILL.md +94 -0
  286. package/.opencode/skills/inspect-quality/SKILL.md +106 -0
  287. package/.opencode/skills/investigate-bug/SKILL.md +127 -0
  288. package/.opencode/skills/kickoff-branch/SKILL.md +143 -0
  289. package/.opencode/skills/maintain-wiki/SKILL.md +64 -0
  290. package/.opencode/skills/map-codebase/SKILL.md +71 -0
  291. package/.opencode/skills/migrate-spec/SKILL.md +862 -0
  292. package/.opencode/skills/model-domain/SKILL.md +232 -0
  293. package/.opencode/skills/orchestrate-project/SKILL.md +174 -0
  294. package/.opencode/skills/organize-workspace/SKILL.md +164 -0
  295. package/.opencode/skills/plan-refactor/SKILL.md +87 -0
  296. package/.opencode/skills/plan-release/SKILL.md +145 -0
  297. package/.opencode/skills/plan-tests/SKILL.md +75 -0
  298. package/.opencode/skills/plan-work/SKILL.md +260 -0
  299. package/.opencode/skills/publish-package/SKILL.md +328 -0
  300. package/.opencode/skills/quick-fix/SKILL.md +114 -0
  301. package/.opencode/skills/release-branch/SKILL.md +298 -0
  302. package/.opencode/skills/request-review/SKILL.md +113 -0
  303. package/.opencode/skills/research-first/SKILL.md +87 -0
  304. package/.opencode/skills/reset-baseline/SKILL.md +21 -0
  305. package/.opencode/skills/respond-review/SKILL.md +71 -0
  306. package/.opencode/skills/run-benchmark/SKILL.md +85 -0
  307. package/.opencode/skills/run-evals/SKILL.md +80 -0
  308. package/.opencode/skills/run-planning/SKILL.md +101 -0
  309. package/.opencode/skills/scope-work/SKILL.md +63 -0
  310. package/.opencode/skills/search-skills/SKILL.md +73 -0
  311. package/.opencode/skills/security-review/SKILL.md +384 -0
  312. package/.opencode/skills/seed-conventions/SKILL.md +302 -0
  313. package/.opencode/skills/session-state/SKILL.md +146 -0
  314. package/.opencode/skills/setup-environment/SKILL.md +39 -0
  315. package/.opencode/skills/simulate-agents/SKILL.md +26 -0
  316. package/.opencode/skills/slice-tasks/SKILL.md +68 -0
  317. package/.opencode/skills/smoke-test/SKILL.md +257 -0
  318. package/.opencode/skills/spike-prototype/SKILL.md +95 -0
  319. package/.opencode/skills/stocktake-skills/SKILL.md +74 -0
  320. package/.opencode/skills/survey-context/SKILL.md +135 -0
  321. package/.opencode/skills/terse-mode/SKILL.md +42 -0
  322. package/.opencode/skills/trace-requirement/SKILL.md +69 -0
  323. package/.opencode/skills/using-bigpowers/SKILL.md +111 -0
  324. package/.opencode/skills/validate-contracts/SKILL.md +277 -0
  325. package/.opencode/skills/validate-fix/SKILL.md +147 -0
  326. package/.opencode/skills/verify-work/SKILL.md +191 -0
  327. package/.opencode/skills/visual-dashboard/SKILL.md +50 -0
  328. package/.opencode/skills/wire-ci/SKILL.md +374 -0
  329. package/.opencode/skills/wire-observability/SKILL.md +97 -0
  330. package/.opencode/skills/write-document/SKILL.md +255 -0
  331. package/.pi/package.json +1 -1
  332. package/.pi/prompts/commit-message.md +1 -1
  333. package/.pi/prompts/craft-skill.md +2 -2
  334. package/.pi/prompts/define-success.md +5 -58
  335. package/.pi/prompts/deploy.md +1 -1
  336. package/.pi/prompts/elaborate-spec.md +1 -1
  337. package/.pi/prompts/evolve-skill.md +1 -1
  338. package/.pi/prompts/harden-vps.md +63 -60
  339. package/.pi/prompts/investigate-bug.md +2 -2
  340. package/.pi/prompts/orchestrate-project.md +1 -1
  341. package/.pi/prompts/plan-refactor.md +2 -2
  342. package/.pi/prompts/plan-release.md +2 -2
  343. package/.pi/prompts/plan-work.md +1 -1
  344. package/.pi/prompts/using-bigpowers.md +2 -2
  345. package/.pi/prompts/wire-ci.md +11 -14
  346. package/.pi/prompts/write-document.md +1 -1
  347. package/.pi/skills/commit-message/SKILL.md +1 -1
  348. package/.pi/skills/craft-skill/SKILL.md +2 -2
  349. package/.pi/skills/define-success/SKILL.md +6 -59
  350. package/.pi/skills/deploy/SKILL.md +1 -1
  351. package/.pi/skills/elaborate-spec/SKILL.md +1 -1
  352. package/.pi/skills/evolve-skill/SKILL.md +1 -1
  353. package/.pi/skills/harden-vps/SKILL.md +63 -60
  354. package/.pi/skills/investigate-bug/SKILL.md +2 -2
  355. package/.pi/skills/orchestrate-project/SKILL.md +1 -1
  356. package/.pi/skills/plan-refactor/SKILL.md +2 -2
  357. package/.pi/skills/plan-release/SKILL.md +2 -2
  358. package/.pi/skills/plan-work/SKILL.md +1 -1
  359. package/.pi/skills/using-bigpowers/SKILL.md +2 -2
  360. package/.pi/skills/wire-ci/SKILL.md +11 -14
  361. package/.pi/skills/write-document/SKILL.md +1 -1
  362. package/.qwen/skills/align-grid/SKILL.md +110 -0
  363. package/.qwen/skills/assess-impact/SKILL.md +91 -0
  364. package/.qwen/skills/audit-code/SKILL.md +184 -0
  365. package/.qwen/skills/audit-plan/SKILL.md +89 -0
  366. package/.qwen/skills/build-epic/SKILL.md +105 -0
  367. package/.qwen/skills/change-request/SKILL.md +121 -0
  368. package/.qwen/skills/commit-message/SKILL.md +140 -0
  369. package/.qwen/skills/compose-workflow/SKILL.md +82 -0
  370. package/.qwen/skills/context7-mcp/SKILL.md +55 -0
  371. package/.qwen/skills/craft-skill/SKILL.md +196 -0
  372. package/.qwen/skills/deepen-architecture/SKILL.md +260 -0
  373. package/.qwen/skills/define-language/SKILL.md +80 -0
  374. package/.qwen/skills/define-success/SKILL.md +12 -0
  375. package/.qwen/skills/delegate-task/SKILL.md +91 -0
  376. package/.qwen/skills/deploy/SKILL.md +198 -0
  377. package/.qwen/skills/design-interface/SKILL.md +97 -0
  378. package/.qwen/skills/develop-tdd/SKILL.md +416 -0
  379. package/.qwen/skills/diagnose-root/SKILL.md +24 -0
  380. package/.qwen/skills/diagnose-stall/SKILL.md +54 -0
  381. package/.qwen/skills/dispatch-agents/SKILL.md +118 -0
  382. package/.qwen/skills/edit-document/SKILL.md +23 -0
  383. package/.qwen/skills/elaborate-spec/SKILL.md +101 -0
  384. package/.qwen/skills/enforce-first/SKILL.md +45 -0
  385. package/.qwen/skills/evolve-skill/SKILL.md +55 -0
  386. package/.qwen/skills/execute-plan/SKILL.md +61 -0
  387. package/.qwen/skills/extract-design/SKILL.md +132 -0
  388. package/.qwen/skills/find-way/SKILL.md +191 -0
  389. package/.qwen/skills/fix-bug/SKILL.md +67 -0
  390. package/.qwen/skills/gate-trace/SKILL.md +92 -0
  391. package/.qwen/skills/generate-allure-report/SKILL.md +285 -0
  392. package/.qwen/skills/grill-me/SKILL.md +108 -0
  393. package/.qwen/skills/grill-with-docs/SKILL.md +53 -0
  394. package/.qwen/skills/guard-git/SKILL.md +231 -0
  395. package/.qwen/skills/harden-vps/SKILL.md +291 -0
  396. package/.qwen/skills/hook-commits/SKILL.md +94 -0
  397. package/.qwen/skills/inspect-quality/SKILL.md +106 -0
  398. package/.qwen/skills/investigate-bug/SKILL.md +127 -0
  399. package/.qwen/skills/kickoff-branch/SKILL.md +143 -0
  400. package/.qwen/skills/maintain-wiki/SKILL.md +64 -0
  401. package/.qwen/skills/map-codebase/SKILL.md +71 -0
  402. package/.qwen/skills/migrate-spec/SKILL.md +862 -0
  403. package/.qwen/skills/model-domain/SKILL.md +232 -0
  404. package/.qwen/skills/orchestrate-project/SKILL.md +174 -0
  405. package/.qwen/skills/organize-workspace/SKILL.md +164 -0
  406. package/.qwen/skills/plan-refactor/SKILL.md +87 -0
  407. package/.qwen/skills/plan-release/SKILL.md +145 -0
  408. package/.qwen/skills/plan-tests/SKILL.md +75 -0
  409. package/.qwen/skills/plan-work/SKILL.md +260 -0
  410. package/.qwen/skills/publish-package/SKILL.md +328 -0
  411. package/.qwen/skills/quick-fix/SKILL.md +114 -0
  412. package/.qwen/skills/release-branch/SKILL.md +298 -0
  413. package/.qwen/skills/request-review/SKILL.md +113 -0
  414. package/.qwen/skills/research-first/SKILL.md +87 -0
  415. package/.qwen/skills/reset-baseline/SKILL.md +21 -0
  416. package/.qwen/skills/respond-review/SKILL.md +71 -0
  417. package/.qwen/skills/run-benchmark/SKILL.md +85 -0
  418. package/.qwen/skills/run-evals/SKILL.md +80 -0
  419. package/.qwen/skills/run-planning/SKILL.md +101 -0
  420. package/.qwen/skills/scope-work/SKILL.md +63 -0
  421. package/.qwen/skills/search-skills/SKILL.md +73 -0
  422. package/.qwen/skills/security-review/SKILL.md +384 -0
  423. package/.qwen/skills/seed-conventions/SKILL.md +302 -0
  424. package/.qwen/skills/session-state/SKILL.md +146 -0
  425. package/.qwen/skills/setup-environment/SKILL.md +39 -0
  426. package/.qwen/skills/simulate-agents/SKILL.md +26 -0
  427. package/.qwen/skills/slice-tasks/SKILL.md +68 -0
  428. package/.qwen/skills/smoke-test/SKILL.md +257 -0
  429. package/.qwen/skills/spike-prototype/SKILL.md +95 -0
  430. package/.qwen/skills/stocktake-skills/SKILL.md +74 -0
  431. package/.qwen/skills/survey-context/SKILL.md +135 -0
  432. package/.qwen/skills/terse-mode/SKILL.md +42 -0
  433. package/.qwen/skills/trace-requirement/SKILL.md +69 -0
  434. package/.qwen/skills/using-bigpowers/SKILL.md +111 -0
  435. package/.qwen/skills/validate-contracts/SKILL.md +277 -0
  436. package/.qwen/skills/validate-fix/SKILL.md +147 -0
  437. package/.qwen/skills/verify-work/SKILL.md +191 -0
  438. package/.qwen/skills/visual-dashboard/SKILL.md +50 -0
  439. package/.qwen/skills/wire-ci/SKILL.md +374 -0
  440. package/.qwen/skills/wire-observability/SKILL.md +97 -0
  441. package/.qwen/skills/write-document/SKILL.md +255 -0
  442. package/.trae/skills/commit-message/SKILL.md +1 -1
  443. package/.trae/skills/craft-skill/SKILL.md +2 -2
  444. package/.trae/skills/define-success/SKILL.md +6 -59
  445. package/.trae/skills/deploy/SKILL.md +1 -1
  446. package/.trae/skills/elaborate-spec/SKILL.md +1 -1
  447. package/.trae/skills/evolve-skill/SKILL.md +1 -1
  448. package/.trae/skills/harden-vps/SKILL.md +63 -60
  449. package/.trae/skills/investigate-bug/SKILL.md +2 -2
  450. package/.trae/skills/orchestrate-project/SKILL.md +1 -1
  451. package/.trae/skills/plan-refactor/SKILL.md +2 -2
  452. package/.trae/skills/plan-release/SKILL.md +2 -2
  453. package/.trae/skills/plan-work/SKILL.md +1 -1
  454. package/.trae/skills/using-bigpowers/SKILL.md +2 -2
  455. package/.trae/skills/wire-ci/SKILL.md +11 -14
  456. package/.trae/skills/write-document/SKILL.md +1 -1
  457. package/.windsurf/rules/commit-message.md +1 -1
  458. package/.windsurf/rules/craft-skill.md +2 -2
  459. package/.windsurf/rules/define-success.md +6 -59
  460. package/.windsurf/rules/deploy.md +1 -1
  461. package/.windsurf/rules/elaborate-spec.md +1 -1
  462. package/.windsurf/rules/evolve-skill.md +1 -1
  463. package/.windsurf/rules/harden-vps.md +63 -60
  464. package/.windsurf/rules/investigate-bug.md +2 -2
  465. package/.windsurf/rules/orchestrate-project.md +1 -1
  466. package/.windsurf/rules/plan-refactor.md +2 -2
  467. package/.windsurf/rules/plan-release.md +2 -2
  468. package/.windsurf/rules/plan-work.md +1 -1
  469. package/.windsurf/rules/using-bigpowers.md +2 -2
  470. package/.windsurf/rules/wire-ci.md +11 -14
  471. package/.windsurf/rules/write-document.md +1 -1
  472. package/.zcode/skills/commit-message/SKILL.md +1 -1
  473. package/.zcode/skills/craft-skill/SKILL.md +2 -2
  474. package/.zcode/skills/define-success/SKILL.md +6 -59
  475. package/.zcode/skills/deploy/SKILL.md +1 -1
  476. package/.zcode/skills/elaborate-spec/SKILL.md +1 -1
  477. package/.zcode/skills/evolve-skill/SKILL.md +1 -1
  478. package/.zcode/skills/harden-vps/SKILL.md +63 -60
  479. package/.zcode/skills/investigate-bug/SKILL.md +2 -2
  480. package/.zcode/skills/orchestrate-project/SKILL.md +1 -1
  481. package/.zcode/skills/plan-refactor/SKILL.md +2 -2
  482. package/.zcode/skills/plan-release/SKILL.md +2 -2
  483. package/.zcode/skills/plan-work/SKILL.md +1 -1
  484. package/.zcode/skills/using-bigpowers/SKILL.md +2 -2
  485. package/.zcode/skills/wire-ci/SKILL.md +11 -14
  486. package/.zcode/skills/write-document/SKILL.md +1 -1
  487. package/CHANGELOG.md +14 -0
  488. package/SKILL-INDEX.md +2 -2
  489. package/package.json +1 -1
  490. package/scripts/adapters/agy.sh +3 -0
  491. package/scripts/adapters/continue.sh +3 -0
  492. package/scripts/adapters/cursor.sh +3 -0
  493. package/scripts/adapters/gemini.sh +5 -24
  494. package/scripts/adapters/mimo.sh +3 -0
  495. package/scripts/adapters/omp.sh +3 -0
  496. package/scripts/adapters/pi.sh +6 -3
  497. package/scripts/adapters/zcode.sh +3 -0
  498. package/scripts/adapters/zed.sh +3 -0
  499. package/scripts/check-skill-links.py +35 -0
  500. package/scripts/generate-workflow-diagrams.sh +102 -0
  501. package/scripts/golden-g13-test-orphans.sh +70 -0
  502. package/scripts/golden-g14-adapter-dispatch.sh +113 -0
  503. package/scripts/land-branch.sh +9 -3
  504. package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
  505. package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
  506. package/scripts/lib/adapter-guard.sh +30 -0
  507. package/scripts/lib/golden-suite-gates.sh +28 -0
  508. package/scripts/lib/install-targets-b.sh +0 -8
  509. package/scripts/lib/sync-render.sh +0 -43
  510. package/scripts/lib/target-contracts.sh +37 -1
  511. package/scripts/targets.yaml +35 -13
  512. package/scripts/test-adapter-render.sh +116 -0
  513. package/scripts/test-adapters.sh +10 -3
  514. package/scripts/test-install-hub.sh +139 -0
  515. package/scripts/test-target-contracts.sh +73 -0
  516. package/scripts/tombstone-skill.sh +6 -0
  517. package/skills/commit-message/REFERENCE.md +1 -1
  518. package/skills/craft-skill/SKILL.md +2 -2
  519. package/skills/define-success/SKILL.md +7 -61
  520. package/skills/deploy/SKILL.md +1 -1
  521. package/skills/elaborate-spec/SKILL.md +1 -1
  522. package/skills/evolve-skill/REFERENCE.md +1 -1
  523. package/skills/harden-vps/REFERENCE.md +39 -36
  524. package/skills/harden-vps/SKILL.md +24 -24
  525. package/skills/investigate-bug/SKILL.md +2 -2
  526. package/skills/orchestrate-project/REFERENCE.md +1 -1
  527. package/skills/plan-refactor/SKILL.md +2 -2
  528. package/skills/plan-release/SKILL.md +2 -2
  529. package/skills/plan-work/SKILL.md +1 -1
  530. package/skills/security-review/fixtures/CWE-639-idor-negative.go +1 -1
  531. package/skills/security-review/fixtures/CWE-639-idor-positive.go +1 -1
  532. package/skills/using-bigpowers/SKILL.md +2 -2
  533. package/skills/wire-ci/REFERENCE.md +11 -14
  534. package/skills/write-document/REFERENCE.md +1 -1
  535. package/skills-lock.json +12 -12
  536. package/.fix_regex.sh +0 -16
  537. package/.hermes-verify-sed-fix.py +0 -53
  538. package/_test_e28s01.sh +0 -2
  539. package/audit-independent-unwaived-2026-07-06.md +0 -49
  540. package/hermes-verify-sed-fix.py +0 -30
  541. package/instructions +0 -1
  542. package/scripts/hermes-verify-e39s02.sh +0 -28
  543. package/scripts/test-agy-hub.sh +0 -60
  544. package/scripts/test-cline-adapter.sh +0 -55
  545. package/scripts/test-cline-hub.sh +0 -48
  546. package/scripts/test-codebuddy-adapter.sh +0 -63
  547. package/scripts/test-codebuddy-hub.sh +0 -49
  548. package/scripts/test-codex-adapter.sh +0 -63
  549. package/scripts/test-codex-hub.sh +0 -49
  550. package/scripts/test-copilot-adapter.sh +0 -47
  551. package/scripts/test-copilot-hub.sh +0 -43
  552. package/scripts/test-gemini-adapter.sh +0 -70
  553. package/scripts/test-gemini-hub.sh +0 -56
  554. package/scripts/test-hermes-adapter.sh +0 -85
  555. package/scripts/test-hermes-hub.sh +0 -52
  556. package/scripts/test-kilocode-adapter.sh +0 -55
  557. package/scripts/test-kilocode-hub.sh +0 -48
  558. package/scripts/test-mimo-hub.sh +0 -52
  559. package/scripts/test-opencode-adapter.sh +0 -47
  560. package/scripts/test-opencode-hub.sh +0 -43
  561. package/scripts/test-qwen-adapter.sh +0 -63
  562. package/scripts/test-qwen-hub.sh +0 -49
  563. package/scripts/test-trae-adapter.sh +0 -63
  564. package/scripts/test-trae-hub.sh +0 -49
  565. package/scripts/test-windsurf-adapter.sh +0 -63
  566. package/scripts/test-windsurf-hub.sh +0 -49
  567. package/scripts/test-zcode-hub.sh +0 -52
  568. package/test_figlet.py +0 -17
@@ -53,12 +53,47 @@ def check_file_links(smd: str, root: str) -> list[str]:
53
53
  return problems
54
54
 
55
55
 
56
+ def check_machine_paths(path: str, root: str) -> list[str]:
57
+ """Machine-absolute path scan for non-Markdown sources (scripts, hooks)."""
58
+ rel = os.path.relpath(path, root)
59
+ problems = []
60
+ try:
61
+ with open(path, encoding="utf-8") as f:
62
+ text = f.read()
63
+ except (UnicodeDecodeError, OSError):
64
+ return problems
65
+ for i, line in enumerate(text.splitlines(), 1):
66
+ stripped = line.strip()
67
+ # The pattern definition in lib/link_utils.py names these prefixes; a
68
+ # regex describing them is not itself a violation.
69
+ if "MACHINE_PATH_RE" in line or stripped.startswith("#"):
70
+ continue
71
+ if MACHINE_PATH_RE.search(line):
72
+ problems.append(
73
+ f"{rel}:{i}: machine-absolute path: {stripped[:100]}"
74
+ )
75
+ return problems
76
+
77
+
56
78
  def check(root: str) -> list[str]:
57
79
  problems = []
58
80
  for tree in ("skills", os.path.join(".pi", "skills")):
59
81
  pattern = os.path.join(root, tree, "*", "SKILL.md")
60
82
  for smd in sorted(glob.glob(pattern)):
61
83
  problems.extend(check_file_links(smd, root))
84
+
85
+ # scripts/ was previously unscanned, which let a hardcoded
86
+ # /Users/<name>/Developer/... path ship in scripts/hermes-verify-e39s02.sh
87
+ # while this gate reported OK.
88
+ for pattern in (
89
+ "scripts/*.sh",
90
+ "scripts/lib/*.sh",
91
+ "scripts/adapters/*.sh",
92
+ "*.sh",
93
+ "*.py",
94
+ ):
95
+ for src in sorted(glob.glob(os.path.join(root, pattern))):
96
+ problems.extend(check_machine_paths(src, root))
62
97
  return problems
63
98
 
64
99
 
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05
3
+ # generate-workflow-diagrams.sh — render docs/WORKFLOWS.md from specs/workflows/*.yaml.
4
+ #
5
+ # specs/assets/bigpowers-workflow.svg was a find-and-replace of a BMad Method
6
+ # chart with bigpowers skill names dropped into BMad's slots. Nothing regenerated
7
+ # it, so it drifted: it routed PLAN through define-success (archived), placed
8
+ # seed-conventions in PHASE 4 when it is the greenfield entry point, omitted the
9
+ # whole planning spine, build-epic and the entire verify/release arc, and used
10
+ # "Sprints" — a word absent from every bigpowers doctrine file.
11
+ #
12
+ # A diagram nothing regenerates is a diagram that lies. This derives the chains
13
+ # from the same YAML the /slash commands read, so the source cannot drift from
14
+ # the picture without the picture changing.
15
+ #
16
+ # Usage: bash scripts/generate-workflow-diagrams.sh [--check]
17
+ # --check fail if the committed output is stale (for CI)
18
+
19
+ set -euo pipefail
20
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
21
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
22
+ resolve_repo_root
23
+ cd "$REPO_ROOT"
24
+
25
+ OUT="docs/WORKFLOWS.md"
26
+ CHECK=0
27
+ [[ "${1:-}" == "--check" ]] && CHECK=1
28
+
29
+ TMP=$(mktemp)
30
+ trap 'rm -f "$TMP"' EXIT
31
+
32
+ $PYTHON - "$TMP" <<'PY'
33
+ import sys, glob, os
34
+ import yaml
35
+
36
+ out = open(sys.argv[1], "w", encoding="utf-8")
37
+ w = out.write
38
+
39
+ w("# bigpowers Workflows\n\n")
40
+ w("<!-- story: e37s05 -->\n\n")
41
+ w("> **Generated** by `scripts/generate-workflow-diagrams.sh` from\n")
42
+ w("> `specs/workflows/*.yaml`. Do not hand-edit — change the YAML and re-run.\n")
43
+ w("> CI enforces freshness via `--check`.\n\n")
44
+ w("Each recipe below is a composed chain of skills, invocable as a slash command.\n\n")
45
+
46
+ recipes = []
47
+ for path in sorted(glob.glob("specs/workflows/*.yaml")):
48
+ d = yaml.safe_load(open(path, encoding="utf-8")) or {}
49
+ if d.get("name") and d.get("skills"):
50
+ recipes.append(d)
51
+
52
+ w("## Recipes\n\n")
53
+ w("| Command | Chain | Purpose |\n|---|---|---|\n")
54
+ for r in recipes:
55
+ chain = " → ".join("`%s`" % s for s in r["skills"])
56
+ desc = (r.get("description") or "").replace("|", "\\|").strip()
57
+ w("| `%s` | %s | %s |\n" % (r.get("command", "/" + r["name"]), chain, desc))
58
+ w("\n")
59
+
60
+ w("## Chains\n\n```mermaid\nflowchart LR\n")
61
+ for i, r in enumerate(recipes):
62
+ w(" subgraph %s[\"%s\"]\n" % ("w%d" % i, r.get("command", r["name"])))
63
+ prev = None
64
+ for j, s in enumerate(r["skills"]):
65
+ node = "n%d_%d" % (i, j)
66
+ w(" %s[\"%s\"]\n" % (node, s))
67
+ if prev:
68
+ w(" %s --> %s\n" % (prev, node))
69
+ prev = node
70
+ w(" end\n")
71
+ w("```\n\n")
72
+
73
+ # Skill reuse across recipes is the interesting structural fact: it shows which
74
+ # skills are load-bearing across the catalog.
75
+ counts = {}
76
+ for r in recipes:
77
+ for s in r["skills"]:
78
+ counts[s] = counts.get(s, 0) + 1
79
+ shared = sorted([(v, k) for k, v in counts.items() if v > 1], reverse=True)
80
+ if shared:
81
+ w("## Skills shared across recipes\n\n")
82
+ w("| Skill | Recipes |\n|---|---|\n")
83
+ for v, k in shared:
84
+ w("| `%s` | %d |\n" % (k, v))
85
+ w("\n")
86
+
87
+ w("_%d recipes, %d distinct skills._\n" % (len(recipes), len(counts)))
88
+ out.close()
89
+ PY
90
+
91
+ if [[ "$CHECK" -eq 1 ]]; then
92
+ if [[ ! -f "$OUT" ]] || ! diff -q "$TMP" "$OUT" >/dev/null 2>&1; then
93
+ echo "generate-workflow-diagrams: $OUT is stale — run bash scripts/generate-workflow-diagrams.sh" >&2
94
+ exit 1
95
+ fi
96
+ echo "generate-workflow-diagrams: $OUT is current"
97
+ exit 0
98
+ fi
99
+
100
+ mkdir -p "$(dirname "$OUT")"
101
+ cp "$TMP" "$OUT"
102
+ echo "generate-workflow-diagrams: wrote $OUT"
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05
3
+ # golden-g13-test-orphans.sh — every scripts/test-*.sh must be wired into a gate.
4
+ #
5
+ # Before this gate, 33 of 35 test scripts were reachable from nothing: not CI,
6
+ # not Preflight, not package.json, not another script. Writing a test was not
7
+ # enough to make it run, so tests accumulated as dead weight and regressions
8
+ # they would have caught shipped anyway (test-adapters.sh silently exercised 1
9
+ # of 21 adapters for months).
10
+ #
11
+ # Usage: bash scripts/golden-g13-test-orphans.sh [--self-test]
12
+ # Exit 0: every test script is referenced by the gate list
13
+ # Exit 1: at least one orphan (or, under --self-test, the gate failed to notice
14
+ # a deliberately unlisted script)
15
+
16
+ set -euo pipefail
17
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
18
+ resolve_repo_root
19
+ cd "$REPO_ROOT"
20
+
21
+ RED='\033[0;31m'
22
+ GREEN='\033[0;32m'
23
+ NC='\033[0m'
24
+
25
+ GATES_FILE="scripts/lib/golden-suite-gates.sh"
26
+
27
+ find_orphans() { # $1 = extra script basename to consider (may be empty)
28
+ local extra="${1:-}"
29
+ local orphans=""
30
+ local f b
31
+ for f in scripts/test-*.sh; do
32
+ [[ -e "$f" ]] || continue
33
+ b="$(basename "$f")"
34
+ grep -q "$b" "$GATES_FILE" || orphans+=" $b"$'\n'
35
+ done
36
+ if [[ -n "$extra" ]]; then
37
+ grep -q "$extra" "$GATES_FILE" || orphans+=" $extra"$'\n'
38
+ fi
39
+ printf '%s' "$orphans"
40
+ }
41
+
42
+ if [[ "${1:-}" == "--self-test" ]]; then
43
+ echo "=== G-13 self-test: prove the gate can fail ==="
44
+ # A name that is definitely not in the gate list must be reported.
45
+ if [[ -n "$(find_orphans "test-definitely-not-wired.sh")" ]]; then
46
+ echo -e "${GREEN}PASS${NC} G-13 reports an unlisted test script"
47
+ echo "G-13 self-test: PASS"
48
+ exit 0
49
+ fi
50
+ echo -e "${RED}FAIL${NC} G-13 did not report an unlisted script — vacuous gate"
51
+ echo "G-13 self-test: FAIL"
52
+ exit 1
53
+ fi
54
+
55
+ echo "=== G-13: test-script orphan check ==="
56
+ ORPHANS="$(find_orphans "")"
57
+ TOTAL=$(ls scripts/test-*.sh 2>/dev/null | wc -l | tr -d ' ')
58
+
59
+ if [[ -z "$ORPHANS" ]]; then
60
+ echo " ok : all $TOTAL test script(s) are wired into $GATES_FILE"
61
+ echo -e "${GREEN}PASS${NC}"
62
+ echo "G-13: PASS"
63
+ exit 0
64
+ fi
65
+
66
+ echo " orphaned test scripts (present but reachable from no gate):"
67
+ printf '%s' "$ORPHANS"
68
+ echo -e "${RED}FAIL${NC} add them to GOLDEN_GATES in $GATES_FILE, or delete them"
69
+ echo "G-13: FAIL"
70
+ exit 1
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05
3
+ # golden-g14-adapter-dispatch.sh — an adapter that can render must be dispatched.
4
+ #
5
+ # scripts/lib/srp-engine.py builds its dispatch list from targets.yaml entries
6
+ # carrying a skill.adapter. An adapter that defines render_skill() but is
7
+ # declared `skill: null` therefore never runs during sync, while its install
8
+ # function still reads a rendered directory that is never produced — the target
9
+ # reports success and installs nothing
10
+ # (BUG-2026-07-26-null-skill-adapters-install-nothing).
11
+ #
12
+ # Context-only bridges (aider, goose, ...) are exempt by construction: they
13
+ # define no render_skill, so there is nothing to dispatch.
14
+ #
15
+ # Usage: bash scripts/golden-g14-adapter-dispatch.sh [--self-test]
16
+ # Exit 0: every rendering adapter is dispatched
17
+ # Exit 1: at least one rendering adapter is undispatched (or, under
18
+ # --self-test, the gate failed to notice an injected one)
19
+
20
+ set -euo pipefail
21
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
22
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
23
+ resolve_repo_root
24
+ cd "$REPO_ROOT"
25
+
26
+ RED='\033[0;31m'
27
+ GREEN='\033[0;32m'
28
+ NC='\033[0m'
29
+
30
+ check() { # $1 = targets.yaml path
31
+ $PYTHON - "$1" <<'PY'
32
+ import sys, os, re
33
+ import yaml
34
+
35
+ targets_path = sys.argv[1]
36
+ data = yaml.safe_load(open(targets_path, encoding="utf-8")) or {}
37
+
38
+ dispatched = set()
39
+ for t in data.get("targets") or []:
40
+ skill = t.get("skill")
41
+ if isinstance(skill, dict) and skill.get("adapter"):
42
+ dispatched.add(skill["adapter"])
43
+
44
+ problems = []
45
+ adapter_dir = os.path.join("scripts", "adapters")
46
+ for fn in sorted(os.listdir(adapter_dir)):
47
+ if not fn.endswith(".sh"):
48
+ continue
49
+ aid = fn[:-3]
50
+ src = open(os.path.join(adapter_dir, fn), encoding="utf-8").read()
51
+ if not re.search(r"^render_skill\(\)", src, re.M):
52
+ continue # context-only bridge — nothing to dispatch
53
+ if aid not in dispatched:
54
+ problems.append(
55
+ f"{aid}: defines render_skill() but targets.yaml does not dispatch it "
56
+ f"(skill.adapter missing or null) — sync renders nothing for it"
57
+ )
58
+
59
+ if problems:
60
+ for p in problems:
61
+ print(f" UNDISPATCHED {p}")
62
+ print(f"\n{len(problems)} rendering adapter(s) never run during sync")
63
+ sys.exit(1)
64
+
65
+ print(f" ok : all rendering adapters are dispatched ({len(dispatched)} in registry)")
66
+ sys.exit(0)
67
+ PY
68
+ }
69
+
70
+ if [[ "${1:-}" == "--self-test" ]]; then
71
+ echo "=== G-14 self-test: prove the gate can fail ==="
72
+ TMP=$(mktemp -d)
73
+ trap 'rm -rf "$TMP"' EXIT
74
+ $PYTHON - "$TMP/targets.yaml" <<'PY'
75
+ import sys, yaml
76
+ d = yaml.safe_load(open("scripts/targets.yaml", encoding="utf-8"))
77
+ # Null out the first dispatched adapter — the gate must notice.
78
+ for t in d.get("targets") or []:
79
+ s = t.get("skill")
80
+ if isinstance(s, dict) and s.get("adapter"):
81
+ print(f"injected: {t['id']} skill -> null")
82
+ t["skill"] = None
83
+ break
84
+ yaml.dump(d, open(sys.argv[1], "w", encoding="utf-8"), default_flow_style=False, sort_keys=False)
85
+ PY
86
+ set +e
87
+ check "$TMP/targets.yaml" >/dev/null 2>&1
88
+ rc=$?
89
+ set -e
90
+ if [[ $rc -ne 0 ]]; then
91
+ echo -e "${GREEN}PASS${NC} G-14 detected an injected undispatched adapter"
92
+ echo "G-14 self-test: PASS"
93
+ exit 0
94
+ fi
95
+ echo -e "${RED}FAIL${NC} G-14 passed on an injected null adapter — vacuous gate"
96
+ echo "G-14 self-test: FAIL"
97
+ exit 1
98
+ fi
99
+
100
+ echo "=== G-14: adapter dispatch coverage ==="
101
+ set +e
102
+ out=$(check "scripts/targets.yaml" 2>&1)
103
+ rc=$?
104
+ set -e
105
+ echo "$out"
106
+ if [[ $rc -eq 0 ]]; then
107
+ echo -e "${GREEN}PASS${NC}"
108
+ echo "G-14: PASS"
109
+ exit 0
110
+ fi
111
+ echo -e "${RED}FAIL${NC} see BUG-2026-07-26-null-skill-adapters-install-nothing"
112
+ echo "G-14: FAIL"
113
+ exit 1
@@ -36,12 +36,18 @@ COMMIT_MSG="${ARGS[1]:-}"
36
36
 
37
37
  [ -n "$FEATURE_BRANCH" ] && [ -n "$COMMIT_MSG" ] || usage_land
38
38
 
39
- if [[ ! "$COMMIT_MSG" =~ $CONVENTIONAL_REGEX ]]; then
39
+ # Both checks below judge the subject line, not the whole message. The length
40
+ # test used to read ${#COMMIT_MSG}, so any Conventional Commit carrying a body
41
+ # was rejected no matter how short its subject — the error text said "subject
42
+ # line" while the check measured the entire string.
43
+ COMMIT_SUBJECT="${COMMIT_MSG%%$'\n'*}"
44
+
45
+ if [[ ! "$COMMIT_SUBJECT" =~ $CONVENTIONAL_REGEX ]]; then
40
46
  land_branch_deny "Commit message must follow Conventional Commits: <type>(<scope>): <subject>"
41
47
  fi
42
48
 
43
- if [ ${#COMMIT_MSG} -gt 72 ]; then
44
- land_branch_deny "Commit subject line must be 72 characters or less"
49
+ if [ ${#COMMIT_SUBJECT} -gt 72 ]; then
50
+ land_branch_deny "Commit subject line must be 72 characters or less (got ${#COMMIT_SUBJECT})"
45
51
  fi
46
52
 
47
53
  # Block AI agent attribution (P1 — CONVENTIONS.md § Git Attribution)
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05
3
+ # adapter-guard.sh — shared skill-name validation for every render adapter.
4
+ #
5
+ # Adapters interpolate the SkillIR `name` straight into a filesystem path
6
+ # (mkdir -p "$dir/$IR_NAME"). A name containing "/" or ".." therefore writes
7
+ # outside the destination directory.
8
+ #
9
+ # Ten adapters carried a private copy of this check (qwen_is_unsafe_skill_name
10
+ # and friends) and nine had none at all — and the nine unguarded ones were
11
+ # exactly the nine that never got a per-target test. One guard, sourced by every
12
+ # adapter, replaces both the duplication and the gap.
13
+
14
+ # Returns 0 (true) when the name must not be used as a path component.
15
+ bp_is_unsafe_skill_name() {
16
+ local name="${1-}"
17
+ [[ -z "$name" || "$name" == "null" || "$name" == *"/"* || "$name" == *".."* || "$name" == .* ]]
18
+ }
19
+
20
+ # Echoes the name when safe; otherwise reports on stderr and returns 1.
21
+ # Usage inside render_skill: name="$(bp_assert_safe_skill_name "$IR_NAME" adaptername)" || return 1
22
+ bp_assert_safe_skill_name() {
23
+ local name="${1-}"
24
+ local adapter="${2:-adapter}"
25
+ if bp_is_unsafe_skill_name "$name"; then
26
+ echo "${adapter}: refusing unsafe skill name: ${name:-<empty>}" >&2
27
+ return 1
28
+ fi
29
+ printf '%s' "$name"
30
+ }
@@ -19,6 +19,34 @@ GOLDEN_GATES=(
19
19
  # first so a vacuous gate is caught before its verdict is trusted.
20
20
  "g12-status-selftest:bash scripts/golden-g12-status-consistency.sh --self-test:false"
21
21
  "g12-status-consistency:bash scripts/golden-g12-status-consistency.sh:false"
22
+ # Anti-vacuity for the target-contract seam: every contract declared in
23
+ # targets.yaml must have a real assertion, and an unknown contract must FAIL
24
+ # rather than SKIP+exit 0 (seven contracts were fail-open before this).
25
+ # Writing a test must be enough to make it run: G-13 fails if any
26
+ # scripts/test-*.sh is absent from this list.
27
+ "g13-test-orphans-selftest:bash scripts/golden-g13-test-orphans.sh --self-test:false"
28
+ "g13-test-orphans:bash scripts/golden-g13-test-orphans.sh:false"
29
+ # An adapter that defines render_skill() must be dispatched by targets.yaml,
30
+ # or sync renders nothing for it while its install still claims success.
31
+ # docs/WORKFLOWS.md is generated from specs/workflows/*.yaml; a diagram nothing
32
+ # regenerates is a diagram that lies (see specs/archive/assets/README.md).
33
+ "workflow-diagrams-fresh:bash scripts/generate-workflow-diagrams.sh --check:false"
34
+ "g14-adapter-dispatch-selftest:bash scripts/golden-g14-adapter-dispatch.sh --self-test:false"
35
+ "g14-adapter-dispatch:bash scripts/golden-g14-adapter-dispatch.sh:false"
36
+ "target-contracts:bash scripts/test-target-contracts.sh:false"
37
+ # Registry-driven replacements for the 25 hand-written per-target scripts.
38
+ "install-hub:bash scripts/test-install-hub.sh:false"
39
+ "adapter-render:bash scripts/test-adapter-render.sh:false"
40
+ "adapters:bash scripts/test-adapters.sh:false"
41
+ # Previously orphaned: present in scripts/ but reachable from no gate.
42
+ "tombstone-mechanism:bash scripts/test-tombstone-mechanism.sh:false"
43
+ "trace-strict:bash scripts/test-trace-strict.sh:false"
44
+ "trace-matrix-size:bash scripts/test-trace-matrix-size.sh:false"
45
+ "setup-no-pyyaml:bash scripts/test-setup-no-pyyaml.sh:false"
46
+ "install-distribute-only:bash scripts/test-install-distribute-only.sh:false"
47
+ "completeness-critic-scope:bash scripts/test-completeness-critic-scope.sh:false"
48
+ "epics-wiki-zero-stories:bash scripts/test-generate-epics-wiki-zero-stories.sh:false"
49
+ "golden-g11-worktree-venv:bash scripts/test-golden-g11-worktree-venv.sh:false"
22
50
  "install-helpers:bash scripts/test-install-helpers.sh:false"
23
51
  "import-boundaries:bash scripts/check-import-boundaries.sh:false"
24
52
  "skill-catalog:bash scripts/validate-skill-catalog.sh:false"
@@ -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
  {
@@ -82,6 +82,33 @@ assert_agy_skills_nonempty() {
82
82
  return 1
83
83
  }
84
84
 
85
+ # Generic hooks-manifest assertion for every target that ships one under
86
+ # scripts/hooks/<target>/. Before this existed, cline/codebuddy/codex/kilocode/
87
+ # qwen/trae/windsurf all declared <target>_hooks_manifest in targets.yaml and
88
+ # every one of them fell through run_contract's default branch to SKIP + exit 0
89
+ # — seven declared contracts that could never fail.
90
+ assert_hooks_manifest() {
91
+ local id="$1"
92
+ local contract="$2"
93
+ local target="${contract%_hooks_manifest}"
94
+ local manifest="scripts/hooks/${target}/hooks-manifest.json"
95
+
96
+ if [[ ! -f "$manifest" ]]; then
97
+ echo "FAIL $id:$contract — $manifest missing"
98
+ return 1
99
+ fi
100
+ # verify-install.sh sources this file without lib/python-env.sh, so resolve an
101
+ # interpreter locally rather than relying on $PYTHON being set.
102
+ local py="${PYTHON:-}"
103
+ [[ -n "$py" ]] || py="$(command -v python3 || command -v python || true)"
104
+ if [[ -n "$py" ]] && ! "$py" -c "import json; json.load(open('$manifest'))" 2>/dev/null; then
105
+ echo "FAIL $id:$contract — $manifest is not valid JSON"
106
+ return 1
107
+ fi
108
+ echo "PASS $id:$contract"
109
+ return 0
110
+ }
111
+
85
112
  run_contract() {
86
113
  local id="$1"
87
114
  local contract="$2"
@@ -90,10 +117,19 @@ run_contract() {
90
117
  symlink_claude_md) assert_symlink_claude_md "$id" ;;
91
118
  cursor_rules_nonempty) assert_cursor_rules_nonempty "$id" ;;
92
119
  gemini_ext_exists) assert_gemini_ext_exists "$id" ;;
120
+ # gemini has its own adapter-level validator; keep it ahead of the generic
121
+ # pattern below so the more specific check wins.
93
122
  gemini_hooks_manifest) assert_gemini_hooks_manifest "$id" ;;
123
+ *_hooks_manifest) assert_hooks_manifest "$id" "$contract" ;;
94
124
  pi_skills_nonempty) assert_pi_skills_nonempty "$id" ;;
95
125
  agy_skills_nonempty) assert_agy_skills_nonempty "$id" ;;
96
126
  aider_bridge) assert_aider_bridge "$id" ;;
97
- *) echo "SKIP $id:$contract — unknown contract"; return 0 ;;
127
+ # A contract declared in targets.yaml with no assertion behind it is a
128
+ # broken contract, not a no-op. Failing here is what makes the registry an
129
+ # enforced interface rather than documentation.
130
+ *)
131
+ echo "FAIL $id:$contract — unknown contract (no assertion implemented)"
132
+ return 1
133
+ ;;
98
134
  esac
99
135
  }
@@ -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