bigpowers 2.84.0 → 2.85.0

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 (112) hide show
  1. package/.agents/skills/audit-code/SKILL.md +4 -7
  2. package/.agents/skills/craft-skill/SKILL.md +21 -4
  3. package/.agents/skills/grill-me/SKILL.md +12 -0
  4. package/.agents/skills/grill-with-docs/SKILL.md +12 -0
  5. package/.agents/skills/request-review/SKILL.md +1 -0
  6. package/.agents/skills/seed-conventions/SKILL.md +21 -4
  7. package/.agents/skills/stocktake-skills/SKILL.md +2 -0
  8. package/.agents/skills/wire-ci/SKILL.md +164 -181
  9. package/.codebuddy/skills/audit-code/SKILL.md +4 -7
  10. package/.codebuddy/skills/craft-skill/SKILL.md +21 -4
  11. package/.codebuddy/skills/grill-me/SKILL.md +12 -0
  12. package/.codebuddy/skills/grill-with-docs/SKILL.md +12 -0
  13. package/.codebuddy/skills/request-review/SKILL.md +1 -0
  14. package/.codebuddy/skills/seed-conventions/SKILL.md +21 -4
  15. package/.codebuddy/skills/stocktake-skills/SKILL.md +2 -0
  16. package/.codebuddy/skills/wire-ci/SKILL.md +164 -181
  17. package/.codex/skills/audit-code/SKILL.md +4 -7
  18. package/.codex/skills/craft-skill/SKILL.md +21 -4
  19. package/.codex/skills/grill-me/SKILL.md +12 -0
  20. package/.codex/skills/grill-with-docs/SKILL.md +12 -0
  21. package/.codex/skills/request-review/SKILL.md +1 -0
  22. package/.codex/skills/seed-conventions/SKILL.md +21 -4
  23. package/.codex/skills/stocktake-skills/SKILL.md +2 -0
  24. package/.codex/skills/wire-ci/SKILL.md +164 -181
  25. package/.hermes/skills/audit-code/SKILL.md +4 -7
  26. package/.hermes/skills/craft-skill/SKILL.md +21 -4
  27. package/.hermes/skills/grill-me/SKILL.md +12 -0
  28. package/.hermes/skills/grill-with-docs/SKILL.md +12 -0
  29. package/.hermes/skills/request-review/SKILL.md +1 -0
  30. package/.hermes/skills/seed-conventions/SKILL.md +21 -4
  31. package/.hermes/skills/stocktake-skills/SKILL.md +2 -0
  32. package/.hermes/skills/wire-ci/SKILL.md +164 -181
  33. package/.kilocode/rules/audit-code.md +4 -7
  34. package/.kilocode/rules/craft-skill.md +21 -4
  35. package/.kilocode/rules/grill-me.md +12 -0
  36. package/.kilocode/rules/grill-with-docs.md +12 -0
  37. package/.kilocode/rules/request-review.md +1 -0
  38. package/.kilocode/rules/seed-conventions.md +21 -4
  39. package/.kilocode/rules/stocktake-skills.md +2 -0
  40. package/.kilocode/rules/wire-ci.md +164 -181
  41. package/.mimocode/skills/audit-code/SKILL.md +4 -7
  42. package/.mimocode/skills/craft-skill/SKILL.md +21 -4
  43. package/.mimocode/skills/grill-me/SKILL.md +12 -0
  44. package/.mimocode/skills/grill-with-docs/SKILL.md +12 -0
  45. package/.mimocode/skills/request-review/SKILL.md +1 -0
  46. package/.mimocode/skills/seed-conventions/SKILL.md +21 -4
  47. package/.mimocode/skills/stocktake-skills/SKILL.md +2 -0
  48. package/.mimocode/skills/wire-ci/SKILL.md +164 -181
  49. package/.pi/package.json +1 -1
  50. package/.pi/prompts/audit-code.md +4 -7
  51. package/.pi/prompts/craft-skill.md +21 -4
  52. package/.pi/prompts/grill-me.md +12 -0
  53. package/.pi/prompts/grill-with-docs.md +12 -0
  54. package/.pi/prompts/request-review.md +1 -0
  55. package/.pi/prompts/seed-conventions.md +21 -4
  56. package/.pi/prompts/stocktake-skills.md +2 -0
  57. package/.pi/prompts/wire-ci.md +164 -181
  58. package/.pi/skills/audit-code/SKILL.md +4 -7
  59. package/.pi/skills/craft-skill/SKILL.md +21 -4
  60. package/.pi/skills/grill-me/SKILL.md +12 -0
  61. package/.pi/skills/grill-with-docs/SKILL.md +12 -0
  62. package/.pi/skills/request-review/SKILL.md +1 -0
  63. package/.pi/skills/seed-conventions/SKILL.md +21 -4
  64. package/.pi/skills/stocktake-skills/SKILL.md +2 -0
  65. package/.pi/skills/wire-ci/SKILL.md +164 -181
  66. package/.trae/skills/audit-code/SKILL.md +4 -7
  67. package/.trae/skills/craft-skill/SKILL.md +21 -4
  68. package/.trae/skills/grill-me/SKILL.md +12 -0
  69. package/.trae/skills/grill-with-docs/SKILL.md +12 -0
  70. package/.trae/skills/request-review/SKILL.md +1 -0
  71. package/.trae/skills/seed-conventions/SKILL.md +21 -4
  72. package/.trae/skills/stocktake-skills/SKILL.md +2 -0
  73. package/.trae/skills/wire-ci/SKILL.md +164 -181
  74. package/.windsurf/rules/audit-code.md +4 -7
  75. package/.windsurf/rules/craft-skill.md +21 -4
  76. package/.windsurf/rules/grill-me.md +12 -0
  77. package/.windsurf/rules/grill-with-docs.md +12 -0
  78. package/.windsurf/rules/request-review.md +1 -0
  79. package/.windsurf/rules/seed-conventions.md +21 -4
  80. package/.windsurf/rules/stocktake-skills.md +2 -0
  81. package/.windsurf/rules/wire-ci.md +164 -181
  82. package/.zcode/skills/audit-code/SKILL.md +4 -7
  83. package/.zcode/skills/craft-skill/SKILL.md +21 -4
  84. package/.zcode/skills/grill-me/SKILL.md +12 -0
  85. package/.zcode/skills/grill-with-docs/SKILL.md +12 -0
  86. package/.zcode/skills/request-review/SKILL.md +1 -0
  87. package/.zcode/skills/seed-conventions/SKILL.md +21 -4
  88. package/.zcode/skills/stocktake-skills/SKILL.md +2 -0
  89. package/.zcode/skills/wire-ci/SKILL.md +164 -181
  90. package/CHANGELOG.md +19 -0
  91. package/README.md +14 -1
  92. package/SKILL-INDEX.md +84 -76
  93. package/package.json +1 -1
  94. package/scripts/generate-skill-index.sh +20 -4
  95. package/scripts/golden-g04-selftest.sh +19 -0
  96. package/scripts/land-branch.sh +22 -9
  97. package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
  98. package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
  99. package/scripts/lib/land-branch-push.sh +106 -0
  100. package/scripts/validate-agentic-ste.sh +229 -0
  101. package/skills/audit-code/SKILL.md +4 -7
  102. package/skills/craft-skill/SKILL.md +22 -4
  103. package/skills/grill-me/SKILL.md +12 -0
  104. package/skills/grill-with-docs/SKILL.md +12 -0
  105. package/skills/request-review/SKILL.md +1 -0
  106. package/skills/seed-conventions/SKILL.md +21 -4
  107. package/skills/stocktake-skills/SKILL.md +2 -0
  108. package/skills/visual-dashboard/scripts/frame-template.html +1 -39
  109. package/skills/wire-ci/REFERENCE.md +137 -152
  110. package/skills/wire-ci/SKILL.md +28 -30
  111. package/skills-lock.json +8 -8
  112. package/tests/test-land-branch-protected.sh +222 -0
