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