bigpowers 2.59.9 → 2.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/.mcp.json +9 -0
  2. package/.pi/package.json +2 -2
  3. package/.pi/prompts/develop-tdd.md +1 -0
  4. package/.pi/prompts/gate-trace.md +1 -0
  5. package/.pi/prompts/orchestrate-project.md +1 -1
  6. package/.pi/prompts/plan-tests.md +74 -0
  7. package/.pi/prompts/plan-work.md +14 -1
  8. package/.pi/prompts/verify-work.md +14 -5
  9. package/.pi/skills/develop-tdd/SKILL.md +1 -0
  10. package/.pi/skills/gate-trace/SKILL.md +1 -0
  11. package/.pi/skills/orchestrate-project/SKILL.md +1 -1
  12. package/.pi/skills/plan-tests/SKILL.md +76 -0
  13. package/.pi/skills/plan-work/SKILL.md +14 -1
  14. package/.pi/skills/verify-work/SKILL.md +14 -5
  15. package/CHANGELOG.md +14 -0
  16. package/CONVENTIONS.md +5 -1
  17. package/README.md +1 -1
  18. package/SKILL-INDEX.md +1 -1
  19. package/bigpowers-mcp/build/config.d.ts +7 -0
  20. package/bigpowers-mcp/build/config.js +35 -0
  21. package/bigpowers-mcp/build/config.js.map +1 -0
  22. package/bigpowers-mcp/build/index.d.ts +2 -0
  23. package/bigpowers-mcp/build/index.js +20 -0
  24. package/bigpowers-mcp/build/index.js.map +1 -0
  25. package/bigpowers-mcp/build/lib/git-context.d.ts +12 -0
  26. package/bigpowers-mcp/build/lib/git-context.js +91 -0
  27. package/bigpowers-mcp/build/lib/git-context.js.map +1 -0
  28. package/bigpowers-mcp/build/lib/graph/builder.d.ts +4 -0
  29. package/bigpowers-mcp/build/lib/graph/builder.js +85 -0
  30. package/bigpowers-mcp/build/lib/graph/builder.js.map +1 -0
  31. package/bigpowers-mcp/build/lib/graph/store.d.ts +11 -0
  32. package/bigpowers-mcp/build/lib/graph/store.js +77 -0
  33. package/bigpowers-mcp/build/lib/graph/store.js.map +1 -0
  34. package/bigpowers-mcp/build/lib/graph/types.d.ts +24 -0
  35. package/bigpowers-mcp/build/lib/graph/types.js +2 -0
  36. package/bigpowers-mcp/build/lib/graph/types.js.map +1 -0
  37. package/bigpowers-mcp/build/lib/paths.d.ts +8 -0
  38. package/bigpowers-mcp/build/lib/paths.js +40 -0
  39. package/bigpowers-mcp/build/lib/paths.js.map +1 -0
  40. package/bigpowers-mcp/build/lib/phase-map.d.ts +3 -0
  41. package/bigpowers-mcp/build/lib/phase-map.js +77 -0
  42. package/bigpowers-mcp/build/lib/phase-map.js.map +1 -0
  43. package/bigpowers-mcp/build/lib/skill-parser.d.ts +31 -0
  44. package/bigpowers-mcp/build/lib/skill-parser.js +159 -0
  45. package/bigpowers-mcp/build/lib/skill-parser.js.map +1 -0
  46. package/bigpowers-mcp/build/lib/validate-skill.d.ts +13 -0
  47. package/bigpowers-mcp/build/lib/validate-skill.js +62 -0
  48. package/bigpowers-mcp/build/lib/validate-skill.js.map +1 -0
  49. package/bigpowers-mcp/build/tools/index.d.ts +9 -0
  50. package/bigpowers-mcp/build/tools/index.js +172 -0
  51. package/bigpowers-mcp/build/tools/index.js.map +1 -0
  52. package/bigpowers-mcp/package-lock.json +3685 -0
  53. package/bigpowers-mcp/package.json +30 -0
  54. package/bigpowers-mcp/src/config.ts +44 -0
  55. package/bigpowers-mcp/src/index.ts +23 -0
  56. package/bigpowers-mcp/src/lib/git-context.ts +98 -0
  57. package/bigpowers-mcp/src/lib/graph/builder.ts +95 -0
  58. package/bigpowers-mcp/src/lib/graph/store.ts +87 -0
  59. package/bigpowers-mcp/src/lib/graph/types.ts +28 -0
  60. package/bigpowers-mcp/src/lib/paths.ts +47 -0
  61. package/bigpowers-mcp/src/lib/phase-map.ts +77 -0
  62. package/bigpowers-mcp/src/lib/skill-parser.ts +191 -0
  63. package/bigpowers-mcp/src/lib/validate-skill.ts +90 -0
  64. package/bigpowers-mcp/src/tools/index.ts +225 -0
  65. package/bigpowers-mcp/test/catalog.test.ts +121 -0
  66. package/bigpowers-mcp/test/fixtures/graph/test-graph.jsonl +5 -0
  67. package/bigpowers-mcp/test/fixtures/skills/broken-link/SKILL.md +11 -0
  68. package/bigpowers-mcp/test/fixtures/skills/missing-verify/SKILL.md +9 -0
  69. package/bigpowers-mcp/test/fixtures/skills/valid-skill/SKILL.md +14 -0
  70. package/bigpowers-mcp/tsconfig.json +16 -0
  71. package/bigpowers-mcp/vitest.config.ts +8 -0
  72. package/package.json +1 -1
  73. package/scripts/check-blind-spots.sh +5 -4
  74. package/scripts/lib/blind-spots.py +37 -1
  75. package/skills/develop-tdd/SKILL.md +1 -0
  76. package/skills/gate-trace/SKILL.md +1 -0
  77. package/skills/orchestrate-project/SKILL.md +1 -1
  78. package/skills/plan-tests/REFERENCE.md +31 -0
  79. package/skills/plan-tests/SKILL.md +42 -0
  80. package/skills/plan-work/REFERENCE.md +13 -0
  81. package/skills/plan-work/SKILL.md +1 -1
  82. package/skills/verify-work/SKILL.md +14 -5
  83. package/skills-lock.json +10 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.59.9",