@@ -9,12 +9,12 @@ description: "CI pipeline setup with pre-built templates and local validation. G
9
9
  >
10
10
  > **HARD GATE** — CI that is untestable locally will break every cycle. Always run `--validate` after generating workflows and `--dry-run` before pushing.
11
11
 
12
- Generate, validate, and test CI workflows. Detects your project type, produces platform-appropriate GitHub Actions configurations, and provides local verification to catch auth, permissions, and syntax issues before they reach CI.
12
+ Generate, validate, and test CI workflows. Detects your project type, copies org templates from `danielvm-git/.github/workflow-templates/`, and provides local verification to catch auth, permissions, and syntax issues before they reach CI.
13
13
 
14
14
  ## What this sets up
15
15
 
16
- 1. **CI workflow** — `.github/workflows/ci.yaml` with test, lint, typecheck, build steps
17
- 2. **Release workflow** — `.github/workflows/release.yaml` with semantic-release (if applicable)
16
+ 1. **Test Build Release workflow** — `.github/workflows/test-build-release.yml` with lint → test → build → release (single pipeline, `needs:` chain)
17
+ 2. **Deploy workflow** — `.github/workflows/deploy.yml` triggered via `workflow_run` (BigBase/Pages stacks only; CLI/library repos omit this)
18
18
  3. **`--validate` mode** — checks YAML syntax, workflow permissions, required secrets, and common pitfalls
19
19
  4. **`--dry-run` mode** — runs workflows locally via `act` or `gh workflow run` to prove correctness before push
20
20
  5. **Failure pattern documentation** — common CI failure categories and their fixes
