bigpowers 2.34.1 → 2.35.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.
- package/.pi/package.json +2 -2
- package/.pi/prompts/deploy.md +53 -28
- package/.pi/prompts/develop-tdd.md +5 -80
- package/.pi/prompts/migrate-spec.md +273 -197
- package/.pi/prompts/publish-package.md +125 -67
- package/.pi/prompts/release-branch.md +85 -69
- package/.pi/prompts/security-review.md +323 -0
- package/.pi/prompts/smoke-test.md +98 -58
- package/.pi/prompts/using-bigpowers.md +2 -2
- package/.pi/prompts/validate-contracts.md +169 -54
- package/.pi/prompts/wire-ci.md +147 -89
- package/.pi/skills/deploy/SKILL.md +53 -28
- package/.pi/skills/develop-tdd/SKILL.md +5 -80
- package/.pi/skills/migrate-spec/SKILL.md +273 -197
- package/.pi/skills/publish-package/SKILL.md +125 -67
- package/.pi/skills/release-branch/SKILL.md +85 -69
- package/.pi/skills/security-review/SKILL.md +324 -0
- package/.pi/skills/smoke-test/SKILL.md +98 -58
- package/.pi/skills/using-bigpowers/SKILL.md +2 -2
- package/.pi/skills/validate-contracts/SKILL.md +169 -54
- package/.pi/skills/wire-ci/SKILL.md +147 -89
- package/CHANGELOG.md +14 -0
- package/README.md +4 -4
- package/SKILL-INDEX.md +2 -2
- package/deploy/REFERENCE.md +82 -0
- package/deploy/SKILL.md +3 -63
- package/develop-tdd/SKILL.md +5 -80
- package/migrate-spec/REFERENCE.md +268 -0
- package/migrate-spec/SKILL.md +5 -199
- package/package.json +2 -2
- package/publish-package/REFERENCE.md +239 -0
- package/publish-package/SKILL.md +8 -192
- package/release-branch/REFERENCE.md +83 -0
- package/release-branch/SKILL.md +2 -69
- package/scripts/generate-reference-tables.sh +1 -0
- package/scripts/sync-skills.sh +4 -1
- package/security-review/REFERENCE-confidence-rubric.md +85 -0
- package/security-review/REFERENCE-false-positives.md +68 -0
- package/security-review/REFERENCE-vuln-categories.md +103 -0
- package/security-review/SKILL.md +63 -0
- package/skills-lock.json +14 -9
- package/smoke-test/REFERENCE.md +162 -0
- package/smoke-test/SKILL.md +5 -130
- package/using-bigpowers/SKILL.md +2 -2
- package/validate-contracts/REFERENCE.md +183 -0
- package/validate-contracts/SKILL.md +6 -77
- package/wire-ci/REFERENCE.md +257 -0
- package/wire-ci/SKILL.md +8 -210
|
@@ -29,30 +29,13 @@ Three modes of validation:
|
|
|
29
29
|
|
|
30
30
|
All contract files live in `specs/contracts/` and use YAML:
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
specs/contracts/
|
|
34
|
-
├── users.schema.yaml # API response schema
|
|
35
|
-
├── i18n-keys.yaml # Key-set comparison
|
|
36
|
-
├── migration-output.yaml # Data shape contract
|
|
37
|
-
└── README.md # Local conventions
|
|
38
|
-
```
|
|
32
|
+
See [REFERENCE.md](REFERENCE.md) for examples.
|
|
39
33
|
|
|
40
34
|
### 1. API Response Contracts (`--schema`)
|
|
41
35
|
|
|
42
36
|
Define expected API response shapes and validate live endpoints against them:
|
|
43
37
|
|
|
44
|
-
|
|
45
|
-
# specs/contracts/users.schema.yaml
|
|
46
|
-
endpoint: /api/users
|
|
47
|
-
method: GET
|
|
48
|
-
schema:
|
|
49
|
-
type: object
|
|
50
|
-
required: [id, name, email]
|
|
51
|
-
properties:
|
|
52
|
-
id: { type: number }
|
|
53
|
-
name: { type: string }
|
|
54
|
-
email: { type: string, format: email }
|
|
55
|
-
```
|
|
38
|
+
See [REFERENCE.md](REFERENCE.md) for examples.
|
|
56
39
|
|
|
57
40
|
Usage:
|
|
58
41
|
|
|
@@ -66,52 +49,21 @@ validate-contracts --schema specs/contracts/users.schema.yaml --url https://api.
|
|
|
66
49
|
|
|
67
50
|
Assert that two data sources share a consistent set of keys:
|
|
68
51
|
|
|
69
|
-
|
|
70
|
-
# specs/contracts/i18n-keys.yaml
|
|
71
|
-
sources:
|
|
72
|
-
reference: src/frontend/locales/en.json
|
|
73
|
-
target: src/backend/messages/en.json
|
|
74
|
-
mode: subset # all target keys must exist in reference
|
|
75
|
-
```
|
|
52
|
+
See [REFERENCE.md](REFERENCE.md) for examples.
|
|
76
53
|
|
|
77
54
|
Usage:
|
|
78
55
|
|
|
79
|
-
|
|
80
|
-
validate-contracts --key-set specs/contracts/i18n-keys.yaml
|
|
81
|
-
# → missing: 2 keys in reference not found in target: ['settings.privacy', 'help.faq']
|
|
82
|
-
# → added: 1 key in target not in reference: ['deprecated.field']
|
|
83
|
-
# → exit 1 (divergence)
|
|
84
|
-
```
|
|
56
|
+
See [REFERENCE.md](REFERENCE.md) for examples.
|
|
85
57
|
|
|
86
58
|
### 3. Data Shape Contracts (`--shape`)
|
|
87
59
|
|
|
88
60
|
Validate that a data file matches expected column types and constraints:
|
|
89
61
|
|
|
90
|
-
|
|
91
|
-
# specs/contracts/migration-output.yaml
|
|
92
|
-
file: data/users-export.json
|
|
93
|
-
format: json
|
|
94
|
-
fields:
|
|
95
|
-
- name: user_id
|
|
96
|
-
type: number
|
|
97
|
-
required: true
|
|
98
|
-
- name: full_name
|
|
99
|
-
type: string
|
|
100
|
-
required: true
|
|
101
|
-
- name: created_at
|
|
102
|
-
type: string
|
|
103
|
-
format: date-time
|
|
104
|
-
required: false
|
|
105
|
-
```
|
|
62
|
+
See [REFERENCE.md](REFERENCE.md) for examples.
|
|
106
63
|
|
|
107
64
|
Usage:
|
|
108
65
|
|
|
109
|
-
|
|
110
|
-
validate-contracts --shape specs/contracts/migration-output.yaml
|
|
111
|
-
# → PASS: 3/3 fields validated, 5000 rows OK
|
|
112
|
-
# → WARN: field 'full_name' has 12 null values (0.24%)
|
|
113
|
-
# → FAIL: field 'user_id' has 3 rows with type string (expected number)
|
|
114
|
-
```
|
|
66
|
+
See [REFERENCE.md](REFERENCE.md) for examples.
|
|
115
67
|
|
|
116
68
|
## Process
|
|
117
69
|
|
|
@@ -159,12 +111,172 @@ bash scripts/validate-contracts.sh <contract-file>
|
|
|
159
111
|
# → All pass → ready to deploy
|
|
160
112
|
```
|
|
161
113
|
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
# Validate Contracts — Reference
|
|
117
|
+
|
|
118
|
+
## Integration
|
|
119
|
+
|
|
120
|
+
- **Pre-deploy gate:** The `deploy` skill runs `validate-contracts` before smoke-test.
|
|
121
|
+
- **CI pipeline:** JSON Lines output is CI-friendly; pipe to `jq` for assertions.
|
|
122
|
+
- **Pre-migration:** Run `validate-contracts --shape` before consuming migration output.
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Configuration
|
|
128
|
+
|
|
129
|
+
| Variable | Default | Description |
|
|
130
|
+
|----------|---------|-------------|
|
|
131
|
+
| `CONTRACTS_DIR` | `specs/contracts/` | Directory containing contract YAML files |
|
|
132
|
+
| `VALIDATE_ALL` | `false` | If true, run all contracts in the directory |
|
|
133
|
+
| `STRICT_MODE` | `false` | Treat warnings as failures |
|
|
134
|
+
| `OUTPUT_FORMAT` | `text` | `text` or `json` |
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Verification
|
|
140
|
+
|
|
141
|
+
→ verify: `test -f validate-contracts/SKILL.md && grep -q 'name: validate-contracts' validate-contracts/SKILL.md && echo OK`
|
|
142
|
+
→ verify: `grep -qi 'specs/contracts\|JSON Schema\|key.set\|data.shape' validate-contracts/SKILL.md && echo OK`
|
|
143
|
+
→ verify: `grep -ci 'divergence\|missing key\|type mismatch\|diff\|conforms\|column' validate-contracts/SKILL.md | awk '{if($1>=3) print "OK"; else print "FAIL"}'`
|
|
144
|
+
→ verify: `grep -ci 'JSON Lines\|machine.parse\|CI\|deploy.*gate\|pre.deploy' validate-contracts/SKILL.md | awk '{if($1>=2) print "OK"; else print "FAIL"}'`
|
|
145
|
+
→ verify: `grep -q 'validate-contracts' SKILL-INDEX.md && echo OK`
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Reference block 1
|
|
150
|
+
|
|
151
|
+
```yaml
|
|
152
|
+
# specs/contracts/users.schema.yaml
|
|
153
|
+
endpoint: /api/users
|
|
154
|
+
method: GET
|
|
155
|
+
schema:
|
|
156
|
+
type: object
|
|
157
|
+
required: [id, name, email]
|
|
158
|
+
properties:
|
|
159
|
+
id: { type: number }
|
|
160
|
+
name: { type: string }
|
|
161
|
+
email: { type: string, format: email }
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Reference block 2
|
|
167
|
+
|
|
168
|
+
```yaml
|
|
169
|
+
# specs/contracts/migration-output.yaml
|
|
170
|
+
file: data/users-export.json
|
|
171
|
+
format: json
|
|
172
|
+
fields:
|
|
173
|
+
- name: user_id
|
|
174
|
+
type: number
|
|
175
|
+
required: true
|
|
176
|
+
- name: full_name
|
|
177
|
+
type: string
|
|
178
|
+
required: true
|
|
179
|
+
- name: created_at
|
|
180
|
+
type: string
|
|
181
|
+
format: date-time
|
|
182
|
+
required: false
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Example 1
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
specs/contracts/
|
|
191
|
+
├── users.schema.yaml # API response schema
|
|
192
|
+
├── i18n-keys.yaml # Key-set comparison
|
|
193
|
+
├── migration-output.yaml # Data shape contract
|
|
194
|
+
└── README.md # Local conventions
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Example 2
|
|
200
|
+
|
|
201
|
+
```yaml
|
|
202
|
+
# specs/contracts/users.schema.yaml
|
|
203
|
+
endpoint: /api/users
|
|
204
|
+
method: GET
|
|
205
|
+
schema:
|
|
206
|
+
type: object
|
|
207
|
+
required: [id, name, email]
|
|
208
|
+
properties:
|
|
209
|
+
id: { type: number }
|
|
210
|
+
name: { type: string }
|
|
211
|
+
email: { type: string, format: email }
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Example 3
|
|
217
|
+
|
|
218
|
+
```yaml
|
|
219
|
+
# specs/contracts/i18n-keys.yaml
|
|
220
|
+
sources:
|
|
221
|
+
reference: src/frontend/locales/en.json
|
|
222
|
+
target: src/backend/messages/en.json
|
|
223
|
+
mode: subset # all target keys must exist in reference
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Example 4
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
validate-contracts --key-set specs/contracts/i18n-keys.yaml
|
|
232
|
+
# → missing: 2 keys in reference not found in target: ['settings.privacy', 'help.faq']
|
|
233
|
+
# → added: 1 key in target not in reference: ['deprecated.field']
|
|
234
|
+
# → exit 1 (divergence)
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Example 5
|
|
240
|
+
|
|
241
|
+
```yaml
|
|
242
|
+
# specs/contracts/migration-output.yaml
|
|
243
|
+
file: data/users-export.json
|
|
244
|
+
format: json
|
|
245
|
+
fields:
|
|
246
|
+
- name: user_id
|
|
247
|
+
type: number
|
|
248
|
+
required: true
|
|
249
|
+
- name: full_name
|
|
250
|
+
type: string
|
|
251
|
+
required: true
|
|
252
|
+
- name: created_at
|
|
253
|
+
type: string
|
|
254
|
+
format: date-time
|
|
255
|
+
required: false
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Example 6
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
validate-contracts --shape specs/contracts/migration-output.yaml
|
|
264
|
+
# → PASS: 3/3 fields validated, 5000 rows OK
|
|
265
|
+
# → WARN: field 'full_name' has 12 null values (0.24%)
|
|
266
|
+
# → FAIL: field 'user_id' has 3 rows with type string (expected number)
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
162
271
|
## Integration
|
|
163
272
|
|
|
164
273
|
- **Pre-deploy gate:** The `deploy` skill runs `validate-contracts` before smoke-test.
|
|
165
274
|
- **CI pipeline:** JSON Lines output is CI-friendly; pipe to `jq` for assertions.
|
|
166
275
|
- **Pre-migration:** Run `validate-contracts --shape` before consuming migration output.
|
|
167
276
|
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
168
280
|
## Configuration
|
|
169
281
|
|
|
170
282
|
| Variable | Default | Description |
|
|
@@ -174,6 +286,9 @@ bash scripts/validate-contracts.sh <contract-file>
|
|
|
174
286
|
| `STRICT_MODE` | `false` | Treat warnings as failures |
|
|
175
287
|
| `OUTPUT_FORMAT` | `text` | `text` or `json` |
|
|
176
288
|
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
177
292
|
## Verification
|
|
178
293
|
|
|
179
294
|
→ verify: `test -f validate-contracts/SKILL.md && grep -q 'name: validate-contracts' validate-contracts/SKILL.md && echo OK`
|
|
@@ -43,6 +43,131 @@ If no manifest is found, prompt the user to specify the type or pass `--type <ru
|
|
|
43
43
|
Create `.github/workflows/ci.yaml` with standard steps derived from the project type and its manifest:
|
|
44
44
|
|
|
45
45
|
**Rust template (`Cargo.toml`):**
|
|
46
|
+
See [REFERENCE.md](REFERENCE.md)
|
|
47
|
+
|
|
48
|
+
**Node template (`package.json`):**
|
|
49
|
+
See [REFERENCE.md](REFERENCE.md)
|
|
50
|
+
|
|
51
|
+
**Python template (`setup.py` / `pyproject.toml`):**
|
|
52
|
+
See [REFERENCE.md](REFERENCE.md)
|
|
53
|
+
|
|
54
|
+
**Go template (`go.mod`):**
|
|
55
|
+
See [REFERENCE.md](REFERENCE.md)
|
|
56
|
+
|
|
57
|
+
**C/C++ template (`CMakeLists.txt`):**
|
|
58
|
+
See [REFERENCE.md](REFERENCE.md)
|
|
59
|
+
|
|
60
|
+
### 3. Generate release workflow (if semantic-release detected)
|
|
61
|
+
|
|
62
|
+
If the project has semantic-release configured (in `package.json`, `.releaserc`, or `release.config.js`), also generate `.github/workflows/release.yaml`:
|
|
63
|
+
|
|
64
|
+
See [REFERENCE.md](REFERENCE.md)
|
|
65
|
+
|
|
66
|
+
> **NPM_TOKEN is required** for publishing to npm. Without it, semantic-release will fail at the publish step. See `--validate` to check this.
|
|
67
|
+
|
|
68
|
+
### 4. Validate workflows (`--validate`)
|
|
69
|
+
|
|
70
|
+
Run `wire-ci --validate` to check all generated workflow files:
|
|
71
|
+
|
|
72
|
+
See [REFERENCE.md](REFERENCE.md)
|
|
73
|
+
|
|
74
|
+
**Exit codes:**
|
|
75
|
+
- `0` — all checks pass (no errors)
|
|
76
|
+
- `1` — YAML syntax errors found
|
|
77
|
+
- `2` — validation warnings only (missing permissions, secrets, etc.)
|
|
78
|
+
|
|
79
|
+
### 5. Dry-run workflows (`--dry-run`)
|
|
80
|
+
|
|
81
|
+
Attempt to run the generated workflows locally to catch errors before push:
|
|
82
|
+
|
|
83
|
+
See [REFERENCE.md](REFERENCE.md)
|
|
84
|
+
|
|
85
|
+
> **act** runs workflows in a local Docker environment — the most accurate pre-push validation.
|
|
86
|
+
> **gh workflow run** sends the workflow to GitHub but doesn't execute locally — useful for checking YAML parsing but not for testing the actual steps.
|
|
87
|
+
|
|
88
|
+
### 6. Document common CI failure patterns
|
|
89
|
+
|
|
90
|
+
Add the following to the project's documentation or CLAUDE.md after setup:
|
|
91
|
+
|
|
92
|
+
| Failure | Cause | Fix |
|
|
93
|
+
|---------|-------|-----|
|
|
94
|
+
| `npm publish` fails | `NPM_TOKEN` not set as repo secret | Add `NPM_TOKEN` to GitHub repo secrets |
|
|
95
|
+
| `semantic-release` fails on push | Missing `permissions: contents: write` | Add `permissions: contents: write` to release job |
|
|
96
|
+
| `cargo publish` auth fail | `CARGO_REGISTRY_TOKEN` not set | Add token to `~/.cargo/config.toml` or env |
|
|
97
|
+
| `go vet` fails | Go version mismatch | Match `go.mod` `go` directive with setup-go version |
|
|
98
|
+
| `cargo clippy` errors | New lints in Rust nightly | `cargo clippy --fix` or allow specific lints |
|
|
99
|
+
| `act` not found | Docker not running or act not installed | `brew install act` / `docker ps` to verify Docker |
|
|
100
|
+
| Hardcoded Node version stale | `.nvmrc` exists but workflow uses hardcoded version | Use `node-version-file: .nvmrc` instead |
|
|
101
|
+
|
|
102
|
+
## Verify
|
|
103
|
+
|
|
104
|
+
→ verify: `test -f wire-ci/SKILL.md && echo "OK: skill file exists" || echo "FAIL: no skill file"`
|
|
105
|
+
→ verify: `grep -q "name: wire-ci" wire-ci/SKILL.md && echo "OK: frontmatter" || echo "FAIL: frontmatter"`
|
|
106
|
+
→ verify: `grep -ci "template\|workflow\|validate\|dry.run" wire-ci/SKILL.md | awk '{if($1>=3) print "OK: semantics"; else print "FAIL: missing"}'`
|
|
107
|
+
→ verify: `grep -q "wire-ci" SKILL-INDEX.md && echo "OK: in SKILL-INDEX" || echo "FAIL: not indexed"`
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
# Wire Ci — Reference
|
|
112
|
+
|
|
113
|
+
## Examples
|
|
114
|
+
|
|
115
|
+
### Create CI for a Rust project
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Detect from Cargo.toml, generate workflows
|
|
119
|
+
wire-ci
|
|
120
|
+
|
|
121
|
+
# Validate generated workflows
|
|
122
|
+
wire-ci --validate
|
|
123
|
+
|
|
124
|
+
# Run locally with act
|
|
125
|
+
wire-ci --dry-run
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Create CI for a Node project with semantic-release
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
wire-ci
|
|
132
|
+
wire-ci --validate
|
|
133
|
+
# Expect warning: "npm publish step found but no NPM_TOKEN in secrets"
|
|
134
|
+
# Fix: add NPM_TOKEN to repo secrets
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Validate existing workflows (no generation)
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
wire-ci --validate --check-only
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Options
|
|
147
|
+
|
|
148
|
+
| Flag | Description |
|
|
149
|
+
|------|-------------|
|
|
150
|
+
| `--validate` | Check YAML syntax, permissions, secrets, common pitfalls |
|
|
151
|
+
| `--dry-run` | Run workflows locally via `act` or dispatch via `gh` |
|
|
152
|
+
| `--check-only` | Only validate, do not generate new files |
|
|
153
|
+
| `--type <type>` | Force project type (skip auto-detection) |
|
|
154
|
+
| `--force` | Overwrite existing workflow files |
|
|
155
|
+
| `--no-release` | Skip release workflow generation even if semantic-release detected |
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Integration with build-epic
|
|
161
|
+
|
|
162
|
+
When `wire-ci` is used as part of `build-epic`:
|
|
163
|
+
|
|
164
|
+
1. **During develop-tdd**: If the task modifies `.github/workflows/`, run `wire-ci --validate` as a CI dry-run sub-step
|
|
165
|
+
2. **During release-branch**: After push, run `gh run list --limit 1 --branch main --json status,conclusion` to verify CI passes
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Reference block 1
|
|
170
|
+
|
|
46
171
|
```yaml
|
|
47
172
|
name: CI
|
|
48
173
|
on: [push, pull_request]
|
|
@@ -61,7 +186,10 @@ jobs:
|
|
|
61
186
|
- run: cargo build --release
|
|
62
187
|
```
|
|
63
188
|
|
|
64
|
-
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Reference block 2
|
|
192
|
+
|
|
65
193
|
```yaml
|
|
66
194
|
name: CI
|
|
67
195
|
on: [push, pull_request]
|
|
@@ -81,7 +209,10 @@ jobs:
|
|
|
81
209
|
- run: npm run build 2>/dev/null || true
|
|
82
210
|
```
|
|
83
211
|
|
|
84
|
-
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Reference block 3
|
|
215
|
+
|
|
85
216
|
```yaml
|
|
86
217
|
name: CI
|
|
87
218
|
on: [push, pull_request]
|
|
@@ -101,7 +232,10 @@ jobs:
|
|
|
101
232
|
- run: pytest
|
|
102
233
|
```
|
|
103
234
|
|
|
104
|
-
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Reference block 4
|
|
238
|
+
|
|
105
239
|
```yaml
|
|
106
240
|
name: CI
|
|
107
241
|
on: [push, pull_request]
|
|
@@ -119,7 +253,10 @@ jobs:
|
|
|
119
253
|
- run: go build ./...
|
|
120
254
|
```
|
|
121
255
|
|
|
122
|
-
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Reference block 5
|
|
259
|
+
|
|
123
260
|
```yaml
|
|
124
261
|
name: CI
|
|
125
262
|
on: [push, pull_request]
|
|
@@ -133,9 +270,9 @@ jobs:
|
|
|
133
270
|
- run: ctest --test-dir build
|
|
134
271
|
```
|
|
135
272
|
|
|
136
|
-
|
|
273
|
+
---
|
|
137
274
|
|
|
138
|
-
|
|
275
|
+
## Reference block 6
|
|
139
276
|
|
|
140
277
|
```yaml
|
|
141
278
|
name: Release
|
|
@@ -166,11 +303,9 @@ jobs:
|
|
|
166
303
|
NPM_TOKEN: \${{ secrets.NPM_TOKEN }}
|
|
167
304
|
```
|
|
168
305
|
|
|
169
|
-
|
|
306
|
+
---
|
|
170
307
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
Run `wire-ci --validate` to check all generated workflow files:
|
|
308
|
+
## Reference block 7
|
|
174
309
|
|
|
175
310
|
```bash
|
|
176
311
|
# Validate YAML syntax
|
|
@@ -212,14 +347,9 @@ for f in .github/workflows/*.yaml; do
|
|
|
212
347
|
done
|
|
213
348
|
```
|
|
214
349
|
|
|
215
|
-
|
|
216
|
-
- `0` — all checks pass (no errors)
|
|
217
|
-
- `1` — YAML syntax errors found
|
|
218
|
-
- `2` — validation warnings only (missing permissions, secrets, etc.)
|
|
219
|
-
|
|
220
|
-
### 5. Dry-run workflows (`--dry-run`)
|
|
350
|
+
---
|
|
221
351
|
|
|
222
|
-
|
|
352
|
+
## Reference block 8
|
|
223
353
|
|
|
224
354
|
```bash
|
|
225
355
|
# Option A: Use act (recommended)
|
|
@@ -235,75 +365,3 @@ else
|
|
|
235
365
|
echo " Install gh CLI for remote dry-run"
|
|
236
366
|
fi
|
|
237
367
|
```
|
|
238
|
-
|
|
239
|
-
> **act** runs workflows in a local Docker environment — the most accurate pre-push validation.
|
|
240
|
-
> **gh workflow run** sends the workflow to GitHub but doesn't execute locally — useful for checking YAML parsing but not for testing the actual steps.
|
|
241
|
-
|
|
242
|
-
### 6. Document common CI failure patterns
|
|
243
|
-
|
|
244
|
-
Add the following to the project's documentation or CLAUDE.md after setup:
|
|
245
|
-
|
|
246
|
-
| Failure | Cause | Fix |
|
|
247
|
-
|---------|-------|-----|
|
|
248
|
-
| `npm publish` fails | `NPM_TOKEN` not set as repo secret | Add `NPM_TOKEN` to GitHub repo secrets |
|
|
249
|
-
| `semantic-release` fails on push | Missing `permissions: contents: write` | Add `permissions: contents: write` to release job |
|
|
250
|
-
| `cargo publish` auth fail | `CARGO_REGISTRY_TOKEN` not set | Add token to `~/.cargo/config.toml` or env |
|
|
251
|
-
| `go vet` fails | Go version mismatch | Match `go.mod` `go` directive with setup-go version |
|
|
252
|
-
| `cargo clippy` errors | New lints in Rust nightly | `cargo clippy --fix` or allow specific lints |
|
|
253
|
-
| `act` not found | Docker not running or act not installed | `brew install act` / `docker ps` to verify Docker |
|
|
254
|
-
| Hardcoded Node version stale | `.nvmrc` exists but workflow uses hardcoded version | Use `node-version-file: .nvmrc` instead |
|
|
255
|
-
|
|
256
|
-
## Examples
|
|
257
|
-
|
|
258
|
-
### Create CI for a Rust project
|
|
259
|
-
|
|
260
|
-
```bash
|
|
261
|
-
# Detect from Cargo.toml, generate workflows
|
|
262
|
-
wire-ci
|
|
263
|
-
|
|
264
|
-
# Validate generated workflows
|
|
265
|
-
wire-ci --validate
|
|
266
|
-
|
|
267
|
-
# Run locally with act
|
|
268
|
-
wire-ci --dry-run
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
### Create CI for a Node project with semantic-release
|
|
272
|
-
|
|
273
|
-
```bash
|
|
274
|
-
wire-ci
|
|
275
|
-
wire-ci --validate
|
|
276
|
-
# Expect warning: "npm publish step found but no NPM_TOKEN in secrets"
|
|
277
|
-
# Fix: add NPM_TOKEN to repo secrets
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### Validate existing workflows (no generation)
|
|
281
|
-
|
|
282
|
-
```bash
|
|
283
|
-
wire-ci --validate --check-only
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
## Options
|
|
287
|
-
|
|
288
|
-
| Flag | Description |
|
|
289
|
-
|------|-------------|
|
|
290
|
-
| `--validate` | Check YAML syntax, permissions, secrets, common pitfalls |
|
|
291
|
-
| `--dry-run` | Run workflows locally via `act` or dispatch via `gh` |
|
|
292
|
-
| `--check-only` | Only validate, do not generate new files |
|
|
293
|
-
| `--type <type>` | Force project type (skip auto-detection) |
|
|
294
|
-
| `--force` | Overwrite existing workflow files |
|
|
295
|
-
| `--no-release` | Skip release workflow generation even if semantic-release detected |
|
|
296
|
-
|
|
297
|
-
## Integration with build-epic
|
|
298
|
-
|
|
299
|
-
When `wire-ci` is used as part of `build-epic`:
|
|
300
|
-
|
|
301
|
-
1. **During develop-tdd**: If the task modifies `.github/workflows/`, run `wire-ci --validate` as a CI dry-run sub-step
|
|
302
|
-
2. **During release-branch**: After push, run `gh run list --limit 1 --branch main --json status,conclusion` to verify CI passes
|
|
303
|
-
|
|
304
|
-
## Verify
|
|
305
|
-
|
|
306
|
-
→ verify: `test -f wire-ci/SKILL.md && echo "OK: skill file exists" || echo "FAIL: no skill file"`
|
|
307
|
-
→ verify: `grep -q "name: wire-ci" wire-ci/SKILL.md && echo "OK: frontmatter" || echo "FAIL: frontmatter"`
|
|
308
|
-
→ verify: `grep -ci "template\|workflow\|validate\|dry.run" wire-ci/SKILL.md | awk '{if($1>=3) print "OK: semantics"; else print "FAIL: missing"}'`
|
|
309
|
-
→ verify: `grep -q "wire-ci" SKILL-INDEX.md && echo "OK: in SKILL-INDEX" || echo "FAIL: not indexed"`
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [2.35.0](https://github.com/danielvm-git/bigpowers/compare/v2.34.2...v2.35.0) (2026-06-27)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **security-review:** add security-review skill with lifecycle integration ([932171a](https://github.com/danielvm-git/bigpowers/commit/932171a6526c4f9465c0d3768877dd2ad7775917))
|
|
7
|
+
|
|
8
|
+
## [2.34.2](https://github.com/danielvm-git/bigpowers/compare/v2.34.1...v2.34.2) (2026-06-27)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **ci:** trim 8 over-length SKILL.md files to pass check-skill-size lint ([c89125f](https://github.com/danielvm-git/bigpowers/commit/c89125ff921874b4aa19ca1df2e7ae47ece177d1))
|
|
14
|
+
|
|
1
15
|
## [2.34.1](https://github.com/danielvm-git/bigpowers/compare/v2.34.0...v2.34.1) (2026-06-26)
|
|
2
16
|
|
|
3
17
|
|
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|

|
|
5
|
-

|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**70 agent skills for high-integrity, spec-driven, test-first software development by solo developers.**
|
|
8
8
|
|
|
9
9
|
`bigpowers` provides a prescriptive, vertical-slice methodology for building software with AI agents (Claude Code, Gemini CLI, Cursor, pi). It bridges the gap between raw LLM capabilities and professional engineering standards.
|
|
10
10
|
|
|
@@ -155,7 +155,7 @@ Or add manually to `.claude/settings.json`:
|
|
|
155
155
|
|
|
156
156
|
| Tool | Description |
|
|
157
157
|
|------|-------------|
|
|
158
|
-
| `bigpowers_list_skills` | List all
|
|
158
|
+
| `bigpowers_list_skills` | List all 70 skills with name, description, phase. Optional `phase` filter. |
|
|
159
159
|
| `bigpowers_get_skill` | Get full SKILL.md content for any skill by name. |
|
|
160
160
|
| `bigpowers_search_skills` | Keyword/semantic search — returns ranked matches for a query. |
|
|
161
161
|
| `bigpowers_get_state` | Get current `specs/state.yaml` (active flow, epic, step). |
|
|
@@ -224,7 +224,7 @@ ONCE/PROJECT orchestrate-project
|
|
|
224
224
|
- `dashboard/`: Live monitoring tool — TUI (`npm run dashboard`) and web (`npm run dashboard:web`, port 7742).
|
|
225
225
|
- `docs/`: Guides including `WORKFLOW-SOP-v2.md` (full SDLC SOP) and `using-bigpowers.md`.
|
|
226
226
|
- `docs/references/`: Theoretical foundations (Uncle Bob, Ousterhout, Karpathy, etc.).
|
|
227
|
-
- `[skill-name]/`: Source files for each of the
|
|
227
|
+
- `[skill-name]/`: Source files for each of the 70 skills.
|
|
228
228
|
|
|
229
229
|
---
|
|
230
230
|
|
package/SKILL-INDEX.md
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
> **DO NOT EDIT** — This file is auto-generated by `scripts/generate-skill-index.sh`.
|
|
4
4
|
> Edit `SKILL.md` source files or `skills-lock.json` instead. Run `bash scripts/sync-skills.sh` to regenerate.
|
|
5
5
|
|
|
6
|
-
**Generated:** 2026-06-
|
|
7
|
-
**Skills:**
|
|
6
|
+
**Generated:** 2026-06-27T16:35:20Z
|
|
7
|
+
**Skills:** 71
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|