bigpowers 2.86.0 → 2.86.2
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/.agents/skills/diagnose-root/SKILL.md +1 -1
- package/.agents/skills/migrate-spec/SKILL.md +3 -3
- package/.agents/skills/plan-work/SKILL.md +1 -1
- package/.agents/skills/security-review/SKILL.md +3 -1
- package/.agents/skills/smoke-test/SKILL.md +1 -1
- package/.agents/skills/trace-requirement/SKILL.md +1 -1
- package/.codebuddy/skills/diagnose-root/SKILL.md +1 -1
- package/.codebuddy/skills/migrate-spec/SKILL.md +3 -3
- package/.codebuddy/skills/plan-work/SKILL.md +1 -1
- package/.codebuddy/skills/security-review/SKILL.md +3 -1
- package/.codebuddy/skills/smoke-test/SKILL.md +1 -1
- package/.codebuddy/skills/trace-requirement/SKILL.md +1 -1
- package/.codex/skills/diagnose-root/SKILL.md +1 -1
- package/.codex/skills/migrate-spec/SKILL.md +3 -3
- package/.codex/skills/plan-work/SKILL.md +1 -1
- package/.codex/skills/security-review/SKILL.md +3 -1
- package/.codex/skills/smoke-test/SKILL.md +1 -1
- package/.codex/skills/trace-requirement/SKILL.md +1 -1
- package/.hermes/skills/diagnose-root/SKILL.md +1 -1
- package/.hermes/skills/migrate-spec/SKILL.md +3 -3
- package/.hermes/skills/plan-work/SKILL.md +1 -1
- package/.hermes/skills/security-review/SKILL.md +3 -1
- package/.hermes/skills/smoke-test/SKILL.md +1 -1
- package/.hermes/skills/trace-requirement/SKILL.md +1 -1
- package/.kilocode/rules/diagnose-root.md +1 -1
- package/.kilocode/rules/migrate-spec.md +3 -3
- package/.kilocode/rules/plan-work.md +1 -1
- package/.kilocode/rules/security-review.md +3 -1
- package/.kilocode/rules/smoke-test.md +1 -1
- package/.kilocode/rules/trace-requirement.md +1 -1
- package/.mimocode/skills/diagnose-root/SKILL.md +1 -1
- package/.mimocode/skills/migrate-spec/SKILL.md +3 -3
- package/.mimocode/skills/plan-work/SKILL.md +1 -1
- package/.mimocode/skills/security-review/SKILL.md +3 -1
- package/.mimocode/skills/smoke-test/SKILL.md +1 -1
- package/.mimocode/skills/trace-requirement/SKILL.md +1 -1
- package/.pi/package.json +1 -1
- package/.pi/prompts/diagnose-root.md +1 -1
- package/.pi/prompts/migrate-spec.md +3 -3
- package/.pi/prompts/plan-work.md +1 -1
- package/.pi/prompts/security-review.md +3 -1
- package/.pi/prompts/smoke-test.md +1 -1
- package/.pi/prompts/trace-requirement.md +1 -1
- package/.pi/skills/diagnose-root/SKILL.md +1 -1
- package/.pi/skills/migrate-spec/SKILL.md +3 -3
- package/.pi/skills/plan-work/SKILL.md +1 -1
- package/.pi/skills/security-review/SKILL.md +3 -1
- package/.pi/skills/smoke-test/SKILL.md +1 -1
- package/.pi/skills/trace-requirement/SKILL.md +1 -1
- package/.trae/skills/diagnose-root/SKILL.md +1 -1
- package/.trae/skills/migrate-spec/SKILL.md +3 -3
- package/.trae/skills/plan-work/SKILL.md +1 -1
- package/.trae/skills/security-review/SKILL.md +3 -1
- package/.trae/skills/smoke-test/SKILL.md +1 -1
- package/.trae/skills/trace-requirement/SKILL.md +1 -1
- package/.windsurf/rules/diagnose-root.md +1 -1
- package/.windsurf/rules/migrate-spec.md +3 -3
- package/.windsurf/rules/plan-work.md +1 -1
- package/.windsurf/rules/security-review.md +3 -1
- package/.windsurf/rules/smoke-test.md +1 -1
- package/.windsurf/rules/trace-requirement.md +1 -1
- package/.zcode/skills/diagnose-root/SKILL.md +1 -1
- package/.zcode/skills/migrate-spec/SKILL.md +3 -3
- package/.zcode/skills/plan-work/SKILL.md +1 -1
- package/.zcode/skills/security-review/SKILL.md +3 -1
- package/.zcode/skills/smoke-test/SKILL.md +1 -1
- package/.zcode/skills/trace-requirement/SKILL.md +1 -1
- package/CHANGELOG.md +15 -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/run-skill-verify.sh +97 -10
- package/scripts/verify-cwe-fixture-sync.sh +88 -0
- package/skills/diagnose-root/SKILL.md +1 -1
- package/skills/migrate-spec/SKILL.md +3 -3
- package/skills/plan-work/SKILL.md +1 -1
- package/skills/security-review/SKILL.md +3 -1
- package/skills/security-review/fixtures/CWE-639-idor-negative.go +48 -0
- package/skills/security-review/fixtures/CWE-639-idor-positive.go +29 -0
- package/skills/smoke-test/SKILL.md +1 -1
- package/skills/trace-requirement/SKILL.md +1 -1
- package/skills-lock.json +6 -6
|
@@ -21,4 +21,4 @@ Four phases — do not skip. Update the active `specs/bugs/BUG-*.md` file at eac
|
|
|
21
21
|
|
|
22
22
|
## Verify
|
|
23
23
|
|
|
24
|
-
→ verify: `
|
|
24
|
+
→ verify: `[ "$(grep -lE 'Reproduce' specs/bugs/BUG-*.md 2>/dev/null | grep -cv "\.okf\.md$")" -ge 1 ]`
|
|
@@ -58,7 +58,7 @@ List every artifact found matching the detected framework. Present the list to t
|
|
|
58
58
|
|
|
59
59
|
See [REFERENCE.md](REFERENCE.md) — `Detected: GSD...`
|
|
60
60
|
|
|
61
|
-
→ verify: `
|
|
61
|
+
→ verify: `test -d specs && test -w specs`
|
|
62
62
|
|
|
63
63
|
### Step 3 — Transform (one artifact at a time, show diffs)
|
|
64
64
|
|
|
@@ -94,9 +94,9 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
|
|
|
94
94
|
|
|
95
95
|
> **HARD GATE** — Never overwrite an existing `specs/` file without explicit user confirmation. Merge into it if it exists; don't clobber.
|
|
96
96
|
>
|
|
97
|
-
> → verify: `git
|
|
97
|
+
> → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
|
|
98
98
|
|
|
99
|
-
→ verify: `ls specs/*.md 2>/dev/null |
|
|
99
|
+
→ verify: `test -d specs && [ "$(ls specs/*.md specs/*.yaml 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
100
100
|
|
|
101
101
|
### Step 4 — Generate state.yaml
|
|
102
102
|
|
|
@@ -84,7 +84,7 @@ After writing capsule tasks, suggest `kickoff-branch` (if not already on a featu
|
|
|
84
84
|
|
|
85
85
|
## Verify
|
|
86
86
|
|
|
87
|
-
→ verify: `test -f scripts/lib/plan-consistency-check.sh && bash scripts/lib/plan-consistency-check.sh
|
|
87
|
+
→ verify: `test -f scripts/lib/plan-consistency-check.sh && EPIC=$(ls -d specs/epics/*/ 2>/dev/null | grep -v archive | sort | head -1) && test -n "$EPIC" && bash scripts/lib/plan-consistency-check.sh "$EPIC" >/dev/null 2>&1`
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
|
|
@@ -58,6 +58,8 @@ Every **new detection rule** added to this skill MUST:
|
|
|
58
58
|
|------|-----|------------------|------------------|
|
|
59
59
|
| SQL injection | CWE-89 | `fixtures/CWE-89-sqli-positive.py` | `fixtures/CWE-89-sqli-negative.py` |
|
|
60
60
|
| XSS (DOM) | CWE-79 | `fixtures/CWE-79-xss-positive.js` | `fixtures/CWE-79-xss-negative.js` |
|
|
61
|
+
| Missing tenant scoping (IDOR) | CWE-639 | `fixtures/CWE-639-idor-positive.go` | `fixtures/CWE-639-idor-negative.go` |
|
|
62
|
+
| Fail-open verify directive | CWE-754 | `fixtures/CWE-fail-open-verify-positive.sh` | `fixtures/CWE-fail-open-verify-negative.sh` |
|
|
61
63
|
|
|
62
64
|
Before merging a new category, run both fixtures through the detection guidance and confirm positive flags / negative passes.
|
|
63
65
|
|
|
@@ -109,7 +111,7 @@ Each finding: **`File:Line` — Severity — Category**
|
|
|
109
111
|
|
|
110
112
|
## Verify
|
|
111
113
|
|
|
112
|
-
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && git rev-parse HEAD >/dev/null 2>&1`
|
|
114
|
+
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && bash scripts/verify-cwe-fixture-sync.sh >/dev/null && git rev-parse HEAD >/dev/null 2>&1`
|
|
113
115
|
|
|
114
116
|
---
|
|
115
117
|
|
|
@@ -78,7 +78,7 @@ Part of **★ VERIFY ★**: `verify-work` → `validate-contracts` → `smoke-te
|
|
|
78
78
|
|
|
79
79
|
## Verify
|
|
80
80
|
|
|
81
|
-
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && grep -
|
|
81
|
+
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && ! grep -q 'See \[REFERENCE.md\](REFERENCE.md)$' skills/smoke-test/SKILL.md && echo OK`
|
|
82
82
|
|
|
83
83
|
---
|
|
84
84
|
|
|
@@ -32,7 +32,7 @@ Look for `// story: X.Y` or `# story: X.Y` comments in source files and tests:
|
|
|
32
32
|
grep -rn "story: " . --include="*.ts" --include="*.js" --include="*.py" --include="*.sh" | grep -v node_modules
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
→ verify: `grep -
|
|
35
|
+
→ verify: `[ "$(grep -rl "story: " . --include="*.ts" --include="*.sh" --include="*.py" 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
36
36
|
|
|
37
37
|
### 3. Build the matrix
|
|
38
38
|
|
|
@@ -21,4 +21,4 @@ Four phases — do not skip. Update the active `specs/bugs/BUG-*.md` file at eac
|
|
|
21
21
|
|
|
22
22
|
## Verify
|
|
23
23
|
|
|
24
|
-
→ verify: `
|
|
24
|
+
→ verify: `[ "$(grep -lE 'Reproduce' specs/bugs/BUG-*.md 2>/dev/null | grep -cv "\.okf\.md$")" -ge 1 ]`
|
|
@@ -58,7 +58,7 @@ List every artifact found matching the detected framework. Present the list to t
|
|
|
58
58
|
|
|
59
59
|
See [REFERENCE.md](REFERENCE.md) — `Detected: GSD...`
|
|
60
60
|
|
|
61
|
-
→ verify: `
|
|
61
|
+
→ verify: `test -d specs && test -w specs`
|
|
62
62
|
|
|
63
63
|
### Step 3 — Transform (one artifact at a time, show diffs)
|
|
64
64
|
|
|
@@ -94,9 +94,9 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
|
|
|
94
94
|
|
|
95
95
|
> **HARD GATE** — Never overwrite an existing `specs/` file without explicit user confirmation. Merge into it if it exists; don't clobber.
|
|
96
96
|
>
|
|
97
|
-
> → verify: `git
|
|
97
|
+
> → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
|
|
98
98
|
|
|
99
|
-
→ verify: `ls specs/*.md 2>/dev/null |
|
|
99
|
+
→ verify: `test -d specs && [ "$(ls specs/*.md specs/*.yaml 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
100
100
|
|
|
101
101
|
### Step 4 — Generate state.yaml
|
|
102
102
|
|
|
@@ -84,7 +84,7 @@ After writing capsule tasks, suggest `kickoff-branch` (if not already on a featu
|
|
|
84
84
|
|
|
85
85
|
## Verify
|
|
86
86
|
|
|
87
|
-
→ verify: `test -f scripts/lib/plan-consistency-check.sh && bash scripts/lib/plan-consistency-check.sh
|
|
87
|
+
→ verify: `test -f scripts/lib/plan-consistency-check.sh && EPIC=$(ls -d specs/epics/*/ 2>/dev/null | grep -v archive | sort | head -1) && test -n "$EPIC" && bash scripts/lib/plan-consistency-check.sh "$EPIC" >/dev/null 2>&1`
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
|
|
@@ -58,6 +58,8 @@ Every **new detection rule** added to this skill MUST:
|
|
|
58
58
|
|------|-----|------------------|------------------|
|
|
59
59
|
| SQL injection | CWE-89 | `fixtures/CWE-89-sqli-positive.py` | `fixtures/CWE-89-sqli-negative.py` |
|
|
60
60
|
| XSS (DOM) | CWE-79 | `fixtures/CWE-79-xss-positive.js` | `fixtures/CWE-79-xss-negative.js` |
|
|
61
|
+
| Missing tenant scoping (IDOR) | CWE-639 | `fixtures/CWE-639-idor-positive.go` | `fixtures/CWE-639-idor-negative.go` |
|
|
62
|
+
| Fail-open verify directive | CWE-754 | `fixtures/CWE-fail-open-verify-positive.sh` | `fixtures/CWE-fail-open-verify-negative.sh` |
|
|
61
63
|
|
|
62
64
|
Before merging a new category, run both fixtures through the detection guidance and confirm positive flags / negative passes.
|
|
63
65
|
|
|
@@ -109,7 +111,7 @@ Each finding: **`File:Line` — Severity — Category**
|
|
|
109
111
|
|
|
110
112
|
## Verify
|
|
111
113
|
|
|
112
|
-
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && git rev-parse HEAD >/dev/null 2>&1`
|
|
114
|
+
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && bash scripts/verify-cwe-fixture-sync.sh >/dev/null && git rev-parse HEAD >/dev/null 2>&1`
|
|
113
115
|
|
|
114
116
|
---
|
|
115
117
|
|
|
@@ -78,7 +78,7 @@ Part of **★ VERIFY ★**: `verify-work` → `validate-contracts` → `smoke-te
|
|
|
78
78
|
|
|
79
79
|
## Verify
|
|
80
80
|
|
|
81
|
-
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && grep -
|
|
81
|
+
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && ! grep -q 'See \[REFERENCE.md\](REFERENCE.md)$' skills/smoke-test/SKILL.md && echo OK`
|
|
82
82
|
|
|
83
83
|
---
|
|
84
84
|
|
|
@@ -32,7 +32,7 @@ Look for `// story: X.Y` or `# story: X.Y` comments in source files and tests:
|
|
|
32
32
|
grep -rn "story: " . --include="*.ts" --include="*.js" --include="*.py" --include="*.sh" | grep -v node_modules
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
→ verify: `grep -
|
|
35
|
+
→ verify: `[ "$(grep -rl "story: " . --include="*.ts" --include="*.sh" --include="*.py" 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
36
36
|
|
|
37
37
|
### 3. Build the matrix
|
|
38
38
|
|
|
@@ -21,4 +21,4 @@ Four phases — do not skip. Update the active `specs/bugs/BUG-*.md` file at eac
|
|
|
21
21
|
|
|
22
22
|
## Verify
|
|
23
23
|
|
|
24
|
-
→ verify: `
|
|
24
|
+
→ verify: `[ "$(grep -lE 'Reproduce' specs/bugs/BUG-*.md 2>/dev/null | grep -cv "\.okf\.md$")" -ge 1 ]`
|
|
@@ -58,7 +58,7 @@ List every artifact found matching the detected framework. Present the list to t
|
|
|
58
58
|
|
|
59
59
|
See [REFERENCE.md](REFERENCE.md) — `Detected: GSD...`
|
|
60
60
|
|
|
61
|
-
→ verify: `
|
|
61
|
+
→ verify: `test -d specs && test -w specs`
|
|
62
62
|
|
|
63
63
|
### Step 3 — Transform (one artifact at a time, show diffs)
|
|
64
64
|
|
|
@@ -94,9 +94,9 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
|
|
|
94
94
|
|
|
95
95
|
> **HARD GATE** — Never overwrite an existing `specs/` file without explicit user confirmation. Merge into it if it exists; don't clobber.
|
|
96
96
|
>
|
|
97
|
-
> → verify: `git
|
|
97
|
+
> → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
|
|
98
98
|
|
|
99
|
-
→ verify: `ls specs/*.md 2>/dev/null |
|
|
99
|
+
→ verify: `test -d specs && [ "$(ls specs/*.md specs/*.yaml 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
100
100
|
|
|
101
101
|
### Step 4 — Generate state.yaml
|
|
102
102
|
|
|
@@ -84,7 +84,7 @@ After writing capsule tasks, suggest `kickoff-branch` (if not already on a featu
|
|
|
84
84
|
|
|
85
85
|
## Verify
|
|
86
86
|
|
|
87
|
-
→ verify: `test -f scripts/lib/plan-consistency-check.sh && bash scripts/lib/plan-consistency-check.sh
|
|
87
|
+
→ verify: `test -f scripts/lib/plan-consistency-check.sh && EPIC=$(ls -d specs/epics/*/ 2>/dev/null | grep -v archive | sort | head -1) && test -n "$EPIC" && bash scripts/lib/plan-consistency-check.sh "$EPIC" >/dev/null 2>&1`
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
|
|
@@ -58,6 +58,8 @@ Every **new detection rule** added to this skill MUST:
|
|
|
58
58
|
|------|-----|------------------|------------------|
|
|
59
59
|
| SQL injection | CWE-89 | `fixtures/CWE-89-sqli-positive.py` | `fixtures/CWE-89-sqli-negative.py` |
|
|
60
60
|
| XSS (DOM) | CWE-79 | `fixtures/CWE-79-xss-positive.js` | `fixtures/CWE-79-xss-negative.js` |
|
|
61
|
+
| Missing tenant scoping (IDOR) | CWE-639 | `fixtures/CWE-639-idor-positive.go` | `fixtures/CWE-639-idor-negative.go` |
|
|
62
|
+
| Fail-open verify directive | CWE-754 | `fixtures/CWE-fail-open-verify-positive.sh` | `fixtures/CWE-fail-open-verify-negative.sh` |
|
|
61
63
|
|
|
62
64
|
Before merging a new category, run both fixtures through the detection guidance and confirm positive flags / negative passes.
|
|
63
65
|
|
|
@@ -109,7 +111,7 @@ Each finding: **`File:Line` — Severity — Category**
|
|
|
109
111
|
|
|
110
112
|
## Verify
|
|
111
113
|
|
|
112
|
-
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && git rev-parse HEAD >/dev/null 2>&1`
|
|
114
|
+
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && bash scripts/verify-cwe-fixture-sync.sh >/dev/null && git rev-parse HEAD >/dev/null 2>&1`
|
|
113
115
|
|
|
114
116
|
---
|
|
115
117
|
|
|
@@ -78,7 +78,7 @@ Part of **★ VERIFY ★**: `verify-work` → `validate-contracts` → `smoke-te
|
|
|
78
78
|
|
|
79
79
|
## Verify
|
|
80
80
|
|
|
81
|
-
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && grep -
|
|
81
|
+
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && ! grep -q 'See \[REFERENCE.md\](REFERENCE.md)$' skills/smoke-test/SKILL.md && echo OK`
|
|
82
82
|
|
|
83
83
|
---
|
|
84
84
|
|
|
@@ -32,7 +32,7 @@ Look for `// story: X.Y` or `# story: X.Y` comments in source files and tests:
|
|
|
32
32
|
grep -rn "story: " . --include="*.ts" --include="*.js" --include="*.py" --include="*.sh" | grep -v node_modules
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
→ verify: `grep -
|
|
35
|
+
→ verify: `[ "$(grep -rl "story: " . --include="*.ts" --include="*.sh" --include="*.py" 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
36
36
|
|
|
37
37
|
### 3. Build the matrix
|
|
38
38
|
|
|
@@ -21,4 +21,4 @@ Four phases — do not skip. Update the active `specs/bugs/BUG-*.md` file at eac
|
|
|
21
21
|
|
|
22
22
|
## Verify
|
|
23
23
|
|
|
24
|
-
→ verify: `
|
|
24
|
+
→ verify: `[ "$(grep -lE 'Reproduce' specs/bugs/BUG-*.md 2>/dev/null | grep -cv "\.okf\.md$")" -ge 1 ]`
|
|
@@ -58,7 +58,7 @@ List every artifact found matching the detected framework. Present the list to t
|
|
|
58
58
|
|
|
59
59
|
See [REFERENCE.md](REFERENCE.md) — `Detected: GSD...`
|
|
60
60
|
|
|
61
|
-
→ verify: `
|
|
61
|
+
→ verify: `test -d specs && test -w specs`
|
|
62
62
|
|
|
63
63
|
### Step 3 — Transform (one artifact at a time, show diffs)
|
|
64
64
|
|
|
@@ -94,9 +94,9 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
|
|
|
94
94
|
|
|
95
95
|
> **HARD GATE** — Never overwrite an existing `specs/` file without explicit user confirmation. Merge into it if it exists; don't clobber.
|
|
96
96
|
>
|
|
97
|
-
> → verify: `git
|
|
97
|
+
> → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
|
|
98
98
|
|
|
99
|
-
→ verify: `ls specs/*.md 2>/dev/null |
|
|
99
|
+
→ verify: `test -d specs && [ "$(ls specs/*.md specs/*.yaml 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
100
100
|
|
|
101
101
|
### Step 4 — Generate state.yaml
|
|
102
102
|
|
|
@@ -84,7 +84,7 @@ After writing capsule tasks, suggest `kickoff-branch` (if not already on a featu
|
|
|
84
84
|
|
|
85
85
|
## Verify
|
|
86
86
|
|
|
87
|
-
→ verify: `test -f scripts/lib/plan-consistency-check.sh && bash scripts/lib/plan-consistency-check.sh
|
|
87
|
+
→ verify: `test -f scripts/lib/plan-consistency-check.sh && EPIC=$(ls -d specs/epics/*/ 2>/dev/null | grep -v archive | sort | head -1) && test -n "$EPIC" && bash scripts/lib/plan-consistency-check.sh "$EPIC" >/dev/null 2>&1`
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
|
|
@@ -58,6 +58,8 @@ Every **new detection rule** added to this skill MUST:
|
|
|
58
58
|
|------|-----|------------------|------------------|
|
|
59
59
|
| SQL injection | CWE-89 | `fixtures/CWE-89-sqli-positive.py` | `fixtures/CWE-89-sqli-negative.py` |
|
|
60
60
|
| XSS (DOM) | CWE-79 | `fixtures/CWE-79-xss-positive.js` | `fixtures/CWE-79-xss-negative.js` |
|
|
61
|
+
| Missing tenant scoping (IDOR) | CWE-639 | `fixtures/CWE-639-idor-positive.go` | `fixtures/CWE-639-idor-negative.go` |
|
|
62
|
+
| Fail-open verify directive | CWE-754 | `fixtures/CWE-fail-open-verify-positive.sh` | `fixtures/CWE-fail-open-verify-negative.sh` |
|
|
61
63
|
|
|
62
64
|
Before merging a new category, run both fixtures through the detection guidance and confirm positive flags / negative passes.
|
|
63
65
|
|
|
@@ -109,7 +111,7 @@ Each finding: **`File:Line` — Severity — Category**
|
|
|
109
111
|
|
|
110
112
|
## Verify
|
|
111
113
|
|
|
112
|
-
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && git rev-parse HEAD >/dev/null 2>&1`
|
|
114
|
+
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && bash scripts/verify-cwe-fixture-sync.sh >/dev/null && git rev-parse HEAD >/dev/null 2>&1`
|
|
113
115
|
|
|
114
116
|
---
|
|
115
117
|
|
|
@@ -78,7 +78,7 @@ Part of **★ VERIFY ★**: `verify-work` → `validate-contracts` → `smoke-te
|
|
|
78
78
|
|
|
79
79
|
## Verify
|
|
80
80
|
|
|
81
|
-
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && grep -
|
|
81
|
+
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && ! grep -q 'See \[REFERENCE.md\](REFERENCE.md)$' skills/smoke-test/SKILL.md && echo OK`
|
|
82
82
|
|
|
83
83
|
---
|
|
84
84
|
|
|
@@ -32,7 +32,7 @@ Look for `// story: X.Y` or `# story: X.Y` comments in source files and tests:
|
|
|
32
32
|
grep -rn "story: " . --include="*.ts" --include="*.js" --include="*.py" --include="*.sh" | grep -v node_modules
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
→ verify: `grep -
|
|
35
|
+
→ verify: `[ "$(grep -rl "story: " . --include="*.ts" --include="*.sh" --include="*.py" 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
36
36
|
|
|
37
37
|
### 3. Build the matrix
|
|
38
38
|
|
|
@@ -21,4 +21,4 @@ Four phases — do not skip. Update the active `specs/bugs/BUG-*.md` file at eac
|
|
|
21
21
|
|
|
22
22
|
## Verify
|
|
23
23
|
|
|
24
|
-
→ verify: `
|
|
24
|
+
→ verify: `[ "$(grep -lE 'Reproduce' specs/bugs/BUG-*.md 2>/dev/null | grep -cv "\.okf\.md$")" -ge 1 ]`
|
|
@@ -58,7 +58,7 @@ List every artifact found matching the detected framework. Present the list to t
|
|
|
58
58
|
|
|
59
59
|
See [REFERENCE.md](REFERENCE.md) — `Detected: GSD...`
|
|
60
60
|
|
|
61
|
-
→ verify: `
|
|
61
|
+
→ verify: `test -d specs && test -w specs`
|
|
62
62
|
|
|
63
63
|
### Step 3 — Transform (one artifact at a time, show diffs)
|
|
64
64
|
|
|
@@ -94,9 +94,9 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
|
|
|
94
94
|
|
|
95
95
|
> **HARD GATE** — Never overwrite an existing `specs/` file without explicit user confirmation. Merge into it if it exists; don't clobber.
|
|
96
96
|
>
|
|
97
|
-
> → verify: `git
|
|
97
|
+
> → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
|
|
98
98
|
|
|
99
|
-
→ verify: `ls specs/*.md 2>/dev/null |
|
|
99
|
+
→ verify: `test -d specs && [ "$(ls specs/*.md specs/*.yaml 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
100
100
|
|
|
101
101
|
### Step 4 — Generate state.yaml
|
|
102
102
|
|
|
@@ -84,7 +84,7 @@ After writing capsule tasks, suggest `kickoff-branch` (if not already on a featu
|
|
|
84
84
|
|
|
85
85
|
## Verify
|
|
86
86
|
|
|
87
|
-
→ verify: `test -f scripts/lib/plan-consistency-check.sh && bash scripts/lib/plan-consistency-check.sh
|
|
87
|
+
→ verify: `test -f scripts/lib/plan-consistency-check.sh && EPIC=$(ls -d specs/epics/*/ 2>/dev/null | grep -v archive | sort | head -1) && test -n "$EPIC" && bash scripts/lib/plan-consistency-check.sh "$EPIC" >/dev/null 2>&1`
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
|
|
@@ -58,6 +58,8 @@ Every **new detection rule** added to this skill MUST:
|
|
|
58
58
|
|------|-----|------------------|------------------|
|
|
59
59
|
| SQL injection | CWE-89 | `fixtures/CWE-89-sqli-positive.py` | `fixtures/CWE-89-sqli-negative.py` |
|
|
60
60
|
| XSS (DOM) | CWE-79 | `fixtures/CWE-79-xss-positive.js` | `fixtures/CWE-79-xss-negative.js` |
|
|
61
|
+
| Missing tenant scoping (IDOR) | CWE-639 | `fixtures/CWE-639-idor-positive.go` | `fixtures/CWE-639-idor-negative.go` |
|
|
62
|
+
| Fail-open verify directive | CWE-754 | `fixtures/CWE-fail-open-verify-positive.sh` | `fixtures/CWE-fail-open-verify-negative.sh` |
|
|
61
63
|
|
|
62
64
|
Before merging a new category, run both fixtures through the detection guidance and confirm positive flags / negative passes.
|
|
63
65
|
|
|
@@ -109,7 +111,7 @@ Each finding: **`File:Line` — Severity — Category**
|
|
|
109
111
|
|
|
110
112
|
## Verify
|
|
111
113
|
|
|
112
|
-
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && git rev-parse HEAD >/dev/null 2>&1`
|
|
114
|
+
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && bash scripts/verify-cwe-fixture-sync.sh >/dev/null && git rev-parse HEAD >/dev/null 2>&1`
|
|
113
115
|
|
|
114
116
|
---
|
|
115
117
|
|
|
@@ -78,7 +78,7 @@ Part of **★ VERIFY ★**: `verify-work` → `validate-contracts` → `smoke-te
|
|
|
78
78
|
|
|
79
79
|
## Verify
|
|
80
80
|
|
|
81
|
-
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && grep -
|
|
81
|
+
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && ! grep -q 'See \[REFERENCE.md\](REFERENCE.md)$' skills/smoke-test/SKILL.md && echo OK`
|
|
82
82
|
|
|
83
83
|
---
|
|
84
84
|
|
|
@@ -32,7 +32,7 @@ Look for `// story: X.Y` or `# story: X.Y` comments in source files and tests:
|
|
|
32
32
|
grep -rn "story: " . --include="*.ts" --include="*.js" --include="*.py" --include="*.sh" | grep -v node_modules
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
→ verify: `grep -
|
|
35
|
+
→ verify: `[ "$(grep -rl "story: " . --include="*.ts" --include="*.sh" --include="*.py" 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
36
36
|
|
|
37
37
|
### 3. Build the matrix
|
|
38
38
|
|
|
@@ -21,4 +21,4 @@ Four phases — do not skip. Update the active `specs/bugs/BUG-*.md` file at eac
|
|
|
21
21
|
|
|
22
22
|
## Verify
|
|
23
23
|
|
|
24
|
-
→ verify: `
|
|
24
|
+
→ verify: `[ "$(grep -lE 'Reproduce' specs/bugs/BUG-*.md 2>/dev/null | grep -cv "\.okf\.md$")" -ge 1 ]`
|
|
@@ -58,7 +58,7 @@ List every artifact found matching the detected framework. Present the list to t
|
|
|
58
58
|
|
|
59
59
|
See [REFERENCE.md](REFERENCE.md) — `Detected: GSD...`
|
|
60
60
|
|
|
61
|
-
→ verify: `
|
|
61
|
+
→ verify: `test -d specs && test -w specs`
|
|
62
62
|
|
|
63
63
|
### Step 3 — Transform (one artifact at a time, show diffs)
|
|
64
64
|
|
|
@@ -94,9 +94,9 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
|
|
|
94
94
|
|
|
95
95
|
> **HARD GATE** — Never overwrite an existing `specs/` file without explicit user confirmation. Merge into it if it exists; don't clobber.
|
|
96
96
|
>
|
|
97
|
-
> → verify: `git
|
|
97
|
+
> → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
|
|
98
98
|
|
|
99
|
-
→ verify: `ls specs/*.md 2>/dev/null |
|
|
99
|
+
→ verify: `test -d specs && [ "$(ls specs/*.md specs/*.yaml 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
100
100
|
|
|
101
101
|
### Step 4 — Generate state.yaml
|
|
102
102
|
|
|
@@ -84,7 +84,7 @@ After writing capsule tasks, suggest `kickoff-branch` (if not already on a featu
|
|
|
84
84
|
|
|
85
85
|
## Verify
|
|
86
86
|
|
|
87
|
-
→ verify: `test -f scripts/lib/plan-consistency-check.sh && bash scripts/lib/plan-consistency-check.sh
|
|
87
|
+
→ verify: `test -f scripts/lib/plan-consistency-check.sh && EPIC=$(ls -d specs/epics/*/ 2>/dev/null | grep -v archive | sort | head -1) && test -n "$EPIC" && bash scripts/lib/plan-consistency-check.sh "$EPIC" >/dev/null 2>&1`
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
|
|
@@ -58,6 +58,8 @@ Every **new detection rule** added to this skill MUST:
|
|
|
58
58
|
|------|-----|------------------|------------------|
|
|
59
59
|
| SQL injection | CWE-89 | `fixtures/CWE-89-sqli-positive.py` | `fixtures/CWE-89-sqli-negative.py` |
|
|
60
60
|
| XSS (DOM) | CWE-79 | `fixtures/CWE-79-xss-positive.js` | `fixtures/CWE-79-xss-negative.js` |
|
|
61
|
+
| Missing tenant scoping (IDOR) | CWE-639 | `fixtures/CWE-639-idor-positive.go` | `fixtures/CWE-639-idor-negative.go` |
|
|
62
|
+
| Fail-open verify directive | CWE-754 | `fixtures/CWE-fail-open-verify-positive.sh` | `fixtures/CWE-fail-open-verify-negative.sh` |
|
|
61
63
|
|
|
62
64
|
Before merging a new category, run both fixtures through the detection guidance and confirm positive flags / negative passes.
|
|
63
65
|
|
|
@@ -109,7 +111,7 @@ Each finding: **`File:Line` — Severity — Category**
|
|
|
109
111
|
|
|
110
112
|
## Verify
|
|
111
113
|
|
|
112
|
-
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && git rev-parse HEAD >/dev/null 2>&1`
|
|
114
|
+
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && bash scripts/verify-cwe-fixture-sync.sh >/dev/null && git rev-parse HEAD >/dev/null 2>&1`
|
|
113
115
|
|
|
114
116
|
---
|
|
115
117
|
|
|
@@ -78,7 +78,7 @@ Part of **★ VERIFY ★**: `verify-work` → `validate-contracts` → `smoke-te
|
|
|
78
78
|
|
|
79
79
|
## Verify
|
|
80
80
|
|
|
81
|
-
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && grep -
|
|
81
|
+
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && ! grep -q 'See \[REFERENCE.md\](REFERENCE.md)$' skills/smoke-test/SKILL.md && echo OK`
|
|
82
82
|
|
|
83
83
|
---
|
|
84
84
|
|
|
@@ -32,7 +32,7 @@ Look for `// story: X.Y` or `# story: X.Y` comments in source files and tests:
|
|
|
32
32
|
grep -rn "story: " . --include="*.ts" --include="*.js" --include="*.py" --include="*.sh" | grep -v node_modules
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
→ verify: `grep -
|
|
35
|
+
→ verify: `[ "$(grep -rl "story: " . --include="*.ts" --include="*.sh" --include="*.py" 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
36
36
|
|
|
37
37
|
### 3. Build the matrix
|
|
38
38
|
|
package/.pi/package.json
CHANGED
|
@@ -20,4 +20,4 @@ Four phases — do not skip. Update the active `specs/bugs/BUG-*.md` file at eac
|
|
|
20
20
|
|
|
21
21
|
## Verify
|
|
22
22
|
|
|
23
|
-
→ verify: `
|
|
23
|
+
→ verify: `[ "$(grep -lE 'Reproduce' specs/bugs/BUG-*.md 2>/dev/null | grep -cv "\.okf\.md$")" -ge 1 ]`
|
|
@@ -57,7 +57,7 @@ List every artifact found matching the detected framework. Present the list to t
|
|
|
57
57
|
|
|
58
58
|
See [REFERENCE.md](REFERENCE.md) — `Detected: GSD...`
|
|
59
59
|
|
|
60
|
-
→ verify: `
|
|
60
|
+
→ verify: `test -d specs && test -w specs`
|
|
61
61
|
|
|
62
62
|
### Step 3 — Transform (one artifact at a time, show diffs)
|
|
63
63
|
|
|
@@ -93,9 +93,9 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
|
|
|
93
93
|
|
|
94
94
|
> **HARD GATE** — Never overwrite an existing `specs/` file without explicit user confirmation. Merge into it if it exists; don't clobber.
|
|
95
95
|
>
|
|
96
|
-
> → verify: `git
|
|
96
|
+
> → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
|
|
97
97
|
|
|
98
|
-
→ verify: `ls specs/*.md 2>/dev/null |
|
|
98
|
+
→ verify: `test -d specs && [ "$(ls specs/*.md specs/*.yaml 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
99
99
|
|
|
100
100
|
### Step 4 — Generate state.yaml
|
|
101
101
|
|
package/.pi/prompts/plan-work.md
CHANGED
|
@@ -83,7 +83,7 @@ After writing capsule tasks, suggest `kickoff-branch` (if not already on a featu
|
|
|
83
83
|
|
|
84
84
|
## Verify
|
|
85
85
|
|
|
86
|
-
→ verify: `test -f scripts/lib/plan-consistency-check.sh && bash scripts/lib/plan-consistency-check.sh
|
|
86
|
+
→ verify: `test -f scripts/lib/plan-consistency-check.sh && EPIC=$(ls -d specs/epics/*/ 2>/dev/null | grep -v archive | sort | head -1) && test -n "$EPIC" && bash scripts/lib/plan-consistency-check.sh "$EPIC" >/dev/null 2>&1`
|
|
87
87
|
|
|
88
88
|
|
|
89
89
|
|
|
@@ -57,6 +57,8 @@ Every **new detection rule** added to this skill MUST:
|
|
|
57
57
|
|------|-----|------------------|------------------|
|
|
58
58
|
| SQL injection | CWE-89 | `fixtures/CWE-89-sqli-positive.py` | `fixtures/CWE-89-sqli-negative.py` |
|
|
59
59
|
| XSS (DOM) | CWE-79 | `fixtures/CWE-79-xss-positive.js` | `fixtures/CWE-79-xss-negative.js` |
|
|
60
|
+
| Missing tenant scoping (IDOR) | CWE-639 | `fixtures/CWE-639-idor-positive.go` | `fixtures/CWE-639-idor-negative.go` |
|
|
61
|
+
| Fail-open verify directive | CWE-754 | `fixtures/CWE-fail-open-verify-positive.sh` | `fixtures/CWE-fail-open-verify-negative.sh` |
|
|
60
62
|
|
|
61
63
|
Before merging a new category, run both fixtures through the detection guidance and confirm positive flags / negative passes.
|
|
62
64
|
|
|
@@ -108,7 +110,7 @@ Each finding: **`File:Line` — Severity — Category**
|
|
|
108
110
|
|
|
109
111
|
## Verify
|
|
110
112
|
|
|
111
|
-
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && git rev-parse HEAD >/dev/null 2>&1`
|
|
113
|
+
→ verify: `test -d specs/security && test -f scripts/lib/parallel-review-worktrees.sh && bash scripts/verify-cwe-fixture-sync.sh >/dev/null && git rev-parse HEAD >/dev/null 2>&1`
|
|
112
114
|
|
|
113
115
|
---
|
|
114
116
|
|
|
@@ -77,7 +77,7 @@ Part of **★ VERIFY ★**: `verify-work` → `validate-contracts` → `smoke-te
|
|
|
77
77
|
|
|
78
78
|
## Verify
|
|
79
79
|
|
|
80
|
-
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && grep -
|
|
80
|
+
→ verify: `test -x scripts/run-smoke.sh && grep -q 'run-smoke.sh' skills/smoke-test/SKILL.md && ! grep -q 'See \[REFERENCE.md\](REFERENCE.md)$' skills/smoke-test/SKILL.md && echo OK`
|
|
81
81
|
|
|
82
82
|
---
|
|
83
83
|
|
|
@@ -31,7 +31,7 @@ Look for `// story: X.Y` or `# story: X.Y` comments in source files and tests:
|
|
|
31
31
|
grep -rn "story: " . --include="*.ts" --include="*.js" --include="*.py" --include="*.sh" | grep -v node_modules
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
→ verify: `grep -
|
|
34
|
+
→ verify: `[ "$(grep -rl "story: " . --include="*.ts" --include="*.sh" --include="*.py" 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
35
35
|
|
|
36
36
|
### 3. Build the matrix
|
|
37
37
|
|
|
@@ -21,4 +21,4 @@ Four phases — do not skip. Update the active `specs/bugs/BUG-*.md` file at eac
|
|
|
21
21
|
|
|
22
22
|
## Verify
|
|
23
23
|
|
|
24
|
-
→ verify: `
|
|
24
|
+
→ verify: `[ "$(grep -lE 'Reproduce' specs/bugs/BUG-*.md 2>/dev/null | grep -cv "\.okf\.md$")" -ge 1 ]`
|
|
@@ -58,7 +58,7 @@ List every artifact found matching the detected framework. Present the list to t
|
|
|
58
58
|
|
|
59
59
|
See [REFERENCE.md](../../../skills/migrate-spec/REFERENCE.md) — `Detected: GSD...`
|
|
60
60
|
|
|
61
|
-
→ verify: `
|
|
61
|
+
→ verify: `test -d specs && test -w specs`
|
|
62
62
|
|
|
63
63
|
### Step 3 — Transform (one artifact at a time, show diffs)
|
|
64
64
|
|
|
@@ -94,9 +94,9 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](../../../skills/migrate-sp
|
|
|
94
94
|
|
|
95
95
|
> **HARD GATE** — Never overwrite an existing `specs/` file without explicit user confirmation. Merge into it if it exists; don't clobber.
|
|
96
96
|
>
|
|
97
|
-
> → verify: `git
|
|
97
|
+
> → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
|
|
98
98
|
|
|
99
|
-
→ verify: `ls specs/*.md 2>/dev/null |
|
|
99
|
+
→ verify: `test -d specs && [ "$(ls specs/*.md specs/*.yaml 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]`
|
|
100
100
|
|
|
101
101
|
### Step 4 — Generate state.yaml
|
|
102
102
|
|