@@ -23,45 +23,41 @@ Generate, validate, and test CI workflows. Detects your project type, produces p
23
23
 
24
24
  ### 1. Detect project type
25
25
 
26
- Read the project root for manifest files to determine which template to use:
26
+ Read the project root for manifest files to determine which template pair to copy:
27
27
 
28
- | Manifest | Type | Template |
29
- |----------|------|----------|
30
- | `Cargo.toml` | Rust | Rust CI: test, clippy, fmt, build |
31
- | `package.json` | Node | Node CI: test, lint, typecheck, build |
32
- | `setup.py` / `pyproject.toml` | Python | Python CI: pytest, ruff/mypy/flake8, build |
33
- | `go.mod` | Go | Go CI: test, vet, staticcheck, build |
34
- | `CMakeLists.txt` | C/C++ | C/C++ CI: cmake build, ctest |
35
- | Multiple detected | Polyglot | Combined workflows or error if ambiguous |
28
+ | Manifest | Type | Template pair (from `.github` repo) |
29
+ |----------|------|-------------------------------------|
30
+ | `Cargo.toml` | Rust | `test-build-release-monorepo.yml` + `deploy-monorepo.yml` (or monorepo subset) |
31
+ | `package.json` | Node | `test-build-release-node.yml` + `deploy-node.yml` |
32
+ | `setup.py` / `pyproject.toml` | Python | `test-build-release-python.yml` + `deploy-python.yml` |
33
+ | `go.mod` | Go | `test-build-release-go.yml` + `deploy-go.yml` |
34
+ | Static site (no server) | Static | `test-build-release-static.yml` + `deploy-static.yml` |
35
+ | `Package.swift` | Swift | `test-build-release-swift.yml` only (no deploy yet) |
36
+ | Multiple detected | Polyglot | `test-build-release-monorepo.yml` + `deploy-monorepo.yml` |
36
37
 
37
- If no manifest is found, prompt the user to specify the type or pass `--type <rust|node|python|go|cpp>`.
38
+ **CLI/library repos** (no hosted target): copy only `test-build-release-<stack>.yml` → `test-build-release.yml`. The `release` job is terminal; skip `deploy.yml`. See `docs/how-to/migrate-ci-cd/migration-plan.md` § CLI and library repos.
38
39
 
39
- ### 2. Generate CI workflow
40
+ If no manifest is found, prompt the user to specify the type or pass `--type <rust|node|python|go|static|swift>`.
40
41
 
41
- Create `.github/workflows/ci.yaml` with standard steps derived from the project type and its manifest:
42
+ ### 2. Copy test-build-release template
42
43
 
43
- **Rust template (`Cargo.toml`):**
44
- See [REFERENCE.md](REFERENCE.md)
45
-
46
- **Node template (`package.json`):**
47
- See [REFERENCE.md](REFERENCE.md)
44
+ Copy the matching template from `~/Developer/.github/workflow-templates/` to `.github/workflows/test-build-release.yml`. **Do not rename the workflow `name:` field** — deploy listens for `"Test Build Release"`.
48
45
 
49
- **Python template (`setup.py` / `pyproject.toml`):**
50
- See [REFERENCE.md](REFERENCE.md)
46
+ Edit placeholders: `APP_TYPE`, `SITE_URL`, language versions.
51
47
 
52
- **Go template (`go.mod`):**
53
- See [REFERENCE.md](REFERENCE.md)
48
+ See [REFERENCE.md](REFERENCE.md) for stack-specific job shapes.
54
49
 
55
- **C/C++ template (`CMakeLists.txt`):**
56
- See [REFERENCE.md](REFERENCE.md)
50
+ ### 3. Copy deploy template (hosted stacks only)
57
51
 
58
- ### 3. Generate release workflow (if semantic-release detected)
52
+ If the project deploys to BigBase or GitHub Pages:
59
53
 
60
- If the project has semantic-release configured (in `package.json`, `.releaserc`, or `release.config.js`), also generate `.github/workflows/release.yaml`:
54
+ ```bash
55
+ cp ~/Developer/.github/workflow-templates/deploy-${STACK}.yml .github/workflows/deploy.yml
56
+ ```
61
57
 
62
- See [REFERENCE.md](REFERENCE.md)
58
+ Configure `BIGBASE_SITE_ID`, `BIGBASE_DEPLOY_TOKEN`, and matching `SITE_URL`. Deploy runs via `workflow_run` after TBR succeeds on `main` with `cancel-in-progress: false`.
63
59
 
64
- > **NPM_TOKEN is required** for publishing to npm. Without it, semantic-release will fail at the publish step. See `--validate` to check this.
60
+ Skip this step for CLI/library repos.
65
61
 
66
62
  ### 4. Validate workflows (`--validate`)
67
63
 
