bigpowers 2.87.4 → 2.87.5

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 (258) hide show
  1. package/.cursor/rules/align-grid.mdc +109 -0
  2. package/.cursor/rules/assess-impact.mdc +90 -0
  3. package/.cursor/rules/audit-code.mdc +183 -0
  4. package/.cursor/rules/audit-plan.mdc +88 -0
  5. package/.cursor/rules/build-epic.mdc +104 -0
  6. package/.cursor/rules/change-request.mdc +120 -0
  7. package/.cursor/rules/commit-message.mdc +139 -0
  8. package/.cursor/rules/compose-workflow.mdc +81 -0
  9. package/.cursor/rules/context7-mcp.mdc +54 -0
  10. package/.cursor/rules/craft-skill.mdc +195 -0
  11. package/.cursor/rules/deepen-architecture.mdc +259 -0
  12. package/.cursor/rules/define-language.mdc +79 -0
  13. package/.cursor/rules/define-success.mdc +11 -0
  14. package/.cursor/rules/delegate-task.mdc +90 -0
  15. package/.cursor/rules/deploy.mdc +197 -0
  16. package/.cursor/rules/design-interface.mdc +96 -0
  17. package/.cursor/rules/develop-tdd.mdc +415 -0
  18. package/.cursor/rules/diagnose-root.mdc +23 -0
  19. package/.cursor/rules/diagnose-stall.mdc +53 -0
  20. package/.cursor/rules/dispatch-agents.mdc +117 -0
  21. package/.cursor/rules/edit-document.mdc +22 -0
  22. package/.cursor/rules/elaborate-spec.mdc +100 -0
  23. package/.cursor/rules/enforce-first.mdc +44 -0
  24. package/.cursor/rules/evolve-skill.mdc +54 -0
  25. package/.cursor/rules/execute-plan.mdc +60 -0
  26. package/.cursor/rules/extract-design.mdc +131 -0
  27. package/.cursor/rules/find-way.mdc +190 -0
  28. package/.cursor/rules/fix-bug.mdc +66 -0
  29. package/.cursor/rules/gate-trace.mdc +91 -0
  30. package/.cursor/rules/generate-allure-report.mdc +284 -0
  31. package/.cursor/rules/grill-me.mdc +107 -0
  32. package/.cursor/rules/grill-with-docs.mdc +52 -0
  33. package/.cursor/rules/guard-git.mdc +230 -0
  34. package/.cursor/rules/harden-vps.mdc +290 -0
  35. package/.cursor/rules/hook-commits.mdc +93 -0
  36. package/.cursor/rules/inspect-quality.mdc +105 -0
  37. package/.cursor/rules/investigate-bug.mdc +126 -0
  38. package/.cursor/rules/kickoff-branch.mdc +142 -0
  39. package/.cursor/rules/maintain-wiki.mdc +63 -0
  40. package/.cursor/rules/map-codebase.mdc +70 -0
  41. package/.cursor/rules/migrate-spec.mdc +907 -0
  42. package/.cursor/rules/model-domain.mdc +231 -0
  43. package/.cursor/rules/orchestrate-project.mdc +173 -0
  44. package/.cursor/rules/organize-workspace.mdc +163 -0
  45. package/.cursor/rules/plan-refactor.mdc +86 -0
  46. package/.cursor/rules/plan-release.mdc +144 -0
  47. package/.cursor/rules/plan-tests.mdc +74 -0
  48. package/.cursor/rules/plan-work.mdc +271 -0
  49. package/.cursor/rules/publish-package.mdc +337 -0
  50. package/.cursor/rules/quick-fix.mdc +113 -0
  51. package/.cursor/rules/release-branch.mdc +301 -0
  52. package/.cursor/rules/request-review.mdc +112 -0
  53. package/.cursor/rules/research-first.mdc +86 -0
  54. package/.cursor/rules/reset-baseline.mdc +20 -0
  55. package/.cursor/rules/respond-review.mdc +70 -0
  56. package/.cursor/rules/run-benchmark.mdc +84 -0
  57. package/.cursor/rules/run-evals.mdc +79 -0
  58. package/.cursor/rules/run-planning.mdc +100 -0
  59. package/.cursor/rules/scope-work.mdc +62 -0
  60. package/.cursor/rules/search-skills.mdc +72 -0
  61. package/.cursor/rules/security-review.mdc +383 -0
  62. package/.cursor/rules/seed-conventions.mdc +311 -0
  63. package/.cursor/rules/session-state.mdc +145 -0
  64. package/.cursor/rules/setup-environment.mdc +38 -0
  65. package/.cursor/rules/simple-english.mdc +345 -0
  66. package/.cursor/rules/simulate-agents.mdc +25 -0
  67. package/.cursor/rules/slice-tasks.mdc +67 -0
  68. package/.cursor/rules/smoke-test.mdc +260 -0
  69. package/.cursor/rules/spike-prototype.mdc +94 -0
  70. package/.cursor/rules/stocktake-skills.mdc +73 -0
  71. package/.cursor/rules/survey-context.mdc +134 -0
  72. package/.cursor/rules/terse-mode.mdc +41 -0
  73. package/.cursor/rules/trace-requirement.mdc +68 -0
  74. package/.cursor/rules/using-bigpowers.mdc +110 -0
  75. package/.cursor/rules/validate-contracts.mdc +285 -0
  76. package/.cursor/rules/validate-fix.mdc +146 -0
  77. package/.cursor/rules/verify-work.mdc +190 -0
  78. package/.cursor/rules/visual-dashboard.mdc +49 -0
  79. package/.cursor/rules/wire-ci.mdc +380 -0
  80. package/.cursor/rules/wire-observability.mdc +96 -0
  81. package/.cursor/rules/write-document.mdc +280 -0
  82. package/.gemini/extensions/bigpowers/commands/prompts/align-grid.md +109 -0
  83. package/.gemini/extensions/bigpowers/commands/prompts/assess-impact.md +90 -0
  84. package/.gemini/extensions/bigpowers/commands/prompts/audit-code.md +183 -0
  85. package/.gemini/extensions/bigpowers/commands/prompts/audit-plan.md +88 -0
  86. package/.gemini/extensions/bigpowers/commands/prompts/build-epic.md +104 -0
  87. package/.gemini/extensions/bigpowers/commands/prompts/change-request.md +120 -0
  88. package/.gemini/extensions/bigpowers/commands/prompts/commit-message.md +139 -0
  89. package/.gemini/extensions/bigpowers/commands/prompts/compose-workflow.md +81 -0
  90. package/.gemini/extensions/bigpowers/commands/prompts/context7-mcp.md +54 -0
  91. package/.gemini/extensions/bigpowers/commands/prompts/craft-skill.md +195 -0
  92. package/.gemini/extensions/bigpowers/commands/prompts/deepen-architecture.md +259 -0
  93. package/.gemini/extensions/bigpowers/commands/prompts/define-language.md +79 -0
  94. package/.gemini/extensions/bigpowers/commands/prompts/define-success.md +11 -0
  95. package/.gemini/extensions/bigpowers/commands/prompts/delegate-task.md +90 -0
  96. package/.gemini/extensions/bigpowers/commands/prompts/deploy.md +197 -0
  97. package/.gemini/extensions/bigpowers/commands/prompts/design-interface.md +96 -0
  98. package/.gemini/extensions/bigpowers/commands/prompts/develop-tdd.md +415 -0
  99. package/.gemini/extensions/bigpowers/commands/prompts/diagnose-root.md +23 -0
  100. package/.gemini/extensions/bigpowers/commands/prompts/diagnose-stall.md +53 -0
  101. package/.gemini/extensions/bigpowers/commands/prompts/dispatch-agents.md +117 -0
  102. package/.gemini/extensions/bigpowers/commands/prompts/edit-document.md +22 -0
  103. package/.gemini/extensions/bigpowers/commands/prompts/elaborate-spec.md +100 -0
  104. package/.gemini/extensions/bigpowers/commands/prompts/enforce-first.md +44 -0
  105. package/.gemini/extensions/bigpowers/commands/prompts/evolve-skill.md +54 -0
  106. package/.gemini/extensions/bigpowers/commands/prompts/execute-plan.md +60 -0
  107. package/.gemini/extensions/bigpowers/commands/prompts/extract-design.md +131 -0
  108. package/.gemini/extensions/bigpowers/commands/prompts/find-way.md +190 -0
  109. package/.gemini/extensions/bigpowers/commands/prompts/fix-bug.md +66 -0
  110. package/.gemini/extensions/bigpowers/commands/prompts/gate-trace.md +91 -0
  111. package/.gemini/extensions/bigpowers/commands/prompts/generate-allure-report.md +284 -0
  112. package/.gemini/extensions/bigpowers/commands/prompts/grill-me.md +107 -0
  113. package/.gemini/extensions/bigpowers/commands/prompts/grill-with-docs.md +52 -0
  114. package/.gemini/extensions/bigpowers/commands/prompts/guard-git.md +230 -0
  115. package/.gemini/extensions/bigpowers/commands/prompts/harden-vps.md +290 -0
  116. package/.gemini/extensions/bigpowers/commands/prompts/hook-commits.md +93 -0
  117. package/.gemini/extensions/bigpowers/commands/prompts/inspect-quality.md +105 -0
  118. package/.gemini/extensions/bigpowers/commands/prompts/investigate-bug.md +126 -0
  119. package/.gemini/extensions/bigpowers/commands/prompts/kickoff-branch.md +142 -0
  120. package/.gemini/extensions/bigpowers/commands/prompts/maintain-wiki.md +63 -0
  121. package/.gemini/extensions/bigpowers/commands/prompts/map-codebase.md +70 -0
  122. package/.gemini/extensions/bigpowers/commands/prompts/migrate-spec.md +907 -0
  123. package/.gemini/extensions/bigpowers/commands/prompts/model-domain.md +231 -0
  124. package/.gemini/extensions/bigpowers/commands/prompts/orchestrate-project.md +173 -0
  125. package/.gemini/extensions/bigpowers/commands/prompts/organize-workspace.md +163 -0
  126. package/.gemini/extensions/bigpowers/commands/prompts/plan-refactor.md +86 -0
  127. package/.gemini/extensions/bigpowers/commands/prompts/plan-release.md +144 -0
  128. package/.gemini/extensions/bigpowers/commands/prompts/plan-tests.md +74 -0
  129. package/.gemini/extensions/bigpowers/commands/prompts/plan-work.md +271 -0
  130. package/.gemini/extensions/bigpowers/commands/prompts/publish-package.md +337 -0
  131. package/.gemini/extensions/bigpowers/commands/prompts/quick-fix.md +113 -0
  132. package/.gemini/extensions/bigpowers/commands/prompts/release-branch.md +301 -0
  133. package/.gemini/extensions/bigpowers/commands/prompts/request-review.md +112 -0
  134. package/.gemini/extensions/bigpowers/commands/prompts/research-first.md +86 -0
  135. package/.gemini/extensions/bigpowers/commands/prompts/reset-baseline.md +20 -0
  136. package/.gemini/extensions/bigpowers/commands/prompts/respond-review.md +70 -0
  137. package/.gemini/extensions/bigpowers/commands/prompts/run-benchmark.md +84 -0
  138. package/.gemini/extensions/bigpowers/commands/prompts/run-evals.md +79 -0
  139. package/.gemini/extensions/bigpowers/commands/prompts/run-planning.md +100 -0
  140. package/.gemini/extensions/bigpowers/commands/prompts/scope-work.md +62 -0
  141. package/.gemini/extensions/bigpowers/commands/prompts/search-skills.md +72 -0
  142. package/.gemini/extensions/bigpowers/commands/prompts/security-review.md +383 -0
  143. package/.gemini/extensions/bigpowers/commands/prompts/seed-conventions.md +311 -0
  144. package/.gemini/extensions/bigpowers/commands/prompts/session-state.md +145 -0
  145. package/.gemini/extensions/bigpowers/commands/prompts/setup-environment.md +38 -0
  146. package/.gemini/extensions/bigpowers/commands/prompts/simple-english.md +345 -0
  147. package/.gemini/extensions/bigpowers/commands/prompts/simulate-agents.md +25 -0
  148. package/.gemini/extensions/bigpowers/commands/prompts/slice-tasks.md +67 -0
  149. package/.gemini/extensions/bigpowers/commands/prompts/smoke-test.md +260 -0
  150. package/.gemini/extensions/bigpowers/commands/prompts/spike-prototype.md +94 -0
  151. package/.gemini/extensions/bigpowers/commands/prompts/stocktake-skills.md +73 -0
  152. package/.gemini/extensions/bigpowers/commands/prompts/survey-context.md +134 -0
  153. package/.gemini/extensions/bigpowers/commands/prompts/terse-mode.md +41 -0
  154. package/.gemini/extensions/bigpowers/commands/prompts/trace-requirement.md +68 -0
  155. package/.gemini/extensions/bigpowers/commands/prompts/using-bigpowers.md +110 -0
  156. package/.gemini/extensions/bigpowers/commands/prompts/validate-contracts.md +285 -0
  157. package/.gemini/extensions/bigpowers/commands/prompts/validate-fix.md +146 -0
  158. package/.gemini/extensions/bigpowers/commands/prompts/verify-work.md +190 -0
  159. package/.gemini/extensions/bigpowers/commands/prompts/visual-dashboard.md +49 -0
  160. package/.gemini/extensions/bigpowers/commands/prompts/wire-ci.md +380 -0
  161. package/.gemini/extensions/bigpowers/commands/prompts/wire-observability.md +96 -0
  162. package/.gemini/extensions/bigpowers/commands/prompts/write-document.md +280 -0
  163. package/.gemini/extensions/bigpowers/gemini-extension.json +16 -0
  164. package/.gemini/extensions/bigpowers/hooks/HOOKS.md +43 -0
  165. package/.gemini/extensions/bigpowers/hooks/before-tool-git-guard.sh +26 -0
  166. package/.gemini/extensions/bigpowers/hooks/before-tool-rtk.sh +14 -0
  167. package/.gemini/extensions/bigpowers/hooks/before-tool-token-mgmt.sh +19 -0
  168. package/.gemini/extensions/bigpowers/hooks/hooks-manifest.json +36 -0
  169. package/.gemini/extensions/bigpowers/hooks/run-hook.cmd +29 -0
  170. package/.gemini/extensions/bigpowers/hooks/session-start +48 -0
  171. package/.gemini/extensions/bigpowers/hooks/settings.json.example +41 -0
  172. package/.gemini/extensions/bigpowers/skills/align-grid/SKILL.md +111 -0
  173. package/.gemini/extensions/bigpowers/skills/assess-impact/SKILL.md +92 -0
  174. package/.gemini/extensions/bigpowers/skills/audit-code/SKILL.md +185 -0
  175. package/.gemini/extensions/bigpowers/skills/audit-plan/SKILL.md +90 -0
  176. package/.gemini/extensions/bigpowers/skills/build-epic/SKILL.md +106 -0
  177. package/.gemini/extensions/bigpowers/skills/change-request/SKILL.md +122 -0
  178. package/.gemini/extensions/bigpowers/skills/commit-message/SKILL.md +141 -0
  179. package/.gemini/extensions/bigpowers/skills/compose-workflow/SKILL.md +83 -0
  180. package/.gemini/extensions/bigpowers/skills/context7-mcp/SKILL.md +56 -0
  181. package/.gemini/extensions/bigpowers/skills/craft-skill/SKILL.md +197 -0
  182. package/.gemini/extensions/bigpowers/skills/deepen-architecture/SKILL.md +261 -0
  183. package/.gemini/extensions/bigpowers/skills/define-language/SKILL.md +81 -0
  184. package/.gemini/extensions/bigpowers/skills/define-success/SKILL.md +13 -0
  185. package/.gemini/extensions/bigpowers/skills/delegate-task/SKILL.md +92 -0
  186. package/.gemini/extensions/bigpowers/skills/deploy/SKILL.md +199 -0
  187. package/.gemini/extensions/bigpowers/skills/design-interface/SKILL.md +98 -0
  188. package/.gemini/extensions/bigpowers/skills/develop-tdd/SKILL.md +417 -0
  189. package/.gemini/extensions/bigpowers/skills/diagnose-root/SKILL.md +25 -0
  190. package/.gemini/extensions/bigpowers/skills/diagnose-stall/SKILL.md +55 -0
  191. package/.gemini/extensions/bigpowers/skills/dispatch-agents/SKILL.md +119 -0
  192. package/.gemini/extensions/bigpowers/skills/edit-document/SKILL.md +24 -0
  193. package/.gemini/extensions/bigpowers/skills/elaborate-spec/SKILL.md +102 -0
  194. package/.gemini/extensions/bigpowers/skills/enforce-first/SKILL.md +46 -0
  195. package/.gemini/extensions/bigpowers/skills/evolve-skill/SKILL.md +56 -0
  196. package/.gemini/extensions/bigpowers/skills/execute-plan/SKILL.md +62 -0
  197. package/.gemini/extensions/bigpowers/skills/extract-design/SKILL.md +133 -0
  198. package/.gemini/extensions/bigpowers/skills/find-way/SKILL.md +192 -0
  199. package/.gemini/extensions/bigpowers/skills/fix-bug/SKILL.md +68 -0
  200. package/.gemini/extensions/bigpowers/skills/gate-trace/SKILL.md +93 -0
  201. package/.gemini/extensions/bigpowers/skills/generate-allure-report/SKILL.md +286 -0
  202. package/.gemini/extensions/bigpowers/skills/grill-me/SKILL.md +109 -0
  203. package/.gemini/extensions/bigpowers/skills/grill-with-docs/SKILL.md +54 -0
  204. package/.gemini/extensions/bigpowers/skills/guard-git/SKILL.md +232 -0
  205. package/.gemini/extensions/bigpowers/skills/harden-vps/SKILL.md +292 -0
  206. package/.gemini/extensions/bigpowers/skills/hook-commits/SKILL.md +95 -0
  207. package/.gemini/extensions/bigpowers/skills/inspect-quality/SKILL.md +107 -0
  208. package/.gemini/extensions/bigpowers/skills/investigate-bug/SKILL.md +128 -0
  209. package/.gemini/extensions/bigpowers/skills/kickoff-branch/SKILL.md +144 -0
  210. package/.gemini/extensions/bigpowers/skills/maintain-wiki/SKILL.md +65 -0
  211. package/.gemini/extensions/bigpowers/skills/map-codebase/SKILL.md +72 -0
  212. package/.gemini/extensions/bigpowers/skills/migrate-spec/SKILL.md +909 -0
  213. package/.gemini/extensions/bigpowers/skills/model-domain/SKILL.md +233 -0
  214. package/.gemini/extensions/bigpowers/skills/orchestrate-project/SKILL.md +175 -0
  215. package/.gemini/extensions/bigpowers/skills/organize-workspace/SKILL.md +165 -0
  216. package/.gemini/extensions/bigpowers/skills/plan-refactor/SKILL.md +88 -0
  217. package/.gemini/extensions/bigpowers/skills/plan-release/SKILL.md +146 -0
  218. package/.gemini/extensions/bigpowers/skills/plan-tests/SKILL.md +76 -0
  219. package/.gemini/extensions/bigpowers/skills/plan-work/SKILL.md +273 -0
  220. package/.gemini/extensions/bigpowers/skills/publish-package/SKILL.md +339 -0
  221. package/.gemini/extensions/bigpowers/skills/quick-fix/SKILL.md +115 -0
  222. package/.gemini/extensions/bigpowers/skills/release-branch/SKILL.md +303 -0
  223. package/.gemini/extensions/bigpowers/skills/request-review/SKILL.md +114 -0
  224. package/.gemini/extensions/bigpowers/skills/research-first/SKILL.md +88 -0
  225. package/.gemini/extensions/bigpowers/skills/reset-baseline/SKILL.md +22 -0
  226. package/.gemini/extensions/bigpowers/skills/respond-review/SKILL.md +72 -0
  227. package/.gemini/extensions/bigpowers/skills/run-benchmark/SKILL.md +86 -0
  228. package/.gemini/extensions/bigpowers/skills/run-evals/SKILL.md +81 -0
  229. package/.gemini/extensions/bigpowers/skills/run-planning/SKILL.md +102 -0
  230. package/.gemini/extensions/bigpowers/skills/scope-work/SKILL.md +64 -0
  231. package/.gemini/extensions/bigpowers/skills/search-skills/SKILL.md +74 -0
  232. package/.gemini/extensions/bigpowers/skills/security-review/SKILL.md +385 -0
  233. package/.gemini/extensions/bigpowers/skills/seed-conventions/SKILL.md +313 -0
  234. package/.gemini/extensions/bigpowers/skills/session-state/SKILL.md +147 -0
  235. package/.gemini/extensions/bigpowers/skills/setup-environment/SKILL.md +40 -0
  236. package/.gemini/extensions/bigpowers/skills/simple-english/SKILL.md +347 -0
  237. package/.gemini/extensions/bigpowers/skills/simulate-agents/SKILL.md +27 -0
  238. package/.gemini/extensions/bigpowers/skills/slice-tasks/SKILL.md +69 -0
  239. package/.gemini/extensions/bigpowers/skills/smoke-test/SKILL.md +262 -0
  240. package/.gemini/extensions/bigpowers/skills/spike-prototype/SKILL.md +96 -0
  241. package/.gemini/extensions/bigpowers/skills/stocktake-skills/SKILL.md +75 -0
  242. package/.gemini/extensions/bigpowers/skills/survey-context/SKILL.md +136 -0
  243. package/.gemini/extensions/bigpowers/skills/terse-mode/SKILL.md +43 -0
  244. package/.gemini/extensions/bigpowers/skills/trace-requirement/SKILL.md +70 -0
  245. package/.gemini/extensions/bigpowers/skills/using-bigpowers/SKILL.md +112 -0
  246. package/.gemini/extensions/bigpowers/skills/validate-contracts/SKILL.md +287 -0
  247. package/.gemini/extensions/bigpowers/skills/validate-fix/SKILL.md +148 -0
  248. package/.gemini/extensions/bigpowers/skills/verify-work/SKILL.md +192 -0
  249. package/.gemini/extensions/bigpowers/skills/visual-dashboard/SKILL.md +51 -0
  250. package/.gemini/extensions/bigpowers/skills/wire-ci/SKILL.md +382 -0
  251. package/.gemini/extensions/bigpowers/skills/wire-observability/SKILL.md +98 -0
  252. package/.gemini/extensions/bigpowers/skills/write-document/SKILL.md +282 -0
  253. package/.pi/package.json +1 -1
  254. package/CHANGELOG.md +7 -0
  255. package/package.json +1 -1
  256. package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
  257. package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
  258. package/scripts/test-install-helpers.js +31 -0
