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.
Files changed (82) hide show
  1. package/.agents/skills/diagnose-root/SKILL.md +1 -1
  2. package/.agents/skills/migrate-spec/SKILL.md +3 -3
  3. package/.agents/skills/plan-work/SKILL.md +1 -1
  4. package/.agents/skills/security-review/SKILL.md +3 -1
  5. package/.agents/skills/smoke-test/SKILL.md +1 -1
  6. package/.agents/skills/trace-requirement/SKILL.md +1 -1
  7. package/.codebuddy/skills/diagnose-root/SKILL.md +1 -1
  8. package/.codebuddy/skills/migrate-spec/SKILL.md +3 -3
  9. package/.codebuddy/skills/plan-work/SKILL.md +1 -1
  10. package/.codebuddy/skills/security-review/SKILL.md +3 -1
  11. package/.codebuddy/skills/smoke-test/SKILL.md +1 -1
  12. package/.codebuddy/skills/trace-requirement/SKILL.md +1 -1
  13. package/.codex/skills/diagnose-root/SKILL.md +1 -1
  14. package/.codex/skills/migrate-spec/SKILL.md +3 -3
  15. package/.codex/skills/plan-work/SKILL.md +1 -1
  16. package/.codex/skills/security-review/SKILL.md +3 -1
  17. package/.codex/skills/smoke-test/SKILL.md +1 -1
  18. package/.codex/skills/trace-requirement/SKILL.md +1 -1
  19. package/.hermes/skills/diagnose-root/SKILL.md +1 -1
  20. package/.hermes/skills/migrate-spec/SKILL.md +3 -3
  21. package/.hermes/skills/plan-work/SKILL.md +1 -1
  22. package/.hermes/skills/security-review/SKILL.md +3 -1
  23. package/.hermes/skills/smoke-test/SKILL.md +1 -1
  24. package/.hermes/skills/trace-requirement/SKILL.md +1 -1
  25. package/.kilocode/rules/diagnose-root.md +1 -1
  26. package/.kilocode/rules/migrate-spec.md +3 -3
  27. package/.kilocode/rules/plan-work.md +1 -1
  28. package/.kilocode/rules/security-review.md +3 -1
  29. package/.kilocode/rules/smoke-test.md +1 -1
  30. package/.kilocode/rules/trace-requirement.md +1 -1
  31. package/.mimocode/skills/diagnose-root/SKILL.md +1 -1
  32. package/.mimocode/skills/migrate-spec/SKILL.md +3 -3
  33. package/.mimocode/skills/plan-work/SKILL.md +1 -1
  34. package/.mimocode/skills/security-review/SKILL.md +3 -1
  35. package/.mimocode/skills/smoke-test/SKILL.md +1 -1
  36. package/.mimocode/skills/trace-requirement/SKILL.md +1 -1
  37. package/.pi/package.json +1 -1
  38. package/.pi/prompts/diagnose-root.md +1 -1
  39. package/.pi/prompts/migrate-spec.md +3 -3
  40. package/.pi/prompts/plan-work.md +1 -1
  41. package/.pi/prompts/security-review.md +3 -1
  42. package/.pi/prompts/smoke-test.md +1 -1
  43. package/.pi/prompts/trace-requirement.md +1 -1
  44. package/.pi/skills/diagnose-root/SKILL.md +1 -1
  45. package/.pi/skills/migrate-spec/SKILL.md +3 -3
  46. package/.pi/skills/plan-work/SKILL.md +1 -1
  47. package/.pi/skills/security-review/SKILL.md +3 -1
  48. package/.pi/skills/smoke-test/SKILL.md +1 -1
  49. package/.pi/skills/trace-requirement/SKILL.md +1 -1
  50. package/.trae/skills/diagnose-root/SKILL.md +1 -1
  51. package/.trae/skills/migrate-spec/SKILL.md +3 -3
  52. package/.trae/skills/plan-work/SKILL.md +1 -1
  53. package/.trae/skills/security-review/SKILL.md +3 -1
  54. package/.trae/skills/smoke-test/SKILL.md +1 -1
  55. package/.trae/skills/trace-requirement/SKILL.md +1 -1
  56. package/.windsurf/rules/diagnose-root.md +1 -1
  57. package/.windsurf/rules/migrate-spec.md +3 -3
  58. package/.windsurf/rules/plan-work.md +1 -1
  59. package/.windsurf/rules/security-review.md +3 -1
  60. package/.windsurf/rules/smoke-test.md +1 -1
  61. package/.windsurf/rules/trace-requirement.md +1 -1
  62. package/.zcode/skills/diagnose-root/SKILL.md +1 -1
  63. package/.zcode/skills/migrate-spec/SKILL.md +3 -3
  64. package/.zcode/skills/plan-work/SKILL.md +1 -1
  65. package/.zcode/skills/security-review/SKILL.md +3 -1
  66. package/.zcode/skills/smoke-test/SKILL.md +1 -1
  67. package/.zcode/skills/trace-requirement/SKILL.md +1 -1
  68. package/CHANGELOG.md +15 -0
  69. package/package.json +1 -1
  70. package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
  71. package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
  72. package/scripts/run-skill-verify.sh +97 -10
  73. package/scripts/verify-cwe-fixture-sync.sh +88 -0
  74. package/skills/diagnose-root/SKILL.md +1 -1
  75. package/skills/migrate-spec/SKILL.md +3 -3
  76. package/skills/plan-work/SKILL.md +1 -1
  77. package/skills/security-review/SKILL.md +3 -1
  78. package/skills/security-review/fixtures/CWE-639-idor-negative.go +48 -0
  79. package/skills/security-review/fixtures/CWE-639-idor-positive.go +29 -0
  80. package/skills/smoke-test/SKILL.md +1 -1
  81. package/skills/trace-requirement/SKILL.md +1 -1
  82. 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: `BUG_FILE=$(ls -t specs/bugs/BUG-*.md 2>/dev/null | head -1); test -n "$BUG_FILE" && [ "$(grep -cE 'Reproduce|Isolate|Hypothesize|Verify' "$BUG_FILE")" -ge 4 ]`
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: `find . -maxdepth 4 \( -name "ROADMAP.md" -o -name "spec.md" -o -name "prd.md" -o -name "REQUIREMENTS.md" \) 2>/dev/null | grep -v ".git" | head -15`
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 diff --name-only HEAD -- specs/ 2>/dev/null | head -20`
97
+ > → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
98
98
 
99
- → verify: `ls specs/*.md 2>/dev/null | head -15`
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 specs/epics/e45-quality-core/ 2>&1 | head -5`
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 -qv 'See \[REFERENCE.md\]' skills/smoke-test/SKILL.md && echo OK`
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 -rn "story: " . --include="*.ts" --include="*.sh" | wc -l`
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: `BUG_FILE=$(ls -t specs/bugs/BUG-*.md 2>/dev/null | head -1); test -n "$BUG_FILE" && [ "$(grep -cE 'Reproduce|Isolate|Hypothesize|Verify' "$BUG_FILE")" -ge 4 ]`
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: `find . -maxdepth 4 \( -name "ROADMAP.md" -o -name "spec.md" -o -name "prd.md" -o -name "REQUIREMENTS.md" \) 2>/dev/null | grep -v ".git" | head -15`
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 diff --name-only HEAD -- specs/ 2>/dev/null | head -20`
97
+ > → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
98
98
 
99
- → verify: `ls specs/*.md 2>/dev/null | head -15`
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 specs/epics/e45-quality-core/ 2>&1 | head -5`
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 -qv 'See \[REFERENCE.md\]' skills/smoke-test/SKILL.md && echo OK`
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 -rn "story: " . --include="*.ts" --include="*.sh" | wc -l`
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: `BUG_FILE=$(ls -t specs/bugs/BUG-*.md 2>/dev/null | head -1); test -n "$BUG_FILE" && [ "$(grep -cE 'Reproduce|Isolate|Hypothesize|Verify' "$BUG_FILE")" -ge 4 ]`
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: `find . -maxdepth 4 \( -name "ROADMAP.md" -o -name "spec.md" -o -name "prd.md" -o -name "REQUIREMENTS.md" \) 2>/dev/null | grep -v ".git" | head -15`
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 diff --name-only HEAD -- specs/ 2>/dev/null | head -20`
97
+ > → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
98
98
 
99
- → verify: `ls specs/*.md 2>/dev/null | head -15`
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 specs/epics/e45-quality-core/ 2>&1 | head -5`
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 -qv 'See \[REFERENCE.md\]' skills/smoke-test/SKILL.md && echo OK`
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 -rn "story: " . --include="*.ts" --include="*.sh" | wc -l`
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: `BUG_FILE=$(ls -t specs/bugs/BUG-*.md 2>/dev/null | head -1); test -n "$BUG_FILE" && [ "$(grep -cE 'Reproduce|Isolate|Hypothesize|Verify' "$BUG_FILE")" -ge 4 ]`
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: `find . -maxdepth 4 \( -name "ROADMAP.md" -o -name "spec.md" -o -name "prd.md" -o -name "REQUIREMENTS.md" \) 2>/dev/null | grep -v ".git" | head -15`
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 diff --name-only HEAD -- specs/ 2>/dev/null | head -20`
97
+ > → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
98
98
 
99
- → verify: `ls specs/*.md 2>/dev/null | head -15`
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 specs/epics/e45-quality-core/ 2>&1 | head -5`
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 -qv 'See \[REFERENCE.md\]' skills/smoke-test/SKILL.md && echo OK`
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 -rn "story: " . --include="*.ts" --include="*.sh" | wc -l`
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: `BUG_FILE=$(ls -t specs/bugs/BUG-*.md 2>/dev/null | head -1); test -n "$BUG_FILE" && [ "$(grep -cE 'Reproduce|Isolate|Hypothesize|Verify' "$BUG_FILE")" -ge 4 ]`
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: `find . -maxdepth 4 \( -name "ROADMAP.md" -o -name "spec.md" -o -name "prd.md" -o -name "REQUIREMENTS.md" \) 2>/dev/null | grep -v ".git" | head -15`
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 diff --name-only HEAD -- specs/ 2>/dev/null | head -20`
97
+ > → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
98
98
 
99
- → verify: `ls specs/*.md 2>/dev/null | head -15`
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 specs/epics/e45-quality-core/ 2>&1 | head -5`
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 -qv 'See \[REFERENCE.md\]' skills/smoke-test/SKILL.md && echo OK`
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 -rn "story: " . --include="*.ts" --include="*.sh" | wc -l`
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: `BUG_FILE=$(ls -t specs/bugs/BUG-*.md 2>/dev/null | head -1); test -n "$BUG_FILE" && [ "$(grep -cE 'Reproduce|Isolate|Hypothesize|Verify' "$BUG_FILE")" -ge 4 ]`
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: `find . -maxdepth 4 \( -name "ROADMAP.md" -o -name "spec.md" -o -name "prd.md" -o -name "REQUIREMENTS.md" \) 2>/dev/null | grep -v ".git" | head -15`
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 diff --name-only HEAD -- specs/ 2>/dev/null | head -20`
97
+ > → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
98
98
 
99
- → verify: `ls specs/*.md 2>/dev/null | head -15`
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 specs/epics/e45-quality-core/ 2>&1 | head -5`
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 -qv 'See \[REFERENCE.md\]' skills/smoke-test/SKILL.md && echo OK`
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 -rn "story: " . --include="*.ts" --include="*.sh" | wc -l`
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.86.0",
3
+ "version": "2.86.2",
4
4
  "description": "80 skills — 73 agent skills synthesizing 17 years of software engineering discipline into a prescriptive methodology for solo developers",
5
5
  "keywords": [
6
6
  "pi-package"
@@ -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: `BUG_FILE=$(ls -t specs/bugs/BUG-*.md 2>/dev/null | head -1); test -n "$BUG_FILE" && [ "$(grep -cE 'Reproduce|Isolate|Hypothesize|Verify' "$BUG_FILE")" -ge 4 ]`
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: `find . -maxdepth 4 \( -name "ROADMAP.md" -o -name "spec.md" -o -name "prd.md" -o -name "REQUIREMENTS.md" \) 2>/dev/null | grep -v ".git" | head -15`
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 diff --name-only HEAD -- specs/ 2>/dev/null | head -20`
96
+ > → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
97
97
 
98
- → verify: `ls specs/*.md 2>/dev/null | head -15`
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
 
@@ -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 specs/epics/e45-quality-core/ 2>&1 | head -5`
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 -qv 'See \[REFERENCE.md\]' skills/smoke-test/SKILL.md && echo OK`
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 -rn "story: " . --include="*.ts" --include="*.sh" | wc -l`
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: `BUG_FILE=$(ls -t specs/bugs/BUG-*.md 2>/dev/null | head -1); test -n "$BUG_FILE" && [ "$(grep -cE 'Reproduce|Isolate|Hypothesize|Verify' "$BUG_FILE")" -ge 4 ]`
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: `find . -maxdepth 4 \( -name "ROADMAP.md" -o -name "spec.md" -o -name "prd.md" -o -name "REQUIREMENTS.md" \) 2>/dev/null | grep -v ".git" | head -15`
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 diff --name-only HEAD -- specs/ 2>/dev/null | head -20`
97
+ > → verify: `git rev-parse --git-dir >/dev/null 2>&1 && test -d specs`
98
98
 
99
- → verify: `ls specs/*.md 2>/dev/null | head -15`
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