@@ -96,6 +92,8 @@ Add the following to the project's documentation or CLAUDE.md after setup:
96
92
  | `cargo clippy` errors | New lints in Rust nightly | `cargo clippy --fix` or allow specific lints |
97
93
  | `act` not found | Docker not running or act not installed | `brew install act` / `docker ps` to verify Docker |
98
94
  | Hardcoded Node version stale | `.nvmrc` exists but workflow uses hardcoded version | Use `node-version-file: .nvmrc` instead |
95
+ | Deploy never runs | TBR workflow renamed | Keep `name: Test Build Release` in test-build-release.yml |
96
+ | Release rebuilds binary | Artifact not downloaded | `release` job must `download-artifact` from `build` |
99
97
 
100
98
  ## Verify
101
99
 
@@ -119,26 +117,24 @@ Add the following to the project's documentation or CLAUDE.md after setup:
119
117
 
120
118
  ## Examples
121
119
 
122
- ### Create CI for a Rust project
120
+ ### Create CI for a Go project (TBR + optional deploy)
123
121
 
124
122
  ```bash
125
- # Detect from Cargo.toml, generate workflows
126
- wire-ci
123
+ # Copy org templates
124
+ cp ~/Developer/.github/workflow-templates/test-build-release-go.yml .github/workflows/test-build-release.yml
125
+ cp ~/Developer/.github/workflow-templates/deploy-go.yml .github/workflows/deploy.yml
127
126
 
128
- # Validate generated workflows
129
127
  wire-ci --validate
130
-
131
- # Run locally with act
132
128
  wire-ci --dry-run
133
129
  ```
134
130
 
135
- ### Create CI for a Node project with semantic-release
131
+ ### Create CI for a CLI tool (TBR only, no deploy)
136
132
 
137
133
  ```bash
138
- wire-ci
134
+ cp ~/Developer/.github/workflow-templates/test-build-release-go.yml .github/workflows/test-build-release.yml
135
+ # Edit release job to download build artifact — see big-release dogfood
136
+
139
137
  wire-ci --validate
140
- # Expect warning: "npm publish step found but no NPM_TOKEN in secrets"
141
- # Fix: add NPM_TOKEN to repo secrets
142
138
  ```
143
139
 
144
140
  ### Validate existing workflows (no generation)
@@ -147,7 +143,6 @@ wire-ci --validate
147
143
  wire-ci --validate --check-only
148
144
  ```
149
145
 
150
-
151
146
  ---
152
147
 
153
148
  ## Options
@@ -159,8 +154,7 @@ wire-ci --validate --check-only
159
154
  | `--check-only` | Only validate, do not generate new files |
160
155
  | `--type <type>` | Force project type (skip auto-detection) |
161
156
  | `--force` | Overwrite existing workflow files |
162
- | `--no-release` | Skip release workflow generation even if semantic-release detected |
163
-
157
+ | `--no-deploy` | Skip deploy.yml even for hosted stacks |
164
158
 
165
159
  ---
166
160
 
@@ -173,202 +167,191 @@ When `wire-ci` is used as part of `build-epic`:
173
167
 
174
168
  ---
175
169
 
176
- ## Reference block 1
170
+ ## Reference block 1 — test-build-release.yml (Go, excerpt)
177
171
 
178
172
  ```yaml
179
- name: CI
180
- on: [push, pull_request]
181
- jobs:
182
- test:
183
- runs-on: ubuntu-latest
184
- steps:
185
- - uses: actions/checkout@v4
186
- - uses: actions-rust/toolchain@v1
187
- with:
188
- toolchain: stable
189
- components: clippy, rustfmt
190
- - run: cargo fmt --all -- --check
191
- - run: cargo clippy -- -D warnings
192
- - run: cargo test
193
- - run: cargo build --release
194
- ```
173
+ name: Test Build Release
174
+ on:
175
+ push:
176
+ branches: [main]
177
+ pull_request:
178
+ branches: [main]
195
179
 
196
- ---
180
+ permissions:
181
+ contents: read
197
182
 
198
- ## Reference block 2
183
+ concurrency:
184
+ group: pipeline-${{ github.workflow }}-${{ github.ref }}
185
+ cancel-in-progress: true
199
186
 
200
- ```yaml
201
- name: CI
202
- on: [push, pull_request]
203
187
  jobs:
204
- test:
205
- runs-on: ubuntu-latest
188
+ lint:
189
+ runs-on: ubuntu-22.04
190
+ timeout-minutes: 10
206
191
  steps:
207
- - uses: actions/checkout@v4
208
- - uses: actions/setup-node@v4
192
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
193
+ - uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
209
194
  with:
