@ngocsangairvds/vsaf 5.1.5 → 5.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/package.json +1 -1
  2. package/packages/cli/dist/adapters/antigravity.d.ts.map +1 -1
  3. package/packages/cli/dist/adapters/antigravity.js +14 -30
  4. package/packages/cli/dist/adapters/antigravity.js.map +1 -1
  5. package/packages/cli/dist/adapters/claude.d.ts.map +1 -1
  6. package/packages/cli/dist/adapters/claude.js +8 -10
  7. package/packages/cli/dist/adapters/claude.js.map +1 -1
  8. package/packages/cli/dist/adapters/codex.d.ts.map +1 -1
  9. package/packages/cli/dist/adapters/codex.js +6 -9
  10. package/packages/cli/dist/adapters/codex.js.map +1 -1
  11. package/packages/cli/dist/adapters/cursor.d.ts.map +1 -1
  12. package/packages/cli/dist/adapters/cursor.js +22 -24
  13. package/packages/cli/dist/adapters/cursor.js.map +1 -1
  14. package/packages/cli/dist/commands/init.d.ts.map +1 -1
  15. package/packages/cli/dist/commands/init.js +7 -19
  16. package/packages/cli/dist/commands/init.js.map +1 -1
  17. package/packages/cli/dist/commands/install.d.ts +3 -6
  18. package/packages/cli/dist/commands/install.d.ts.map +1 -1
  19. package/packages/cli/dist/commands/install.js +27 -10
  20. package/packages/cli/dist/commands/install.js.map +1 -1
  21. package/packages/cli/dist/commands/skill.d.ts.map +1 -1
  22. package/packages/cli/dist/commands/skill.js +40 -16
  23. package/packages/cli/dist/commands/skill.js.map +1 -1
  24. package/packages/cli/dist/index.js +2 -2
  25. package/packages/cli/dist/index.js.map +1 -1
  26. package/packages/cli/dist/install/orchestrator.d.ts +0 -8
  27. package/packages/cli/dist/install/orchestrator.d.ts.map +1 -1
  28. package/packages/cli/dist/install/orchestrator.js +3 -54
  29. package/packages/cli/dist/install/orchestrator.js.map +1 -1
  30. package/packages/cli/dist/server/routes/runs.d.ts.map +1 -1
  31. package/packages/cli/dist/server/routes/runs.js +81 -3
  32. package/packages/cli/dist/server/routes/runs.js.map +1 -1
  33. package/packages/cli/dist/server/routes/workflows.d.ts.map +1 -1
  34. package/packages/cli/dist/server/routes/workflows.js +76 -17
  35. package/packages/cli/dist/server/routes/workflows.js.map +1 -1
  36. package/packages/cli/dist/server/services/execution-manager.d.ts +11 -1
  37. package/packages/cli/dist/server/services/execution-manager.d.ts.map +1 -1
  38. package/packages/cli/dist/server/services/execution-manager.js +88 -17
  39. package/packages/cli/dist/server/services/execution-manager.js.map +1 -1
  40. package/packages/cli/dist/server/static.d.ts.map +1 -1
  41. package/packages/cli/dist/server/static.js +4 -1
  42. package/packages/cli/dist/server/static.js.map +1 -1
  43. package/packages/cli/dist/server/workflow-path.d.ts +3 -0
  44. package/packages/cli/dist/server/workflow-path.d.ts.map +1 -0
  45. package/packages/cli/dist/server/workflow-path.js +25 -0
  46. package/packages/cli/dist/server/workflow-path.js.map +1 -0
  47. package/packages/core/dist/store/recovery.d.ts.map +1 -1
  48. package/packages/core/dist/store/recovery.js +12 -1
  49. package/packages/core/dist/store/recovery.js.map +1 -1
  50. package/packages/core/dist/store/run-store.d.ts +3 -0
  51. package/packages/core/dist/store/run-store.d.ts.map +1 -1
  52. package/packages/core/dist/store/run-store.js +33 -0
  53. package/packages/core/dist/store/run-store.js.map +1 -1
  54. package/packages/core/dist/store/types.d.ts +2 -2
  55. package/packages/core/dist/store/types.d.ts.map +1 -1
  56. package/packages/core/dist/store/types.js.map +1 -1
  57. package/packages/core/dist/store/wal.js +1 -1
  58. package/packages/core/dist/store/wal.js.map +1 -1
  59. package/packages/web/dist/web/3rdpartylicenses.txt +26 -26
  60. package/packages/web/dist/web/browser/chunk-4YPNNQ2T.js +4 -0
  61. package/packages/web/dist/web/browser/chunk-E227ZHPJ.js +1 -0
  62. package/packages/web/dist/web/browser/chunk-JFBK3MNW.js +1 -0
  63. package/packages/web/dist/web/browser/chunk-L2VOQBBI.js +1 -0
  64. package/packages/web/dist/web/browser/chunk-OJJM5VOH.js +1 -0
  65. package/packages/web/dist/web/browser/chunk-U2H3QYAG.js +5 -0
  66. package/packages/web/dist/web/browser/chunk-VA7KFQOR.js +1 -0
  67. package/packages/web/dist/web/browser/chunk-WV3C6DNH.js +1 -0
  68. package/packages/web/dist/web/browser/index.html +2 -2
  69. package/packages/web/dist/web/browser/main-THGFWXYL.js +1 -0
  70. package/packages/web/dist/web/browser/{styles-JBPZVY54.css → styles-PWTTI45T.css} +1 -1
  71. package/skills/sdlc/architecture/current-state/SKILL.md +10 -0
  72. package/skills/sdlc/architecture/current-state/step.md +13 -0
  73. package/skills/sdlc/architecture/decision/SKILL.md +10 -0
  74. package/skills/sdlc/architecture/decision/step.md +21 -0
  75. package/skills/sdlc/architecture/epics/SKILL.md +10 -0
  76. package/skills/sdlc/architecture/epics/step.md +34 -0
  77. package/skills/sdlc/architecture/grill/SKILL.md +10 -0
  78. package/skills/sdlc/architecture/grill/step.md +26 -0
  79. package/skills/sdlc/architecture/prereq/SKILL.md +10 -0
  80. package/skills/sdlc/architecture/prereq/step.md +16 -0
  81. package/skills/sdlc/architecture/readiness/SKILL.md +10 -0
  82. package/skills/sdlc/architecture/readiness/step.md +76 -0
  83. package/skills/sdlc/complete/context/SKILL.md +10 -0
  84. package/skills/sdlc/complete/context/step.md +14 -0
  85. package/skills/sdlc/complete/knowledge/SKILL.md +10 -0
  86. package/skills/sdlc/complete/knowledge/step.md +22 -0
  87. package/skills/sdlc/complete/prereq/SKILL.md +10 -0
  88. package/skills/sdlc/complete/prereq/step.md +16 -0
  89. package/skills/sdlc/complete/reindex/SKILL.md +10 -0
  90. package/skills/sdlc/complete/reindex/step.md +24 -0
  91. package/skills/sdlc/complete/status/SKILL.md +10 -0
  92. package/skills/sdlc/complete/status/step.md +52 -0
  93. package/skills/sdlc/discovery/brainstorm/SKILL.md +10 -0
  94. package/skills/sdlc/discovery/brainstorm/step.md +27 -0
  95. package/skills/sdlc/discovery/domain/SKILL.md +10 -0
  96. package/skills/sdlc/discovery/domain/step.md +13 -0
  97. package/skills/sdlc/discovery/grill/SKILL.md +10 -0
  98. package/skills/sdlc/discovery/grill/step.md +22 -0
  99. package/skills/sdlc/discovery/prereq/SKILL.md +10 -0
  100. package/skills/sdlc/discovery/prereq/step.md +16 -0
  101. package/skills/sdlc/discovery/prfaq/SKILL.md +10 -0
  102. package/skills/sdlc/discovery/prfaq/step.md +68 -0
  103. package/skills/sdlc/discovery/system/SKILL.md +10 -0
  104. package/skills/sdlc/discovery/system/step.md +19 -0
  105. package/skills/sdlc/hotfix/analyze/entry/SKILL.md +10 -0
  106. package/skills/sdlc/hotfix/analyze/entry/step.md +15 -0
  107. package/skills/sdlc/hotfix/analyze/exit/SKILL.md +10 -0
  108. package/skills/sdlc/hotfix/analyze/exit/step.md +19 -0
  109. package/skills/sdlc/hotfix/analyze/fix-strategy/SKILL.md +10 -0
  110. package/skills/sdlc/hotfix/analyze/fix-strategy/step.md +15 -0
  111. package/skills/sdlc/hotfix/analyze/gitnexus/SKILL.md +10 -0
  112. package/skills/sdlc/hotfix/analyze/gitnexus/step.md +17 -0
  113. package/skills/sdlc/hotfix/analyze/grill/SKILL.md +10 -0
  114. package/skills/sdlc/hotfix/analyze/grill/step.md +23 -0
  115. package/skills/sdlc/hotfix/analyze/reasoning/SKILL.md +10 -0
  116. package/skills/sdlc/hotfix/analyze/reasoning/step.md +29 -0
  117. package/skills/sdlc/hotfix/analyze/write/SKILL.md +10 -0
  118. package/skills/sdlc/hotfix/analyze/write/step.md +45 -0
  119. package/skills/sdlc/hotfix/implement/branch/SKILL.md +10 -0
  120. package/skills/sdlc/hotfix/implement/branch/step.md +15 -0
  121. package/skills/sdlc/hotfix/implement/entry/SKILL.md +10 -0
  122. package/skills/sdlc/hotfix/implement/entry/step.md +20 -0
  123. package/skills/sdlc/hotfix/implement/gate/SKILL.md +10 -0
  124. package/skills/sdlc/hotfix/implement/gate/step.md +104 -0
  125. package/skills/sdlc/hotfix/implement/impact/SKILL.md +10 -0
  126. package/skills/sdlc/hotfix/implement/impact/step.md +15 -0
  127. package/skills/sdlc/hotfix/implement/sonar/SKILL.md +10 -0
  128. package/skills/sdlc/hotfix/implement/sonar/step.md +27 -0
  129. package/skills/sdlc/hotfix/implement/tdd/SKILL.md +10 -0
  130. package/skills/sdlc/hotfix/implement/tdd/step.md +33 -0
  131. package/skills/sdlc/hotfix/implement/verify/SKILL.md +10 -0
  132. package/skills/sdlc/hotfix/implement/verify/step.md +27 -0
  133. package/skills/sdlc/hotfix/prd/entry/SKILL.md +10 -0
  134. package/skills/sdlc/hotfix/prd/entry/step.md +20 -0
  135. package/skills/sdlc/hotfix/prd/gate/SKILL.md +10 -0
  136. package/skills/sdlc/hotfix/prd/gate/step.md +32 -0
  137. package/skills/sdlc/hotfix/prd/requirements/SKILL.md +10 -0
  138. package/skills/sdlc/hotfix/prd/requirements/step.md +19 -0
  139. package/skills/sdlc/hotfix/prd/validate/SKILL.md +10 -0
  140. package/skills/sdlc/hotfix/prd/validate/step.md +19 -0
  141. package/skills/sdlc/hotfix/prd/write/SKILL.md +10 -0
  142. package/skills/sdlc/hotfix/prd/write/step.md +38 -0
  143. package/skills/sdlc/hotfix/review/entry/SKILL.md +10 -0
  144. package/skills/sdlc/hotfix/review/entry/step.md +13 -0
  145. package/skills/sdlc/hotfix/review/gate/SKILL.md +10 -0
  146. package/skills/sdlc/hotfix/review/gate/step.md +51 -0
  147. package/skills/sdlc/hotfix/review/impact/SKILL.md +10 -0
  148. package/skills/sdlc/hotfix/review/impact/step.md +22 -0
  149. package/skills/sdlc/hotfix/review/minimality/SKILL.md +10 -0
  150. package/skills/sdlc/hotfix/review/minimality/step.md +18 -0
  151. package/skills/sdlc/hotfix/review/test-quality/SKILL.md +10 -0
  152. package/skills/sdlc/hotfix/review/test-quality/step.md +16 -0
  153. package/skills/sdlc/hotfix/ship/commit-pr/SKILL.md +10 -0
  154. package/skills/sdlc/hotfix/ship/commit-pr/step.md +58 -0
  155. package/skills/sdlc/hotfix/ship/entry/SKILL.md +10 -0
  156. package/skills/sdlc/hotfix/ship/entry/step.md +20 -0
  157. package/skills/sdlc/hotfix/ship/exit/SKILL.md +10 -0
  158. package/skills/sdlc/hotfix/ship/exit/step.md +31 -0
  159. package/skills/sdlc/hotfix/ship/gitignore/SKILL.md +10 -0
  160. package/skills/sdlc/hotfix/ship/gitignore/step.md +22 -0
  161. package/skills/sdlc/hotfix/ship/report/SKILL.md +10 -0
  162. package/skills/sdlc/hotfix/ship/report/step.md +47 -0
  163. package/skills/sdlc/hotfix/ship/test-gate/SKILL.md +10 -0
  164. package/skills/sdlc/hotfix/ship/test-gate/step.md +17 -0
  165. package/skills/sdlc/implement/build-run/SKILL.md +10 -0
  166. package/skills/sdlc/implement/build-run/step.md +85 -0
  167. package/skills/sdlc/implement/checkpoint/SKILL.md +10 -0
  168. package/skills/sdlc/implement/checkpoint/step.md +20 -0
  169. package/skills/sdlc/implement/debug/SKILL.md +10 -0
  170. package/skills/sdlc/implement/debug/step.md +25 -0
  171. package/skills/sdlc/implement/impact/SKILL.md +10 -0
  172. package/skills/sdlc/implement/impact/step.md +12 -0
  173. package/skills/sdlc/implement/plan/SKILL.md +10 -0
  174. package/skills/sdlc/implement/plan/step.md +13 -0
  175. package/skills/sdlc/implement/prereq/SKILL.md +10 -0
  176. package/skills/sdlc/implement/prereq/step.md +21 -0
  177. package/skills/sdlc/implement/subagents/SKILL.md +10 -0
  178. package/skills/sdlc/implement/subagents/step.md +38 -0
  179. package/skills/sdlc/implement/tdd/SKILL.md +10 -0
  180. package/skills/sdlc/implement/tdd/step.md +24 -0
  181. package/skills/sdlc/init/SKILL.md +7 -0
  182. package/skills/sdlc/onboard-code/SKILL.md +7 -0
  183. package/skills/sdlc/onboard-docs/SKILL.md +7 -0
  184. package/skills/sdlc/pack.yaml +83 -16
  185. package/skills/sdlc/prd/blast-radius/SKILL.md +10 -0
  186. package/skills/sdlc/prd/blast-radius/step.md +76 -0
  187. package/skills/sdlc/prd/create/SKILL.md +10 -0
  188. package/skills/sdlc/prd/create/step.md +21 -0
  189. package/skills/sdlc/prd/elicitation/SKILL.md +10 -0
  190. package/skills/sdlc/prd/elicitation/step.md +12 -0
  191. package/skills/sdlc/prd/prereq/SKILL.md +10 -0
  192. package/skills/sdlc/prd/prereq/step.md +16 -0
  193. package/skills/sdlc/prd/validate/SKILL.md +10 -0
  194. package/skills/sdlc/prd/validate/step.md +24 -0
  195. package/skills/sdlc/review/code/SKILL.md +10 -0
  196. package/skills/sdlc/review/code/step.md +45 -0
  197. package/skills/sdlc/review/debate/SKILL.md +10 -0
  198. package/skills/sdlc/review/debate/step.md +84 -0
  199. package/skills/sdlc/review/impact/SKILL.md +10 -0
  200. package/skills/sdlc/review/impact/step.md +14 -0
  201. package/skills/sdlc/review/prereq/SKILL.md +10 -0
  202. package/skills/sdlc/review/prereq/step.md +18 -0
  203. package/skills/sdlc/review/verification/SKILL.md +10 -0
  204. package/skills/sdlc/review/verification/step.md +16 -0
  205. package/skills/sdlc/ship/commit/SKILL.md +10 -0
  206. package/skills/sdlc/ship/commit/step.md +23 -0
  207. package/skills/sdlc/ship/gitignore/SKILL.md +10 -0
  208. package/skills/sdlc/ship/gitignore/step.md +22 -0
  209. package/skills/sdlc/ship/pr/SKILL.md +10 -0
  210. package/skills/sdlc/ship/pr/step.md +34 -0
  211. package/skills/sdlc/ship/prereq/SKILL.md +10 -0
  212. package/skills/sdlc/ship/prereq/step.md +16 -0
  213. package/skills/sdlc/ship/report/SKILL.md +10 -0
  214. package/skills/sdlc/ship/report/step.md +74 -0
  215. package/skills/sdlc/srs/interface/SKILL.md +10 -0
  216. package/skills/sdlc/srs/interface/step.md +44 -0
  217. package/skills/sdlc/srs/prereq/SKILL.md +10 -0
  218. package/skills/sdlc/srs/prereq/step.md +19 -0
  219. package/skills/sdlc/srs/validate/SKILL.md +10 -0
  220. package/skills/sdlc/srs/validate/step.md +23 -0
  221. package/skills/sdlc/srs/write/SKILL.md +10 -0
  222. package/skills/sdlc/srs/write/step.md +19 -0
  223. package/skills/sdlc/test-design/boundary/SKILL.md +10 -0
  224. package/skills/sdlc/test-design/boundary/step.md +12 -0
  225. package/skills/sdlc/test-design/cases/SKILL.md +10 -0
  226. package/skills/sdlc/test-design/cases/step.md +22 -0
  227. package/skills/sdlc/test-design/coverage/SKILL.md +10 -0
  228. package/skills/sdlc/test-design/coverage/step.md +63 -0
  229. package/skills/sdlc/test-design/prereq/SKILL.md +10 -0
  230. package/skills/sdlc/test-design/prereq/step.md +15 -0
  231. package/{skills/sdlc/workflows → workflows/sdlc}/hotfix-tdd.yaml +2 -1
  232. package/{skills/sdlc/workflows → workflows/sdlc}/hotfix.yaml +8 -4
  233. package/workflows/sdlc/master-sdlc.yaml +64 -0
  234. package/workflows/sdlc/sdlc-architecture.yaml +43 -0
  235. package/workflows/sdlc/sdlc-build.yaml +51 -0
  236. package/workflows/sdlc/sdlc-design.yaml +61 -0
  237. package/workflows/sdlc/sdlc-discovery.yaml +43 -0
  238. package/workflows/sdlc/sdlc-feature-complete.yaml +36 -0
  239. package/workflows/sdlc/sdlc-hotfix-analyze.yaml +43 -0
  240. package/workflows/sdlc/sdlc-hotfix-implement.yaml +43 -0
  241. package/workflows/sdlc/sdlc-hotfix-prd.yaml +31 -0
  242. package/workflows/sdlc/sdlc-hotfix-review.yaml +31 -0
  243. package/workflows/sdlc/sdlc-hotfix-ship.yaml +37 -0
  244. package/workflows/sdlc/sdlc-implement.yaml +60 -0
  245. package/workflows/sdlc/sdlc-prd.yaml +36 -0
  246. package/workflows/sdlc/sdlc-qa.yaml +91 -0
  247. package/workflows/sdlc/sdlc-review.yaml +36 -0
  248. package/workflows/sdlc/sdlc-ship.yaml +36 -0
  249. package/workflows/sdlc/sdlc-srs.yaml +29 -0
  250. package/workflows/sdlc/sdlc-test-design.yaml +29 -0
  251. package/workflows/sdlc/sdlc-testcase.yaml +25 -0
  252. package/workflows/sdlc/sdlc-thinking.yaml +67 -0
  253. package/packages/web/dist/web/browser/chunk-IPMFXW6N.js +0 -1
  254. package/packages/web/dist/web/browser/chunk-IX2QWMX2.js +0 -1
  255. package/packages/web/dist/web/browser/chunk-QMAH5NZC.js +0 -1
  256. package/packages/web/dist/web/browser/chunk-RGFLNLPM.js +0 -1
  257. package/packages/web/dist/web/browser/chunk-RKWDHBN3.js +0 -5
  258. package/packages/web/dist/web/browser/chunk-XGYEZIV4.js +0 -1
  259. package/packages/web/dist/web/browser/main-IIUZVPMI.js +0 -1
  260. package/skills/sdlc/architecture/SKILL.md +0 -218
  261. package/skills/sdlc/discovery/SKILL.md +0 -197
  262. package/skills/sdlc/feature-complete/SKILL.md +0 -159
  263. package/skills/sdlc/hotfix-analyze/SKILL.md +0 -198
  264. package/skills/sdlc/hotfix-implement/SKILL.md +0 -272
  265. package/skills/sdlc/hotfix-prd/SKILL.md +0 -161
  266. package/skills/sdlc/hotfix-review/SKILL.md +0 -153
  267. package/skills/sdlc/hotfix-ship/SKILL.md +0 -221
  268. package/skills/sdlc/implement/SKILL.md +0 -264
  269. package/skills/sdlc/prd/SKILL.md +0 -182
  270. package/skills/sdlc/review/SKILL.md +0 -210
  271. package/skills/sdlc/ship/SKILL.md +0 -194
  272. package/skills/sdlc/srs/SKILL.md +0 -148
  273. package/skills/sdlc/test-design/SKILL.md +0 -132
  274. package/skills/sdlc/workflows/master-sdlc.yaml +0 -35
  275. package/skills/sdlc/workflows/sdlc-build.yaml +0 -18
  276. package/skills/sdlc/workflows/sdlc-design.yaml +0 -14
  277. package/skills/sdlc/workflows/sdlc-qa.yaml +0 -20
  278. package/skills/sdlc/workflows/sdlc-testcase.yaml +0 -8
  279. package/skills/sdlc/workflows/sdlc-thinking.yaml +0 -12
  280. /package/{skills/sdlc/workflows → workflows/sdlc}/onboarding.yaml +0 -0
