@ngocsangairvds/vsaf 5.1.4 → 5.1.6
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/package.json +1 -1
- package/packages/cli/dist/adapters/antigravity.d.ts.map +1 -1
- package/packages/cli/dist/adapters/antigravity.js +7 -2
- package/packages/cli/dist/adapters/antigravity.js.map +1 -1
- package/packages/cli/dist/adapters/codex.js +1 -1
- package/packages/cli/dist/adapters/codex.js.map +1 -1
- package/packages/cli/dist/adapters/cursor.js +1 -1
- package/packages/cli/dist/adapters/cursor.js.map +1 -1
- package/packages/cli/dist/commands/install.d.ts.map +1 -1
- package/packages/cli/dist/commands/install.js +21 -1
- package/packages/cli/dist/commands/install.js.map +1 -1
- package/packages/cli/dist/commands/skill.d.ts.map +1 -1
- package/packages/cli/dist/commands/skill.js +5 -2
- package/packages/cli/dist/commands/skill.js.map +1 -1
- package/skills/sdlc/architecture/current-state/SKILL.md +10 -0
- package/skills/sdlc/architecture/current-state/step.md +13 -0
- package/skills/sdlc/architecture/decision/SKILL.md +10 -0
- package/skills/sdlc/architecture/decision/step.md +21 -0
- package/skills/sdlc/architecture/epics/SKILL.md +10 -0
- package/skills/sdlc/architecture/epics/step.md +34 -0
- package/skills/sdlc/architecture/grill/SKILL.md +10 -0
- package/skills/sdlc/architecture/grill/step.md +26 -0
- package/skills/sdlc/architecture/prereq/SKILL.md +10 -0
- package/skills/sdlc/architecture/prereq/step.md +16 -0
- package/skills/sdlc/architecture/readiness/SKILL.md +10 -0
- package/skills/sdlc/architecture/readiness/step.md +76 -0
- package/skills/sdlc/complete/context/SKILL.md +10 -0
- package/skills/sdlc/complete/context/step.md +14 -0
- package/skills/sdlc/complete/knowledge/SKILL.md +10 -0
- package/skills/sdlc/complete/knowledge/step.md +22 -0
- package/skills/sdlc/complete/prereq/SKILL.md +10 -0
- package/skills/sdlc/complete/prereq/step.md +16 -0
- package/skills/sdlc/complete/reindex/SKILL.md +10 -0
- package/skills/sdlc/complete/reindex/step.md +24 -0
- package/skills/sdlc/complete/status/SKILL.md +10 -0
- package/skills/sdlc/complete/status/step.md +52 -0
- package/skills/sdlc/discovery/brainstorm/SKILL.md +10 -0
- package/skills/sdlc/discovery/brainstorm/step.md +27 -0
- package/skills/sdlc/discovery/domain/SKILL.md +10 -0
- package/skills/sdlc/discovery/domain/step.md +13 -0
- package/skills/sdlc/discovery/grill/SKILL.md +10 -0
- package/skills/sdlc/discovery/grill/step.md +22 -0
- package/skills/sdlc/discovery/prereq/SKILL.md +10 -0
- package/skills/sdlc/discovery/prereq/step.md +16 -0
- package/skills/sdlc/discovery/prfaq/SKILL.md +10 -0
- package/skills/sdlc/discovery/prfaq/step.md +68 -0
- package/skills/sdlc/discovery/system/SKILL.md +10 -0
- package/skills/sdlc/discovery/system/step.md +19 -0
- package/skills/sdlc/hotfix/analyze/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/entry/step.md +15 -0
- package/skills/sdlc/hotfix/analyze/exit/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/exit/step.md +19 -0
- package/skills/sdlc/hotfix/analyze/fix-strategy/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/fix-strategy/step.md +15 -0
- package/skills/sdlc/hotfix/analyze/gitnexus/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/gitnexus/step.md +17 -0
- package/skills/sdlc/hotfix/analyze/grill/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/grill/step.md +23 -0
- package/skills/sdlc/hotfix/analyze/reasoning/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/reasoning/step.md +29 -0
- package/skills/sdlc/hotfix/analyze/write/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/write/step.md +45 -0
- package/skills/sdlc/hotfix/implement/branch/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/branch/step.md +15 -0
- package/skills/sdlc/hotfix/implement/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/entry/step.md +20 -0
- package/skills/sdlc/hotfix/implement/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/gate/step.md +104 -0
- package/skills/sdlc/hotfix/implement/impact/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/impact/step.md +15 -0
- package/skills/sdlc/hotfix/implement/sonar/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/sonar/step.md +27 -0
- package/skills/sdlc/hotfix/implement/tdd/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/tdd/step.md +33 -0
- package/skills/sdlc/hotfix/implement/verify/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/verify/step.md +27 -0
- package/skills/sdlc/hotfix/prd/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/entry/step.md +20 -0
- package/skills/sdlc/hotfix/prd/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/gate/step.md +32 -0
- package/skills/sdlc/hotfix/prd/requirements/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/requirements/step.md +19 -0
- package/skills/sdlc/hotfix/prd/validate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/validate/step.md +19 -0
- package/skills/sdlc/hotfix/prd/write/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/write/step.md +38 -0
- package/skills/sdlc/hotfix/review/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/entry/step.md +13 -0
- package/skills/sdlc/hotfix/review/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/gate/step.md +51 -0
- package/skills/sdlc/hotfix/review/impact/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/impact/step.md +22 -0
- package/skills/sdlc/hotfix/review/minimality/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/minimality/step.md +18 -0
- package/skills/sdlc/hotfix/review/test-quality/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/test-quality/step.md +16 -0
- package/skills/sdlc/hotfix/ship/commit-pr/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/commit-pr/step.md +58 -0
- package/skills/sdlc/hotfix/ship/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/entry/step.md +20 -0
- package/skills/sdlc/hotfix/ship/exit/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/exit/step.md +31 -0
- package/skills/sdlc/hotfix/ship/gitignore/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/gitignore/step.md +22 -0
- package/skills/sdlc/hotfix/ship/report/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/report/step.md +47 -0
- package/skills/sdlc/hotfix/ship/test-gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/test-gate/step.md +17 -0
- package/skills/sdlc/implement/build-run/SKILL.md +10 -0
- package/skills/sdlc/implement/build-run/step.md +85 -0
- package/skills/sdlc/implement/checkpoint/SKILL.md +10 -0
- package/skills/sdlc/implement/checkpoint/step.md +20 -0
- package/skills/sdlc/implement/debug/SKILL.md +10 -0
- package/skills/sdlc/implement/debug/step.md +25 -0
- package/skills/sdlc/implement/impact/SKILL.md +10 -0
- package/skills/sdlc/implement/impact/step.md +12 -0
- package/skills/sdlc/implement/plan/SKILL.md +10 -0
- package/skills/sdlc/implement/plan/step.md +13 -0
- package/skills/sdlc/implement/prereq/SKILL.md +10 -0
- package/skills/sdlc/implement/prereq/step.md +21 -0
- package/skills/sdlc/implement/subagents/SKILL.md +10 -0
- package/skills/sdlc/implement/subagents/step.md +38 -0
- package/skills/sdlc/implement/tdd/SKILL.md +10 -0
- package/skills/sdlc/implement/tdd/step.md +24 -0
- package/skills/sdlc/init/SKILL.md +7 -0
- package/skills/sdlc/onboard-code/SKILL.md +7 -0
- package/skills/sdlc/onboard-docs/SKILL.md +7 -0
- package/skills/sdlc/pack.yaml +83 -16
- package/skills/sdlc/prd/blast-radius/SKILL.md +10 -0
- package/skills/sdlc/prd/blast-radius/step.md +76 -0
- package/skills/sdlc/prd/create/SKILL.md +10 -0
- package/skills/sdlc/prd/create/step.md +21 -0
- package/skills/sdlc/prd/elicitation/SKILL.md +10 -0
- package/skills/sdlc/prd/elicitation/step.md +12 -0
- package/skills/sdlc/prd/prereq/SKILL.md +10 -0
- package/skills/sdlc/prd/prereq/step.md +16 -0
- package/skills/sdlc/prd/validate/SKILL.md +10 -0
- package/skills/sdlc/prd/validate/step.md +24 -0
- package/skills/sdlc/review/code/SKILL.md +10 -0
- package/skills/sdlc/review/code/step.md +45 -0
- package/skills/sdlc/review/debate/SKILL.md +10 -0
- package/skills/sdlc/review/debate/step.md +84 -0
- package/skills/sdlc/review/impact/SKILL.md +10 -0
- package/skills/sdlc/review/impact/step.md +14 -0
- package/skills/sdlc/review/prereq/SKILL.md +10 -0
- package/skills/sdlc/review/prereq/step.md +18 -0
- package/skills/sdlc/review/verification/SKILL.md +10 -0
- package/skills/sdlc/review/verification/step.md +16 -0
- package/skills/sdlc/ship/commit/SKILL.md +10 -0
- package/skills/sdlc/ship/commit/step.md +23 -0
- package/skills/sdlc/ship/gitignore/SKILL.md +10 -0
- package/skills/sdlc/ship/gitignore/step.md +22 -0
- package/skills/sdlc/ship/pr/SKILL.md +10 -0
- package/skills/sdlc/ship/pr/step.md +34 -0
- package/skills/sdlc/ship/prereq/SKILL.md +10 -0
- package/skills/sdlc/ship/prereq/step.md +16 -0
- package/skills/sdlc/ship/report/SKILL.md +10 -0
- package/skills/sdlc/ship/report/step.md +74 -0
- package/skills/sdlc/srs/interface/SKILL.md +10 -0
- package/skills/sdlc/srs/interface/step.md +44 -0
- package/skills/sdlc/srs/prereq/SKILL.md +10 -0
- package/skills/sdlc/srs/prereq/step.md +19 -0
- package/skills/sdlc/srs/validate/SKILL.md +10 -0
- package/skills/sdlc/srs/validate/step.md +23 -0
- package/skills/sdlc/srs/write/SKILL.md +10 -0
- package/skills/sdlc/srs/write/step.md +19 -0
- package/skills/sdlc/test-design/boundary/SKILL.md +10 -0
- package/skills/sdlc/test-design/boundary/step.md +12 -0
- package/skills/sdlc/test-design/cases/SKILL.md +10 -0
- package/skills/sdlc/test-design/cases/step.md +22 -0
- package/skills/sdlc/test-design/coverage/SKILL.md +10 -0
- package/skills/sdlc/test-design/coverage/step.md +63 -0
- package/skills/sdlc/test-design/prereq/SKILL.md +10 -0
- package/skills/sdlc/test-design/prereq/step.md +15 -0
- package/{skills/sdlc/workflows → workflows/sdlc}/hotfix-tdd.yaml +2 -1
- package/{skills/sdlc/workflows → workflows/sdlc}/hotfix.yaml +8 -4
- package/workflows/sdlc/master-sdlc.yaml +64 -0
- package/workflows/sdlc/sdlc-architecture.yaml +43 -0
- package/workflows/sdlc/sdlc-build.yaml +51 -0
- package/workflows/sdlc/sdlc-design.yaml +61 -0
- package/workflows/sdlc/sdlc-discovery.yaml +43 -0
- package/workflows/sdlc/sdlc-feature-complete.yaml +36 -0
- package/workflows/sdlc/sdlc-hotfix-analyze.yaml +43 -0
- package/workflows/sdlc/sdlc-hotfix-implement.yaml +43 -0
- package/workflows/sdlc/sdlc-hotfix-prd.yaml +31 -0
- package/workflows/sdlc/sdlc-hotfix-review.yaml +31 -0
- package/workflows/sdlc/sdlc-hotfix-ship.yaml +37 -0
- package/workflows/sdlc/sdlc-implement.yaml +60 -0
- package/workflows/sdlc/sdlc-prd.yaml +36 -0
- package/workflows/sdlc/sdlc-qa.yaml +91 -0
- package/workflows/sdlc/sdlc-review.yaml +36 -0
- package/workflows/sdlc/sdlc-ship.yaml +36 -0
- package/workflows/sdlc/sdlc-srs.yaml +29 -0
- package/workflows/sdlc/sdlc-test-design.yaml +29 -0
- package/workflows/sdlc/sdlc-testcase.yaml +25 -0
- package/workflows/sdlc/sdlc-thinking.yaml +67 -0
- package/skills/sdlc/architecture/SKILL.md +0 -218
- package/skills/sdlc/discovery/SKILL.md +0 -197
- package/skills/sdlc/feature-complete/SKILL.md +0 -159
- package/skills/sdlc/hotfix-analyze/SKILL.md +0 -198
- package/skills/sdlc/hotfix-implement/SKILL.md +0 -272
- package/skills/sdlc/hotfix-prd/SKILL.md +0 -161
- package/skills/sdlc/hotfix-review/SKILL.md +0 -153
- package/skills/sdlc/hotfix-ship/SKILL.md +0 -221
- package/skills/sdlc/implement/SKILL.md +0 -264
- package/skills/sdlc/prd/SKILL.md +0 -182
- package/skills/sdlc/review/SKILL.md +0 -210
- package/skills/sdlc/ship/SKILL.md +0 -194
- package/skills/sdlc/srs/SKILL.md +0 -148
- package/skills/sdlc/test-design/SKILL.md +0 -132
- package/skills/sdlc/workflows/master-sdlc.yaml +0 -55
- package/skills/sdlc/workflows/sdlc-build.yaml +0 -18
- package/skills/sdlc/workflows/sdlc-design.yaml +0 -14
- package/skills/sdlc/workflows/sdlc-qa.yaml +0 -20
- package/skills/sdlc/workflows/sdlc-testcase.yaml +0 -8
- package/skills/sdlc/workflows/sdlc-thinking.yaml +0 -12
- /package/{skills/sdlc/workflows → workflows/sdlc}/onboarding.yaml +0 -0
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-implement
|
|
3
|
-
description: Phase 6 — TDD Implementation via subagent-driven development + SonarQube-during-code + GitNexus impact verification
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 6: Implementation (TDD + Subagent-Driven + SonarQube-In-Loop)
|
|
9
|
-
|
|
10
|
-
You are a Senior Software Engineer. Your mission: implement code following TDD — RED → GREEN → REFACTOR. Do not write code without a failing test first.
|
|
11
|
-
|
|
12
|
-
**TWO important changes compared to the old process:**
|
|
13
|
-
1. **MANDATORY use of subagent-driven development** — dispatch parallel subagents for stories/epics
|
|
14
|
-
2. **Apply SonarQube rules DURING coding** — do not wait for review phase to check
|
|
15
|
-
|
|
16
|
-
## Index Protection
|
|
17
|
-
|
|
18
|
-
⛔ **DO NOT modify** `graphify-out/` or `.gitnexus/` — READ only, never WRITE.
|
|
19
|
-
|
|
20
|
-
## Phase Entry Protocol
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
[IMPLEMENT] [1/8] Checking input artifacts... ⏳
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
1. Input:
|
|
27
|
-
- `.vsaf/docs/features/{feature-name}/06-testcases.md`
|
|
28
|
-
- `.vsaf/docs/features/{feature-name}/03-adr.md`
|
|
29
|
-
- `.vsaf/docs/features/{feature-name}/04-epics.md`
|
|
30
|
-
2. Verify ALL 3 files exist:
|
|
31
|
-
- Any file missing → Ask: "File not found. Have you pulled it yet?"
|
|
32
|
-
3. Read `.vsaf/docs/STATUS.md`
|
|
33
|
-
4. Read `CONTEXT.md`
|
|
34
|
-
5. Query `graph.json` for code structure
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
[IMPLEMENT] [1/8] Checking input artifacts... ✅
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
**Note:** This phase MUST run via `/superpowers:subagent-driven-development` — dispatch parallel subagents for each epic according to the Conflict Map in `04-epics.md`.
|
|
41
|
-
|
|
42
|
-
## Subagent-Driven Development Protocol
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
[IMPLEMENT] [2/8] Initializing subagent-driven development... ⏳
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**MANDATORY** — Check and activate `/superpowers:subagent-driven-development`:
|
|
49
|
-
1. If not already in subagent mode → **switch immediately**
|
|
50
|
-
2. Analyze `04-epics.md` → identify Conflict Map
|
|
51
|
-
3. Dispatch each epic/story as a separate subagent running in parallel
|
|
52
|
-
4. Each subagent follows the Conflict Map — only modify files assigned to its epic
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
[IMPLEMENT] [2/8] Initializing subagent-driven development... ✅
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## SonarQube Quality Gate — Apply DURING Coding
|
|
59
|
-
|
|
60
|
-
⚠️ **DO NOT wait for review phase.** Each subagent MUST self-check the `sonar-viettel` gate WHILE writing code.
|
|
61
|
-
|
|
62
|
-
> **Standard (single source of truth):** **`.claude/skills/_shared/sdlc/sonar-viettel/quality-gate.md`** — full New Code + Overall Code tables, the 357-rule parameters, and the importable `sonar-viettel-profile.xml` / `sonar-viettel-gate.json`. **Read it.** Phase 7 (`/sdlc-review`) re-checks the **same** file — anything that passes here must pass there. Do NOT invent stricter or looser values.
|
|
63
|
-
|
|
64
|
-
**Hard fails to self-check (summary — see the shared doc for the full gate):**
|
|
65
|
-
- New Code: Issues / Blocker / Critical / Major / Vulnerabilities = **0**; Code Smells **≤ 20**; Security Hotspots Reviewed = **100%**; Duplicated **≤ 45%**; Maintainability / Reliability / Security Rating **≥ A**.
|
|
66
|
-
- Overall Code: Bugs = **0**; Code Smells **≤ 50**; same Blocker/Critical/Major/Vuln/Duplication/rating rules.
|
|
67
|
-
- Honour the parametrised rules — S107 (params), S3776 (complexity), S110 (inheritance), S1479 (switch), S1192 (literals), S2068/S2077 (secrets/injection), S100/S101/S115 (naming). **Thresholds live authoritatively in the profile XML** — derive them via the snippet in the shared `quality-gate.md`, do not memorise numbers.
|
|
68
|
-
|
|
69
|
-
**How to apply during coding:**
|
|
70
|
-
- **After each function** → self-review: security vulnerabilities? code smells? duplication?
|
|
71
|
-
- **After each class** → check SOLID violations, naming conventions, interface segregation
|
|
72
|
-
- **Before each commit** → scan changed files for: SQL injection, XSS, command injection, hardcoded secrets, null dereference, resource leaks, concurrency issues, duplicated blocks
|
|
73
|
-
- **Auto-detect SonarQube:** check whether `sonar-scanner` is on PATH.
|
|
74
|
-
- Present → import the profile + gate from the shared folder, then run `sonar-scanner` incremental.
|
|
75
|
-
- Absent → print `Sonar not found → self-checklist mode` and self-review against the shared `quality-gate.md`. This is a fully supported path, not a fallback to apologise for — SonarQube is OPTIONAL.
|
|
76
|
-
|
|
77
|
-
**Goal:** Review phase should only need to RE-CHECK, not find bugs for the first time.
|
|
78
|
-
|
|
79
|
-
## Tasks
|
|
80
|
-
|
|
81
|
-
### Step 3: Task Planning
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
[IMPLEMENT] [3/8] Task planning from testcases + ADR... ⏳
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Use `/superpowers:writing-plans` — create granular task plan from testcases + ADR.
|
|
88
|
-
Each task maps to ≥1 FR/NFR.
|
|
89
|
-
Write to `07-impl-plan.md`.
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
[IMPLEMENT] [3/8] Task planning from testcases + ADR... ✅
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Step 3.5: Checkpoint Review (every 3-5 tasks)
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
[IMPLEMENT] [3.5/8] Checkpoint review... ⏳
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
After every 3-5 completed tasks: invoke `/bmad-checkpoint-preview` (human-in-the-loop walkthrough).
|
|
102
|
-
|
|
103
|
-
Purpose: pause and let the user review progress before continuing.
|
|
104
|
-
|
|
105
|
-
The checkpoint will:
|
|
106
|
-
- Summarize: what was done, which files changed, current tests status
|
|
107
|
-
- Highlight: points of concern, potential issues
|
|
108
|
-
- Ask user: continue / adjust / stop?
|
|
109
|
-
|
|
110
|
-
**Skip checkpoint if** the total plan has fewer than 5 tasks — checkpoint only at the end in that case.
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
[IMPLEMENT] [3.5/8] Checkpoint review... ✅
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Step 4: TDD Cycle (per subagent)
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
[IMPLEMENT] [4/8] TDD cycle — RED → GREEN → REFACTOR... ⏳
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Use `/superpowers:test-driven-development`:
|
|
123
|
-
|
|
124
|
-
For each test case in `06-testcases.md`:
|
|
125
|
-
1. **RED**: Write test → run → MUST FAIL
|
|
126
|
-
2. **GREEN**: Write minimal code → run → MUST PASS
|
|
127
|
-
- ⚠️ **While writing GREEN code** → apply SonarQube rules immediately:
|
|
128
|
-
- Do not create security vulnerabilities
|
|
129
|
-
- No code smells (long method, deep nesting)
|
|
130
|
-
- No duplicated code
|
|
131
|
-
- Null-safe, proper error handling
|
|
132
|
-
3. **REFACTOR**: Clean code, do not change behavior
|
|
133
|
-
- Refactor MUST improve SonarQube metrics, not degrade them
|
|
134
|
-
|
|
135
|
-
Use `/superpowers:executing-plans` — execute plan in order.
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
[IMPLEMENT] [4/8] TDD cycle — RED → GREEN → REFACTOR... ✅
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### Step 5: Debug (if needed)
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
[IMPLEMENT] [5/8] Debug (if there are test failures)... ⏳
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Use `/superpowers:systematic-debugging` — when a test does not turn GREEN:
|
|
148
|
-
- Hypothesis → Experiment → Conclusion
|
|
149
|
-
- If it fails 3 times → STOP, escalate
|
|
150
|
-
|
|
151
|
-
**Scope-drift detection:**
|
|
152
|
-
|
|
153
|
-
If during implementation you detect the feature requires CHANGES NOT IN THE SRS:
|
|
154
|
-
1. Invoke `/bmad-correct-course` — assess impact + propose adjustments
|
|
155
|
-
2. If requirements have genuinely changed:
|
|
156
|
-
- STOP implementation
|
|
157
|
-
- Update SRS first via `/sdlc-srs` EDIT mode
|
|
158
|
-
- Re-run `/sdlc-test-design` to generate new test cases
|
|
159
|
-
- Restart Phase 6 from Step 3
|
|
160
|
-
3. If only minor adjustments needed: document the adjustment in `07-impl-plan.md` §Scope Adjustments and continue
|
|
161
|
-
4. If unclear whether scope changed: STOP and present to user — let them decide
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
[IMPLEMENT] [5/8] Debug (if there are test failures)... ✅
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### Step 6: Impact Verification
|
|
168
|
-
|
|
169
|
-
```
|
|
170
|
-
[IMPLEMENT] [6/8] Impact verification via GitNexus... ⏳
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Use GitNexus `impact` — verify no other code is broken.
|
|
174
|
-
Use GitNexus `rename` — safe multi-file refactoring if needed.
|
|
175
|
-
|
|
176
|
-
```
|
|
177
|
-
[IMPLEMENT] [6/8] Impact verification via GitNexus... ✅
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### Step 7: Build & Run Verification
|
|
181
|
-
|
|
182
|
-
```
|
|
183
|
-
[IMPLEMENT] [7/8] Build & run verification... ⏳
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
**MANDATORY** — code MUST compile and run successfully before exiting the phase.
|
|
187
|
-
|
|
188
|
-
1. **Compile check**: Build the entire project → MUST have 0 errors
|
|
189
|
-
- Java: `mvn compile` or `gradle build`
|
|
190
|
-
- Node: `npm run build` / `tsc --noEmit`
|
|
191
|
-
- Angular: `ng build`
|
|
192
|
-
- Go: `go build ./...`
|
|
193
|
-
- If FAIL → fix immediately, DO NOT skip
|
|
194
|
-
|
|
195
|
-
2. **Run verification**: Start application → MUST start successfully
|
|
196
|
-
- If the project has `docker-compose.yml` → `docker compose up`
|
|
197
|
-
- If not → use native run command
|
|
198
|
-
- Check health endpoint / startup log OK
|
|
199
|
-
|
|
200
|
-
3. **Environment check**:
|
|
201
|
-
- Detect required runtime (JDK, Node, Python, Go, etc.)
|
|
202
|
-
- If runtime missing → ⚠️ **WARNING**: "Missing {runtime}. Cannot verify build."
|
|
203
|
-
- **Recommend Docker**: "Recommend using Docker to ensure a consistent environment. Create a Dockerfile if one does not exist."
|
|
204
|
-
- If Docker available → prefer building in container
|
|
205
|
-
|
|
206
|
-
4. **Test suite run**: `npm test` / `mvn test` / equivalent → All tests PASS
|
|
207
|
-
|
|
208
|
-
5. **Final SonarQube sweep**: Scan all new code one last time before exiting
|
|
209
|
-
- Confirm both New Code and Overall Code conditions are green per the shared `quality-gate.md` (single source of truth)
|
|
210
|
-
- If FAIL → fix immediately, this is a hard gate
|
|
211
|
-
|
|
212
|
-
⚠️ **DO NOT exit the phase if code does not compile.** This is a hard gate — no exceptions.
|
|
213
|
-
|
|
214
|
-
```
|
|
215
|
-
[IMPLEMENT] [7/8] Build & run verification... ✅
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
## Multi-machine Branching
|
|
219
|
-
|
|
220
|
-
```
|
|
221
|
-
Single repo:
|
|
222
|
-
main → feat/{feature} → feat/{feature}/epic-1 (Subagent A)
|
|
223
|
-
→ feat/{feature}/epic-2 (Subagent B)
|
|
224
|
-
|
|
225
|
-
Multi-repo:
|
|
226
|
-
Subagent A: cd user-service && git checkout -b feat/{feature}
|
|
227
|
-
Subagent B: cd payment-service && git checkout -b feat/{feature}
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
## Output
|
|
231
|
-
|
|
232
|
-
- `.vsaf/docs/features/{feature-name}/07-impl-plan.md` — task plan + TDD log
|
|
233
|
-
- Code changes on feature branch
|
|
234
|
-
- All tests GREEN
|
|
235
|
-
- SonarQube metrics PASS (verified during coding)
|
|
236
|
-
|
|
237
|
-
## Phase Exit Protocol
|
|
238
|
-
|
|
239
|
-
In PHASE REPORT:
|
|
240
|
-
- Done: N tasks completed, M tests written, K subagents dispatched
|
|
241
|
-
- Result: all tests PASS/FAIL
|
|
242
|
-
- SonarQube (New Code): {PASS/FAIL vs shared gate} — Issues={N}, Blocker={N}, Critical={N}, Major={N}, Code Smells={N}, Vulns={N}, Hotspots Reviewed={N}%, Duplication={N}%
|
|
243
|
-
- SonarQube (Overall): {PASS/FAIL vs shared gate} — Bugs={N}, Code Smells={N}, Duplication={N}%, ratings={A..E}
|
|
244
|
-
- Output files: `07-impl-plan.md`
|
|
245
|
-
- Code changes: {list files changed}
|
|
246
|
-
- Suggestions: [1] Phase 7 Review (`/sdlc-review`) [2] Save artifacts
|
|
247
|
-
|
|
248
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
249
|
-
|
|
250
|
-
**Notify the user:**
|
|
251
|
-
> Artifacts have been saved. If the session is interrupted, open a new session and run the next phase — data is safe.
|
|
252
|
-
|
|
253
|
-
## Rules
|
|
254
|
-
|
|
255
|
-
- DO NOT write code without a failing test first (#2 TDD)
|
|
256
|
-
- **MANDATORY** use `/superpowers:subagent-driven-development` — do not run sequential
|
|
257
|
-
- **SonarQube rules apply DURING coding** — do not wait for review
|
|
258
|
-
- Follow the Conflict Map — only modify files assigned to your epic
|
|
259
|
-
- 3-strike rule: task fails 3 times → STOP, escalate
|
|
260
|
-
- Impact analysis MUST run before each commit
|
|
261
|
-
- Smart Zone: clear context every 5 tasks (#4)
|
|
262
|
-
- **Code MUST compile successfully** — hard gate, no exceptions
|
|
263
|
-
- **Recommend Docker** if runtime is missing or containerization is not set up
|
|
264
|
-
- ⛔ DO NOT modify `graphify-out/` or `.gitnexus/`
|
package/skills/sdlc/prd/SKILL.md
DELETED
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-prd
|
|
3
|
-
description: Phase 2 — PRD via BMAD elicitation + create + validate + adversarial review + GitNexus impact
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 2: PRD (Product Requirements Document)
|
|
9
|
-
|
|
10
|
-
You are a Principal Product Owner. Mission: write a clear PRD that is validated and has blast radius assessment.
|
|
11
|
-
|
|
12
|
-
## Language Rule
|
|
13
|
-
|
|
14
|
-
All output documents (02-prd.md) MUST be written in Vietnamese. Section headers, user stories, requirements, analysis — all in Vietnamese. Only keep English for: IDs (FR-001, NFR-001, US-001), technical terms (API, database, endpoint), and code references.
|
|
15
|
-
|
|
16
|
-
## Progress Protocol
|
|
17
|
-
|
|
18
|
-
Print progress at each step in this format:
|
|
19
|
-
```
|
|
20
|
-
[PRD] [step/5] description... ⏳
|
|
21
|
-
[PRD] [step/5] description... ✅
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Index Protection
|
|
25
|
-
|
|
26
|
-
⛔ Do NOT modify `graphify-out/` or `.gitnexus/` in this phase.
|
|
27
|
-
|
|
28
|
-
## Phase Entry Protocol
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
[PRD] [1/5] Checking prerequisites... ⏳
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
1. Input: `.vsaf/docs/features/{feature-name}/01-discovery.md`
|
|
35
|
-
2. Check if file exists:
|
|
36
|
-
- Does not exist → Ask: "File not found. Have you run Phase 1 Discovery?"
|
|
37
|
-
3. Read `.vsaf/docs/STATUS.md`
|
|
38
|
-
4. Read `CONTEXT.md`
|
|
39
|
-
5. Query `graph.json` for business domain context
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
[PRD] [1/5] Checking prerequisites... ✅
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Tasks
|
|
46
|
-
|
|
47
|
-
### Step 2: Elicitation (Grill Session)
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
[PRD] [2/5] Grill session — elicitation probing edge cases... ⏳
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Use `/bmad-advanced-elicitation` — grill 40-100 questions probing edge cases.
|
|
54
|
-
Record results in `02-prd.md` §Grill Log.
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
[PRD] [2/5] Grill session — elicitation probing edge cases... ✅
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Step 3: Create PRD
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
[PRD] [3/5] Creating PRD from grill results... ⏳
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Use `/bmad-create-prd` — create structured PRD from grill results (Step 2).
|
|
67
|
-
|
|
68
|
-
Ensure the output covers:
|
|
69
|
-
|
|
70
|
-
1. **Goals** — business goals + success metrics
|
|
71
|
-
2. **User Stories** — each MUST have acceptance criteria (Given/When/Then)
|
|
72
|
-
3. **Functional Requirements** — unique ID per requirement (FR-001, FR-002...)
|
|
73
|
-
4. **Non-Functional Requirements** — unique ID (NFR-001, NFR-002...) — performance, security, scalability
|
|
74
|
-
5. **Success Metrics** — measurable KPIs tied to goals
|
|
75
|
-
|
|
76
|
-
Write to `02-prd.md` §Requirements.
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
[PRD] [3/5] Creating PRD from grill results... ✅
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Step 4: Validate + Adversarial Review
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
[PRD] [4/5] Validate + adversarial review... ⏳
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
**4a — Validate PRD:**
|
|
89
|
-
|
|
90
|
-
Use `/bmad-validate-prd` — validate the PRD against BMAD standards:
|
|
91
|
-
- Completeness — all user stories covered by FRs? All FRs traceable to a user story?
|
|
92
|
-
- Clarity — any ambiguous requirements? Can each FR be implemented without guessing?
|
|
93
|
-
- Testability — can each FR be verified with a test case?
|
|
94
|
-
- Consistency — any FRs that contradict each other?
|
|
95
|
-
|
|
96
|
-
Write to `02-prd.md` §Validation. If FAIL → fix inline, re-validate.
|
|
97
|
-
|
|
98
|
-
**4b — Adversarial review:**
|
|
99
|
-
|
|
100
|
-
Use `/bmad-review-adversarial-general` — cynical review to find gaps.
|
|
101
|
-
Write to `02-prd.md` §Adversarial.
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
[PRD] [4/5] Validate + adversarial review... ✅
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Step 5: Blast Radius
|
|
108
|
-
|
|
109
|
-
```
|
|
110
|
-
[PRD] [5/5] Assessing blast radius via GitNexus... ⏳
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Use GitNexus `impact` — assess scope of feature impact.
|
|
114
|
-
Write to `02-prd.md` §Blast Radius.
|
|
115
|
-
|
|
116
|
-
```
|
|
117
|
-
[PRD] [5/5] Assessing blast radius via GitNexus... ✅
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Gate
|
|
121
|
-
|
|
122
|
-
Human must approve the PRD. Write `## Gate: APPROVED` at the end of the file.
|
|
123
|
-
Do NOT proceed to Phase 3 without the Gate marker.
|
|
124
|
-
|
|
125
|
-
**Automated mode (opt-in):** when the environment has `VSAF_CI=1` or `VSAF_AUTO_APPROVE=1`, write the Gate yourself as `## Gate: APPROVED (auto · VSAF_CI · rationale: <one line>)` and proceed — the one-line rationale is REQUIRED for audit. Without the env flag, a human must approve (default).
|
|
126
|
-
|
|
127
|
-
## Output
|
|
128
|
-
|
|
129
|
-
Write file: `.vsaf/docs/features/{feature-name}/02-prd.md`
|
|
130
|
-
|
|
131
|
-
```markdown
|
|
132
|
-
# PRD: {feature-name}
|
|
133
|
-
|
|
134
|
-
## Grill Log
|
|
135
|
-
{elicitation Q&A}
|
|
136
|
-
|
|
137
|
-
## Requirements
|
|
138
|
-
### User Stories
|
|
139
|
-
{with acceptance criteria}
|
|
140
|
-
### Functional Requirements
|
|
141
|
-
{FR-001, FR-002...}
|
|
142
|
-
### Non-Functional Requirements
|
|
143
|
-
{NFR-001, NFR-002...}
|
|
144
|
-
|
|
145
|
-
## Validation
|
|
146
|
-
{validate-prd result}
|
|
147
|
-
|
|
148
|
-
## Adversarial
|
|
149
|
-
{adversarial findings}
|
|
150
|
-
|
|
151
|
-
## Blast Radius
|
|
152
|
-
{GitNexus impact result}
|
|
153
|
-
|
|
154
|
-
## Gate: {PENDING / APPROVED by {name} on {date}}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
## Artifact Auto-Save
|
|
158
|
-
|
|
159
|
-
After writing the file, print the message:
|
|
160
|
-
|
|
161
|
-
> Artifacts saved. If the session is interrupted, open a new session and run the next phase — data is safe.
|
|
162
|
-
|
|
163
|
-
## Phase Exit Protocol
|
|
164
|
-
|
|
165
|
-
Print PHASE REPORT:
|
|
166
|
-
- Feature: {feature-name}
|
|
167
|
-
- Status: COMPLETED
|
|
168
|
-
- Completed: elicitation, create PRD, validate, adversarial review, blast radius
|
|
169
|
-
- Output files: `.vsaf/docs/features/{feature-name}/02-prd.md`
|
|
170
|
-
- Suggested next steps:
|
|
171
|
-
[1] Phase 3 Architecture → `/sdlc-architecture`
|
|
172
|
-
[2] Save artifacts
|
|
173
|
-
|
|
174
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
175
|
-
|
|
176
|
-
## Rules
|
|
177
|
-
|
|
178
|
-
- ⛔ Do NOT skip elicitation — Shared Understanding is mandatory
|
|
179
|
-
- ⛔ Do NOT modify `graphify-out/` or `.gitnexus/`
|
|
180
|
-
- Every user story MUST have acceptance criteria
|
|
181
|
-
- Every FR/NFR MUST have a unique ID
|
|
182
|
-
- Do NOT proceed if blast radius = HIGH without human approval
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-review
|
|
3
|
-
description: Phase 7 — Review via Superpowers verification + BMAD code review + SonarQube re-check + GitNexus impact + debate
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 7: Review
|
|
9
|
-
|
|
10
|
-
You are Tech Lead + QA Lead. Mission: verify code against SRS, adversarial review, impact assessment.
|
|
11
|
-
|
|
12
|
-
## Progress Protocol
|
|
13
|
-
|
|
14
|
-
Print progress at each step in this format:
|
|
15
|
-
```
|
|
16
|
-
[REVIEW] [step/5] description... ⏳
|
|
17
|
-
[REVIEW] [step/5] description... ✅
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Index Protection
|
|
21
|
-
|
|
22
|
-
⛔ DO NOT modify `graphify-out/` or `.gitnexus/` in this phase.
|
|
23
|
-
|
|
24
|
-
## Artifact Auto-save
|
|
25
|
-
|
|
26
|
-
All artifacts are automatically saved to `.vsaf/docs/features/{feature-name}/` to ensure session continuity. If the session is interrupted, you can resume from the last artifact.
|
|
27
|
-
|
|
28
|
-
## Phase Entry Protocol
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
[REVIEW] [1/5] Checking prerequisites... ⏳
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
1. Input:
|
|
35
|
-
- `.vsaf/docs/features/{feature-name}/05-srs.md`
|
|
36
|
-
- Code diff on feature branch
|
|
37
|
-
2. Check that SRS file exists
|
|
38
|
-
3. Check that feature branch exists
|
|
39
|
-
4. Read `.vsaf/docs/STATUS.md`
|
|
40
|
-
5. Read `CONTEXT.md`
|
|
41
|
-
6. Query `graph.json` for impact verification
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
[REVIEW] [1/5] Checking prerequisites... ✅
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Tasks
|
|
48
|
-
|
|
49
|
-
### Step 2: System Verification
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
[REVIEW] [2/5] System verification — build, tests, scope... ⏳
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Use `/superpowers:verification-before-completion`:
|
|
56
|
-
- Build passes
|
|
57
|
-
- All tests GREEN
|
|
58
|
-
- No uncommitted files
|
|
59
|
-
- Scope matches SRS
|
|
60
|
-
Write to `08-review.md` §Verification.
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
[REVIEW] [2/5] System verification... ✅
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Step 3: Code Review
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
[REVIEW] [3/5] Adversarial code review... ⏳
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Use `/bmad-code-review` — adversarial code review on the feature branch diff with parallel review layers (Blind Hunter, Edge Case Hunter, Acceptance Auditor).
|
|
73
|
-
|
|
74
|
-
Ensure the review covers:
|
|
75
|
-
|
|
76
|
-
1. **Security scan** — SQL injection, XSS, command injection, hardcoded secrets, insecure deserialization
|
|
77
|
-
2. **Data integrity** — null dereference, resource leaks, race conditions, missing transactions
|
|
78
|
-
3. **SOLID violations** — god classes, leaky abstractions, interface segregation
|
|
79
|
-
4. **Naming consistency** — verify against CONTEXT.md terminology
|
|
80
|
-
5. **SRS compliance** — every FR/NFR implemented? Any extra scope not in SRS?
|
|
81
|
-
|
|
82
|
-
Classify each finding: MUST FIX / SHOULD FIX / NOTED.
|
|
83
|
-
Write to `08-review.md` §Code Review.
|
|
84
|
-
|
|
85
|
-
#### Quality Gate Re-check (SonarQube)
|
|
86
|
-
|
|
87
|
-
**IMPORTANT:** SonarQube rules were already applied in Phase 6 (Implementation). The Review phase only RE-CHECKS — confirming that code still meets standards after all changes.
|
|
88
|
-
|
|
89
|
-
Verify that code meets the `sonar-viettel` Quality Gate.
|
|
90
|
-
|
|
91
|
-
> **Standard (single source of truth):** **`.claude/skills/_shared/sdlc/sonar-viettel/quality-gate.md`** — the full New Code + Overall Code tables, the 357-rule parameters, and the importable `sonar-viettel-profile.xml` / `sonar-viettel-gate.json`. This is the **same** file Phase 6 (`/sdlc-implement`) coded against — review only confirms compliance, do not change the numbers.
|
|
92
|
-
|
|
93
|
-
**Hard fails to confirm (summary — see the shared doc for the full gate):**
|
|
94
|
-
- New Code: Issues / Blocker / Critical / Major / Vulnerabilities = **0**; Code Smells **≤ 20**; Security Hotspots Reviewed = **100%**; Duplicated **≤ 45%**; Maintainability / Reliability / Security Rating **≥ A**.
|
|
95
|
-
- Overall Code: Bugs = **0**; Code Smells **≤ 50**; same Blocker/Critical/Major/Vuln/Duplication/rating rules.
|
|
96
|
-
|
|
97
|
-
**How to execute (auto-detect — check whether `sonar-scanner` is on PATH):**
|
|
98
|
-
- SonarQube present → ensure it uses the `sonar-viettel` Profile + Gate (import from the shared folder if missing), run `sonar-scanner`, and check the report
|
|
99
|
-
- SonarQube absent → print `Sonar not found → self-checklist mode` and perform a manual re-check against the shared `quality-gate.md` (a fully supported path — SonarQube is OPTIONAL):
|
|
100
|
-
- Scan for security vulnerabilities (SQL injection, XSS, command injection, hardcoded secrets)
|
|
101
|
-
- Scan for bugs (null dereference, resource leaks, concurrency issues)
|
|
102
|
-
- Scan for code smells (long methods, deep nesting, duplicated blocks)
|
|
103
|
-
- Verify naming conventions, SOLID principles, duplicated blocks
|
|
104
|
-
- Write results to `08-review.md` §Quality Gate
|
|
105
|
-
|
|
106
|
-
**Quality Gate FAIL** → classify each issue as MUST FIX / SHOULD FIX / NOTED per the triage rules below.
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
[REVIEW] [3/5] Adversarial code review + Quality Gate re-check... ✅
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### Step 4: Impact Assessment
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
[REVIEW] [4/5] Impact assessment via GitNexus... ⏳
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Use GitNexus `detect_changes` + `impact`:
|
|
119
|
-
- Confirm only expected files changed
|
|
120
|
-
- Blast radius confidence scoring
|
|
121
|
-
Write to `08-review.md` §Impact.
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
[REVIEW] [4/5] Impact assessment... ✅
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Step 5: Debate (complex features only)
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
[REVIEW] [5/5] Multi-agent debate (if needed)... ⏳
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Use `/bmad-party-mode` — multi-agent debate:
|
|
134
|
-
- Security vs Performance vs Maintainability
|
|
135
|
-
Write to `08-review.md` §Debate.
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
[REVIEW] [5/5] Multi-agent debate... ✅
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## Gate
|
|
142
|
-
|
|
143
|
-
MUST FIX = 0, Human approve.
|
|
144
|
-
|
|
145
|
-
**Automated mode (opt-in):** when `VSAF_CI=1` or `VSAF_AUTO_APPROVE=1` is set AND MUST FIX = 0, write `## Gate: APPROVED (auto · VSAF_CI · rationale: <one line>)` and proceed. If MUST FIX > 0, NEVER auto-approve — return to Phase 6 (Implement) regardless of the flag. Without the env flag, a human must approve (default).
|
|
146
|
-
|
|
147
|
-
Triage:
|
|
148
|
-
- **MUST FIX**: Security, data loss, SRS FR/NFR not satisfied, crash → Blocks ship
|
|
149
|
-
- **SHOULD FIX**: Performance, maintainability → Fix if time allows
|
|
150
|
-
- **NOTED**: Style, minor naming → Log only
|
|
151
|
-
|
|
152
|
-
If MUST FIX > 0 → return to Phase 6 (Implementation) with specific issues.
|
|
153
|
-
|
|
154
|
-
## Output
|
|
155
|
-
|
|
156
|
-
Write file: `.vsaf/docs/features/{feature-name}/08-review.md`
|
|
157
|
-
|
|
158
|
-
```markdown
|
|
159
|
-
# Review: {feature-name}
|
|
160
|
-
|
|
161
|
-
## Verification
|
|
162
|
-
- Build: PASS/FAIL
|
|
163
|
-
- Tests: {X}/{Y} passed
|
|
164
|
-
- Uncommitted files: none
|
|
165
|
-
- Scope: matches SRS ✓
|
|
166
|
-
|
|
167
|
-
## Code Review
|
|
168
|
-
### MUST FIX
|
|
169
|
-
- (none)
|
|
170
|
-
### SHOULD FIX
|
|
171
|
-
- {issue description}
|
|
172
|
-
### NOTED
|
|
173
|
-
- {minor items}
|
|
174
|
-
|
|
175
|
-
## Quality Gate (Re-check)
|
|
176
|
-
- SonarQube: {available / manual re-check}
|
|
177
|
-
- New Code: {PASS/FAIL} — Issues={N}, Blocker={N}, Critical={N}, Major={N}, Smells={N}, Vulns={N}, Duplication={N}%
|
|
178
|
-
- Overall: {PASS/FAIL} — Bugs={N}, Blocker={N}, Critical={N}, Major={N}, Smells={N}, Vulns={N}, Duplication={N}%
|
|
179
|
-
- Compile: PASS/FAIL
|
|
180
|
-
- Runtime: PASS/FAIL
|
|
181
|
-
|
|
182
|
-
## Impact
|
|
183
|
-
- Files changed: {N}
|
|
184
|
-
- Blast radius: {low/medium/high}
|
|
185
|
-
- Confidence: {%}
|
|
186
|
-
|
|
187
|
-
## Debate (if applicable)
|
|
188
|
-
{party-mode findings}
|
|
189
|
-
|
|
190
|
-
## Gate: {PENDING / APPROVED by {name} on {date}}
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
## Phase Exit Protocol
|
|
194
|
-
|
|
195
|
-
Print PHASE REPORT:
|
|
196
|
-
- Results: MUST FIX = {N}, SHOULD FIX = {N}, NOTED = {N}
|
|
197
|
-
- Output files: `08-review.md`
|
|
198
|
-
- Suggestion: [1] `/sdlc-feature-complete` (if APPROVED) [2] Return to Phase 6 (if MUST FIX > 0)
|
|
199
|
-
|
|
200
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
201
|
-
|
|
202
|
-
## Rules
|
|
203
|
-
|
|
204
|
-
- Review against SRS (spec), NOT against code implementation
|
|
205
|
-
- Max 2 review rounds — if still failing → escalate to human
|
|
206
|
-
- MUST FIX items MUST be resolved before feature-complete
|
|
207
|
-
- **Quality Gate FAIL = MUST FIX** — Blocker, Critical, Vulnerability all block ship
|
|
208
|
-
- **Code does not compile = MUST FIX** — hard gate, no exceptions
|
|
209
|
-
- If there is no SonarQube, Claude performs a manual quality gate re-check
|
|
210
|
-
- **SonarQube only RE-CHECKS** — rules were applied in Phase 6, review only confirms compliance
|