210
- node-version: 20
211
- cache: npm
212
- - run: npm ci
213
- - run: npm test
214
- - run: npm run lint 2>/dev/null || true
215
- - run: npm run typecheck 2>/dev/null || true
216
- - run: npm run build 2>/dev/null || true
217
- ```
218
-
219
- ---
220
-
221
- ## Reference block 3
195
+ go-version: '1.22'
196
+ cache: true
197
+ - uses: golangci/golangci-lint-action@55c2c1448f86e01eaae002a5a3a9624417608d84 # v6.5.2
198
+ with:
199
+ version: v1.64.8
222
200
 
223
- ```yaml
224
- name: CI
225
- on: [push, pull_request]
226
- jobs:
227
201
  test:
228
- runs-on: ubuntu-latest
202
+ needs: [lint]
203
+ runs-on: ubuntu-22.04
229
204
  steps:
230
- - uses: actions/checkout@v4
231
- - uses: actions/setup-python@v5
205
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
206
+ - uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
232
207
  with:
233
- python-version: "3.12"
234
- cache: pip
235
- - run: pip install -e ".[dev]" || pip install -e .
236
- - run: pip install pytest ruff mypy
237
- - run: ruff check .
238
- - run: mypy . 2>/dev/null || true
239
- - run: pytest
240
- ```
241
-
242
- ---
243
-
244
- ## Reference block 4
208
+ go-version: '1.22'
209
+ cache: true
210
+ - run: go vet ./...
211
+ - run: go test ./... -count=1
245
212
 
246
- ```yaml
247
- name: CI
248
- on: [push, pull_request]
249
- jobs:
250
- test:
251
- runs-on: ubuntu-latest
213
+ build:
214
+ needs: [test]
215
+ runs-on: ubuntu-22.04
252
216
  steps:
253
- - uses: actions/checkout@v4
254
- - uses: actions/setup-go@v5
217
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
218
+ - uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
255
219
  with:
256
- go-version: stable
220
+ go-version: '1.22'
257
221
  cache: true
258
- - run: go vet ./...
259
- - run: go test ./...
260
222
  - run: go build ./...
223
+ - run: jq -n --arg sha "${{ github.sha }}" '{sha: $sha}' > deploy-meta.json
224
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
225
+ with:
226
+ name: deploy-meta
227
+ path: deploy-meta.json
228
+
229
+ release:
230
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
231
+ needs: [build]
232
+ permissions:
233
+ contents: write
234
+ steps:
235
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
236
+ with:
237
+ fetch-depth: 0
238
+ - run: npx semantic-release
239
+ env:
240
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
261
241
  ```
262
242
 
263
243
  ---
264
244
 
265
- ## Reference block 5
245
+ ## Reference block 2 — deploy.yml (BigBase, excerpt)
266
246
 
267
247
  ```yaml
268
- name: CI
269
- on: [push, pull_request]
248
+ name: Deploy
249
+ on:
250
+ workflow_run:
251
+ workflows: ["Test Build Release"]
252
+ types: [completed]
253
+
254
+ permissions:
255
+ contents: read
256
+ actions: read
257
+
258
+ concurrency:
259
+ group: deploy-production
260
+ cancel-in-progress: false
261
+
262
+ env:
263
+ SITE_URL: "https://CHANGE-ME.bigbase.click"
264
+
270
265
  jobs:
271
- test:
272
- runs-on: ubuntu-latest
266
+ deploy:
267
+ if: >
268
+ github.event.workflow_run.conclusion == 'success' &&
269
+ github.event.workflow_run.head_branch == 'main'
270
+ runs-on: ubuntu-22.04
271
+ environment: production
273
272
  steps:
274
- - uses: actions/checkout@v4
275
- - run: cmake -B build
276
- - run: cmake --build build
277
- - run: ctest --test-dir build
273
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
274
+ with:
275
+ name: deploy-meta
276
+ github-token: ${{ secrets.GITHUB_TOKEN }}
277
+ run-id: ${{ github.event.workflow_run.id }}
278
+ path: deploy-meta
279
+ - uses: danielvm-git/.github/actions/bigbase-deploy@9c56ac10c629f3baa110ddb19136579e3c90d690 # v1
280
+ with:
281
+ site_id: ${{ secrets.BIGBASE_SITE_ID }}
282
+ app_type: go
283
+ site_url: ${{ env.SITE_URL }}
284
+ deploy_token: ${{ secrets.BIGBASE_DEPLOY_TOKEN }}
285
+ ref: ${{ steps.meta.outputs.ref }}
286
+ skip_health_check: true
287
+ - name: Health check
288
+ run: |
289
+ curl -sf "${{ env.SITE_URL }}" || exit 1
278
290
  ```
279
291
 
280
292
  ---
281
293
 
282
- ## Reference block 6
294
+ ## Reference block 3 — CLI dogfood (big-release pattern)
283
295
 
284
296
  ```yaml
