bigpowers 2.87.4 → 2.87.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.
- package/.cursor/rules/align-grid.mdc +109 -0
- package/.cursor/rules/assess-impact.mdc +90 -0
- package/.cursor/rules/audit-code.mdc +183 -0
- package/.cursor/rules/audit-plan.mdc +88 -0
- package/.cursor/rules/build-epic.mdc +104 -0
- package/.cursor/rules/change-request.mdc +120 -0
- package/.cursor/rules/commit-message.mdc +139 -0
- package/.cursor/rules/compose-workflow.mdc +81 -0
- package/.cursor/rules/context7-mcp.mdc +54 -0
- package/.cursor/rules/craft-skill.mdc +195 -0
- package/.cursor/rules/deepen-architecture.mdc +259 -0
- package/.cursor/rules/define-language.mdc +79 -0
- package/.cursor/rules/define-success.mdc +11 -0
- package/.cursor/rules/delegate-task.mdc +90 -0
- package/.cursor/rules/deploy.mdc +197 -0
- package/.cursor/rules/design-interface.mdc +96 -0
- package/.cursor/rules/develop-tdd.mdc +415 -0
- package/.cursor/rules/diagnose-root.mdc +23 -0
- package/.cursor/rules/diagnose-stall.mdc +53 -0
- package/.cursor/rules/dispatch-agents.mdc +117 -0
- package/.cursor/rules/edit-document.mdc +22 -0
- package/.cursor/rules/elaborate-spec.mdc +100 -0
- package/.cursor/rules/enforce-first.mdc +44 -0
- package/.cursor/rules/evolve-skill.mdc +54 -0
- package/.cursor/rules/execute-plan.mdc +60 -0
- package/.cursor/rules/extract-design.mdc +131 -0
- package/.cursor/rules/find-way.mdc +190 -0
- package/.cursor/rules/fix-bug.mdc +66 -0
- package/.cursor/rules/gate-trace.mdc +91 -0
- package/.cursor/rules/generate-allure-report.mdc +284 -0
- package/.cursor/rules/grill-me.mdc +107 -0
- package/.cursor/rules/grill-with-docs.mdc +52 -0
- package/.cursor/rules/guard-git.mdc +230 -0
- package/.cursor/rules/harden-vps.mdc +290 -0
- package/.cursor/rules/hook-commits.mdc +93 -0
- package/.cursor/rules/inspect-quality.mdc +105 -0
- package/.cursor/rules/investigate-bug.mdc +126 -0
- package/.cursor/rules/kickoff-branch.mdc +142 -0
- package/.cursor/rules/maintain-wiki.mdc +63 -0
- package/.cursor/rules/map-codebase.mdc +70 -0
- package/.cursor/rules/migrate-spec.mdc +907 -0
- package/.cursor/rules/model-domain.mdc +231 -0
- package/.cursor/rules/orchestrate-project.mdc +173 -0
- package/.cursor/rules/organize-workspace.mdc +163 -0
- package/.cursor/rules/plan-refactor.mdc +86 -0
- package/.cursor/rules/plan-release.mdc +144 -0
- package/.cursor/rules/plan-tests.mdc +74 -0
- package/.cursor/rules/plan-work.mdc +271 -0
- package/.cursor/rules/publish-package.mdc +337 -0
- package/.cursor/rules/quick-fix.mdc +113 -0
- package/.cursor/rules/release-branch.mdc +301 -0
- package/.cursor/rules/request-review.mdc +112 -0
- package/.cursor/rules/research-first.mdc +86 -0
- package/.cursor/rules/reset-baseline.mdc +20 -0
- package/.cursor/rules/respond-review.mdc +70 -0
- package/.cursor/rules/run-benchmark.mdc +84 -0
- package/.cursor/rules/run-evals.mdc +79 -0
- package/.cursor/rules/run-planning.mdc +100 -0
- package/.cursor/rules/scope-work.mdc +62 -0
- package/.cursor/rules/search-skills.mdc +72 -0
- package/.cursor/rules/security-review.mdc +383 -0
- package/.cursor/rules/seed-conventions.mdc +311 -0
- package/.cursor/rules/session-state.mdc +145 -0
- package/.cursor/rules/setup-environment.mdc +38 -0
- package/.cursor/rules/simple-english.mdc +345 -0
- package/.cursor/rules/simulate-agents.mdc +25 -0
- package/.cursor/rules/slice-tasks.mdc +67 -0
- package/.cursor/rules/smoke-test.mdc +260 -0
- package/.cursor/rules/spike-prototype.mdc +94 -0
- package/.cursor/rules/stocktake-skills.mdc +73 -0
- package/.cursor/rules/survey-context.mdc +134 -0
- package/.cursor/rules/terse-mode.mdc +41 -0
- package/.cursor/rules/trace-requirement.mdc +68 -0
- package/.cursor/rules/using-bigpowers.mdc +110 -0
- package/.cursor/rules/validate-contracts.mdc +285 -0
- package/.cursor/rules/validate-fix.mdc +146 -0
- package/.cursor/rules/verify-work.mdc +190 -0
- package/.cursor/rules/visual-dashboard.mdc +49 -0
- package/.cursor/rules/wire-ci.mdc +380 -0
- package/.cursor/rules/wire-observability.mdc +96 -0
- package/.cursor/rules/write-document.mdc +280 -0
- package/.gemini/extensions/bigpowers/commands/prompts/align-grid.md +109 -0
- package/.gemini/extensions/bigpowers/commands/prompts/assess-impact.md +90 -0
- package/.gemini/extensions/bigpowers/commands/prompts/audit-code.md +183 -0
- package/.gemini/extensions/bigpowers/commands/prompts/audit-plan.md +88 -0
- package/.gemini/extensions/bigpowers/commands/prompts/build-epic.md +104 -0
- package/.gemini/extensions/bigpowers/commands/prompts/change-request.md +120 -0
- package/.gemini/extensions/bigpowers/commands/prompts/commit-message.md +139 -0
- package/.gemini/extensions/bigpowers/commands/prompts/compose-workflow.md +81 -0
- package/.gemini/extensions/bigpowers/commands/prompts/context7-mcp.md +54 -0
- package/.gemini/extensions/bigpowers/commands/prompts/craft-skill.md +195 -0
- package/.gemini/extensions/bigpowers/commands/prompts/deepen-architecture.md +259 -0
- package/.gemini/extensions/bigpowers/commands/prompts/define-language.md +79 -0
- package/.gemini/extensions/bigpowers/commands/prompts/define-success.md +11 -0
- package/.gemini/extensions/bigpowers/commands/prompts/delegate-task.md +90 -0
- package/.gemini/extensions/bigpowers/commands/prompts/deploy.md +197 -0
- package/.gemini/extensions/bigpowers/commands/prompts/design-interface.md +96 -0
- package/.gemini/extensions/bigpowers/commands/prompts/develop-tdd.md +415 -0
- package/.gemini/extensions/bigpowers/commands/prompts/diagnose-root.md +23 -0
- package/.gemini/extensions/bigpowers/commands/prompts/diagnose-stall.md +53 -0
- package/.gemini/extensions/bigpowers/commands/prompts/dispatch-agents.md +117 -0
- package/.gemini/extensions/bigpowers/commands/prompts/edit-document.md +22 -0
- package/.gemini/extensions/bigpowers/commands/prompts/elaborate-spec.md +100 -0
- package/.gemini/extensions/bigpowers/commands/prompts/enforce-first.md +44 -0
- package/.gemini/extensions/bigpowers/commands/prompts/evolve-skill.md +54 -0
- package/.gemini/extensions/bigpowers/commands/prompts/execute-plan.md +60 -0
- package/.gemini/extensions/bigpowers/commands/prompts/extract-design.md +131 -0
- package/.gemini/extensions/bigpowers/commands/prompts/find-way.md +190 -0
- package/.gemini/extensions/bigpowers/commands/prompts/fix-bug.md +66 -0
- package/.gemini/extensions/bigpowers/commands/prompts/gate-trace.md +91 -0
- package/.gemini/extensions/bigpowers/commands/prompts/generate-allure-report.md +284 -0
- package/.gemini/extensions/bigpowers/commands/prompts/grill-me.md +107 -0
- package/.gemini/extensions/bigpowers/commands/prompts/grill-with-docs.md +52 -0
- package/.gemini/extensions/bigpowers/commands/prompts/guard-git.md +230 -0
- package/.gemini/extensions/bigpowers/commands/prompts/harden-vps.md +290 -0
- package/.gemini/extensions/bigpowers/commands/prompts/hook-commits.md +93 -0
- package/.gemini/extensions/bigpowers/commands/prompts/inspect-quality.md +105 -0
- package/.gemini/extensions/bigpowers/commands/prompts/investigate-bug.md +126 -0
- package/.gemini/extensions/bigpowers/commands/prompts/kickoff-branch.md +142 -0
- package/.gemini/extensions/bigpowers/commands/prompts/maintain-wiki.md +63 -0
- package/.gemini/extensions/bigpowers/commands/prompts/map-codebase.md +70 -0
- package/.gemini/extensions/bigpowers/commands/prompts/migrate-spec.md +907 -0
- package/.gemini/extensions/bigpowers/commands/prompts/model-domain.md +231 -0
- package/.gemini/extensions/bigpowers/commands/prompts/orchestrate-project.md +173 -0
- package/.gemini/extensions/bigpowers/commands/prompts/organize-workspace.md +163 -0
- package/.gemini/extensions/bigpowers/commands/prompts/plan-refactor.md +86 -0
- package/.gemini/extensions/bigpowers/commands/prompts/plan-release.md +144 -0
- package/.gemini/extensions/bigpowers/commands/prompts/plan-tests.md +74 -0
- package/.gemini/extensions/bigpowers/commands/prompts/plan-work.md +271 -0
- package/.gemini/extensions/bigpowers/commands/prompts/publish-package.md +337 -0
- package/.gemini/extensions/bigpowers/commands/prompts/quick-fix.md +113 -0
- package/.gemini/extensions/bigpowers/commands/prompts/release-branch.md +301 -0
- package/.gemini/extensions/bigpowers/commands/prompts/request-review.md +112 -0
- package/.gemini/extensions/bigpowers/commands/prompts/research-first.md +86 -0
- package/.gemini/extensions/bigpowers/commands/prompts/reset-baseline.md +20 -0
- package/.gemini/extensions/bigpowers/commands/prompts/respond-review.md +70 -0
- package/.gemini/extensions/bigpowers/commands/prompts/run-benchmark.md +84 -0
- package/.gemini/extensions/bigpowers/commands/prompts/run-evals.md +79 -0
- package/.gemini/extensions/bigpowers/commands/prompts/run-planning.md +100 -0
- package/.gemini/extensions/bigpowers/commands/prompts/scope-work.md +62 -0
- package/.gemini/extensions/bigpowers/commands/prompts/search-skills.md +72 -0
- package/.gemini/extensions/bigpowers/commands/prompts/security-review.md +383 -0
- package/.gemini/extensions/bigpowers/commands/prompts/seed-conventions.md +311 -0
- package/.gemini/extensions/bigpowers/commands/prompts/session-state.md +145 -0
- package/.gemini/extensions/bigpowers/commands/prompts/setup-environment.md +38 -0
- package/.gemini/extensions/bigpowers/commands/prompts/simple-english.md +345 -0
- package/.gemini/extensions/bigpowers/commands/prompts/simulate-agents.md +25 -0
- package/.gemini/extensions/bigpowers/commands/prompts/slice-tasks.md +67 -0
- package/.gemini/extensions/bigpowers/commands/prompts/smoke-test.md +260 -0
- package/.gemini/extensions/bigpowers/commands/prompts/spike-prototype.md +94 -0
- package/.gemini/extensions/bigpowers/commands/prompts/stocktake-skills.md +73 -0
- package/.gemini/extensions/bigpowers/commands/prompts/survey-context.md +134 -0
- package/.gemini/extensions/bigpowers/commands/prompts/terse-mode.md +41 -0
- package/.gemini/extensions/bigpowers/commands/prompts/trace-requirement.md +68 -0
- package/.gemini/extensions/bigpowers/commands/prompts/using-bigpowers.md +110 -0
- package/.gemini/extensions/bigpowers/commands/prompts/validate-contracts.md +285 -0
- package/.gemini/extensions/bigpowers/commands/prompts/validate-fix.md +146 -0
- package/.gemini/extensions/bigpowers/commands/prompts/verify-work.md +190 -0
- package/.gemini/extensions/bigpowers/commands/prompts/visual-dashboard.md +49 -0
- package/.gemini/extensions/bigpowers/commands/prompts/wire-ci.md +380 -0
- package/.gemini/extensions/bigpowers/commands/prompts/wire-observability.md +96 -0
- package/.gemini/extensions/bigpowers/commands/prompts/write-document.md +280 -0
- package/.gemini/extensions/bigpowers/gemini-extension.json +16 -0
- package/.gemini/extensions/bigpowers/hooks/HOOKS.md +43 -0
- package/.gemini/extensions/bigpowers/hooks/before-tool-git-guard.sh +26 -0
- package/.gemini/extensions/bigpowers/hooks/before-tool-rtk.sh +14 -0
- package/.gemini/extensions/bigpowers/hooks/before-tool-token-mgmt.sh +19 -0
- package/.gemini/extensions/bigpowers/hooks/hooks-manifest.json +36 -0
- package/.gemini/extensions/bigpowers/hooks/run-hook.cmd +29 -0
- package/.gemini/extensions/bigpowers/hooks/session-start +48 -0
- package/.gemini/extensions/bigpowers/hooks/settings.json.example +41 -0
- package/.gemini/extensions/bigpowers/skills/align-grid/SKILL.md +111 -0
- package/.gemini/extensions/bigpowers/skills/assess-impact/SKILL.md +92 -0
- package/.gemini/extensions/bigpowers/skills/audit-code/SKILL.md +185 -0
- package/.gemini/extensions/bigpowers/skills/audit-plan/SKILL.md +90 -0
- package/.gemini/extensions/bigpowers/skills/build-epic/SKILL.md +106 -0
- package/.gemini/extensions/bigpowers/skills/change-request/SKILL.md +122 -0
- package/.gemini/extensions/bigpowers/skills/commit-message/SKILL.md +141 -0
- package/.gemini/extensions/bigpowers/skills/compose-workflow/SKILL.md +83 -0
- package/.gemini/extensions/bigpowers/skills/context7-mcp/SKILL.md +56 -0
- package/.gemini/extensions/bigpowers/skills/craft-skill/SKILL.md +197 -0
- package/.gemini/extensions/bigpowers/skills/deepen-architecture/SKILL.md +261 -0
- package/.gemini/extensions/bigpowers/skills/define-language/SKILL.md +81 -0
- package/.gemini/extensions/bigpowers/skills/define-success/SKILL.md +13 -0
- package/.gemini/extensions/bigpowers/skills/delegate-task/SKILL.md +92 -0
- package/.gemini/extensions/bigpowers/skills/deploy/SKILL.md +199 -0
- package/.gemini/extensions/bigpowers/skills/design-interface/SKILL.md +98 -0
- package/.gemini/extensions/bigpowers/skills/develop-tdd/SKILL.md +417 -0
- package/.gemini/extensions/bigpowers/skills/diagnose-root/SKILL.md +25 -0
- package/.gemini/extensions/bigpowers/skills/diagnose-stall/SKILL.md +55 -0
- package/.gemini/extensions/bigpowers/skills/dispatch-agents/SKILL.md +119 -0
- package/.gemini/extensions/bigpowers/skills/edit-document/SKILL.md +24 -0
- package/.gemini/extensions/bigpowers/skills/elaborate-spec/SKILL.md +102 -0
- package/.gemini/extensions/bigpowers/skills/enforce-first/SKILL.md +46 -0
- package/.gemini/extensions/bigpowers/skills/evolve-skill/SKILL.md +56 -0
- package/.gemini/extensions/bigpowers/skills/execute-plan/SKILL.md +62 -0
- package/.gemini/extensions/bigpowers/skills/extract-design/SKILL.md +133 -0
- package/.gemini/extensions/bigpowers/skills/find-way/SKILL.md +192 -0
- package/.gemini/extensions/bigpowers/skills/fix-bug/SKILL.md +68 -0
- package/.gemini/extensions/bigpowers/skills/gate-trace/SKILL.md +93 -0
- package/.gemini/extensions/bigpowers/skills/generate-allure-report/SKILL.md +286 -0
- package/.gemini/extensions/bigpowers/skills/grill-me/SKILL.md +109 -0
- package/.gemini/extensions/bigpowers/skills/grill-with-docs/SKILL.md +54 -0
- package/.gemini/extensions/bigpowers/skills/guard-git/SKILL.md +232 -0
- package/.gemini/extensions/bigpowers/skills/harden-vps/SKILL.md +292 -0
- package/.gemini/extensions/bigpowers/skills/hook-commits/SKILL.md +95 -0
- package/.gemini/extensions/bigpowers/skills/inspect-quality/SKILL.md +107 -0
- package/.gemini/extensions/bigpowers/skills/investigate-bug/SKILL.md +128 -0
- package/.gemini/extensions/bigpowers/skills/kickoff-branch/SKILL.md +144 -0
- package/.gemini/extensions/bigpowers/skills/maintain-wiki/SKILL.md +65 -0
- package/.gemini/extensions/bigpowers/skills/map-codebase/SKILL.md +72 -0
- package/.gemini/extensions/bigpowers/skills/migrate-spec/SKILL.md +909 -0
- package/.gemini/extensions/bigpowers/skills/model-domain/SKILL.md +233 -0
- package/.gemini/extensions/bigpowers/skills/orchestrate-project/SKILL.md +175 -0
- package/.gemini/extensions/bigpowers/skills/organize-workspace/SKILL.md +165 -0
- package/.gemini/extensions/bigpowers/skills/plan-refactor/SKILL.md +88 -0
- package/.gemini/extensions/bigpowers/skills/plan-release/SKILL.md +146 -0
- package/.gemini/extensions/bigpowers/skills/plan-tests/SKILL.md +76 -0
- package/.gemini/extensions/bigpowers/skills/plan-work/SKILL.md +273 -0
- package/.gemini/extensions/bigpowers/skills/publish-package/SKILL.md +339 -0
- package/.gemini/extensions/bigpowers/skills/quick-fix/SKILL.md +115 -0
- package/.gemini/extensions/bigpowers/skills/release-branch/SKILL.md +303 -0
- package/.gemini/extensions/bigpowers/skills/request-review/SKILL.md +114 -0
- package/.gemini/extensions/bigpowers/skills/research-first/SKILL.md +88 -0
- package/.gemini/extensions/bigpowers/skills/reset-baseline/SKILL.md +22 -0
- package/.gemini/extensions/bigpowers/skills/respond-review/SKILL.md +72 -0
- package/.gemini/extensions/bigpowers/skills/run-benchmark/SKILL.md +86 -0
- package/.gemini/extensions/bigpowers/skills/run-evals/SKILL.md +81 -0
- package/.gemini/extensions/bigpowers/skills/run-planning/SKILL.md +102 -0
- package/.gemini/extensions/bigpowers/skills/scope-work/SKILL.md +64 -0
- package/.gemini/extensions/bigpowers/skills/search-skills/SKILL.md +74 -0
- package/.gemini/extensions/bigpowers/skills/security-review/SKILL.md +385 -0
- package/.gemini/extensions/bigpowers/skills/seed-conventions/SKILL.md +313 -0
- package/.gemini/extensions/bigpowers/skills/session-state/SKILL.md +147 -0
- package/.gemini/extensions/bigpowers/skills/setup-environment/SKILL.md +40 -0
- package/.gemini/extensions/bigpowers/skills/simple-english/SKILL.md +347 -0
- package/.gemini/extensions/bigpowers/skills/simulate-agents/SKILL.md +27 -0
- package/.gemini/extensions/bigpowers/skills/slice-tasks/SKILL.md +69 -0
- package/.gemini/extensions/bigpowers/skills/smoke-test/SKILL.md +262 -0
- package/.gemini/extensions/bigpowers/skills/spike-prototype/SKILL.md +96 -0
- package/.gemini/extensions/bigpowers/skills/stocktake-skills/SKILL.md +75 -0
- package/.gemini/extensions/bigpowers/skills/survey-context/SKILL.md +136 -0
- package/.gemini/extensions/bigpowers/skills/terse-mode/SKILL.md +43 -0
- package/.gemini/extensions/bigpowers/skills/trace-requirement/SKILL.md +70 -0
- package/.gemini/extensions/bigpowers/skills/using-bigpowers/SKILL.md +112 -0
- package/.gemini/extensions/bigpowers/skills/validate-contracts/SKILL.md +287 -0
- package/.gemini/extensions/bigpowers/skills/validate-fix/SKILL.md +148 -0
- package/.gemini/extensions/bigpowers/skills/verify-work/SKILL.md +192 -0
- package/.gemini/extensions/bigpowers/skills/visual-dashboard/SKILL.md +51 -0
- package/.gemini/extensions/bigpowers/skills/wire-ci/SKILL.md +382 -0
- package/.gemini/extensions/bigpowers/skills/wire-observability/SKILL.md +98 -0
- package/.gemini/extensions/bigpowers/skills/write-document/SKILL.md +282 -0
- package/.pi/package.json +1 -1
- package/CHANGELOG.md +14 -0
- package/package.json +1 -1
- package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
- package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
- package/scripts/lib/install-helpers.js +33 -17
- package/scripts/test-install-helpers.js +31 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
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."
|
|
3
|
+
alwaysApply: false
|
|
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
|
+
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."
|
|
3
|
+
alwaysApply: false
|
|
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
|
+
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."
|
|
3
|
+
alwaysApply: false
|
|
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
|
+
```
|