3
+ "version": "2.61.0",
4
4
  "description": "73 agent skills synthesizing 17 years of software engineering discipline into a prescriptive methodology for solo developers",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -2,10 +2,11 @@
2
2
  # story: e38s04
3
3
  # check-blind-spots.sh — TEA-inspired heuristic blind-spot detector.
4
4
  # Thin bash wrapper — the detection engine lives in scripts/lib/blind-spots.py.
5
- # Reads execution-status.yaml + traceability-matrix.json, runs 6 structural
5
+ # Reads execution-status.yaml + traceability-matrix.json, runs 7 structural
6
6
  # quality checks, and emits specs/blind-spots.json.
7
+ # Also detects SC- scenario gaps (sc-gap).
7
8
  #
8
- # Checks: verify-gap, test-gap, epic-orphan, stale-tag, double-tag, bootstrap-testless.
9
+ # Checks: verify-gap, test-gap, epic-orphan, stale-tag, double-tag, bootstrap-testless, sc-gap.
9
10
  # Severities: HIGH / MEDIUM / LOW. Exit 1 on HIGH findings.
10
11
 
11
12
  set -euo pipefail
@@ -23,12 +24,12 @@ while [[ $# -gt 0 ]]; do
23
24
  cat <<'USAGE'
24
25
  Usage: check-blind-spots.sh [flags]
25
26
 
26
- Run 6 heuristic blind-spot checks on the codebase.
27
+ Run 7 heuristic blind-spot checks on the codebase.
27
28
 
28
29
  Flags:
29
30
  --help Print this message and exit.
30
31
 
31
- Checks: verify-gap, test-gap, epic-orphan, stale-tag, double-tag, bootstrap-testless.
32
+ Checks: verify-gap, test-gap, epic-orphan, stale-tag, double-tag, bootstrap-testless, sc-gap.
32
33
  Output: specs/blind-spots.json
33
34
  Exit: 0 = no HIGH findings, 1 = HIGH findings or input files missing.
34
35
  USAGE
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """story: e38s04 — TEA-inspired heuristic blind-spot detector (Python engine).
3
3
 
4
- Reads execution-status.yaml + traceability-matrix.json, runs 6 structural
4
+ Reads execution-status.yaml + traceability-matrix.json, runs 7 structural
5
5
  quality checks, and emits specs/blind-spots.json.
6
6
 
7
7
  Usage: called by scripts/check-blind-spots.sh with positional args:
@@ -193,6 +193,42 @@ for sid in sorted(dev_status.keys()):
193
193
  "remediation": f"Add test files for: {', '.join(code_only[:3])}"
194
194
  })
195
195
 
196
+ # Check G: sc-gap
197
+ TECH_ARCH_DIR = ROOT / "specs" / "tech-architecture"
198
+ if EPICS_DIR.exists():
199
+ for epic_dir in sorted(EPICS_DIR.iterdir()):
200
+ if not epic_dir.is_dir() or epic_dir.name == "archive": continue
201
+ epic_match = re.match(r"(e\d+)", epic_dir.name)
202
+ if not epic_match: continue
203
+ epic_id = epic_match.group(1)
204
+
205
+ test_plan = TECH_ARCH_DIR / f"{epic_id}-TEST_PLAN_LATEST.md"
206
+ if not test_plan.exists(): continue
207
+
208
+ for task_file in sorted(epic_dir.glob("e*s[0-9]*-tasks.yaml")):
209
+ sid_match = re.match(r"(e\d+s\d+)", task_file.name)
210
+ if not sid_match: continue
211
+ sid = sid_match.group(1)
212
+
213
+ content = task_file.read_text(encoding="utf-8")
214
+ if "risk: P0" in content:
215
+ found_sc = False
216
+ for f in tagged_files.get(sid, []):
217
+ fpath = ROOT / f
218
+ if fpath.exists():
219
+ fcontent = fpath.read_text(encoding="utf-8", errors="ignore")
220
+ if re.search(rf"SC-{sid}-P0", fcontent):
221
+ found_sc = True
222
+ break
223
+ if not found_sc:
224
+ findings.append({
225
+ "check": "sc-gap",
226
+ "story_id": sid,
227
+ "severity": "MEDIUM",
228
+ "description": f"P0 story {sid} has a TEST_PLAN but no `scenario: SC-{sid}-P0-*` tags found in its implementing files",
229
+ "remediation": f"Add `// scenario: SC-{sid}-P0-XX` tags to the test files for this story"
230
+ })
231
+
196
232
  # Deduplicate
197
233
  seen: set[tuple] = set()
198
234
  deduped: list[dict] = []
@@ -37,6 +37,7 @@ If you catch yourself thinking these, stop and reconsider — you are likely dev
37
37
  ### 1. Planning
38
38
 
39
39
  - [ ] Read active `specs/epics/*/epic.yaml` story tasks or `specs/bugs/BUG-*.md` — understand verify steps
40
+ - [ ] If `specs/tech-architecture/eNN-TEST_PLAN_LATEST.md` exists for the active epic, read it before writing the first test. Implement P0 scenarios (`SC-*-P0-*`) before P1. P2/P3 scenarios are optional per time budget.
40
41
  - [ ] Confirm interface changes and behaviors to test (prioritize)
41
42
  - [ ] Design interfaces for testability — identify [deep modules](deep-modules.md) opportunities
42
43
  - [ ] Get user approval on the plan
@@ -18,6 +18,7 @@ Deterministic quality gate that combines traceability coverage and blind-spot da
18
18
  | R2 | Any story done but no verify evidence | CONCERNS |
19
19
  | R3 | P0 story (top WSJF quartile) with 0% coverage | FAIL |
20
20
  | R4 | Overall coverage < 60% | CONCERNS |
21
+ | R6 | P0 story + eNN-TEST_PLAN_LATEST.md exists + zero SC-eNNsYY-P0-* in test files | CONCERNS |
21
22
  | R5 | Overall ≥ 80% + no critical gaps + all verify → PASS | PASS |
22
23
 
23
24
  ## Oracle Confidence Downgrade
@@ -47,7 +47,7 @@ See [REFERENCE.md](REFERENCE.md) for detailed phase specifications and gate type
47
47
 
48
48
  1. **Maintains state.yaml** — Tracks current phase, `active_epic`, `active_flow`, decisions, risks.
49
49
  2. **Spawns appropriate skills** — Routes by `model:` frontmatter. Decisions pass only via `specs/state.yaml` `handoff` between spawns.
50
- 3. **Methodology lenses** — If `specs/tech-architecture/TEST_PLAN_LATEST.md` or ADRs exist, apply at phase gates.
50
+ 3. **Methodology lenses** — If `specs/tech-architecture/e*-TEST_PLAN_LATEST.md` or ADRs exist, apply at phase gates.
51
51
  4. **Enforces gates** — Hard stops if success criteria not met.
52
52
  5. **The Gatekeeper** — Between stories in BUILD: read `specs/execution-status.yaml`; previous story must be `done` before starting the next; use `build-epic` for the 8-step epic cycle.
53
53
  6. **Pauses for confirmation** — After each phase, asks "Ready to proceed?".
@@ -0,0 +1,31 @@
1
+ # Plan Tests — Reference
2
+
3
+ ## Test Plan Template (`specs/tech-architecture/eNN-TEST_PLAN_LATEST.md`)
4
+
5
+ ```markdown
6
+ # Test Design: [eNN-slug]
7
+
8
+ ## 1. Risk Matrix & Scenarios
9
+ | Scenario ID | Behavior Description | Risk | Test Level | Target File/Module |
10
+ |-------------|----------------------|------|------------|--------------------|
11
+ | SC-P0-01 | Primary checkout | P0 | Integration | checkout.spec.ts |
12
+
13
+ ## 2. Fixture Architecture & Isolation
14
+ - Data Factories: (e.g. UserFactory)
15
+ - Network Intercepts: (e.g. MSW handlers)
16
+ - Database State: (e.g. in-memory SQLite)
17
+
18
+ ## 3. NFR Verification
19
+ | NFR Type | Requirement | Verification Command |
20
+ |----------|-------------|----------------------|
21
+ | Perf | < 200ms | `npm run test:perf` |
22
+
23
+ ## 4. Out of Scope
24
+ - [Explicitly excluded testing areas]
25
+ ```
26
+
27
+ ## Fixture Planning Guidance
28
+
29
+ - **Data Factories**: Prefer factory functions over manual object construction.
30
+ - **Network Intercepts**: For frontend integration tests, use tools like Mock Service Worker (MSW) to intercept and mock HTTP requests.
31
+ - **Database State**: For backend tests, use a clean database state per test or an in-memory database to ensure isolation.
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: plan-tests
3
+ description: "Design a risk-scaled test architecture for an epic before implementation begins. Produces prioritized scenarios, test level distribution, and fixture plans based on TEA and bigpowers principles."
4
+ model: opus
5
+ effort: standard
6
+ ---
7
+
8
+ # Plan Tests
9
+
10
+ > **Spine position:** Between `slice-tasks` and `plan-work` for epics with `risk: P0|P1`. Optional (can be waived in `state.yaml`) for P2/P3.
11
+
12
+ Bridges the gap between slicing and planning by systematically designing the test suite as a first-class system. Produces `specs/tech-architecture/eNN-TEST_PLAN_LATEST.md`.
13
+
14
+ ## Pre-flight
15
+ - Read `specs/epics/eNN-*/` story list.
16
+
17
+ ## Core Workflow
18
+ 1. **Analyze Epic**: Read sliced stories in the active epic capsule.
19
+ 2. **Risk Assessment**: Map behaviors to P0–P3 risk tiers.
20
+ 3. **Level Strategy**: Classify each scenario (Unit, Integration, E2E).
21
+ 4. **Fixture Design**: Plan factories, network intercepts, mocks (see REFERENCE.md).
22
+ 5. **NFR Plan**: Define verifiable commands for Non-Functional Requirements. Skip if `--lite`.
23
+ 6. **Publish**: Generate `specs/tech-architecture/eNN-TEST_PLAN_LATEST.md`.
24
+
25
+ ## Hard Gates & Guardrails
26
+ - **DO NOT** write test code or production code during this skill.
27
+ - Scenario ID format MUST be: `SC-eNNsYY-P{0|1|2|3}-NN`.
28
+ - `plan-work` MUST reference these scenario IDs in its §17 Gherkin acceptance criteria.
29
+ - Default to pushing tests to the lowest possible level.
30
+
31
+ ## Execution Modes
32
+ - `$bmad plan-tests`: Standard execution.
33
+ - `$bmad plan-tests --lite`: Skips NFRs and complex fixture planning.
34
+
35
+ ## Verify
36
+
37
+ → verify: `test -f specs/tech-architecture/$(echo $EPIC | sed "s|.*/||")-TEST_PLAN_LATEST.md && echo OK`
38
+
39
+ ## Handoff
40
+
41
+ Gate: READY -> next: plan-work
42
+ Writes: state.yaml handoff.next_skill = plan-work
@@ -17,6 +17,7 @@ tasks:
17
17
  - id: 1
18
18
  description: "Add login form component tests"
19
19
  verify: "npm test -- login-form.test.tsx"
20
+ risk: P1
20
21
  status: todo
21
22
  ```
22
23
 
@@ -28,6 +29,7 @@ Update `specs/epics/<capsule>/epic.yaml` manifest to list the story and its BCPs
28
29
  ### Story [X.Y]: [title] — Implementation Steps
29
30
 
30
31
  **type:** feat | fix | refactor
32
+ **risk:** P0 | P1 | P2 | P3
31
33
  **context:** domain | infra
32
34
  **Context**: [One paragraph: what this story implements and why]
33
35
 
@@ -76,6 +78,17 @@ N. <What to do> → verify: <runnable command that proves it worked>
76
78
 
77
79
  ## Sub-operations
78
80
 
81
+ ### Risk Assignment Heuristics
82
+
83
+ Every task and story MUST be assigned a `risk:` level (P0, P1, P2, P3). When `specs/tech-architecture/eNN-TEST_PLAN_LATEST.md` exists for the epic, defer to its scenario risk mapping (`SC-eNNsYY-P0-NN`). Otherwise, apply these heuristics based on BCP and story type:
84
+
85
+ - **P0**: Critical path, data loss risk, auth/security boundary, external integration, or high BCP (≥ 5).
86
+ - **P1**: Core feature logic, state mutations, standard business value (BCP 3-4).
87
+ - **P2**: Utility functions, UI layout changes, display-only data, low risk (BCP 2).
88
+ - **P3**: Documentation, cosmetic tweaks, CSS variables, zero behavioral change (BCP 1).
89
+
90
+ `verify-work` scales its UAT depth based on this field.
91
+
79
92
  ### Define Success
80
93
 
81
94
  Before planning, convert task statements into observable "step → verify: <cmd>" pairs:
@@ -44,7 +44,7 @@ If this plan touches an existing module, run `assess-impact` first to understand
44
44
 
45
45
  2. **Draft steps** — Break implementation into the smallest possible steps where each step leaves the codebase working, has one observable outcome, and can be verified with a single command. Red-flag check: name any rationalization you caught before moving to step 3.
46
46
 
47
- 3. **Write capsule story spec + tasks** — Output two files inside the active epic capsule. See [REFERENCE.md](REFERENCE.md) for file formats and the plan-template. Each task optionally includes a `security:` field (`none` / `low` / `medium` / `high`) sourced from the epic's `specs/security/epics/<id>/THREAT_MODEL.md`. Tasks with `security: medium` or `security: high` MUST include "no new security findings in affected paths" in their verify steps.
47
+ 3. **Write capsule story spec + tasks** — Output two files inside the active epic capsule. See [REFERENCE.md](REFERENCE.md) for file formats and the plan-template. Each task MUST include a `risk:` field (`P0` | `P1` | `P2` | `P3`) based on BCP + story type heuristics (see REFERENCE.md). If a test plan artifact (`specs/tech-architecture/eNN-TEST_PLAN_LATEST.md`) exists, read it and inherit its P0/P1 risk classifications and scenario IDs (`SC-eNNsYY-P0-NN`). Each task optionally includes a `security:` field (`none` / `low` / `medium` / `high`) sourced from the epic's `specs/security/epics/<id>/THREAT_MODEL.md`. Tasks with `security: medium` or `security: high` MUST include "no new security findings in affected paths" in their verify steps.
48
48
 
49
49
  4. **Verify step format** — Every step MUST follow: `N. <What to do> → verify: <runnable command>`. See [REFERENCE.md](REFERENCE.md) for good/bad examples.
50
50
 
@@ -20,25 +20,34 @@ Review answers "is the code good?"; Verify answers "does the built thing do what
20
20
  - --smoke: Cold-start only plus one happy-path flow. Use for hotfixes.
21
21
  - --cli: CLI tool verification — replaces cold-start with binary smoke checklist. Use for CLI tools with no server process.
22
22
 
23
+ ## Risk-Scaled Depth
24
+
25
+ `verify-work` reads the `risk:` field from the story template (defaults to `P1` if absent) to scale verification rigor:
26
+ - **P0**: Full verify-work multi-phase + `security-review` (step 5) + NFR evidence gate (step 5b).
27
+ - **P1**: Standard verify-work (build, test, lint, step-by-step manual).
28
+ - **P2**: Smoke, typecheck, lint only. Skip tests, security scan, and step-by-step manual UAT.
29
+ - **P3**: Typecheck and lint only. Skip smoke, tests, security scan, and step-by-step manual UAT.
30
+
23
31
  ## Process
24
32
 
25
33
  > **Timing:** `bash scripts/bp-timing.sh start verify-work` at invocation; `bash scripts/bp-timing.sh end verify-work` before handoff.
26
34
 
27
35
  0. **Branch check** — must not be `main`/`master`.
28
36
 
29
- 1. Read active story tasks from `specs/epics/<capsule>/eNNsYY-tasks.yaml` and story spec from `specs/epics/<capsule>/eNNsYY-<slug>.md` (countable-story-format, Gherkin in §17).
37
+ 1. Read active story tasks from `specs/epics/<capsule>/eNNsYY-tasks.yaml` and story spec from `specs/epics/<capsule>/eNNsYY-<slug>.md` (countable-story-format, Gherkin in §17). Note the `risk:` level (`P0`–`P3`).
30
38
  1a. **Pre-UAT verify validation** — for each task's `verify:` command, run it and detect pattern mismatches before UAT begins. If a grep/awk/jq command fails, check whether the pattern is wrong vs. a genuine failure:
31
39
  ```bash
32
40
  # For a failing grep -q 'PATTERN' FILE, check what is actually in FILE
33
41
  grep 'PATTERN' FILE || grep -n '' FILE | head -20 # show nearest lines
34
42
  ```
35
43
  Report: `"Pattern 'X' not found. Nearest match: 'Y' at line N"` and ask `"Update verify command? [Y/n]"`. Fix before proceeding — a mismatched verify command produces false failures during UAT.
36
- 2. **Cold-start smoke** (if app): stop server, clear caches, boot from scratch.
44
+ 2. **Cold-start smoke** (if app; skip if P3): stop server, clear caches, boot from scratch.
37
45
  3. **AGENTS.md preflight** — before running default checks, call `bash scripts/bp-read-agents.sh` to detect project-specific commands. If `BP_PREFLIGHT` is set, run it instead of the default mechanical gates (or in addition to them if the project requires both). Output: `"Using preflight from AGENTS.md: <cmd>"`. Fall back to `CLAUDE.md` commands if AGENTS.md is absent.
38
- 4. Mechanical gates: build → typecheck → lint → tests (from `CLAUDE.md` or AGENTS.md).
39
- 5. **Security scan** — run `security-review` against the git diff (working tree vs merge-base). Parse findings report. If any HIGH findings with confidence ≥ 8 exist → **block the gate**. Write findings to `specs/security/REVIEW.md`. Allow documented exceptions via `specs/security/EXCEPTIONS.md`. MEDIUM/LOW findings warn but don't block.
46
+ 4. Mechanical gates: build → typecheck → lint → tests (from `CLAUDE.md` or AGENTS.md). Skip tests if P2/P3.
47
+ 5. **Security scan** (skip if P2/P3) — run `security-review` against the git diff (working tree vs merge-base). Parse findings report. If any HIGH findings with confidence ≥ 8 exist → **block the gate**. Write findings to `specs/security/REVIEW.md`. Allow documented exceptions via `specs/security/EXCEPTIONS.md`. MEDIUM/LOW findings warn but don't block.
40
48
  5a. **Blind-spot check** — run `bash scripts/check-blind-spots.sh`. This detects structural quality gaps (verify-gap, test-gap, stale-tag, etc.) beyond percentage coverage. If any HIGH-severity findings exist → **block the verify-work PASS gate**. Findings are written to `specs/blind-spots.json`. MEDIUM/LOW findings warn but don't block.
41
- 6. **Step-by-step UAT** — one user-observable action at a time.
49
+ 5b. **NFR Evidence Gate** (P0 only) — Produces go/no-go output on three dimensions: Performance (response time, throughput), Reliability (error rate, recovery), and Operability (logging, health checks). Reads thresholds from `specs/tech-architecture/eNN-TEST_PLAN_LATEST.md` and writes evidence as OKF verification-report bundles to `specs/verifications/NFR-eNNsYY.json`. FAIL on any dimension blocks the gate.
50
+ 6. **Step-by-step UAT** (skip if P2/P3) — one user-observable action at a time.
42
51
  7. **Gaps loop** — failures → log → `plan-work` → re-verify. Unaddressed HIGH findings from step 5 feed into this loop alongside other quality gaps.
43
52
 
44
53
  ## Verify sub-operations
package/skills-lock.json CHANGED
@@ -78,7 +78,7 @@
78
78
  },
79
79
  "develop-tdd": {
80
80
  "description": "Test-driven development with red-green-refactor loop using vertical slices. Use for features (epic tasks) or bugs (specs/bugs/BUG-*.md).",
81
- "sha256": "63ae8ea76c99564f",
81
+ "sha256": "bd73cb58145ce1c1",
82
82
  "path": "skills/develop-tdd/SKILL.md"
83
83
  },
84
84
  "diagnose-root": {
@@ -128,7 +128,7 @@
128
128
  },
129
129
  "gate-trace": {
130
130
  "description": "\"Deterministic traceability quality gate — reads coverage matrix + blind-spot data, applies decision rules with oracle confidence downgrade, emits PASS/CONCERNS/FAIL/WAIVED verdict. Use before release-branch to gate merges on traceability.\"# story: e38s06",
131
- "sha256": "636810f46c6d0b93",
131
+ "sha256": "7326525dc3d5d51f",
132
132
  "path": "skills/gate-trace/SKILL.md"
133
133
  },
134
134
  "grill-me": {
@@ -183,7 +183,7 @@
183
183
  },
184
184
  "orchestrate-project": {
185
185
  "description": "Meta-skill that enforces the 6-phase core loop (discover → elaborate → plan → build → verify → release) with hard gates. Use to coordinate multi-phase projects with guaranteed quality checkpoints. One-time command for the entire project lifecycle.",
186
- "sha256": "ba15cd263bad8ddf",
186
+ "sha256": "4e53cd83ac296735",
187
187
  "path": "skills/orchestrate-project/SKILL.md"
188
188
  },
189
189
  "organize-workspace": {
@@ -201,9 +201,14 @@
201
201
  "sha256": "62dc272a091c8d7f",
202
202
  "path": "skills/plan-release/SKILL.md"
203
203
  },
204
+ "plan-tests": {
205
+ "description": "\"Design a risk-scaled test architecture for an epic before implementation begins. Produces prioritized scenarios, test level distribution, and fixture plans based on TEA and bigpowers principles.\"",
206
+ "sha256": "3f43a105b860105a",
207
+ "path": "skills/plan-tests/SKILL.md"
208
+ },
204
209
  "plan-work": {
205
210
  "description": "\"PLANNING SPINE STEP 3 of 3 — Plan the work: write detailed implementation tasks into the active epic capsule (specs/epics/eNN-slug/). Produces countable-story-format .md specs and runnable -tasks.yaml files. Use after slice-tasks (step 2). Not a substitute for scope-work (step 1) or slice-tasks (step 2).\"",
206
- "sha256": "4c30ce3c1c0b2895",
211
+ "sha256": "29792e9d4499cc1e",
207
212
  "path": "skills/plan-work/SKILL.md"
208
213
  },
209
214
  "publish-package": {
@@ -343,7 +348,7 @@
343
348
  },
344
349
  "verify-work": {
345
350
  "description": "Multi-phase UAT gate — cold-start smoke, build, typecheck, lint, tests, step-by-step manual verification, gaps-closure loop. Use after execute-plan or develop-tdd, before audit-code.",
346
- "sha256": "b2828b807467e5c7",
351
+ "sha256": "030622528b2bf5ed",
347
352
  "path": "skills/verify-work/SKILL.md"
348
353
  },
349
354
  "visual-dashboard": {