285
- name: Release
286
- on:
287
- push:
288
- branches: [main]
289
- jobs:
290
- release:
291
- runs-on: ubuntu-latest
292
- permissions:
293
- contents: write
294
- issues: write
295
- pull-requests: write
296
- id-token: write
297
+ build:
298
+ needs: [test]
297
299
  steps:
298
- - uses: actions/checkout@v4
300
+ - run: make build
301
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
299
302
  with:
300
- fetch-depth: 0
301
- - uses: actions/setup-node@v4
303
+ name: big-release-${{ github.sha }}
304
+ path: bin/big-release
305
+
306
+ release:
307
+ needs: [build]
308
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
309
+ steps:
310
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
302
311
  with:
303
- node-version: 20
304
- cache: npm
305
- - run: npm ci
306
- - run: npm run build 2>/dev/null || true
307
- - run: npx semantic-release
308
- env:
309
- GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}
310
- NPM_TOKEN: \${{ secrets.NPM_TOKEN }}
312
+ name: big-release-${{ github.sha }}
313
+ path: bin
314
+ - run: make release # cross-compile assets only; host binary from artifact
315
+ - run: big-release release --verbose
311
316
  ```
312
317
 
318
+ No `deploy.yml` — CLI publishes via the release job.
319
+
313
320
  ---
314
321
 
315
- ## Reference block 7
322
+ ## Reference block 4 — validate script
316
323
 
317
324
  ```bash
