@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,161 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-hotfix-prd
|
|
3
|
-
description: "Hotfix Phase 2 — Lightweight PRD from analysis: fix requirements, acceptance criteria, scope"
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Hotfix Phase 2: PRD (Fix Requirements)
|
|
9
|
-
|
|
10
|
-
You are a Principal Product Owner focused on a surgical fix. Mission: define exactly what needs to change, acceptance criteria, and "done" definition — no discovery needed (grill already happened in analyze phase).
|
|
11
|
-
|
|
12
|
-
## Language Rule
|
|
13
|
-
|
|
14
|
-
Output documents (02-prd.md) MUST be written in Vietnamese. Only keep English for: IDs, technical terms, code references.
|
|
15
|
-
|
|
16
|
-
## Progress Protocol
|
|
17
|
-
|
|
18
|
-
Print progress at each step:
|
|
19
|
-
```
|
|
20
|
-
[HOTFIX-PRD] [step/4] description... ⏳
|
|
21
|
-
[HOTFIX-PRD] [step/4] description... ✅
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Index Protection
|
|
25
|
-
|
|
26
|
-
⛔ Do NOT modify `graphify-out/` or `.gitnexus/` — READ only.
|
|
27
|
-
|
|
28
|
-
## Phase Entry Protocol
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
[HOTFIX-PRD] [1/4] Checking input artifacts... ⏳
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
1. Input: `.vsaf/docs/hotfixes/{bug-id}/01-analysis.md`
|
|
35
|
-
2. Verify file exists:
|
|
36
|
-
- Does not exist → Stop: "Analysis not found. Run `/sdlc-hotfix-analyze` first."
|
|
37
|
-
3. Read the analysis file — extract:
|
|
38
|
-
- Root cause (file:line)
|
|
39
|
-
- Blast radius
|
|
40
|
-
- Fix strategy (proposed in analyze phase)
|
|
41
|
-
- Affected files
|
|
42
|
-
4. Read `.vsaf/docs/STATUS.md`
|
|
43
|
-
5. Read `CONTEXT.md`
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
[HOTFIX-PRD] [1/4] Checking input artifacts... ✅
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Tasks
|
|
50
|
-
|
|
51
|
-
### Step 2: Define Fix Requirements
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
[HOTFIX-PRD] [2/4] Defining fix requirements from analysis... ⏳
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Based on the analysis (NOT a new grill session — that already happened), define:
|
|
58
|
-
|
|
59
|
-
1. **Fix Goal** — one sentence: what the fix achieves
|
|
60
|
-
2. **Functional Requirements** — FR-001, FR-002... (typically 1-3 for a hotfix)
|
|
61
|
-
- Each FR traces to the root cause or blast radius item
|
|
62
|
-
3. **Acceptance Criteria** — Given/When/Then for each FR
|
|
63
|
-
- MUST include a regression test criterion: "Given the fix is applied, When {original reproduction steps}, Then {expected behavior}"
|
|
64
|
-
4. **Scope Boundary** — explicitly state what is OUT of scope (no refactoring, no enhancements)
|
|
65
|
-
5. **Non-Functional Requirements** — only if relevant (performance regression, security)
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
[HOTFIX-PRD] [2/4] Defining fix requirements... ✅
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Step 3: Validate + Risk Check
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
[HOTFIX-PRD] [3/4] Validating PRD... ⏳
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Use `/bmad-validate-prd` — validate:
|
|
78
|
-
- Every FR is testable
|
|
79
|
-
- Acceptance criteria are unambiguous
|
|
80
|
-
- Scope is minimal (hotfix, not enhancement)
|
|
81
|
-
- Fix addresses root cause, not just symptom
|
|
82
|
-
|
|
83
|
-
If FAIL → fix inline, re-validate.
|
|
84
|
-
|
|
85
|
-
Use GitNexus `impact` — confirm blast radius from analysis is still accurate.
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
[HOTFIX-PRD] [3/4] Validating PRD... ✅
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Step 4: Write PRD
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
[HOTFIX-PRD] [4/4] Writing hotfix PRD... ⏳
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Write file: `.vsaf/docs/hotfixes/{bug-id}/02-prd.md`
|
|
98
|
-
|
|
99
|
-
```markdown
|
|
100
|
-
# Hotfix PRD: {bug-id}
|
|
101
|
-
|
|
102
|
-
## Fix Goal
|
|
103
|
-
{one sentence}
|
|
104
|
-
|
|
105
|
-
## Source
|
|
106
|
-
- Analysis: `01-analysis.md`
|
|
107
|
-
- Root cause: {file:line — summary}
|
|
108
|
-
|
|
109
|
-
## Functional Requirements
|
|
110
|
-
|
|
111
|
-
### FR-001: {title}
|
|
112
|
-
{description}
|
|
113
|
-
|
|
114
|
-
**Acceptance Criteria:**
|
|
115
|
-
- Given {context}, When {action}, Then {expected result}
|
|
116
|
-
|
|
117
|
-
### FR-002: {title} (if needed)
|
|
118
|
-
...
|
|
119
|
-
|
|
120
|
-
## Non-Functional Requirements
|
|
121
|
-
{NFR-001 if applicable, otherwise "N/A — no NFR impact for this fix"}
|
|
122
|
-
|
|
123
|
-
## Scope Boundary
|
|
124
|
-
**In scope:** {what will change}
|
|
125
|
-
**Out of scope:** {what will NOT change — no refactoring, no enhancements}
|
|
126
|
-
|
|
127
|
-
## Blast Radius (confirmed)
|
|
128
|
-
{from GitNexus impact — files that may be affected}
|
|
129
|
-
|
|
130
|
-
## Gate: {PENDING / APPROVED by {name} on {date}}
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
```
|
|
134
|
-
[HOTFIX-PRD] [4/4] Writing hotfix PRD... ✅
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Gate
|
|
138
|
-
|
|
139
|
-
Human must approve the PRD. Write `## Gate: APPROVED` at the end of the file.
|
|
140
|
-
Do NOT proceed to implementation without the Gate marker.
|
|
141
|
-
|
|
142
|
-
## Phase Exit Protocol
|
|
143
|
-
|
|
144
|
-
Print PHASE REPORT:
|
|
145
|
-
- Bug: {bug-id}
|
|
146
|
-
- Status: PRD COMPLETED
|
|
147
|
-
- FRs: {count} functional requirements
|
|
148
|
-
- Output: `.vsaf/docs/hotfixes/{bug-id}/02-prd.md`
|
|
149
|
-
- Next step: `/sdlc-hotfix-implement`
|
|
150
|
-
|
|
151
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
152
|
-
|
|
153
|
-
> Artifacts saved. If the session is interrupted, open a new session and run the next phase — data is safe.
|
|
154
|
-
|
|
155
|
-
## Rules
|
|
156
|
-
|
|
157
|
-
- ⛔ Do NOT start a new grill session — analysis already has grill results
|
|
158
|
-
- ⛔ Do NOT modify `graphify-out/` or `.gitnexus/`
|
|
159
|
-
- ⛔ Do NOT add enhancements — hotfix scope only
|
|
160
|
-
- Scope MUST be minimal — fix root cause, add regression test, nothing more
|
|
161
|
-
- Every FR MUST be directly traceable to the root cause or blast radius
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-hotfix-review
|
|
3
|
-
description: "Hotfix Phase 4 — Quick review — verify minimal fix, impact check, test quality, SonarQube on changed files"
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Hotfix Phase 4: Quick Review
|
|
9
|
-
|
|
10
|
-
You are a Tech Lead doing a focused hotfix review. Mission: verify the fix is minimal, the test is real, and nothing else broke.
|
|
11
|
-
|
|
12
|
-
## Language Rule
|
|
13
|
-
|
|
14
|
-
Output documents (02-review.md) MUST be written in Vietnamese. Only keep English for: IDs, technical terms, code references. The template below shows structure only — write actual content in Vietnamese.
|
|
15
|
-
|
|
16
|
-
## Progress Protocol
|
|
17
|
-
|
|
18
|
-
Print progress at each step:
|
|
19
|
-
```
|
|
20
|
-
[HOTFIX-REVIEW] [step/4] description... ⏳
|
|
21
|
-
[HOTFIX-REVIEW] [step/4] description... ✅
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Index Protection
|
|
25
|
-
|
|
26
|
-
⛔ Do NOT modify `graphify-out/` or `.gitnexus/` — READ only.
|
|
27
|
-
|
|
28
|
-
## Phase Entry Protocol
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
[HOTFIX-REVIEW] [1/4] Loading context... ⏳
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
1. Read `.vsaf/docs/hotfixes/{bug-id}/01-analysis.md` — understand what was supposed to change
|
|
35
|
-
2. Read `CONTEXT.md`
|
|
36
|
-
3. Identify all files changed in the GREEN phase (use git diff or read the phase report)
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
[HOTFIX-REVIEW] [1/4] Loading context... ✅
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Tasks
|
|
43
|
-
|
|
44
|
-
### Step 2: Minimality Verification
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
[HOTFIX-REVIEW] [2/4] Verifying fix is minimal... ⏳
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Check:
|
|
51
|
-
- [ ] Only files identified in the analysis were changed
|
|
52
|
-
- [ ] No unnecessary refactoring included
|
|
53
|
-
- [ ] No formatting-only changes on untouched code
|
|
54
|
-
- [ ] No unrelated fixes bundled in
|
|
55
|
-
- [ ] Diff size is proportional to the bug (a 1-line bug should not need 50 lines of changes)
|
|
56
|
-
|
|
57
|
-
If any check fails → flag as CHANGES_REQUESTED with specific reason.
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
[HOTFIX-REVIEW] [2/4] Verifying fix is minimal... ✅
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Step 3: Test Quality Check
|
|
64
|
-
|
|
65
|
-
```
|
|
66
|
-
[HOTFIX-REVIEW] [3/4] Verifying test quality... ⏳
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Read the reproduction test and verify:
|
|
70
|
-
- [ ] Test targets the specific bug (not a generic happy-path test)
|
|
71
|
-
- [ ] Test would FAIL without the fix (it's not trivially always-passing)
|
|
72
|
-
- [ ] Test exercises the exact code path from the root cause analysis
|
|
73
|
-
- [ ] Test has a descriptive name referencing the bug
|
|
74
|
-
- [ ] Test follows project conventions
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
[HOTFIX-REVIEW] [3/4] Verifying test quality... ✅
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Step 4: Impact Check + SonarQube
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
[HOTFIX-REVIEW] [4/4] Impact check + quality gate... ⏳
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
1. Use GitNexus `detect_changes` + `impact` — confirm blast radius matches the analysis
|
|
87
|
-
2. If blast radius is LARGER than analysis predicted → flag for human review
|
|
88
|
-
3. SonarQube rules on changed files only:
|
|
89
|
-
|
|
90
|
-
| Metric | Threshold |
|
|
91
|
-
|--------|-----------|
|
|
92
|
-
| Issues (Blocker) | 0 |
|
|
93
|
-
| Issues (Critical) | 0 |
|
|
94
|
-
| Security Hotspots | 0 |
|
|
95
|
-
| New code smells | 0 |
|
|
96
|
-
|
|
97
|
-
> **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.
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
[HOTFIX-REVIEW] [4/4] Impact check + quality gate... ✅
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Gate
|
|
104
|
-
|
|
105
|
-
Write `## Gate: APPROVED` or `## Gate: CHANGES_REQUESTED` with reasons.
|
|
106
|
-
|
|
107
|
-
If CHANGES_REQUESTED:
|
|
108
|
-
- List specific issues with triage: MUST FIX / SHOULD FIX / NOTED
|
|
109
|
-
- Do NOT proceed to ship until all MUST FIX items are resolved
|
|
110
|
-
|
|
111
|
-
## Output
|
|
112
|
-
|
|
113
|
-
Write file: `.vsaf/docs/hotfixes/{bug-id}/02-review.md`
|
|
114
|
-
|
|
115
|
-
```markdown
|
|
116
|
-
# Hotfix Review: {bug-id}
|
|
117
|
-
|
|
118
|
-
## Minimality Check
|
|
119
|
-
{minimality check results}
|
|
120
|
-
|
|
121
|
-
## Test Quality Check
|
|
122
|
-
{test quality check results}
|
|
123
|
-
|
|
124
|
-
## Blast Radius
|
|
125
|
-
{blast radius confirmation — matches/exceeds analysis}
|
|
126
|
-
|
|
127
|
-
## SonarQube
|
|
128
|
-
{quality gate results on changed files}
|
|
129
|
-
|
|
130
|
-
## Conclusion
|
|
131
|
-
{overall assessment}
|
|
132
|
-
|
|
133
|
-
## Gate: {APPROVED / CHANGES_REQUESTED}
|
|
134
|
-
{reasons if changes requested}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Phase Exit Protocol
|
|
138
|
-
|
|
139
|
-
Print PHASE REPORT:
|
|
140
|
-
- Bug: {bug-id}
|
|
141
|
-
- Status: REVIEW COMPLETED
|
|
142
|
-
- Gate: {APPROVED / CHANGES_REQUESTED}
|
|
143
|
-
- Output: `.vsaf/docs/hotfixes/{bug-id}/02-review.md`
|
|
144
|
-
- Next step: `/sdlc-ship` (if approved)
|
|
145
|
-
|
|
146
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
147
|
-
|
|
148
|
-
## Rules
|
|
149
|
-
|
|
150
|
-
- ⛔ Do NOT modify code — review only
|
|
151
|
-
- ⛔ Do NOT modify `graphify-out/` or `.gitnexus/`
|
|
152
|
-
- A hotfix review is FAST but NOT sloppy — every check matters
|
|
153
|
-
- If the fix touches more files than the analysis predicted, escalate to human
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-hotfix-ship
|
|
3
|
-
description: "Hotfix Phase 4 — Ship: commit, PR on hotfix branch, ship report"
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Hotfix Phase 4: Ship
|
|
9
|
-
|
|
10
|
-
You are DevOps Engineer. Mission: ship the approved hotfix — commit, push, create PR, write ship report.
|
|
11
|
-
|
|
12
|
-
## Progress Protocol
|
|
13
|
-
|
|
14
|
-
Print progress at each step:
|
|
15
|
-
```
|
|
16
|
-
[HOTFIX-SHIP] [step/5] description... ⏳
|
|
17
|
-
[HOTFIX-SHIP] [step/5] description... ✅
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Phase Entry Protocol
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
[HOTFIX-SHIP] [1/5] Checking prerequisites... ⏳
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
1. Input: `.vsaf/docs/hotfixes/{bug-id}/` directory
|
|
27
|
-
2. Verify these files exist:
|
|
28
|
-
- `01-analysis.md` — root cause analysis
|
|
29
|
-
- `02-prd.md` — fix requirements (MUST have `## Gate: APPROVED`)
|
|
30
|
-
- `03-impl-log.md` — implementation log
|
|
31
|
-
3. Check `02-prd.md` has `## Gate: APPROVED`
|
|
32
|
-
- No Gate → Stop: "PRD not approved. Get approval before shipping."
|
|
33
|
-
4. Verify current branch is `hotfix/{bug-id}`
|
|
34
|
-
- Wrong branch → Stop: "Not on hotfix branch. Switch to `hotfix/{bug-id}`."
|
|
35
|
-
5. Read `CONTEXT.md`
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
[HOTFIX-SHIP] [1/5] Checking prerequisites... ✅
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Tasks
|
|
42
|
-
|
|
43
|
-
### Step 2: .gitignore Enforcement
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
[HOTFIX-SHIP] [2/5] Checking .gitignore... ⏳
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**MANDATORY** — verify before committing:
|
|
50
|
-
|
|
51
|
-
1. Check `.gitignore` contains:
|
|
52
|
-
```
|
|
53
|
-
graphify-out/
|
|
54
|
-
.gitnexus/
|
|
55
|
-
```
|
|
56
|
-
2. If MISSING → add automatically and notify user
|
|
57
|
-
3. Verify with `git status` — `graphify-out/` and `.gitnexus/` do NOT appear
|
|
58
|
-
4. If they appear → `git rm --cached -r graphify-out/ .gitnexus/`
|
|
59
|
-
|
|
60
|
-
⚠️ **ABSOLUTELY DO NOT commit `graphify-out/` or `.gitnexus/`**
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
[HOTFIX-SHIP] [2/5] Checking .gitignore... ✅
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Step 3: Final Test Gate
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
[HOTFIX-SHIP] [3/5] Final test verification... ⏳
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Run full test suite one last time before shipping:
|
|
73
|
-
```bash
|
|
74
|
-
npm test # or mvn test / gradle test / equivalent
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
- ALL tests MUST pass
|
|
78
|
-
- If FAIL → Stop: "Tests failing. Fix before shipping."
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
[HOTFIX-SHIP] [3/5] Final test verification... ✅
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Step 4: Commit + Push + PR
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
[HOTFIX-SHIP] [4/5] Commit + push + create PR... ⏳
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**Commit scope — ONLY commit:**
|
|
91
|
-
- Source code changes (the fix)
|
|
92
|
-
- `.vsaf/docs/hotfixes/{bug-id}/` (all artifacts)
|
|
93
|
-
- `.gitignore` (if updated)
|
|
94
|
-
|
|
95
|
-
**DO NOT commit:**
|
|
96
|
-
- `graphify-out/`
|
|
97
|
-
- `.gitnexus/`
|
|
98
|
-
|
|
99
|
-
**Commit message format:**
|
|
100
|
-
```
|
|
101
|
-
fix({area}): {short description}
|
|
102
|
-
|
|
103
|
-
Root cause: {one line from 01-analysis.md}
|
|
104
|
-
Closes: #{issue-number} (if applicable)
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
**Push + PR:**
|
|
108
|
-
```bash
|
|
109
|
-
git push -u origin hotfix/{bug-id}
|
|
110
|
-
gh pr create --title "fix({area}): {short description}" --body "{PR body}"
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
**PR body template:**
|
|
114
|
-
```markdown
|
|
115
|
-
## Bug Fix: {bug-id}
|
|
116
|
-
|
|
117
|
-
### Root Cause
|
|
118
|
-
{from 01-analysis.md — one paragraph}
|
|
119
|
-
|
|
120
|
-
### Fix
|
|
121
|
-
{from 03-impl-log.md — what was changed and why}
|
|
122
|
-
|
|
123
|
-
### Tests
|
|
124
|
-
- Regression test: `{test file}:{test name}`
|
|
125
|
-
- Full suite: {total} tests, all PASS
|
|
126
|
-
|
|
127
|
-
### Affected Files
|
|
128
|
-
{list from 03-impl-log.md}
|
|
129
|
-
|
|
130
|
-
### Scope
|
|
131
|
-
- ✅ Fix only — no refactoring, no enhancements
|
|
132
|
-
- ✅ Regression test added
|
|
133
|
-
- ✅ Full test suite passing
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
> **Post-pull:** Run `npx gitnexus analyze` and `/graphify` to re-index locally.
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
[HOTFIX-SHIP] [4/5] Commit + push + create PR... ✅
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### Step 5: Ship Report
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
[HOTFIX-SHIP] [5/5] Writing ship report... ⏳
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
Write file: `.vsaf/docs/hotfixes/{bug-id}/04-ship.md`
|
|
150
|
-
|
|
151
|
-
```markdown
|
|
152
|
-
# Ship Report: {bug-id}
|
|
153
|
-
|
|
154
|
-
## PR
|
|
155
|
-
- {repo}: PR #{number} — {url}
|
|
156
|
-
|
|
157
|
-
## Branch
|
|
158
|
-
`hotfix/{bug-id}` → `main`
|
|
159
|
-
|
|
160
|
-
## Commit Scope
|
|
161
|
-
- Source code: {N} files (minimal fix)
|
|
162
|
-
- .vsaf/docs/: {M} files (hotfix artifacts)
|
|
163
|
-
- Excluded: graphify-out/, .gitnexus/ (local index)
|
|
164
|
-
|
|
165
|
-
## Final Status
|
|
166
|
-
- Build: PASS
|
|
167
|
-
- Tests: all GREEN (including regression test)
|
|
168
|
-
- PRD Gate: APPROVED
|
|
169
|
-
|
|
170
|
-
## Bug Fix Summary
|
|
171
|
-
- Root cause: {from 01-analysis.md}
|
|
172
|
-
- Regression test: {test file}:{test name}
|
|
173
|
-
- Fix: {minimal diff description}
|
|
174
|
-
|
|
175
|
-
## Artifacts
|
|
176
|
-
- `01-analysis.md` — root cause analysis
|
|
177
|
-
- `02-prd.md` — fix requirements (approved)
|
|
178
|
-
- `03-impl-log.md` — TDD implementation log
|
|
179
|
-
- `04-ship.md` — this file
|
|
180
|
-
|
|
181
|
-
## Post-pull Setup
|
|
182
|
-
After pulling the code, run:
|
|
183
|
-
- `npx gitnexus analyze` — re-index code
|
|
184
|
-
- `/graphify` — rebuild knowledge graph
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
```
|
|
188
|
-
[HOTFIX-SHIP] [5/5] Writing ship report... ✅
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## Phase Exit Protocol
|
|
192
|
-
|
|
193
|
-
Print PHASE REPORT:
|
|
194
|
-
```
|
|
195
|
-
═══════════════════════════════════════════
|
|
196
|
-
HOTFIX SHIPPED: {bug-id}
|
|
197
|
-
═══════════════════════════════════════════
|
|
198
|
-
Flow: Analyze → PRD → Implement → Ship
|
|
199
|
-
|
|
200
|
-
PR: #{number} — {url}
|
|
201
|
-
Branch: hotfix/{bug-id}
|
|
202
|
-
Commit: source code + .vsaf/docs/ only
|
|
203
|
-
Excluded: graphify-out/, .gitnexus/
|
|
204
|
-
|
|
205
|
-
Artifacts: .vsaf/docs/hotfixes/{bug-id}/ (4 files)
|
|
206
|
-
|
|
207
|
-
Hotfix DONE.
|
|
208
|
-
═══════════════════════════════════════════
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
Update `.vsaf/docs/STATUS.md` → move to "Completed Hotfixes".
|
|
212
|
-
|
|
213
|
-
## Rules
|
|
214
|
-
|
|
215
|
-
- ⛔ Do NOT review code — that happened during TDD (self-review via SonarQube)
|
|
216
|
-
- ⛔ Do NOT commit `graphify-out/` or `.gitnexus/`
|
|
217
|
-
- ⛔ Do NOT ship if tests are failing
|
|
218
|
-
- ⛔ Do NOT ship without PRD Gate: APPROVED
|
|
219
|
-
- Gate comes from PRD approval — no separate review phase needed
|
|
220
|
-
- PR description MUST be self-contained
|
|
221
|
-
- Commit message follows conventional format: `fix({area}): {description}`
|