@ngocsangairvds/vsaf 5.1.5 → 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 -35
- 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
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
## Gate
|
|
2
|
+
|
|
3
|
+
Write `## Gate: APPROVED` or `## Gate: CHANGES_REQUESTED` with reasons.
|
|
4
|
+
|
|
5
|
+
If CHANGES_REQUESTED:
|
|
6
|
+
- List specific issues with triage: MUST FIX / SHOULD FIX / NOTED
|
|
7
|
+
- Do NOT proceed to ship until all MUST FIX items are resolved
|
|
8
|
+
|
|
9
|
+
## Output
|
|
10
|
+
|
|
11
|
+
Write file: `.vsaf/docs/hotfixes/{bug-id}/02-review.md`
|
|
12
|
+
|
|
13
|
+
```markdown
|
|
14
|
+
# Hotfix Review: {bug-id}
|
|
15
|
+
|
|
16
|
+
## Minimality Check
|
|
17
|
+
{minimality check results}
|
|
18
|
+
|
|
19
|
+
## Test Quality Check
|
|
20
|
+
{test quality check results}
|
|
21
|
+
|
|
22
|
+
## Blast Radius
|
|
23
|
+
{blast radius confirmation — matches/exceeds analysis}
|
|
24
|
+
|
|
25
|
+
## SonarQube
|
|
26
|
+
{quality gate results on changed files}
|
|
27
|
+
|
|
28
|
+
## Conclusion
|
|
29
|
+
{overall assessment}
|
|
30
|
+
|
|
31
|
+
## Gate: {APPROVED / CHANGES_REQUESTED}
|
|
32
|
+
{reasons if changes requested}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Phase Exit Protocol
|
|
36
|
+
|
|
37
|
+
Print PHASE REPORT:
|
|
38
|
+
- Bug: {bug-id}
|
|
39
|
+
- Status: REVIEW COMPLETED
|
|
40
|
+
- Gate: {APPROVED / CHANGES_REQUESTED}
|
|
41
|
+
- Output: `.vsaf/docs/hotfixes/{bug-id}/02-review.md`
|
|
42
|
+
- Next step: `/sdlc-ship` (if approved)
|
|
43
|
+
|
|
44
|
+
Update `.vsaf/docs/STATUS.md`.
|
|
45
|
+
|
|
46
|
+
## Rules
|
|
47
|
+
|
|
48
|
+
- ⛔ Do NOT modify code — review only
|
|
49
|
+
- ⛔ Do NOT modify `graphify-out/` or `.gitnexus/`
|
|
50
|
+
- A hotfix review is FAST but NOT sloppy — every check matters
|
|
51
|
+
- If the fix touches more files than the analysis predicted, escalate to human
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
### Step 4: Impact Check + SonarQube
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[HOTFIX-REVIEW] [4/4] Impact check + quality gate... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
1. Use GitNexus `detect_changes` + `impact` — confirm blast radius matches the analysis
|
|
8
|
+
2. If blast radius is LARGER than analysis predicted → flag for human review
|
|
9
|
+
3. SonarQube rules on changed files only:
|
|
10
|
+
|
|
11
|
+
| Metric | Threshold |
|
|
12
|
+
|--------|-----------|
|
|
13
|
+
| Issues (Blocker) | 0 |
|
|
14
|
+
| Issues (Critical) | 0 |
|
|
15
|
+
| Security Hotspots | 0 |
|
|
16
|
+
| New code smells | 0 |
|
|
17
|
+
|
|
18
|
+
> **Standard (single source of truth):** **`.claude/skills/_shared/sdlc/sonar-viettel/quality-gate.md`** — full gate + 357-rule parameters + importable `sonar-viettel-profile.xml` / `sonar-viettel-gate.json`. Same file Phase 3 (`/sdlc-hotfix-implement`) coded against. If SonarQube is present, scan changed files against the `sonar-viettel` profile + gate; otherwise re-check manually. `New code smells = 0` is intentionally stricter than the gate's ≤20 for surgical fixes.
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
[HOTFIX-REVIEW] [4/4] Impact check + quality gate... ✅
|
|
22
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
### Step 2: Minimality Verification
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[HOTFIX-REVIEW] [2/4] Verifying fix is minimal... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Check:
|
|
8
|
+
- [ ] Only files identified in the analysis were changed
|
|
9
|
+
- [ ] No unnecessary refactoring included
|
|
10
|
+
- [ ] No formatting-only changes on untouched code
|
|
11
|
+
- [ ] No unrelated fixes bundled in
|
|
12
|
+
- [ ] Diff size is proportional to the bug (a 1-line bug should not need 50 lines of changes)
|
|
13
|
+
|
|
14
|
+
If any check fails → flag as CHANGES_REQUESTED with specific reason.
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
[HOTFIX-REVIEW] [2/4] Verifying fix is minimal... ✅
|
|
18
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
### Step 3: Test Quality Check
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[HOTFIX-REVIEW] [3/4] Verifying test quality... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Read the reproduction test and verify:
|
|
8
|
+
- [ ] Test targets the specific bug (not a generic happy-path test)
|
|
9
|
+
- [ ] Test would FAIL without the fix (it's not trivially always-passing)
|
|
10
|
+
- [ ] Test exercises the exact code path from the root cause analysis
|
|
11
|
+
- [ ] Test has a descriptive name referencing the bug
|
|
12
|
+
- [ ] Test follows project conventions
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
[HOTFIX-REVIEW] [3/4] Verifying test quality... ✅
|
|
16
|
+
```
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
### Step 4: Commit + Push + PR
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[HOTFIX-SHIP] [4/5] Commit + push + create PR... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
**Commit scope — ONLY commit:**
|
|
8
|
+
- Source code changes (the fix)
|
|
9
|
+
- `.vsaf/docs/hotfixes/{bug-id}/` (all artifacts)
|
|
10
|
+
- `.gitignore` (if updated)
|
|
11
|
+
|
|
12
|
+
**DO NOT commit:**
|
|
13
|
+
- `graphify-out/`
|
|
14
|
+
- `.gitnexus/`
|
|
15
|
+
|
|
16
|
+
**Commit message format:**
|
|
17
|
+
```
|
|
18
|
+
fix({area}): {short description}
|
|
19
|
+
|
|
20
|
+
Root cause: {one line from 01-analysis.md}
|
|
21
|
+
Closes: #{issue-number} (if applicable)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Push + PR:**
|
|
25
|
+
```bash
|
|
26
|
+
git push -u origin hotfix/{bug-id}
|
|
27
|
+
gh pr create --title "fix({area}): {short description}" --body "{PR body}"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**PR body template:**
|
|
31
|
+
```markdown
|
|
32
|
+
## Bug Fix: {bug-id}
|
|
33
|
+
|
|
34
|
+
### Root Cause
|
|
35
|
+
{from 01-analysis.md — one paragraph}
|
|
36
|
+
|
|
37
|
+
### Fix
|
|
38
|
+
{from 03-impl-log.md — what was changed and why}
|
|
39
|
+
|
|
40
|
+
### Tests
|
|
41
|
+
- Regression test: `{test file}:{test name}`
|
|
42
|
+
- Full suite: {total} tests, all PASS
|
|
43
|
+
|
|
44
|
+
### Affected Files
|
|
45
|
+
{list from 03-impl-log.md}
|
|
46
|
+
|
|
47
|
+
### Scope
|
|
48
|
+
- ✅ Fix only — no refactoring, no enhancements
|
|
49
|
+
- ✅ Regression test added
|
|
50
|
+
- ✅ Full test suite passing
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
> **Post-pull:** Run `npx gitnexus analyze` and `/graphify` to re-index locally.
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
[HOTFIX-SHIP] [4/5] Commit + push + create PR... ✅
|
|
58
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
## Phase Entry Protocol
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[HOTFIX-SHIP] [1/5] Checking prerequisites... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
1. Input: `.vsaf/docs/hotfixes/{bug-id}/` directory
|
|
8
|
+
2. Verify these files exist:
|
|
9
|
+
- `01-analysis.md` — root cause analysis
|
|
10
|
+
- `02-prd.md` — fix requirements (MUST have `## Gate: APPROVED`)
|
|
11
|
+
- `03-impl-log.md` — implementation log
|
|
12
|
+
3. Check `02-prd.md` has `## Gate: APPROVED`
|
|
13
|
+
- No Gate → Stop: "PRD not approved. Get approval before shipping."
|
|
14
|
+
4. Verify current branch is `hotfix/{bug-id}`
|
|
15
|
+
- Wrong branch → Stop: "Not on hotfix branch. Switch to `hotfix/{bug-id}`."
|
|
16
|
+
5. Read `CONTEXT.md`
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
[HOTFIX-SHIP] [1/5] Checking prerequisites... ✅
|
|
20
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
## Phase Exit Protocol
|
|
2
|
+
|
|
3
|
+
Print PHASE REPORT:
|
|
4
|
+
```
|
|
5
|
+
═══════════════════════════════════════════
|
|
6
|
+
HOTFIX SHIPPED: {bug-id}
|
|
7
|
+
═══════════════════════════════════════════
|
|
8
|
+
Flow: Analyze → PRD → Implement → Ship
|
|
9
|
+
|
|
10
|
+
PR: #{number} — {url}
|
|
11
|
+
Branch: hotfix/{bug-id}
|
|
12
|
+
Commit: source code + .vsaf/docs/ only
|
|
13
|
+
Excluded: graphify-out/, .gitnexus/
|
|
14
|
+
|
|
15
|
+
Artifacts: .vsaf/docs/hotfixes/{bug-id}/ (4 files)
|
|
16
|
+
|
|
17
|
+
Hotfix DONE.
|
|
18
|
+
═══════════════════════════════════════════
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Update `.vsaf/docs/STATUS.md` → move to "Completed Hotfixes".
|
|
22
|
+
|
|
23
|
+
## Rules
|
|
24
|
+
|
|
25
|
+
- ⛔ Do NOT review code — that happened during TDD (self-review via SonarQube)
|
|
26
|
+
- ⛔ Do NOT commit `graphify-out/` or `.gitnexus/`
|
|
27
|
+
- ⛔ Do NOT ship if tests are failing
|
|
28
|
+
- ⛔ Do NOT ship without PRD Gate: APPROVED
|
|
29
|
+
- Gate comes from PRD approval — no separate review phase needed
|
|
30
|
+
- PR description MUST be self-contained
|
|
31
|
+
- Commit message follows conventional format: `fix({area}): {description}`
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
### Step 2: .gitignore Enforcement
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[HOTFIX-SHIP] [2/5] Checking .gitignore... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
**MANDATORY** — verify before committing:
|
|
8
|
+
|
|
9
|
+
1. Check `.gitignore` contains:
|
|
10
|
+
```
|
|
11
|
+
graphify-out/
|
|
12
|
+
.gitnexus/
|
|
13
|
+
```
|
|
14
|
+
2. If MISSING → add automatically and notify user
|
|
15
|
+
3. Verify with `git status` — `graphify-out/` and `.gitnexus/` do NOT appear
|
|
16
|
+
4. If they appear → `git rm --cached -r graphify-out/ .gitnexus/`
|
|
17
|
+
|
|
18
|
+
⚠️ **ABSOLUTELY DO NOT commit `graphify-out/` or `.gitnexus/`**
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
[HOTFIX-SHIP] [2/5] Checking .gitignore... ✅
|
|
22
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
### Step 5: Ship Report
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[HOTFIX-SHIP] [5/5] Writing ship report... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Write file: `.vsaf/docs/hotfixes/{bug-id}/04-ship.md`
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# Ship Report: {bug-id}
|
|
11
|
+
|
|
12
|
+
## PR
|
|
13
|
+
- {repo}: PR #{number} — {url}
|
|
14
|
+
|
|
15
|
+
## Branch
|
|
16
|
+
`hotfix/{bug-id}` → `main`
|
|
17
|
+
|
|
18
|
+
## Commit Scope
|
|
19
|
+
- Source code: {N} files (minimal fix)
|
|
20
|
+
- .vsaf/docs/: {M} files (hotfix artifacts)
|
|
21
|
+
- Excluded: graphify-out/, .gitnexus/ (local index)
|
|
22
|
+
|
|
23
|
+
## Final Status
|
|
24
|
+
- Build: PASS
|
|
25
|
+
- Tests: all GREEN (including regression test)
|
|
26
|
+
- PRD Gate: APPROVED
|
|
27
|
+
|
|
28
|
+
## Bug Fix Summary
|
|
29
|
+
- Root cause: {from 01-analysis.md}
|
|
30
|
+
- Regression test: {test file}:{test name}
|
|
31
|
+
- Fix: {minimal diff description}
|
|
32
|
+
|
|
33
|
+
## Artifacts
|
|
34
|
+
- `01-analysis.md` — root cause analysis
|
|
35
|
+
- `02-prd.md` — fix requirements (approved)
|
|
36
|
+
- `03-impl-log.md` — TDD implementation log
|
|
37
|
+
- `04-ship.md` — this file
|
|
38
|
+
|
|
39
|
+
## Post-pull Setup
|
|
40
|
+
After pulling the code, run:
|
|
41
|
+
- `npx gitnexus analyze` — re-index code
|
|
42
|
+
- `/graphify` — rebuild knowledge graph
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
[HOTFIX-SHIP] [5/5] Writing ship report... ✅
|
|
47
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
### Step 3: Final Test Gate
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[HOTFIX-SHIP] [3/5] Final test verification... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Run full test suite one last time before shipping:
|
|
8
|
+
```bash
|
|
9
|
+
npm test # or mvn test / gradle test / equivalent
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
- ALL tests MUST pass
|
|
13
|
+
- If FAIL → Stop: "Tests failing. Fix before shipping."
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
[HOTFIX-SHIP] [3/5] Final test verification... ✅
|
|
17
|
+
```
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
### Step 7: Build & Run Verification
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[IMPLEMENT] [7/8] Build & run verification... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
**MANDATORY** — code MUST compile and run successfully before exiting the phase.
|
|
8
|
+
|
|
9
|
+
1. **Compile check**: Build the entire project → MUST have 0 errors
|
|
10
|
+
- Java: `mvn compile` or `gradle build`
|
|
11
|
+
- Node: `npm run build` / `tsc --noEmit`
|
|
12
|
+
- Angular: `ng build`
|
|
13
|
+
- Go: `go build ./...`
|
|
14
|
+
- If FAIL → fix immediately, DO NOT skip
|
|
15
|
+
|
|
16
|
+
2. **Run verification**: Start application → MUST start successfully
|
|
17
|
+
- If the project has `docker-compose.yml` → `docker compose up`
|
|
18
|
+
- If not → use native run command
|
|
19
|
+
- Check health endpoint / startup log OK
|
|
20
|
+
|
|
21
|
+
3. **Environment check**:
|
|
22
|
+
- Detect required runtime (JDK, Node, Python, Go, etc.)
|
|
23
|
+
- If runtime missing → ⚠️ **WARNING**: "Missing {runtime}. Cannot verify build."
|
|
24
|
+
- **Recommend Docker**: "Recommend using Docker to ensure a consistent environment. Create a Dockerfile if one does not exist."
|
|
25
|
+
- If Docker available → prefer building in container
|
|
26
|
+
|
|
27
|
+
4. **Test suite run**: `npm test` / `mvn test` / equivalent → All tests PASS
|
|
28
|
+
|
|
29
|
+
5. **Final SonarQube sweep**: Scan all new code one last time before exiting
|
|
30
|
+
- Confirm both New Code and Overall Code conditions are green per the shared `quality-gate.md` (single source of truth)
|
|
31
|
+
- If FAIL → fix immediately, this is a hard gate
|
|
32
|
+
|
|
33
|
+
⚠️ **DO NOT exit the phase if code does not compile.** This is a hard gate — no exceptions.
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
[IMPLEMENT] [7/8] Build & run verification... ✅
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Multi-machine Branching
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Single repo:
|
|
43
|
+
main → feat/{feature} → feat/{feature}/epic-1 (Subagent A)
|
|
44
|
+
→ feat/{feature}/epic-2 (Subagent B)
|
|
45
|
+
|
|
46
|
+
Multi-repo:
|
|
47
|
+
Subagent A: cd user-service && git checkout -b feat/{feature}
|
|
48
|
+
Subagent B: cd payment-service && git checkout -b feat/{feature}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Output
|
|
52
|
+
|
|
53
|
+
- `.vsaf/docs/features/{feature-name}/07-impl-plan.md` — task plan + TDD log
|
|
54
|
+
- Code changes on feature branch
|
|
55
|
+
- All tests GREEN
|
|
56
|
+
- SonarQube metrics PASS (verified during coding)
|
|
57
|
+
|
|
58
|
+
## Phase Exit Protocol
|
|
59
|
+
|
|
60
|
+
In PHASE REPORT:
|
|
61
|
+
- Done: N tasks completed, M tests written, K subagents dispatched
|
|
62
|
+
- Result: all tests PASS/FAIL
|
|
63
|
+
- 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}%
|
|
64
|
+
- SonarQube (Overall): {PASS/FAIL vs shared gate} — Bugs={N}, Code Smells={N}, Duplication={N}%, ratings={A..E}
|
|
65
|
+
- Output files: `07-impl-plan.md`
|
|
66
|
+
- Code changes: {list files changed}
|
|
67
|
+
- Suggestions: [1] Phase 7 Review (`/sdlc-review`) [2] Save artifacts
|
|
68
|
+
|
|
69
|
+
Update `.vsaf/docs/STATUS.md`.
|
|
70
|
+
|
|
71
|
+
**Notify the user:**
|
|
72
|
+
> Artifacts have been saved. If the session is interrupted, open a new session and run the next phase — data is safe.
|
|
73
|
+
|
|
74
|
+
## Rules
|
|
75
|
+
|
|
76
|
+
- DO NOT write code without a failing test first (#2 TDD)
|
|
77
|
+
- **MANDATORY** use `/superpowers:subagent-driven-development` — do not run sequential
|
|
78
|
+
- **SonarQube rules apply DURING coding** — do not wait for review
|
|
79
|
+
- Follow the Conflict Map — only modify files assigned to your epic
|
|
80
|
+
- 3-strike rule: task fails 3 times → STOP, escalate
|
|
81
|
+
- Impact analysis MUST run before each commit
|
|
82
|
+
- Smart Zone: clear context every 5 tasks (#4)
|
|
83
|
+
- **Code MUST compile successfully** — hard gate, no exceptions
|
|
84
|
+
- **Recommend Docker** if runtime is missing or containerization is not set up
|
|
85
|
+
- ⛔ DO NOT modify `graphify-out/` or `.gitnexus/`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
### Step 3.5: Checkpoint Review (every 3-5 tasks)
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[IMPLEMENT] [3.5/8] Checkpoint review... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
After every 3-5 completed tasks: invoke `/bmad-checkpoint-preview` (human-in-the-loop walkthrough).
|
|
8
|
+
|
|
9
|
+
Purpose: pause and let the user review progress before continuing.
|
|
10
|
+
|
|
11
|
+
The checkpoint will:
|
|
12
|
+
- Summarize: what was done, which files changed, current tests status
|
|
13
|
+
- Highlight: points of concern, potential issues
|
|
14
|
+
- Ask user: continue / adjust / stop?
|
|
15
|
+
|
|
16
|
+
**Skip checkpoint if** the total plan has fewer than 5 tasks — checkpoint only at the end in that case.
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
[IMPLEMENT] [3.5/8] Checkpoint review... ✅
|
|
20
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
### Step 5: Debug (if needed)
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[IMPLEMENT] [5/8] Debug (if there are test failures)... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use `/superpowers:systematic-debugging` — when a test does not turn GREEN:
|
|
8
|
+
- Hypothesis → Experiment → Conclusion
|
|
9
|
+
- If it fails 3 times → STOP, escalate
|
|
10
|
+
|
|
11
|
+
**Scope-drift detection:**
|
|
12
|
+
|
|
13
|
+
If during implementation you detect the feature requires CHANGES NOT IN THE SRS:
|
|
14
|
+
1. Invoke `/bmad-correct-course` — assess impact + propose adjustments
|
|
15
|
+
2. If requirements have genuinely changed:
|
|
16
|
+
- STOP implementation
|
|
17
|
+
- Update SRS first via `/sdlc-srs` EDIT mode
|
|
18
|
+
- Re-run `/sdlc-test-design` to generate new test cases
|
|
19
|
+
- Restart Phase 6 from Step 3
|
|
20
|
+
3. If only minor adjustments needed: document the adjustment in `07-impl-plan.md` §Scope Adjustments and continue
|
|
21
|
+
4. If unclear whether scope changed: STOP and present to user — let them decide
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
[IMPLEMENT] [5/8] Debug (if there are test failures)... ✅
|
|
25
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
### Step 6: Impact Verification
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[IMPLEMENT] [6/8] Impact verification via GitNexus... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use GitNexus `impact` — verify no other code is broken.
|
|
8
|
+
Use GitNexus `rename` — safe multi-file refactoring if needed.
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
[IMPLEMENT] [6/8] Impact verification via GitNexus... ✅
|
|
12
|
+
```
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
### Step 3: Task Planning
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[IMPLEMENT] [3/8] Task planning from testcases + ADR... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use `/superpowers:writing-plans` — create granular task plan from testcases + ADR.
|
|
8
|
+
Each task maps to ≥1 FR/NFR.
|
|
9
|
+
Write to `07-impl-plan.md`.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
[IMPLEMENT] [3/8] Task planning from testcases + ADR... ✅
|
|
13
|
+
```
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## Phase Entry Protocol
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[IMPLEMENT] [1/8] Checking input artifacts... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
1. Input:
|
|
8
|
+
- `.vsaf/docs/features/{feature-name}/06-testcases.md`
|
|
9
|
+
- `.vsaf/docs/features/{feature-name}/03-adr.md`
|
|
10
|
+
- `.vsaf/docs/features/{feature-name}/04-epics.md`
|
|
11
|
+
2. Verify ALL 3 files exist:
|
|
12
|
+
- Any file missing → Ask: "File not found. Have you pulled it yet?"
|
|
13
|
+
3. Read `.vsaf/docs/STATUS.md`
|
|
14
|
+
4. Read `CONTEXT.md`
|
|
15
|
+
5. Query `graph.json` for code structure
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
[IMPLEMENT] [1/8] Checking input artifacts... ✅
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**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`.
|