@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,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,10 @@
1
+ ---
2
+ name: sdlc-hotfix-ship-entry
3
+ description: "Hotfix Ship 1/5 — check prerequisites"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Ship 1/5 — check prerequisites
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-hotfix-ship-exit
3
+ description: "Hotfix Ship — exit protocol and rules"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Ship — exit protocol and rules
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-hotfix-ship-gitignore
3
+ description: "Hotfix Ship 2/5 — .gitignore enforcement"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Ship 2/5 — .gitignore enforcement
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-hotfix-ship-report
3
+ description: "Hotfix Ship 5/5 — ship report"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Ship 5/5 — ship report
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-hotfix-ship-test-gate
3
+ description: "Hotfix Ship 3/5 — final test gate"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Hotfix Ship 3/5 — final test gate
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-implement-build-run
3
+ description: "Implement 7/8 — build + run verification"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Implement 7/8 — build + run verification
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-implement-checkpoint
3
+ description: "Implement 3.5/8 — checkpoint review"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Implement 3.5/8 — checkpoint review
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-implement-debug
3
+ description: "Implement 5/8 — debug if needed"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Implement 5/8 — debug if needed
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-implement-impact
3
+ description: "Implement 6/8 — impact verification"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Implement 6/8 — impact verification
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-implement-plan
3
+ description: "Implement 3/8 — task planning"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Implement 3/8 — task planning
9
+
10
+ @include(step.md)
@@ -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,10 @@
1
+ ---
2
+ name: sdlc-implement-prereq
3
+ description: "Implement 1/8 — input artifacts"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Implement 1/8 — input artifacts
9
+
10
+ @include(step.md)
@@ -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`.
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-implement-subagents
3
+ description: "Implement 2/8 — subagent setup"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Implement 2/8 — subagent setup
9
+
10
+ @include(step.md)
@@ -0,0 +1,38 @@
1
+ ## Subagent-Driven Development Protocol
2
+
3
+ ```
4
+ [IMPLEMENT] [2/8] Initializing subagent-driven development... ⏳
5
+ ```
6
+
7
+ **MANDATORY** — Check and activate `/superpowers:subagent-driven-development`:
8
+ 1. If not already in subagent mode → **switch immediately**
9
+ 2. Analyze `04-epics.md` → identify Conflict Map
10
+ 3. Dispatch each epic/story as a separate subagent running in parallel
11
+ 4. Each subagent follows the Conflict Map — only modify files assigned to its epic
12
+
13
+ ```
14
+ [IMPLEMENT] [2/8] Initializing subagent-driven development... ✅
15
+ ```
16
+
17
+ ## SonarQube Quality Gate — Apply DURING Coding
18
+
19
+ ⚠️ **DO NOT wait for review phase.** Each subagent MUST self-check the `sonar-viettel` gate WHILE writing code.
20
+
21
+ > **Standard (single source of truth):** **`.claude/skills/_shared/sdlc/sonar-viettel/quality-gate.md`** — full New Code + Overall Code tables, the 357-rule parameters, and the importable `sonar-viettel-profile.xml` / `sonar-viettel-gate.json`. **Read it.** Phase 7 (`/sdlc-review`) re-checks the **same** file — anything that passes here must pass there. Do NOT invent stricter or looser values.
22
+
23
+ **Hard fails to self-check (summary — see the shared doc for the full gate):**
24
+ - New Code: Issues / Blocker / Critical / Major / Vulnerabilities = **0**; Code Smells **≤ 20**; Security Hotspots Reviewed = **100%**; Duplicated **≤ 45%**; Maintainability / Reliability / Security Rating **≥ A**.
25
+ - Overall Code: Bugs = **0**; Code Smells **≤ 50**; same Blocker/Critical/Major/Vuln/Duplication/rating rules.
26
+ - Honour the parametrised rules — S107 (params), S3776 (complexity), S110 (inheritance), S1479 (switch), S1192 (literals), S2068/S2077 (secrets/injection), S100/S101/S115 (naming). **Thresholds live authoritatively in the profile XML** — derive them via the snippet in the shared `quality-gate.md`, do not memorise numbers.
27
+
28
+ **How to apply during coding:**
29
+ - **After each function** → self-review: security vulnerabilities? code smells? duplication?
30
+ - **After each class** → check SOLID violations, naming conventions, interface segregation
31
+ - **Before each commit** → scan changed files for: SQL injection, XSS, command injection, hardcoded secrets, null dereference, resource leaks, concurrency issues, duplicated blocks
32
+ - **Auto-detect SonarQube:** check whether `sonar-scanner` is on PATH.
33
+ - Present → import the profile + gate from the shared folder, then run `sonar-scanner` incremental.
34
+ - Absent → print `Sonar not found → self-checklist mode` and self-review against the shared `quality-gate.md`. This is a fully supported path, not a fallback to apologise for — SonarQube is OPTIONAL.
35
+
36
+ **Goal:** Review phase should only need to RE-CHECK, not find bugs for the first time.
37
+
38
+ ## Tasks
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: sdlc-implement-tdd
3
+ description: "Implement 4/8 — TDD cycle"
4
+ version: 1.0.0
5
+ author: "@ngocsangairvds/vsaf"
6
+ ---
7
+
8
+ # Implement 4/8 — TDD cycle
9
+
10
+ @include(step.md)
@@ -0,0 +1,24 @@
1
+ ### Step 4: TDD Cycle (per subagent)
2
+
3
+ ```
4
+ [IMPLEMENT] [4/8] TDD cycle — RED → GREEN → REFACTOR... ⏳
5
+ ```
6
+
7
+ Use `/superpowers:test-driven-development`:
8
+
9
+ For each test case in `06-testcases.md`:
10
+ 1. **RED**: Write test → run → MUST FAIL
11
+ 2. **GREEN**: Write minimal code → run → MUST PASS
12
+ - ⚠️ **While writing GREEN code** → apply SonarQube rules immediately:
13
+ - Do not create security vulnerabilities
14
+ - No code smells (long method, deep nesting)
15
+ - No duplicated code
16
+ - Null-safe, proper error handling
17
+ 3. **REFACTOR**: Clean code, do not change behavior
18
+ - Refactor MUST improve SonarQube metrics, not degrade them
19
+
20
+ Use `/superpowers:executing-plans` — execute plan in order.
21
+
22
+ ```
23
+ [IMPLEMENT] [4/8] TDD cycle — RED → GREEN → REFACTOR... ✅
24
+ ```
@@ -23,6 +23,13 @@ Icon: `⏳` running, `✅` done, `❌` error.
23
23
 
24
24
  > ⛔ DO NOT modify `graphify-out/` or `.gitnexus/` — only READ and DO NOT write to these directories.
25
25
 
26
+ ## Artifact Write Boundary
27
+
28
+ - Create generated knowledge, documentation, SDLC artifacts, reports, and agent-readable markdown only at the project root beside `.vsaf` or inside the root `.vsaf/` directory.
29
+ - Do NOT create `docs/`, `.vsaf/`, `CONTEXT.md`, `AGENTS.md`, knowledge files, reports, or generated artifacts inside service/subproject folders.
30
+ - For service-specific notes, write under root `.vsaf/docs/` using the service name in the path or filename.
31
+ - Write inside a service/subproject folder only when the user explicitly authorizes that path, or when the task is a source-code/test change for that service.
32
+
26
33
  ## Input
27
34
 
28
35
  - Project path: `$ARGUMENTS` (or current directory)
@@ -21,6 +21,13 @@ Icon: `⏳` running, `✅` done, `❌` error.
21
21
 
22
22
  > ⛔ DO NOT modify `graphify-out/` or `.gitnexus/` — only GitNexus tools are allowed to write to `.gitnexus/`.
23
23
 
24
+ ## Artifact Write Boundary
25
+
26
+ - Create generated knowledge, documentation, SDLC artifacts, reports, and agent-readable markdown only at the project root beside `.vsaf` or inside the root `.vsaf/` directory.
27
+ - Do NOT create `docs/`, `.vsaf/`, `CONTEXT.md`, `AGENTS.md`, knowledge files, reports, or generated artifacts inside service/subproject folders.
28
+ - For service-specific notes, write under root `.vsaf/docs/` using the service name in the path or filename.
29
+ - Write inside a service/subproject folder only when the user explicitly authorizes that path, or when the task is a source-code/test change for that service.
30
+
24
31
  ## Clear Responsibility Assignment
25
32
 
26
33
  | Tool | Scope | Notes |
@@ -22,6 +22,13 @@ Icon: `⏳` running, `✅` done, `❌` error.
22
22
  > ⛔ DO NOT modify `graphify-out/` or `.gitnexus/` DIRECTLY — only graphify is allowed to write to `graphify-out/`.
23
23
  > **Exception:** Phase 3 supplements nodes/edges directly into `graph.json` after graphify has built it — this is the only permitted direct modification.
24
24
 
25
+ ## Artifact Write Boundary
26
+
27
+ - Create generated knowledge, documentation, SDLC artifacts, reports, and agent-readable markdown only at the project root beside `.vsaf` or inside the root `.vsaf/` directory.
28
+ - Do NOT create `docs/`, `.vsaf/`, `CONTEXT.md`, `AGENTS.md`, knowledge files, reports, or generated artifacts inside service/subproject folders.
29
+ - For service-specific notes, write under root `.vsaf/docs/` using the service name in the path or filename.
30
+ - Write inside a service/subproject folder only when the user explicitly authorizes that path, or when the task is a source-code/test change for that service.
31
+
25
32
  ## Input
26
33
 
27
34
  - Project path: `$ARGUMENTS` (or current directory)