@@ -0,0 +1,190 @@
1
+ ---
2
+ name: verify-work
3
+ description: "Multi-phase UAT gate — cold-start smoke, build, typecheck, lint, tests, step-by-step manual verification, gaps-closure loop. Use after execute-plan or develop-tdd, before audit-code."
4
+ ---
5
+
6
+ <!-- story: e02s01 e46s03 -->
7
+ <!-- story: e38s05 -->
8
+ <!-- story: e45s05 -->
9
+ <!-- story: e45s09 -->
10
+ <!-- story: e45s13 -->
11
+ <!-- story: e45s40 -->
12
+ <!-- story: e51s03 -->
13
+ <!-- story: e20s04 -->
14
+ <!-- story: e20s06 -->
15
+
16
+
17
+ # Verify Work
18
+
19
+ > **HARD GATE** — No story is "done" until manual UAT for the active story is confirmed with evidence.
20
+ >
21
+ > **HARD GATE** — Do NOT run on `main` or `master`. Use the feature branch from `kickoff-branch`.
22
+
23
+ Review answers "is the code good?"; Verify answers "does the built thing do what was promised?"
24
+
25
+ ## Modes
26
+
27
+ - Default: full UAT plus gaps loop
28
+ - --smoke: Cold-start only plus one happy-path flow. Use for hotfixes.
29
+ - --cli: CLI tool verification — replaces cold-start with binary smoke checklist. Use for CLI tools with no server process.
30
+
31
+ ## Risk-Scaled Depth
32
+
33
+ `verify-work` reads the `risk:` field from the story template (defaults to `P1` if absent) to scale verification rigor:
34
+ - **P0**: Full verify-work multi-phase + `security-review` (step 5) + NFR evidence gate (step 5b).
35
+ - **P1**: Standard verify-work (build, test, lint, step-by-step manual).
36
+ - **P2**: Smoke, typecheck, lint only. Skip tests, security scan, and step-by-step manual UAT.
37
+ - **P3**: Typecheck and lint only. Skip smoke, tests, security scan, and step-by-step manual UAT.
38
+
39
+ ## Process
40
+
41
+ > **Timing:** `bash scripts/bp-timing.sh start verify-work` at invocation; `bash scripts/bp-timing.sh end verify-work` before handoff.
42
+
43
+ 0. **Branch check** — must not be `main`/`master`.
44
+
45
+ 0a. **Preflight / CI green (HARD GATE — e51s03)** — Run Preflight from `CLAUDE.md` or `BP_PREFLIGHT` (`bp-read-agents.sh`). If PR open: `gh pr checks` (**CI green**). Failure blocks all phases → `quick-fix` or `fix-bug`.
46
+
47
+ 1. Read active story tasks from `specs/epics/<capsule>/eNNsYY-tasks.yaml` and story spec from `specs/epics/<capsule>/eNNsYY-<slug>.md` (countable-story-format, Gherkin in §17). Note the `risk:` level (`P0`–`P3`).
48
+ 1a. **Pre-UAT verify validation** — for each task's `verify:` command, run it and detect pattern mismatches before UAT begins. If a grep/awk/jq command fails, check whether the pattern is wrong vs. a genuine failure:
49
+ ```bash
50
+ # For a failing grep -q 'PATTERN' FILE, check what is actually in FILE
51
+ grep 'PATTERN' FILE || grep -n '' FILE | head -20 # show nearest lines
52
+ ```
53
+ Report: `"Pattern 'X' not found. Nearest match: 'Y' at line N"` and ask `"Update verify command? [Y/n]"`. Fix before proceeding — a mismatched verify command produces false failures during UAT.
54
+ 2. **Cold-start smoke** (if app; skip if P3): stop server, clear caches, boot from scratch.
55
+ 3. **AGENTS.md preflight** — if 0a skipped BP_PREFLIGHT, run `bash scripts/bp-read-agents.sh` and use detected command.
56
+ 4. Mechanical gates: build → typecheck → lint → tests (from `CLAUDE.md` or AGENTS.md). Skip tests if P2/P3.
57
+
58
+ > **HARD GATE — One-test-minimum terminal verdict (e45s13):** At least one mechanical gate MUST be a **real terminal-verdict command** (shell exits 0 or non-zero — not prose, not combined log excerpts). Record that command's stdout/stderr from a **single contiguous run** in `specs/verifications/eNNsYY-verify.yaml` under `terminal_verdict`. Bug reports and gap logs MUST NOT merge evidence from multiple runs into one verdict — each failing run gets its own evidence block.
59
+
60
+ 5. **Security scan** (skip if P2/P3) — run `security-review` against the git diff (working tree vs merge-base). Parse findings report. If any HIGH findings with confidence ≥ 8 exist → **block the gate**. Write findings to `specs/security/REVIEW.md`. Allow documented exceptions via `specs/security/EXCEPTIONS.md`. MEDIUM/LOW findings warn but don't block.
61
+ 5a. **Blind-spot check** — run `bash scripts/check-blind-spots.sh`. This detects structural quality gaps (verify-gap, test-gap, stale-tag, etc.) beyond percentage coverage. If any HIGH-severity findings exist → **block the verify-work PASS gate**. Findings are written to `specs/blind-spots.json`. MEDIUM/LOW findings warn but don't block.
62
+ 5a2. **Completeness critic (e45s05)** — `bash scripts/lib/completeness-critic.sh`. **BLOCKER** aborts merge gate; WARNING → gaps loop; FILLED = evidence only.
63
+
64
+ 5b. **NFR Evidence Gate** (P0 only) — Produces go/no-go output on three dimensions: Performance (response time, throughput), Reliability (error rate, recovery), and Operability (logging, health checks). Reads thresholds from `specs/tech-architecture/eNN-TEST_PLAN_LATEST.md` and writes evidence as OKF verification-report bundles to `specs/verifications/NFR-eNNsYY.json`. FAIL on any dimension blocks the gate.
65
+ 6. **Step-by-step UAT** (skip if P2/P3) — one user-observable action at a time.
66
+ 7. **Gaps loop** — failures → log → `plan-work` → re-verify. Unaddressed HIGH findings from step 5 feed into this loop alongside other quality gaps.
67
+
68
+ 7a. **Validation gate (e45s09)** — All tasks `status: passing`; evidence in `specs/verifications/`; update `execution-status.yaml`.
69
+ 7b. **Reopen-don't-refile (e45s09)** — Regressions reopen existing story/bug — no duplicate capsule entries.
70
+
71
+ ## Verify sub-operations
72
+
73
+ ### Cold-Start Smoke (absorbed)
74
+
75
+ Stop server, clear caches, boot from scratch; confirm no stale config affects behavior.
76
+
77
+ ### Gaps Loop (absorbed)
78
+
79
+ After UAT, identify and close any gaps between promised behavior and actual behavior:
80
+
81
+ - Capture what was promised in the epic task description
82
+ - Document what actually happened (expected vs actual)
83
+ - If behavior doesn't match the promises, log the gap
84
+ - Loop back to `plan-work` or `develop-tdd` to fix the gap
85
+ - Re-verify until all gaps are closed (gaps count = 0)
86
+
87
+ ## UAT dialogue
88
+
89
+ - Pass: user confirms per step.
90
+ - Fail: capture expected vs actual; do not mark done in `execution-status.yaml`.
91
+
92
+ ## Persist verification evidence
93
+
94
+ After UAT passes, write structured evidence to `specs/verifications/eNNsYY-verify.yaml`:
95
+
96
+ ```yaml
97
+ story_id: e01s01
98
+ verified_at: "2026-06-11T14:30:00Z"
99
+ verifier: verify-work
100
+ phases:
101
+ smoke:
102
+ passed: true
103
+ build:
104
+ passed: true
105
+ command: "npm run build"
106
+ typecheck:
107
+ passed: true
108
+ lint:
109
+ passed: true
110
+ tests:
111
+ passed: true
112
+ coverage: "94.2%"
113
+ terminal_verdict:
114
+ command: "npm test"
115
+ exit_code: 0
116
+ captured_at: "2026-06-11T14:25:00Z"
117
+ note: "Single run — do not merge output from other attempts"
118
+ manual:
119
+ steps:
120
+ - step: "Open /login"
121
+ expected: "Login form renders"
122
+ actual: "Login form rendered correctly"
123
+ passed: true
124
+ gaps:
125
+ closed: true
126
+ ```
127
+
128
+ ### 5b. OKF wiki LINT (e39s08)
129
+
130
+ ```bash
131
+ for p in specs/skills-wiki/skills/*.md; do s="skills/$(basename "$p" .md)/SKILL.md"; [ -f "$s" ]&&[ "$p" -ot "$s" ]&&echo "STALE: $p"; done
132
+ for p in specs/conventions-wiki/*.md; do [ "$(basename "$p")" = "index.md" ]&&continue; grep -q "$(basename "$p" .md)" CONVENTIONS.md||echo "ORPHAN: $p"; done
133
+ ```
134
+
135
+ > **HARD GATE** — Verification evidence MUST be persisted before marking the story done. No evidence = not verified.
136
+
137
+ ## --cli mode
138
+
139
+ CLI tools: use `--cli` when no server process. Binary detect + checklist: [REFERENCE.md](REFERENCE.md#cli-mode).
140
+
141
+ ## Verify
142
+
143
+ → verify: `find specs/verifications -maxdepth 1 -name '*-verify.yaml' 2>/dev/null | grep -q .`
144
+
145
+ ## Handoff
146
+ READY -> next: audit-code
147
+ Writes: state.yaml handoff.next_skill = audit-code
148
+
149
+ ---
150
+
151
+ # Verify Work — Reference
152
+
153
+ ## Cold-start smoke
154
+
155
+ ```bash
156
+ # Example — adapt to project CLAUDE.md
157
+ pkill -f "<dev-server>" 2>/dev/null || true
158
+ rm -rf .next/cache node_modules/.cache 2>/dev/null || true
159
+ <run command> &
160
+ sleep 3 && curl -sf http://localhost:<port>/health || echo "BOOT FAIL"
161
+ ```
162
+
163
+ ## Gaps template
164
+
165
+ ```markdown
166
+ ## Gaps (verify-work)
167
+
168
+ | Step | Expected | Actual | Status |
169
+ |------|----------|--------|--------|
170
+ | 1 | ... | ... | FAIL |
171
+ ```
172
+
173
+ Feed gaps to `plan-work` as new steps with verify commands, then re-run verify-work.
174
+
175
+ ## CLI mode
176
+
177
+ For CLI tools where cold-start smoke does not apply. Auto-detected when no server process; or use `--cli`.
178
+
179
+ **Auto-detect binary name:**
180
+ ```bash
181
+ BINARY=$(grep '^name' Cargo.toml | head -1 | awk -F'"' '{print $2}') # Cargo
182
+ BINARY=$(node -e "console.log(require('./package.json').bin && Object.keys(require('./package.json').bin)[0] || '')" 2>/dev/null)
183
+ BINARY=$(grep '^BIN\s*=' Makefile 2>/dev/null | awk '{print $3}')
184
+ ```
185
+
186
+ **Checklist (replaces cold-start smoke):**
187
+ 1. `$BINARY --help` → output contains "Usage"
188
+ 2. `$BINARY --version` → matches manifest
189
+ 3. README example command → non-empty output
190
+ 4. `$BINARY --invalid-flag` → exit ≠ 0 with error message
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: visual-dashboard
3
+ description: "Start a browser-based dashboard that visualizes architecture, implementation plans, and project status. Persists artifacts in .bigpowers/dashboard/. Reads specs/state.yaml, release-plan.yaml, epics, and planning-status via HTTP API or opencode panel."
4
+ ---
5
+
6
+ # Visual Dashboard
7
+ > **HARD GATE** — **HARD GATE** — Dashboards are read-only. Do NOT use visualization to make decisions without consulting the source data. 'The chart looks better' is not a decision.
8
+
9
+
10
+ Browser-based visual companion for bigpowers. Visualizes architecture, plans, and status.
11
+
12
+ ## HTTP cockpit (YAML SoT)
13
+
14
+ Start the server:
15
+
16
+ ```bash
17
+ bash visual-dashboard/scripts/start-server.sh
18
+ ```
19
+
20
+ Endpoints:
21
+
22
+ | Route | Purpose |
23
+ |-------|---------|
24
+ | `GET /api/status?projectDir=<abs>` | JSON: `state`, `release`, `epics[]`, `planning_status`, `active_epic` |
25
+ | `GET /cockpit.html?projectDir=<abs>` | Read-only PM view (planning left, epics right) |
26
+ | `GET /` | Agent-pushed HTML screens (legacy, unchanged) |
27
+
28
+ Example:
29
+
30
+ ```bash
31
+ curl -s "http://127.0.0.1:PORT/api/status?projectDir=$PWD" | jq .release.version
32
+ ```
33
+
34
+ Implementation: `visual-dashboard/scripts/read-specs-status.cjs` + `server.cjs`.
35
+
36
+ ## Opencode Progress Panel
37
+
38
+ Projects using bigpowers in opencode can read `specs/state.yaml`, `specs/release-plan.yaml`, and active `specs/epics/*.yaml` directly (no checkbox `### WS1` markdown).
39
+
40
+ Required YAML keys:
41
+
42
+ - **state.yaml** — `active_flow`, `active_epic_id`, `git`, `handoff`, `epic_cycle`
43
+ - **release-plan.yaml** — `release.version`, `epics[]` with `id`, `title`, `wsjf`, `file`
44
+ - **execution-status.yaml** — `development_status` map (story/epic → `done` | `pending`)
45
+ - **planning-status.yaml** — discover workflows and `status: done|pending`
46
+
47
+ ## Agent screens (optional)
48
+
49
+ Push HTML to the dashboard session dir for rich diagrams. See `start-server.sh` for `CONTENT_DIR`.
@@ -0,0 +1,380 @@
1
+ ---
2
+ name: wire-ci
3
+ description: "CI pipeline setup with bundled, forge-neutral templates and local validation. Detects the forge from the git remote, generates workflows for supported forges, and skips honestly for the rest. The CI equivalent of wire-observability."
4
+ ---
5
+
6
+ # Wire CI
7
+
8
+ > **HARD GATE (supported forges only)** — Do not ship a project without CI. Run this skill before first merge to main.
9
+ >
10
+ > On a forge bigpowers ships no templates for, this skill **is not a gate**: it reports the forge, explains what it cannot do, and exits 3. A gate that cannot run must not claim it did. See § Unsupported forges.
11
+ >
12
+ > **HARD GATE** — CI that is untestable locally will break every cycle. Always run `--validate` after generating workflows and `--dry-run` before pushing.
13
+
14
+ Generate, validate, and test CI workflows. Detects the forge and project type, copies a **bundled** template, and verifies locally before anything reaches CI.
15
+
16
+ ## Forge resolution
17
+
18
+ `scripts/lib/detect-forge.sh` resolves the forge, first match wins: `BIGPOWERS_FORGE` env var → `forge:` in `specs/forge.yaml` → the `origin` remote URL → `unknown`.
19
+
20
+ ```bash
21
+ bash scripts/wire-ci.sh --detect # report forge + stack, write nothing
22
+ bash scripts/wire-ci.sh --plan # show the template that would be used
23
+ bash scripts/wire-ci.sh --apply # write the workflow
24
+ ```
25
+
26
+ GitHub ships templates (`.github/workflows/`). GitLab, Bitbucket, Codeberg, and Gitea are detected but **unsupported** — `--apply` writes nothing and exits 3.
27
+
28
+ ## Template source — configurable, bundled by default
29
+
30
+ Templates live in `docs/templates/ci/<forge>/` **inside the bigpowers package**, so there is no network dependency on any third party's repository. Override with `BIGPOWERS_CI_TEMPLATES=/path/to/your/templates`, laid out as `<root>/<forge>/test-build-release-<stack>.yml`.
31
+
32
+ ## What this sets up
33
+
34
+ 1. **Test Build Release workflow** — lint → test → build → release in one `needs:` chain
35
+ 2. **`--validate` mode** — YAML syntax, workflow permissions, required secrets, common pitfalls
36
+ 3. **`--dry-run` mode** — runs workflows locally via `act` before push
37
+ 4. **Failure pattern documentation** — see the table below
38
+
39
+ Deploy workflows are **not** bundled: they are platform-specific. See [REFERENCE.md](REFERENCE.md) for a worked example.
40
+
41
+ ## Process
42
+
43
+ ### 1. Detect forge and stack
44
+
45
+ ```bash
46
+ bash scripts/wire-ci.sh --detect
47
+ ```
48
+
49
+ Stack detection reads the project root:
50
+
51
+ | Manifest | Stack | Bundled template |
52
+ |----------|-------|------------------|
53
+ | `Cargo.toml` | Rust | `test-build-release-rust.yml` |
54
+ | `package.json` | Node | `test-build-release-node.yml` |
55
+ | `pyproject.toml` / `setup.py` | Python | `test-build-release-python.yml` |
56
+ | `go.mod` | Go | `test-build-release-go.yml` |
57
+
58
+ No recognized manifest → exit 3 with the list of manifests it looked for. Do not guess.
59
+
60
+ ### 2. Apply the template
61
+
62
+ ```bash
63
+ bash scripts/wire-ci.sh --apply
64
+ ```
65
+
66
+ **Do not rename the workflow `name:` field** — deploy listens for `"Test Build Release"`.
67
+
68
+ Edit placeholders after copying: language versions, `APP_TYPE`, `SITE_URL`.
69
+
70
+ ### 3. Unsupported forges
71
+
72
+ `--apply` writes nothing and exits 3. Your options, in the order the runner prints them:
73
+
74
+ - point `BIGPOWERS_CI_TEMPLATES` at templates for your forge
75
+ - pin `forge: github` in `specs/forge.yaml` if the remote is misdetected
76
+ - write the CI config by hand
77
+
78
+ Contributing a `docs/templates/ci/gitlab/` set and adding `gitlab` to `FORGE_SUPPORTED_LIST` is the natural next slice — per-forge command mapping (`gh pr checks` → `glab ci status`) is not implemented yet.
79
+
80
+ ### 4. Validate workflows (`--validate`)
81
+
82
+ See [REFERENCE.md](REFERENCE.md). Exit codes: `0` clean, `1` YAML syntax errors, `2` warnings only.
83
+
84
+ ### 5. Dry-run workflows (`--dry-run`)
85
+
86
+ See [REFERENCE.md](REFERENCE.md).
87
+
88
+ > **act** runs workflows in a local Docker environment — the most accurate pre-push validation.
89
+ > **gh workflow run** sends the workflow to GitHub but does not execute locally.
90
+
91
+ ### 6. Document common CI failure patterns
92
+
93
+ | Failure | Cause | Fix |
94
+ |---------|-------|-----|
95
+ | `npm publish` fails | `NPM_TOKEN` not set as repo secret | Add `NPM_TOKEN` to repo secrets |
96
+ | `semantic-release` fails on push | Missing `permissions: contents: write` | Add it to the release job |
97
+ | `cargo publish` auth fail | `CARGO_REGISTRY_TOKEN` not set | Add token to env or `~/.cargo/config.toml` |
98
+ | `go vet` fails | Go version mismatch | Use `go-version-file: go.mod` |
99
+ | `cargo clippy` errors | New nightly lints | Pin the toolchain; `cargo clippy --fix` |
100
+ | `act` not found | Docker not running or act missing | `brew install act`; `docker ps` |
101
+ | Hardcoded Node version stale | `.nvmrc` exists but workflow hardcodes | Use `node-version-file: .nvmrc` |
102
+ | Deploy never runs | TBR workflow renamed | Keep `name: Test Build Release` |
103
+ | Release rebuilds binary | Artifact not downloaded | `release` must `download-artifact` from `build` |
104
+
105
+ ## Verify
106
+
107
+ → verify: `bash scripts/wire-ci.sh --self-test`
108
+ → verify: `test -f docs/templates/ci/github/test-build-release-node.yml && test -f scripts/lib/detect-forge.sh`
109
+ → verify: `grep -q wire-ci SKILL-INDEX.md`
110
+
111
+ ---
112
+
113
+ # Wire Ci — Reference
114
+
115
+ ## Navigation
116
+
117
+ | Lines | Section |
118
+ |-------|---------|
119
+ | 1 | Title |
120
+ | 3–20 | Navigation |
121
+ | 21–22 | Examples |
122
+ | 23–39 | Create CI for a Go project (TBR + optional deploy) |
123
+ | 40–49 | Create CI for a CLI tool (TBR only, no deploy) |
124
+ | 50–57 | Validate existing workflows (no generation) |
125
+ | 58–70 | Options |
126
+ | 71–79 | Integration with build-epic |
127
+ | 80–154 | Reference block 1 — test-build-release.yml (Go, excerpt) |
128
+ | 155–204 | Reference block 2 — deploy.yml (generic web app, excerpt) |
129
+ | 205–232 | Reference block 3 — CLI dogfood (big-release pattern) |
130
+ | 233–257 | Reference block 4 — validate script |
131
+ | 258–268 | Reference block 5 — dry-run |
132
+
133
+ ## Examples
134
+
135
+ ### Create CI for a Go project (TBR + optional deploy)
136
+
137
+ ```bash
138
+ # Resolve forge + stack, then apply the bundled template
139
+ bash scripts/wire-ci.sh --detect
140
+ bash scripts/wire-ci.sh --apply
141
+
142
+ wire-ci --validate
143
+ wire-ci --dry-run
144
+ ```
145
+
146
+ To use your own org templates instead of the bundled ones:
147
+
148
+ ```bash
149
+ BIGPOWERS_CI_TEMPLATES=/path/to/your/templates bash scripts/wire-ci.sh --apply
150
+ ```
151
+
152
+ ### Create CI for a CLI tool (TBR only, no deploy)
153
+
154
+ ```bash
155
+ bash scripts/wire-ci.sh --apply
156
+ # Edit release job to download build artifact — see big-release dogfood
157
+ # CLI/library repos: delete deploy.yml; the release job is terminal.
158
+
159
+ wire-ci --validate
160
+ ```
161
+
162
+ ### Validate existing workflows (no generation)
163
+
164
+ ```bash
165
+ wire-ci --validate --check-only
166
+ ```
167
+
168
+ ---
169
+
170
+ ## Options
171
+
172
+ | Flag | Description |
173
+ |------|-------------|
174
+ | `--validate` | Check YAML syntax, permissions, secrets, common pitfalls |
175
+ | `--dry-run` | Run workflows locally via `act` or dispatch via `gh` |
176
+ | `--check-only` | Only validate, do not generate new files |
177
+ | `--type <type>` | Force project type (skip auto-detection) |
178
+ | `--force` | Overwrite existing workflow files |
179
+ | `--no-deploy` | Skip deploy.yml even for hosted stacks |
180
+
181
+ ---
182
+
183
+ ## Integration with build-epic
184
+
185
+ When `wire-ci` is used as part of `build-epic`:
186
+
187
+ 1. **During develop-tdd**: If the task modifies `.github/workflows/`, run `wire-ci --validate` as a CI dry-run sub-step
188
+ 2. **During release-branch**: After push, run `gh run list --limit 1 --branch main --json status,conclusion` to verify CI passes
189
+
190
+ ---
191
+
192
+ ## Reference block 1 — test-build-release.yml (Go, excerpt)
193
+
194
+ ```yaml
195
+ name: Test Build Release
196
+ on:
197
+ push:
198
+ branches: [main]
199
+ pull_request:
200
+ branches: [main]
201
+
202
+ permissions:
203
+ contents: read
204
+
205
+ concurrency:
206
+ group: pipeline-${{ github.workflow }}-${{ github.ref }}
207
+ cancel-in-progress: true
208
+
209
+ jobs:
210
+ lint:
211
+ runs-on: ubuntu-22.04
212
+ timeout-minutes: 10
213
+ steps:
214
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
215
+ - uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
216
+ with:
217
+ go-version: '1.22'
218
+ cache: true
219
+ - uses: golangci/golangci-lint-action@55c2c1448f86e01eaae002a5a3a9624417608d84 # v6.5.2
220
+ with:
221
+ version: v1.64.8
222
+
223
+ test:
224
+ needs: [lint]
225
+ runs-on: ubuntu-22.04
226
+ steps:
227
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
228
+ - uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
229
+ with:
230
+ go-version: '1.22'
231
+ cache: true
232
+ - run: go vet ./...
233
+ - run: go test ./... -count=1
234
+
235
+ build:
236
+ needs: [test]
237
+ runs-on: ubuntu-22.04
238
+ steps:
239
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
240
+ - uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
241
+ with:
242
+ go-version: '1.22'
243
+ cache: true
244
+ - run: go build ./...
245
+ - run: jq -n --arg sha "${{ github.sha }}" '{sha: $sha}' > deploy-meta.json
246
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
247
+ with:
248
+ name: deploy-meta
249
+ path: deploy-meta.json
250
+
251
+ release:
252
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
253
+ needs: [build]
254
+ permissions:
255
+ contents: write
256
+ steps:
257
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
258
+ with:
259
+ fetch-depth: 0
260
+ - run: npx semantic-release
261
+ env:
262
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
263
+ ```
264
+
265
+ ---
266
+
267
+ ## Reference block 2 — deploy.yml (generic web app, excerpt)
268
+
269
+ ```yaml
270
+ name: Deploy
271
+ on:
272
+ workflow_run:
273
+ workflows: ["Test Build Release"]
274
+ types: [completed]
275
+
276
+ permissions:
277
+ contents: read
278
+ actions: read
279
+
280
+ concurrency:
281
+ group: deploy-production
282
+ cancel-in-progress: false
283
+
284
+ env:
285
+ SITE_URL: "https://CHANGE-ME.example.com"
286
+
287
+ jobs:
288
+ deploy:
289
+ if: >
290
+ github.event.workflow_run.conclusion == 'success' &&
291
+ github.event.workflow_run.head_branch == 'main'
292
+ runs-on: ubuntu-22.04
293
+ environment: production
294
+ steps:
295
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
296
+ with:
297
+ name: deploy-meta
298
+ github-token: ${{ secrets.GITHUB_TOKEN }}
299
+ run-id: ${{ github.event.workflow_run.id }}
300
+ path: deploy-meta
301
+ # Placeholder deploy step — bigpowers ships no deploy templates and pins
302
+ # no third-party action. Substitute your platform's own step here, or drop
303
+ # the deploy job entirely for CLI and library repos. Pin whatever action
304
+ # you choose to a full commit SHA rather than a tag. (GH #104)
305
+ - name: Deploy
306
+ run: |
307
+ echo "Replace this step with your platform's deploy command."
308
+ echo "commit=$(jq -r .sha deploy-meta/deploy-meta.json)"
309
+ exit 1
310
+ - name: Health check
311
+ run: |
312
+ curl -sf "${{ env.SITE_URL }}" || exit 1
313
+ ```
314
+
315
+ ---
316
+
317
+ ## Reference block 3 — CLI dogfood (big-release pattern)
318
+
319
+ ```yaml
320
+ build:
321
+ needs: [test]
322
+ steps:
323
+ - run: make build
324
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
325
+ with:
326
+ name: big-release-${{ github.sha }}
327
+ path: bin/big-release
328
+
329
+ release:
330
+ needs: [build]
331
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
332
+ steps:
333
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
334
+ with:
335
+ name: big-release-${{ github.sha }}
336
+ path: bin
337
+ - run: make release # cross-compile assets only; host binary from artifact
338
+ - run: big-release release --verbose
339
+ ```
340
+
341
+ No `deploy.yml` — CLI publishes via the release job.
342
+
343
+ ---
344
+
345
+ ## Reference block 4 — validate script
346
+
347
+ ```bash
348
+ for f in .github/workflows/*.yml .github/workflows/*.yaml; do
349
+ [ -f "$f" ] || continue
350
+ python3 -c "import yaml; yaml.safe_load(open('$f'))" || echo "FAIL: $f has YAML syntax errors"
351
+ done
352
+
353
+ for f in .github/workflows/test-build-release.yml; do
354
+ if grep -q "permissions:" "$f"; then
355
+ echo "OK: $f has permissions block"
356
+ else
357
+ echo "WARNING: $f missing permissions block"
358
+ fi
359
+ done
360
+
361
+ if grep -q 'workflows: \["Test Build Release"\]' .github/workflows/deploy.yml 2>/dev/null; then
362
+ if ! grep -q 'name: Test Build Release' .github/workflows/test-build-release.yml; then
363
+ echo "WARNING: deploy.yml listens for Test Build Release but TBR name may differ"
364
+ fi
365
+ fi
366
+ ```
367
+
368
+ ---
369
+
370
+ ## Reference block 5 — dry-run
371
+
372
+ ```bash
373
+ if command -v act &>/dev/null; then
374
+ act push --dry-run -W .github/workflows/test-build-release.yml
375
+ elif command -v gh &>/dev/null; then
376
+ gh workflow run test-build-release.yml --ref "$(git branch --show-current)"
377
+ else
378
+ echo "Install act or gh for dry-run"
379
+ fi
380
+ ```