@@ -0,0 +1,104 @@
1
+ ## Verification Gate
2
+
3
+ ⛔ **NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.**
4
+
5
+ Before printing Phase Exit, you MUST pass ALL checks below. For each check: **run the command → read the full output → verify the claim matches the output.** Do NOT trust memory, do NOT trust previous runs, do NOT say "should pass."
6
+
7
+ | # | Check | Command to Run | Evidence Required | ❌ NOT Acceptable |
8
+ |---|-------|---------------|-------------------|-------------------|
9
+ | 1 | Build compiles | `mvn compile` / `npm run build` / equivalent | `BUILD SUCCESS` or `0 errors` in output | "It compiled earlier" |
10
+ | 2 | All tests pass | `npm test` / `mvn test` / equivalent | `X passed, 0 failed` in output | "Tests should still pass" |
11
+ | 3 | Regression test passes | Run specific test by name | Test name + PASS in output | "I wrote the test so it passes" |
12
+ | 4 | No new SonarQube issues | Check output from Step 4 | 0 blockers, 0 critical, 0 vulns | "Code looks clean" |
13
+ | 5 | GitNexus impact clean | Check output from Step 6 | Blast radius matches analysis | "Fix is minimal so it's fine" |
14
+ | 6 | Scope boundary held | `git diff --stat` | Changed files ⊆ files listed in analysis | "I only changed what was needed" |
15
+
16
+ **Red flags — if you catch yourself thinking any of these, STOP and run the command:**
17
+ - "It should work" → Run it and prove it
18
+ - "I'm confident" → Confidence ≠ evidence
19
+ - "I already checked" → Check again with fresh output
20
+ - "It's a small change so it's safe" → Small changes break big systems
21
+ - "The test passed during TDD" → TDD was minutes ago; verify NOW
22
+
23
+ **Procedure:**
24
+ 1. Run checks 1-6 sequentially
25
+ 2. For each: paste the **actual command output** (or key lines) into `03-impl-log.md` under a `## Verification Evidence` section
26
+ 3. If ANY check fails → fix → re-run ALL checks (not just the failed one)
27
+ 4. Only after ALL 6 checks show fresh passing evidence → proceed to Phase Exit
28
+
29
+ ## Output
30
+
31
+ Write file: `.vsaf/docs/hotfixes/{bug-id}/03-impl-log.md`
32
+
33
+ ```markdown
34
+ # Implementation Log: {bug-id}
35
+
36
+ ## Branch
37
+ `hotfix/{bug-id}`
38
+
39
+ ## TDD Cycles
40
+
41
+ ### FR-001: {title}
42
+ - RED: {test file}:{test name} — FAILED ✓
43
+ - GREEN: {changed files} — PASSED ✓
44
+ - REFACTOR: {what was cleaned}
45
+
46
+ ### FR-002: {title} (if applicable)
47
+ ...
48
+
49
+ ## Files Changed
50
+ | File | Change type | Lines |
51
+ |------|-------------|-------|
52
+ | {file} | Modified / Added | +{n} -{m} |
53
+
54
+ ## Test Results
55
+ - New tests: {count}
56
+ - Regression test: {test name} — PASS
57
+ - Full suite: {total} tests, all PASS
58
+
59
+ ## SonarQube
60
+ - Issues: 0
61
+ - Vulnerabilities: 0
62
+ - Duplication: {n}%
63
+
64
+ ## Build
65
+ - Compile: PASS
66
+ - Full test suite: PASS
67
+
68
+ ## Verification Evidence
69
+
70
+ | # | Check | Result | Evidence |
71
+ |---|-------|--------|----------|
72
+ | 1 | Build compiles | ✅ PASS | `{actual build output line}` |
73
+ | 2 | All tests pass | ✅ PASS | `{X} passed, 0 failed` |
74
+ | 3 | Regression test | ✅ PASS | `{test name} — PASSED` |
75
+ | 4 | SonarQube clean | ✅ PASS | 0 blocker, 0 critical, 0 vuln |
76
+ | 5 | Impact clean | ✅ PASS | Blast radius = {files}, matches analysis |
77
+ | 6 | Scope held | ✅ PASS | `git diff --stat`: {n} files changed, all within scope |
78
+ ```
79
+
80
+ ## Phase Exit Protocol
81
+
82
+ Print PHASE REPORT:
83
+ - Bug: {bug-id}
84
+ - Status: IMPLEMENTATION COMPLETED
85
+ - Branch: `hotfix/{bug-id}`
86
+ - Tests: {new} new, {total} total — all PASS
87
+ - Files changed: {count}
88
+ - Output: `.vsaf/docs/hotfixes/{bug-id}/03-impl-log.md`
89
+ - Next step: `/sdlc-hotfix-ship`
90
+
91
+ Update `.vsaf/docs/STATUS.md`.
92
+
93
+ > Artifacts saved. If the session is interrupted, open a new session and run the next phase — data is safe.
94
+
95
+ ## Rules
96
+
97
+ - ⛔ Do NOT write code without a failing test first (TDD)
98
+ - ⛔ Do NOT modify `graphify-out/` or `.gitnexus/`
99
+ - ⛔ Do NOT exceed scope boundary defined in PRD
100
+ - ⛔ Do NOT use subagent-driven development — hotfixes are sequential, focused
101
+ - Code MUST compile — hard gate, no exceptions
102
+ - Full test suite MUST pass — no regressions allowed
103
+ - If fix fails 3 times → STOP, escalate to user
104
+ - If scope drift detected → STOP, go back to PRD
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-implement-impact
3
+ description: "Hotfix Implement 6/6 — impact verification"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Implement 6/6 — impact verification
9
+
10
+ @include(step.md)
@@ -0,0 +1,15 @@
1
+ ### Step 6: Impact Verification
2
+
3
+ ```
4
+ [HOTFIX-IMPL] [6/6] Impact verification via GitNexus... ⏳
5
+ ```
6
+
7
+ Use GitNexus `impact` — verify the fix did not break anything outside blast radius.
8
+
9
+ If unexpected impact detected → evaluate:
10
+ - Within scope boundary → OK, note in impl log
11
+ - Outside scope boundary → STOP, escalate to user
12
+
13
+ ```
14
+ [HOTFIX-IMPL] [6/6] Impact verification... ✅
15
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-implement-sonar
3
+ description: "Hotfix Implement 4/6 — SonarQube self-check"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Implement 4/6 — SonarQube self-check
9
+
10
+ @include(step.md)
@@ -0,0 +1,27 @@
1
+ ### Step 4: SonarQube Self-Check
2
+
3
+ ```
4
+ [HOTFIX-IMPL] [4/6] SonarQube quality check... ⏳
5
+ ```
6
+
7
+ Apply DURING Step 3 (not after). After the fix is complete, final sweep.
8
+
9
+ > **Standard (single source of truth):** **`.claude/skills/_shared/sdlc/sonar-viettel/quality-gate.md`** — full gate, 357-rule parameters, and the importable `sonar-viettel-profile.xml` / `sonar-viettel-gate.json`. Phase 4 (`/sdlc-hotfix-review`) re-checks the same file. A hotfix applies the gate's **New Code** conditions on changed files.
10
+
11
+ | Metric | Threshold |
12
+ |--------|-----------|
13
+ | Issues / Blocker / Critical / Major | = 0 |
14
+ | Code Smells (new) | = 0 — stricter than the gate's ≤20 **by design**: a surgical 1–3 line fix has no excuse to add a smell, and `/sdlc-hotfix-review` rejects any new smell |
15
+ | Vulnerabilities | = 0 |
16
+ | Security Hotspots Reviewed | = 100% |
17
+ | Duplicated Lines (new) | ≤ 45% |
18
+ | Maintainability / Reliability / Security Rating | ≥ A |
19
+
20
+ **Honour the `sonar-viettel` parametrised rules in the changed code** — S107 (params), S3776 (complexity), S1192 (literals), S2068/S2077 (secrets/injection), S100/S101/S115 (naming). **Thresholds are authoritative in the profile XML** — derive them via the snippet in the shared `quality-gate.md`, do not hard-code numbers.
21
+
22
+ - If project has SonarQube → import the profile + gate from the shared folder, then run `sonar-scanner` incremental
23
+ - If not → Claude self-reviews changed files against the shared `quality-gate.md`
24
+
25
+ ```
26
+ [HOTFIX-IMPL] [4/6] SonarQube quality check... ✅
27
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-implement-tdd
3
+ description: "Hotfix Implement 3/6 — TDD cycle"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Implement 3/6 — TDD cycle
9
+
10
+ @include(step.md)
@@ -0,0 +1,33 @@
1
+ ### Step 3: TDD Cycle — `/tdd` Methodology
2
+
3
+ ```
4
+ [HOTFIX-IMPL] [3/6] TDD cycle — RED → GREEN → REFACTOR... ⏳
5
+ ```
6
+
7
+ Use `/tdd` methodology — behavior-based, vertical slice:
8
+
9
+ **For each FR in the PRD:**
10
+
11
+ 1. **RED — Write failing test FIRST**
12
+ - Test the BEHAVIOR described in the acceptance criteria
13
+ - Test the PUBLIC INTERFACE, not internals
14
+ - Include the regression test: reproduce the original bug → MUST FAIL before fix
15
+ - Run test → confirm it FAILS (red)
16
+ - ⚠️ If test passes without code changes → the test is wrong or the bug is already fixed
17
+
18
+ 2. **GREEN — Write MINIMAL code to pass**
19
+ - Change ONLY what is needed to make the test pass
20
+ - Stay within the scope boundary from PRD
21
+ - Apply SonarQube rules while writing (see below)
22
+ - Run test → confirm it PASSES (green)
23
+
24
+ 3. **REFACTOR — Clean without changing behavior**
25
+ - Remove duplication introduced by the fix
26
+ - Improve naming if needed
27
+ - Run ALL tests → still green
28
+
29
+ **Repeat for each FR.** Typically 1-3 cycles for a hotfix.
30
+
31
+ ```
32
+ [HOTFIX-IMPL] [3/6] TDD cycle complete ✅
33
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-implement-verify
3
+ description: "Hotfix Implement 5/6 — build and test verification"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Implement 5/6 — build and test verification
9
+
10
+ @include(step.md)
@@ -0,0 +1,27 @@
1
+ ### Step 5: Build & Test Verification
2
+
3
+ ```
4
+ [HOTFIX-IMPL] [5/6] Build & test verification... ⏳
5
+ ```
6
+
7
+ **MANDATORY — hard gate:**
8
+
9
+ 1. **Compile**: Build entire project → 0 errors
10
+ - Java: `mvn compile` / `gradle build`
11
+ - Node: `npm run build` / `tsc --noEmit`
12
+ - Angular: `ng build`
13
+ - Go: `go build ./...`
14
+ - FAIL → fix immediately
15
+
16
+ 2. **Full test suite**: Run ALL tests (not just new ones)
17
+ - `npm test` / `mvn test` / equivalent
18
+ - ALL tests MUST pass — no regressions
19
+ - FAIL → use `/diagnose` to find the issue
20
+
21
+ 3. **Regression test confirmation**: The specific test from Step 3 RED phase → now PASSES
22
+
23
+ ⚠️ DO NOT exit if build fails or tests fail. This is a hard gate.
24
+
25
+ ```
26
+ [HOTFIX-IMPL] [5/6] Build & test verification... ✅
27
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-prd-entry
3
+ description: "Hotfix PRD 1/4 — check input artifacts"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix PRD 1/4 — check input artifacts
9
+
10
+ @include(step.md)
@@ -0,0 +1,20 @@
1
+ ## Phase Entry Protocol
2
+
3
+ ```
4
+ [HOTFIX-PRD] [1/4] Checking input artifacts... ⏳
5
+ ```
6
+
7
+ 1. Input: `.vsaf/docs/hotfixes/{bug-id}/01-analysis.md`
8
+ 2. Verify file exists:
9
+ - Does not exist → Stop: "Analysis not found. Run `/sdlc-hotfix-analyze` first."
10
+ 3. Read the analysis file — extract:
11
+ - Root cause (file:line)
12
+ - Blast radius
13
+ - Fix strategy (proposed in analyze phase)
14
+ - Affected files
15
+ 4. Read `.vsaf/docs/STATUS.md`
16
+ 5. Read `CONTEXT.md`
17
+
18
+ ```
19
+ [HOTFIX-PRD] [1/4] Checking input artifacts... ✅
20
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-prd-gate
3
+ description: "Hotfix PRD — gate and rules"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix PRD — gate and rules
9
+
10
+ @include(step.md)
@@ -0,0 +1,32 @@
1
+ ## Gate: {PENDING / APPROVED by {name} on {date}}
2
+ ```
3
+
4
+ ```
5
+ [HOTFIX-PRD] [4/4] Writing hotfix PRD... ✅
6
+ ```
7
+
8
+ ## Gate
9
+
10
+ Human must approve the PRD. Write `## Gate: APPROVED` at the end of the file.
11
+ Do NOT proceed to implementation without the Gate marker.
12
+
13
+ ## Phase Exit Protocol
14
+
15
+ Print PHASE REPORT:
16
+ - Bug: {bug-id}
17
+ - Status: PRD COMPLETED
18
+ - FRs: {count} functional requirements
19
+ - Output: `.vsaf/docs/hotfixes/{bug-id}/02-prd.md`
20
+ - Next step: `/sdlc-hotfix-implement`
21
+
22
+ Update `.vsaf/docs/STATUS.md`.
23
+
24
+ > Artifacts saved. If the session is interrupted, open a new session and run the next phase — data is safe.
25
+
26
+ ## Rules
27
+
28
+ - ⛔ Do NOT start a new grill session — analysis already has grill results
29
+ - ⛔ Do NOT modify `graphify-out/` or `.gitnexus/`
30
+ - ⛔ Do NOT add enhancements — hotfix scope only
31
+ - Scope MUST be minimal — fix root cause, add regression test, nothing more
32
+ - Every FR MUST be directly traceable to the root cause or blast radius
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-prd-requirements
3
+ description: "Hotfix PRD 2/4 — define fix requirements"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix PRD 2/4 — define fix requirements
9
+
10
+ @include(step.md)
@@ -0,0 +1,19 @@
1
+ ### Step 2: Define Fix Requirements
2
+
3
+ ```
4
+ [HOTFIX-PRD] [2/4] Defining fix requirements from analysis... ⏳
5
+ ```
6
+
7
+ Based on the analysis (NOT a new grill session — that already happened), define:
8
+
9
+ 1. **Fix Goal** — one sentence: what the fix achieves
10
+ 2. **Functional Requirements** — FR-001, FR-002... (typically 1-3 for a hotfix)
11
+ - Each FR traces to the root cause or blast radius item
12
+ 3. **Acceptance Criteria** — Given/When/Then for each FR
13
+ - MUST include a regression test criterion: "Given the fix is applied, When {original reproduction steps}, Then {expected behavior}"
14
+ 4. **Scope Boundary** — explicitly state what is OUT of scope (no refactoring, no enhancements)
15
+ 5. **Non-Functional Requirements** — only if relevant (performance regression, security)
16
+
17
+ ```
18
+ [HOTFIX-PRD] [2/4] Defining fix requirements... ✅
19
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-prd-validate
3
+ description: "Hotfix PRD 3/4 — validate and risk check"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix PRD 3/4 — validate and risk check
9
+
10
+ @include(step.md)
@@ -0,0 +1,19 @@
1
+ ### Step 3: Validate + Risk Check
2
+
3
+ ```
4
+ [HOTFIX-PRD] [3/4] Validating PRD... ⏳
5
+ ```
6
+
7
+ Use `/bmad-validate-prd` — validate:
8
+ - Every FR is testable
9
+ - Acceptance criteria are unambiguous
10
+ - Scope is minimal (hotfix, not enhancement)
11
+ - Fix addresses root cause, not just symptom
12
+
13
+ If FAIL → fix inline, re-validate.
14
+
15
+ Use GitNexus `impact` — confirm blast radius from analysis is still accurate.
16
+
17
+ ```
18
+ [HOTFIX-PRD] [3/4] Validating PRD... ✅
19
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-prd-write
3
+ description: "Hotfix PRD 4/4 — write PRD"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix PRD 4/4 — write PRD
9
+
10
+ @include(step.md)
@@ -0,0 +1,38 @@
1
+ ### Step 4: Write PRD
2
+
3
+ ```
4
+ [HOTFIX-PRD] [4/4] Writing hotfix PRD... ⏳
5
+ ```
6
+
7
+ Write file: `.vsaf/docs/hotfixes/{bug-id}/02-prd.md`
8
+
9
+ ```markdown
10
+ # Hotfix PRD: {bug-id}
11
+
12
+ ## Fix Goal
13
+ {one sentence}
14
+
15
+ ## Source
16
+ - Analysis: `01-analysis.md`
17
+ - Root cause: {file:line — summary}
18
+
19
+ ## Functional Requirements
20
+
21
+ ### FR-001: {title}
22
+ {description}
23
+
24
+ **Acceptance Criteria:**
25
+ - Given {context}, When {action}, Then {expected result}
26
+
27
+ ### FR-002: {title} (if needed)
28
+ ...
29
+
30
+ ## Non-Functional Requirements
31
+ {NFR-001 if applicable, otherwise "N/A — no NFR impact for this fix"}
32
+
33
+ ## Scope Boundary
34
+ **In scope:** {what will change}
35
+ **Out of scope:** {what will NOT change — no refactoring, no enhancements}
36
+
37
+ ## Blast Radius (confirmed)
38
+ {from GitNexus impact — files that may be affected}
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-review-entry
3
+ description: "Hotfix Review 1/4 — load context"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Review 1/4 — load context
9
+
10
+ @include(step.md)
@@ -0,0 +1,13 @@
1
+ ## Phase Entry Protocol
2
+
3
+ ```
4
+ [HOTFIX-REVIEW] [1/4] Loading context... ⏳
5
+ ```
6
+
7
+ 1. Read `.vsaf/docs/hotfixes/{bug-id}/01-analysis.md` — understand what was supposed to change
8
+ 2. Read `CONTEXT.md`
9
+ 3. Identify all files changed in the GREEN phase (use git diff or read the phase report)
10
+
11
+ ```
12
+ [HOTFIX-REVIEW] [1/4] Loading context... ✅
13
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-hotfix-review-gate
3
+ description: "Hotfix Review — gate and rules"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Review — gate and rules
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-hotfix-review-impact
3
+ description: "Hotfix Review 4/4 — impact and quality gate"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Review 4/4 — impact and quality gate
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-hotfix-review-minimality
3
+ description: "Hotfix Review 2/4 — minimality verification"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Review 2/4 — minimality verification
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-hotfix-review-test-quality
3
+ description: "Hotfix Review 3/4 — test quality check"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Review 3/4 — test quality check
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-hotfix-ship-commit-pr
3
+ description: "Hotfix Ship 4/5 — commit push PR"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Ship 4/5 — commit push PR
9
+
10
+ @include(step.md)