318
- # Validate YAML syntax
319
- for f in .github/workflows/*.yaml; do
325
+ for f in .github/workflows/*.yml .github/workflows/*.yaml; do
326
+ [ -f "$f" ] || continue
320
327
  python3 -c "import yaml; yaml.safe_load(open('$f'))" || echo "FAIL: $f has YAML syntax errors"
321
328
  done
322
329
 
323
- # Check permissions block presence
324
- for f in .github/workflows/*.yaml; do
330
+ for f in .github/workflows/test-build-release.yml; do
325
331
  if grep -q "permissions:" "$f"; then
326
332
  echo "OK: $f has permissions block"
327
333
  else
328
- echo "WARNING: $f missing permissions block — add one for security"
329
- fi
330
- done
331
-
332
- # Check for npm publish without NPM_TOKEN
333
- for f in .github/workflows/*.yaml; do
334
- if grep -q "npm publish\|npx semantic-release" "$f"; then
335
- if ! grep -q "NPM_TOKEN" "$f"; then
336
- echo "WARNING: $f has npm publish/semantic-release but no NPM_TOKEN secret"
337
- fi
334
+ echo "WARNING: $f missing permissions block"
338
335
  fi
339
336
  done
340
337
 
341
- # Check for hardcoded Node versions
342
- for f in .github/workflows/*.yaml; do
343
- if grep -q "node-version: [0-9]" "$f" && grep -qv "node-version-file\|\.nvmrc" "$f"; then
344
- echo "NOTE: $f has hardcoded Node version — consider using .nvmrc instead"
338
+ if grep -q 'workflows: \["Test Build Release"\]' .github/workflows/deploy.yml 2>/dev/null; then
339
+ if ! grep -q 'name: Test Build Release' .github/workflows/test-build-release.yml; then
340
+ echo "WARNING: deploy.yml listens for Test Build Release but TBR name may differ"
345
341
  fi
346
- done
347
-
348
- # Check for common secrets reference errors
349
- for f in .github/workflows/*.yaml; do
350
- # Secrets referencing something that doesn't exist in the workflow
351
- grep -oP 'secrets\.\w+' "$f" | sort -u | while read -r secret; do
352
- echo "REF: $f references $secret"
353
- done
354
- done
342
+ fi
355
343
  ```
356
344
 
357
345
  ---
358
346
 
359
- ## Reference block 8
347
+ ## Reference block 5 — dry-run
360
348
 
361
349
  ```bash
362
- # Option A: Use act (recommended)
363
350
  if command -v act &>/dev/null; then
364
- act push --dry-run
365
- echo "OK: act dry-run completed"
351
+ act push --dry-run -W .github/workflows/test-build-release.yml
366
352
  elif command -v gh &>/dev/null; then
367
- # Option B: Use gh workflow run (remote test, no local docker)
368
- gh workflow run ci.yaml --ref "$(git branch --show-current)"
369
- echo "OK: CI workflow dispatched. Check status: gh run list"
353
+ gh workflow run test-build-release.yml --ref "$(git branch --show-current)"
370
354
  else
371
- echo "NOTE: Install act (https://github.com/nektos/act) for full local dry-run"
372
- echo " Install gh CLI for remote dry-run"
355
+ echo "Install act or gh for dry-run"
373
356
  fi
374
357
  ```
@@ -95,6 +95,10 @@ bash scripts/lib/parallel-review-worktrees.sh audit-code
95
95
  - [ ] Dependency Inversion: dependencies injected, not imported globally where avoidable
96
96
  - [ ] **Chapter 17 Heuristics**: Code is free of smells documented in `audit-code/HEURISTICS.md` (G, N, C, T)
97
97
 
98
+ ### Refactoring Smells (Fowler)
99
+
100
+ Explicitly name any detected smells: Mysterious Name, Duplicated Code, Feature Envy, Data Clumps, Primitive Obsession, Message Chains, Middle Man.
101
+
98
102
  ### Code Style (CONVENTIONS.md)
99
103
 
100
104
  - [ ] Functions: 4–20 lines; split if longer
@@ -106,13 +110,6 @@ bash scripts/lib/parallel-review-worktrees.sh audit-code
106
110
  - [ ] Conditionals: expressed as positives (G29)
107
111
  - [ ] Comments explain WHY, not WHAT
108
112
 
109
- ### Agent Readability (Akita's Lens)
110
-
111
- - [ ] Functions are small enough to fit in a standard context window (4–20 lines)
112
- - [ ] Names are unique and specific enough to be `grep`-able (grep returns < 5 hits)
113
- - [ ] Types are explicit (no `any`, no inferred return types for public APIs)
114
- - [ ] Code avoids deep nesting (max 2 levels) and uses early returns
115
-
116
113
  ### Red Flags
117
114
 
118
115
  Before reporting, name any rationalization you caught yourself making for skipping a checklist item. Silence is not acceptable — if you skipped an item, state the reason explicitly.
@@ -6,7 +6,7 @@ description: "Create new bigpowers skills with proper structure, progressive dis
6
6
 
7
7
  # Craft Skill
8
8
 
9
- > **HARD GATE** — Do NOT name a skill without a two-word verb-noun pair. Do NOT merge a new skill without running `sync-skills.sh` — the generated `.cursor/rules/` and `.gemini/` artifacts must match the source SKILL.md.
9
+ > **HARD GATE** — Do NOT name a skill without a two-word verb-noun pair. Do NOT merge a new skill without running `sync-skills.sh`. Generated `.cursor/rules/` and `.gemini/` artifacts MUST match the source SKILL.md.
10
10
 
11
11
  ## CSO Description Discipline (e45s02)
12
12
 
@@ -21,11 +21,25 @@ The YAML `description` is the **Catalog Selection Object** — the only field ag
21
21
 
22
22
  Move process detail into the SKILL.md body or REFERENCE.md — never into `description`.
23
23
 
24
+ ## Agentic STE body discipline (e79s02)
25
+
26
+ Skill-body instructional prose MUST follow [AGENTIC-STE.md](../../../docs/AGENTIC-STE.md).
27
+
28
+ | Rule | Limit |
29
+ |------|-------|
30
+ | Sentence length | ≤20 words per instruction sentence |
31
+ | Voice | Imperative, active |
32
+ | Directive terms | MUST, MUST NOT, NEVER, ALWAYS, DO, DO NOT |
33
+ | Banned modals | should, might, could, may, consider, try, generally, typically |
34
+ | Scope | SKILL.md body only — not YAML `description`, not `terse-mode` output |
35
+
36
+ > **HARD GATE** — Do NOT merge a new or edited skill until `bash scripts/validate-agentic-ste.sh --strict skills/<name>/SKILL.md` exits 0. Fix violations before `sync-skills.sh`.
37
+
24
38
  ## Process
25
39
 
26
40
  1. **Gather requirements** — ask user about:
27
41
  - What task/domain does the skill cover?
28
- - What specific use cases should it handle?
42
+ - Which use cases must the skill handle?
29
43
  - Does it need executable scripts or just instructions?
30
44
  - Any reference materials to include?
31
45
  - What specs/ output does it produce (if any)?
@@ -41,7 +55,8 @@ Move process detail into the SKILL.md body or REFERENCE.md — never into `descr
41
55
  - Additional reference files if content exceeds 100 lines
42
56
  - Utility scripts if deterministic operations needed
43
57
 
44
- **Auto-skill from library README:** When user provides a library README or API docs URL, extract: triggers, HARD GATEs, verify commands, specs/ output — draft SKILL.md without inventing APIs not in the source.
58
+ **Auto-skill from library README:** When user provides a library README or API docs URL, extract triggers and HARD GATEs.
59
+ Draft verify commands and specs/ output into SKILL.md. Do NOT invent APIs not in the source.
45
60
 
46
61
  4. Add `model:` frontmatter (`haiku` | `sonnet` | `opus`) per [model-profiles.md](https://github.com/danielvm-git/bigpowers/blob/main/docs/references/model-profiles.md).
47
62
 
@@ -50,10 +65,11 @@ Move process detail into the SKILL.md body or REFERENCE.md — never into `descr
50
65
  5. **Review with user** — present draft and ask:
51
66
  - Does this cover your use cases?
52
67
  - Anything missing or unclear?
53
- - Should any section be more/less detailed?
68
+ - Does any section need more or less detail?
54
69
 
55
70
  6. **Completion-honesty gate (HARD GATE — e45s02)** — Before declaring done:
56
71
  - Run `bash scripts/validate-skill-description.sh skills/<name>/SKILL.md` — must exit 0
72
+ - Run `bash scripts/validate-agentic-ste.sh --strict skills/<name>/SKILL.md` — must exit 0 (e79s02)
57
73
  - Run `bash scripts/sync-skills.sh` — must complete without error
58
74
  - Run `bash scripts/run-skill-verify.sh <name>` if the skill defines a verify command
59
75
  - Show terminal output for each — narration without evidence is rejected
@@ -78,6 +94,7 @@ After drafting, verify:
78
94
  - [ ] Consistent terminology with CONVENTIONS.md
79
95
  - [ ] specs/ output documented if applicable
80
96
  - [ ] `validate-skill-description.sh` exits 0
97
+ - [ ] `validate-agentic-ste.sh --strict` exits 0 (e79s02)
81
98
  - [ ] `sync-skills.sh` run to propagate to Cursor/Gemini
82
99
  - [ ] `bash scripts/validate-skill-catalog.sh` passes for the new skill (HARD GATE — completion honesty)
83
100
 
@@ -18,6 +18,14 @@ Interview relentlessly about every aspect of this plan until reaching shared und
18
18
 
19
19
  If a question can be answered by exploring the codebase, explore it instead.
20
20
 
21
+ ### Facts vs. Decisions Boundary
22
+
23
+ Distinguish between **facts** and **decisions**:
24
+ - **Facts** — things discoverable by exploring the codebase, reading docs, or checking APIs. Do not ask the user to confirm facts; find them yourself.
25
+ - **Decisions** — choices that require user input (trade-offs, preferences, priorities). Always present options and ask the user to choose.
26
+
27
+ Never "grill yourself" — if the answer is in the code, go find it. Only ask questions where the user's judgment is needed.
28
+
21
29
  ## Docs mode
22
30
 
23
31
  Ground every challenge in real documentation — no assumption about a library's behavior goes unchecked. See [REFERENCE.md](../../../skills/grill-me/REFERENCE.md) for the full process.
@@ -29,6 +37,10 @@ Short form:
29
37
  4. Report confirmed ✓, corrected ✗ (with the real behavior), and uncertain → `spike-prototype`.
30
38
  5. Update the plan for each confirmed discrepancy.
31
39
 
40
+ ## Confirmation Gate
41
+
42
+ > **HARD GATE** — Do NOT enact the plan or generate specifications until the user explicitly confirms shared understanding. Wait for explicit approval (e.g., "looks good", "confirmed", "proceed") before transitioning to any implementation, spec-writing, or task-slicing step.
43
+
32
44
  ---
33
45
 
34
46
  # Docs Mode — Full Process
@@ -23,6 +23,18 @@ description: "Doc-grounded variant of grill-me — stress-tests plan assumptions
23
23
  - If docs contradict the plan, plan loses until updated.
24
24
  - Prefer official docs over blog posts.
25
25
 
26
+ ## Facts vs. Decisions Boundary
27
+
28
+ Distinguish between **facts** and **decisions**:
29
+ - **Facts** — things discoverable by reading docs, checking APIs, or exploring the codebase. Do not ask the user to confirm facts; find them yourself.
30
+ - **Decisions** — choices that require user input (trade-offs, preferences, priorities). Always present options and ask the user to choose.
31
+
32
+ Never "grill yourself" — if the answer is in the docs, go fetch it. Only ask questions where the user's judgment is needed.
33
+
34
+ ## Confirmation Gate
35
+
36
+ > **HARD GATE** — Do NOT enact the plan or generate specifications until the user explicitly confirms shared understanding. Wait for explicit approval (e.g., "looks good", "confirmed", "proceed") before transitioning to any implementation, spec-writing, or task-slicing step.
37
+
26
38
  ## Verify
27
39
 
28
40
  → verify: `grep -c 'https\?://' skills/grill-with-docs/SKILL.md | awk '{if($1>=2) print "OK"; else print "NEEDS DOCS"}'`
@@ -86,6 +86,7 @@ Review for:
86
86
  4. Design — are there simpler or more robust approaches?
87
87
  5. Edge cases — what inputs or states could cause failures?
88
88
  6. Security — any injection, auth, or data exposure risks?
89
+ 7. Refactoring smells — explicitly name any detected Fowler smells: Mysterious Name, Duplicated Code, Feature Envy, Data Clumps, Primitive Obsession, Message Chains, Middle Man
89
90
 
90
91
  For each finding, categorize as: must-fix / should-fix / consider.
91
92
  Run the verify command and report the result.