@ngocsangairvds/vsaf 3.1.13 → 3.1.15

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 (293) hide show
  1. package/assets/templates/CLAUDE.md +1 -1
  2. package/bin/vsaf.js +6 -30
  3. package/package.json +2 -3
  4. package/src/global.js +7 -48
  5. package/src/project.js +12 -18
  6. package/src/status.js +2 -2
  7. package/src/utils.js +5 -14
  8. package/src/workflow.js +2 -36
  9. package/{.claude → tools}/skills/vsaf-build/SKILL.md +3 -3
  10. package/{.claude → tools}/skills/vsaf-discover/SKILL.md +10 -10
  11. package/{.claude → tools}/skills/vsaf-doc-prd/SKILL.md +3 -3
  12. package/{.claude → tools}/skills/vsaf-doc-srs/SKILL.md +9 -9
  13. package/{.claude → tools}/skills/vsaf-docs/SKILL.md +1 -1
  14. package/{.claude → tools}/skills/vsaf-onboard/SKILL.md +2 -2
  15. package/{.claude → tools}/skills/vsaf-plan/SKILL.md +1 -1
  16. package/{.claude → tools}/skills/vsaf-retro/SKILL.md +1 -1
  17. package/{.claude → tools}/skills/vsaf-ship/SKILL.md +3 -3
  18. package/{.claude → tools}/skills/vsaf-sprint/SKILL.md +3 -3
  19. package/{.claude → tools}/skills/vsaf-test/SKILL.md +7 -7
  20. package/.claude/skills/graphify/.graphify_version +0 -1
  21. package/.claude/skills/graphify/SKILL.md +0 -4
  22. /package/{_bmad → tools/bmad}/_config/agent-manifest.csv +0 -0
  23. /package/{_bmad → tools/bmad}/_config/bmad-help.csv +0 -0
  24. /package/{_bmad → tools/bmad}/_config/files-manifest.csv +0 -0
  25. /package/{_bmad → tools/bmad}/_config/manifest.yaml +0 -0
  26. /package/{_bmad → tools/bmad}/_config/skill-manifest.csv +0 -0
  27. /package/{_bmad → tools/bmad}/bmm/1-analysis/bmad-document-project/templates/srs-feature-template.md +0 -0
  28. /package/{_bmad → tools/bmad}/bmm/1-analysis/bmad-document-project/templates/srs-system-template.md +0 -0
  29. /package/{_bmad → tools/bmad}/bmm/config.yaml +0 -0
  30. /package/{_bmad → tools/bmad}/bmm/module-help.csv +0 -0
  31. /package/{_bmad → tools/bmad}/core/config.yaml +0 -0
  32. /package/{_bmad → tools/bmad}/core/module-help.csv +0 -0
  33. /package/{.claude → tools}/skills/bmad-advanced-elicitation/SKILL.md +0 -0
  34. /package/{.claude → tools}/skills/bmad-advanced-elicitation/methods.csv +0 -0
  35. /package/{.claude → tools}/skills/bmad-agent-analyst/SKILL.md +0 -0
  36. /package/{.claude → tools}/skills/bmad-agent-analyst/bmad-skill-manifest.yaml +0 -0
  37. /package/{.claude → tools}/skills/bmad-agent-architect/SKILL.md +0 -0
  38. /package/{.claude → tools}/skills/bmad-agent-architect/bmad-skill-manifest.yaml +0 -0
  39. /package/{.claude → tools}/skills/bmad-agent-dev/SKILL.md +0 -0
  40. /package/{.claude → tools}/skills/bmad-agent-dev/bmad-skill-manifest.yaml +0 -0
  41. /package/{.claude → tools}/skills/bmad-agent-pm/SKILL.md +0 -0
  42. /package/{.claude → tools}/skills/bmad-agent-pm/bmad-skill-manifest.yaml +0 -0
  43. /package/{.claude → tools}/skills/bmad-agent-tech-writer/SKILL.md +0 -0
  44. /package/{.claude → tools}/skills/bmad-agent-tech-writer/bmad-skill-manifest.yaml +0 -0
  45. /package/{.claude → tools}/skills/bmad-agent-tech-writer/explain-concept.md +0 -0
  46. /package/{.claude → tools}/skills/bmad-agent-tech-writer/mermaid-gen.md +0 -0
  47. /package/{.claude → tools}/skills/bmad-agent-tech-writer/validate-doc.md +0 -0
  48. /package/{.claude → tools}/skills/bmad-agent-tech-writer/write-document.md +0 -0
  49. /package/{.claude → tools}/skills/bmad-agent-ux-designer/SKILL.md +0 -0
  50. /package/{.claude → tools}/skills/bmad-agent-ux-designer/bmad-skill-manifest.yaml +0 -0
  51. /package/{.claude → tools}/skills/bmad-brainstorming/SKILL.md +0 -0
  52. /package/{.claude → tools}/skills/bmad-brainstorming/brain-methods.csv +0 -0
  53. /package/{.claude → tools}/skills/bmad-brainstorming/steps/step-01-session-setup.md +0 -0
  54. /package/{.claude → tools}/skills/bmad-brainstorming/steps/step-01b-continue.md +0 -0
  55. /package/{.claude → tools}/skills/bmad-brainstorming/steps/step-02a-user-selected.md +0 -0
  56. /package/{.claude → tools}/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md +0 -0
  57. /package/{.claude → tools}/skills/bmad-brainstorming/steps/step-02c-random-selection.md +0 -0
  58. /package/{.claude → tools}/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md +0 -0
  59. /package/{.claude → tools}/skills/bmad-brainstorming/steps/step-03-technique-execution.md +0 -0
  60. /package/{.claude → tools}/skills/bmad-brainstorming/steps/step-04-idea-organization.md +0 -0
  61. /package/{.claude → tools}/skills/bmad-brainstorming/template.md +0 -0
  62. /package/{.claude → tools}/skills/bmad-brainstorming/workflow.md +0 -0
  63. /package/{.claude → tools}/skills/bmad-check-implementation-readiness/SKILL.md +0 -0
  64. /package/{.claude → tools}/skills/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -0
  65. /package/{.claude → tools}/skills/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -0
  66. /package/{.claude → tools}/skills/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -0
  67. /package/{.claude → tools}/skills/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -0
  68. /package/{.claude → tools}/skills/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -0
  69. /package/{.claude → tools}/skills/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -0
  70. /package/{.claude → tools}/skills/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -0
  71. /package/{.claude → tools}/skills/bmad-check-implementation-readiness/workflow.md +0 -0
  72. /package/{.claude → tools}/skills/bmad-checkpoint-preview/SKILL.md +0 -0
  73. /package/{.claude → tools}/skills/bmad-checkpoint-preview/generate-trail.md +0 -0
  74. /package/{.claude → tools}/skills/bmad-checkpoint-preview/step-01-orientation.md +0 -0
  75. /package/{.claude → tools}/skills/bmad-checkpoint-preview/step-02-walkthrough.md +0 -0
  76. /package/{.claude → tools}/skills/bmad-checkpoint-preview/step-03-detail-pass.md +0 -0
  77. /package/{.claude → tools}/skills/bmad-checkpoint-preview/step-04-testing.md +0 -0
  78. /package/{.claude → tools}/skills/bmad-checkpoint-preview/step-05-wrapup.md +0 -0
  79. /package/{.claude → tools}/skills/bmad-code-review/SKILL.md +0 -0
  80. /package/{.claude → tools}/skills/bmad-code-review/steps/step-01-gather-context.md +0 -0
  81. /package/{.claude → tools}/skills/bmad-code-review/steps/step-02-review.md +0 -0
  82. /package/{.claude → tools}/skills/bmad-code-review/steps/step-03-triage.md +0 -0
  83. /package/{.claude → tools}/skills/bmad-code-review/steps/step-04-present.md +0 -0
  84. /package/{.claude → tools}/skills/bmad-code-review/workflow.md +0 -0
  85. /package/{.claude → tools}/skills/bmad-correct-course/SKILL.md +0 -0
  86. /package/{.claude → tools}/skills/bmad-correct-course/checklist.md +0 -0
  87. /package/{.claude → tools}/skills/bmad-correct-course/workflow.md +0 -0
  88. /package/{.claude → tools}/skills/bmad-create-architecture/SKILL.md +0 -0
  89. /package/{.claude → tools}/skills/bmad-create-architecture/architecture-decision-template.md +0 -0
  90. /package/{.claude → tools}/skills/bmad-create-architecture/data/domain-complexity.csv +0 -0
  91. /package/{.claude → tools}/skills/bmad-create-architecture/data/project-types.csv +0 -0
  92. /package/{.claude → tools}/skills/bmad-create-architecture/steps/step-01-init.md +0 -0
  93. /package/{.claude → tools}/skills/bmad-create-architecture/steps/step-01b-continue.md +0 -0
  94. /package/{.claude → tools}/skills/bmad-create-architecture/steps/step-02-context.md +0 -0
  95. /package/{.claude → tools}/skills/bmad-create-architecture/steps/step-03-starter.md +0 -0
  96. /package/{.claude → tools}/skills/bmad-create-architecture/steps/step-04-decisions.md +0 -0
  97. /package/{.claude → tools}/skills/bmad-create-architecture/steps/step-05-patterns.md +0 -0
  98. /package/{.claude → tools}/skills/bmad-create-architecture/steps/step-06-structure.md +0 -0
  99. /package/{.claude → tools}/skills/bmad-create-architecture/steps/step-07-validation.md +0 -0
  100. /package/{.claude → tools}/skills/bmad-create-architecture/steps/step-08-complete.md +0 -0
  101. /package/{.claude → tools}/skills/bmad-create-architecture/workflow.md +0 -0
  102. /package/{.claude → tools}/skills/bmad-create-epics-and-stories/SKILL.md +0 -0
  103. /package/{.claude → tools}/skills/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -0
  104. /package/{.claude → tools}/skills/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -0
  105. /package/{.claude → tools}/skills/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -0
  106. /package/{.claude → tools}/skills/bmad-create-epics-and-stories/steps/step-04-final-validation.md +0 -0
  107. /package/{.claude → tools}/skills/bmad-create-epics-and-stories/templates/epics-template.md +0 -0
  108. /package/{.claude → tools}/skills/bmad-create-epics-and-stories/workflow.md +0 -0
  109. /package/{.claude → tools}/skills/bmad-create-prd/SKILL.md +0 -0
  110. /package/{.claude → tools}/skills/bmad-create-prd/data/domain-complexity.csv +0 -0
  111. /package/{.claude → tools}/skills/bmad-create-prd/data/prd-purpose.md +0 -0
  112. /package/{.claude → tools}/skills/bmad-create-prd/data/project-types.csv +0 -0
  113. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-01-init.md +0 -0
  114. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-01b-continue.md +0 -0
  115. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-02-discovery.md +0 -0
  116. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-02b-vision.md +0 -0
  117. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-02c-executive-summary.md +0 -0
  118. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-03-success.md +0 -0
  119. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-04-journeys.md +0 -0
  120. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-05-domain.md +0 -0
  121. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-06-innovation.md +0 -0
  122. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-07-project-type.md +0 -0
  123. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-08-scoping.md +0 -0
  124. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-09-functional.md +0 -0
  125. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-10-nonfunctional.md +0 -0
  126. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-11-polish.md +0 -0
  127. /package/{.claude → tools}/skills/bmad-create-prd/steps-c/step-12-complete.md +0 -0
  128. /package/{.claude → tools}/skills/bmad-create-prd/templates/prd-template.md +0 -0
  129. /package/{.claude → tools}/skills/bmad-create-prd/workflow.md +0 -0
  130. /package/{.claude → tools}/skills/bmad-create-story/SKILL.md +0 -0
  131. /package/{.claude → tools}/skills/bmad-create-story/checklist.md +0 -0
  132. /package/{.claude → tools}/skills/bmad-create-story/discover-inputs.md +0 -0
  133. /package/{.claude → tools}/skills/bmad-create-story/template.md +0 -0
  134. /package/{.claude → tools}/skills/bmad-create-story/workflow.md +0 -0
  135. /package/{.claude → tools}/skills/bmad-create-ux-design/SKILL.md +0 -0
  136. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-01-init.md +0 -0
  137. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-01b-continue.md +0 -0
  138. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-02-discovery.md +0 -0
  139. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-03-core-experience.md +0 -0
  140. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-04-emotional-response.md +0 -0
  141. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-05-inspiration.md +0 -0
  142. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-06-design-system.md +0 -0
  143. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-07-defining-experience.md +0 -0
  144. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-08-visual-foundation.md +0 -0
  145. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-09-design-directions.md +0 -0
  146. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-10-user-journeys.md +0 -0
  147. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-11-component-strategy.md +0 -0
  148. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-12-ux-patterns.md +0 -0
  149. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +0 -0
  150. /package/{.claude → tools}/skills/bmad-create-ux-design/steps/step-14-complete.md +0 -0
  151. /package/{.claude → tools}/skills/bmad-create-ux-design/ux-design-template.md +0 -0
  152. /package/{.claude → tools}/skills/bmad-create-ux-design/workflow.md +0 -0
  153. /package/{.claude → tools}/skills/bmad-dev-story/SKILL.md +0 -0
  154. /package/{.claude → tools}/skills/bmad-dev-story/checklist.md +0 -0
  155. /package/{.claude → tools}/skills/bmad-dev-story/workflow.md +0 -0
  156. /package/{.claude → tools}/skills/bmad-distillator/SKILL.md +0 -0
  157. /package/{.claude → tools}/skills/bmad-distillator/agents/distillate-compressor.md +0 -0
  158. /package/{.claude → tools}/skills/bmad-distillator/agents/round-trip-reconstructor.md +0 -0
  159. /package/{.claude → tools}/skills/bmad-distillator/resources/compression-rules.md +0 -0
  160. /package/{.claude → tools}/skills/bmad-distillator/resources/distillate-format-reference.md +0 -0
  161. /package/{.claude → tools}/skills/bmad-distillator/resources/splitting-strategy.md +0 -0
  162. /package/{.claude → tools}/skills/bmad-distillator/scripts/analyze_sources.py +0 -0
  163. /package/{.claude → tools}/skills/bmad-distillator/scripts/tests/test_analyze_sources.py +0 -0
  164. /package/{.claude → tools}/skills/bmad-document-project/SKILL.md +0 -0
  165. /package/{.claude → tools}/skills/bmad-document-project/checklist.md +0 -0
  166. /package/{.claude → tools}/skills/bmad-document-project/documentation-requirements.csv +0 -0
  167. /package/{.claude → tools}/skills/bmad-document-project/instructions.md +0 -0
  168. /package/{.claude → tools}/skills/bmad-document-project/templates/deep-dive-template.md +0 -0
  169. /package/{.claude → tools}/skills/bmad-document-project/templates/index-template.md +0 -0
  170. /package/{.claude → tools}/skills/bmad-document-project/templates/project-overview-template.md +0 -0
  171. /package/{.claude → tools}/skills/bmad-document-project/templates/project-scan-report-schema.json +0 -0
  172. /package/{.claude → tools}/skills/bmad-document-project/templates/source-tree-template.md +0 -0
  173. /package/{.claude → tools}/skills/bmad-document-project/workflow.md +0 -0
  174. /package/{.claude → tools}/skills/bmad-document-project/workflows/deep-dive-instructions.md +0 -0
  175. /package/{.claude → tools}/skills/bmad-document-project/workflows/deep-dive-workflow.md +0 -0
  176. /package/{.claude → tools}/skills/bmad-document-project/workflows/full-scan-instructions.md +0 -0
  177. /package/{.claude → tools}/skills/bmad-document-project/workflows/full-scan-workflow.md +0 -0
  178. /package/{.claude → tools}/skills/bmad-domain-research/SKILL.md +0 -0
  179. /package/{.claude → tools}/skills/bmad-domain-research/domain-steps/step-01-init.md +0 -0
  180. /package/{.claude → tools}/skills/bmad-domain-research/domain-steps/step-02-domain-analysis.md +0 -0
  181. /package/{.claude → tools}/skills/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +0 -0
  182. /package/{.claude → tools}/skills/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +0 -0
  183. /package/{.claude → tools}/skills/bmad-domain-research/domain-steps/step-05-technical-trends.md +0 -0
  184. /package/{.claude → tools}/skills/bmad-domain-research/domain-steps/step-06-research-synthesis.md +0 -0
  185. /package/{.claude → tools}/skills/bmad-domain-research/research.template.md +0 -0
  186. /package/{.claude → tools}/skills/bmad-domain-research/workflow.md +0 -0
  187. /package/{.claude → tools}/skills/bmad-edit-prd/SKILL.md +0 -0
  188. /package/{.claude → tools}/skills/bmad-edit-prd/data/prd-purpose.md +0 -0
  189. /package/{.claude → tools}/skills/bmad-edit-prd/steps-e/step-e-01-discovery.md +0 -0
  190. /package/{.claude → tools}/skills/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +0 -0
  191. /package/{.claude → tools}/skills/bmad-edit-prd/steps-e/step-e-02-review.md +0 -0
  192. /package/{.claude → tools}/skills/bmad-edit-prd/steps-e/step-e-03-edit.md +0 -0
  193. /package/{.claude → tools}/skills/bmad-edit-prd/steps-e/step-e-04-complete.md +0 -0
  194. /package/{.claude → tools}/skills/bmad-edit-prd/workflow.md +0 -0
  195. /package/{.claude → tools}/skills/bmad-editorial-review-prose/SKILL.md +0 -0
  196. /package/{.claude → tools}/skills/bmad-editorial-review-structure/SKILL.md +0 -0
  197. /package/{.claude → tools}/skills/bmad-generate-project-context/SKILL.md +0 -0
  198. /package/{.claude → tools}/skills/bmad-generate-project-context/project-context-template.md +0 -0
  199. /package/{.claude → tools}/skills/bmad-generate-project-context/steps/step-01-discover.md +0 -0
  200. /package/{.claude → tools}/skills/bmad-generate-project-context/steps/step-02-generate.md +0 -0
  201. /package/{.claude → tools}/skills/bmad-generate-project-context/steps/step-03-complete.md +0 -0
  202. /package/{.claude → tools}/skills/bmad-generate-project-context/workflow.md +0 -0
  203. /package/{.claude → tools}/skills/bmad-help/SKILL.md +0 -0
  204. /package/{.claude → tools}/skills/bmad-index-docs/SKILL.md +0 -0
  205. /package/{.claude → tools}/skills/bmad-market-research/SKILL.md +0 -0
  206. /package/{.claude → tools}/skills/bmad-market-research/research.template.md +0 -0
  207. /package/{.claude → tools}/skills/bmad-market-research/steps/step-01-init.md +0 -0
  208. /package/{.claude → tools}/skills/bmad-market-research/steps/step-02-customer-behavior.md +0 -0
  209. /package/{.claude → tools}/skills/bmad-market-research/steps/step-03-customer-pain-points.md +0 -0
  210. /package/{.claude → tools}/skills/bmad-market-research/steps/step-04-customer-decisions.md +0 -0
  211. /package/{.claude → tools}/skills/bmad-market-research/steps/step-05-competitive-analysis.md +0 -0
  212. /package/{.claude → tools}/skills/bmad-market-research/steps/step-06-research-completion.md +0 -0
  213. /package/{.claude → tools}/skills/bmad-market-research/workflow.md +0 -0
  214. /package/{.claude → tools}/skills/bmad-party-mode/SKILL.md +0 -0
  215. /package/{.claude → tools}/skills/bmad-prfaq/SKILL.md +0 -0
  216. /package/{.claude → tools}/skills/bmad-prfaq/agents/artifact-analyzer.md +0 -0
  217. /package/{.claude → tools}/skills/bmad-prfaq/agents/web-researcher.md +0 -0
  218. /package/{.claude → tools}/skills/bmad-prfaq/assets/prfaq-template.md +0 -0
  219. /package/{.claude → tools}/skills/bmad-prfaq/bmad-manifest.json +0 -0
  220. /package/{.claude → tools}/skills/bmad-prfaq/references/customer-faq.md +0 -0
  221. /package/{.claude → tools}/skills/bmad-prfaq/references/internal-faq.md +0 -0
  222. /package/{.claude → tools}/skills/bmad-prfaq/references/press-release.md +0 -0
  223. /package/{.claude → tools}/skills/bmad-prfaq/references/verdict.md +0 -0
  224. /package/{.claude → tools}/skills/bmad-product-brief/SKILL.md +0 -0
  225. /package/{.claude → tools}/skills/bmad-product-brief/agents/artifact-analyzer.md +0 -0
  226. /package/{.claude → tools}/skills/bmad-product-brief/agents/opportunity-reviewer.md +0 -0
  227. /package/{.claude → tools}/skills/bmad-product-brief/agents/skeptic-reviewer.md +0 -0
  228. /package/{.claude → tools}/skills/bmad-product-brief/agents/web-researcher.md +0 -0
  229. /package/{.claude → tools}/skills/bmad-product-brief/bmad-manifest.json +0 -0
  230. /package/{.claude → tools}/skills/bmad-product-brief/prompts/contextual-discovery.md +0 -0
  231. /package/{.claude → tools}/skills/bmad-product-brief/prompts/draft-and-review.md +0 -0
  232. /package/{.claude → tools}/skills/bmad-product-brief/prompts/finalize.md +0 -0
  233. /package/{.claude → tools}/skills/bmad-product-brief/prompts/guided-elicitation.md +0 -0
  234. /package/{.claude → tools}/skills/bmad-product-brief/resources/brief-template.md +0 -0
  235. /package/{.claude → tools}/skills/bmad-qa-generate-e2e-tests/SKILL.md +0 -0
  236. /package/{.claude → tools}/skills/bmad-qa-generate-e2e-tests/checklist.md +0 -0
  237. /package/{.claude → tools}/skills/bmad-qa-generate-e2e-tests/workflow.md +0 -0
  238. /package/{.claude → tools}/skills/bmad-quick-dev/SKILL.md +0 -0
  239. /package/{.claude → tools}/skills/bmad-quick-dev/compile-epic-context.md +0 -0
  240. /package/{.claude → tools}/skills/bmad-quick-dev/spec-template.md +0 -0
  241. /package/{.claude → tools}/skills/bmad-quick-dev/step-01-clarify-and-route.md +0 -0
  242. /package/{.claude → tools}/skills/bmad-quick-dev/step-02-plan.md +0 -0
  243. /package/{.claude → tools}/skills/bmad-quick-dev/step-03-implement.md +0 -0
  244. /package/{.claude → tools}/skills/bmad-quick-dev/step-04-review.md +0 -0
  245. /package/{.claude → tools}/skills/bmad-quick-dev/step-05-present.md +0 -0
  246. /package/{.claude → tools}/skills/bmad-quick-dev/step-oneshot.md +0 -0
  247. /package/{.claude → tools}/skills/bmad-quick-dev/workflow.md +0 -0
  248. /package/{.claude → tools}/skills/bmad-retrospective/SKILL.md +0 -0
  249. /package/{.claude → tools}/skills/bmad-retrospective/workflow.md +0 -0
  250. /package/{.claude → tools}/skills/bmad-review-adversarial-general/SKILL.md +0 -0
  251. /package/{.claude → tools}/skills/bmad-review-edge-case-hunter/SKILL.md +0 -0
  252. /package/{.claude → tools}/skills/bmad-shard-doc/SKILL.md +0 -0
  253. /package/{.claude → tools}/skills/bmad-sprint-planning/SKILL.md +0 -0
  254. /package/{.claude → tools}/skills/bmad-sprint-planning/checklist.md +0 -0
  255. /package/{.claude → tools}/skills/bmad-sprint-planning/sprint-status-template.yaml +0 -0
  256. /package/{.claude → tools}/skills/bmad-sprint-planning/workflow.md +0 -0
  257. /package/{.claude → tools}/skills/bmad-sprint-status/SKILL.md +0 -0
  258. /package/{.claude → tools}/skills/bmad-sprint-status/workflow.md +0 -0
  259. /package/{.claude → tools}/skills/bmad-technical-research/SKILL.md +0 -0
  260. /package/{.claude → tools}/skills/bmad-technical-research/research.template.md +0 -0
  261. /package/{.claude → tools}/skills/bmad-technical-research/technical-steps/step-01-init.md +0 -0
  262. /package/{.claude → tools}/skills/bmad-technical-research/technical-steps/step-02-technical-overview.md +0 -0
  263. /package/{.claude → tools}/skills/bmad-technical-research/technical-steps/step-03-integration-patterns.md +0 -0
  264. /package/{.claude → tools}/skills/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +0 -0
  265. /package/{.claude → tools}/skills/bmad-technical-research/technical-steps/step-05-implementation-research.md +0 -0
  266. /package/{.claude → tools}/skills/bmad-technical-research/technical-steps/step-06-research-synthesis.md +0 -0
  267. /package/{.claude → tools}/skills/bmad-technical-research/workflow.md +0 -0
  268. /package/{.claude → tools}/skills/bmad-validate-prd/SKILL.md +0 -0
  269. /package/{.claude → tools}/skills/bmad-validate-prd/data/domain-complexity.csv +0 -0
  270. /package/{.claude → tools}/skills/bmad-validate-prd/data/prd-purpose.md +0 -0
  271. /package/{.claude → tools}/skills/bmad-validate-prd/data/project-types.csv +0 -0
  272. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-01-discovery.md +0 -0
  273. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-02-format-detection.md +0 -0
  274. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +0 -0
  275. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-03-density-validation.md +0 -0
  276. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -0
  277. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -0
  278. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -0
  279. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -0
  280. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -0
  281. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -0
  282. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +0 -0
  283. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -0
  284. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -0
  285. /package/{.claude → tools}/skills/bmad-validate-prd/steps-v/step-v-13-report-complete.md +0 -0
  286. /package/{.claude → tools}/skills/bmad-validate-prd/workflow.md +0 -0
  287. /package/{.claude → tools}/skills/gitnexus/gitnexus-cli/SKILL.md +0 -0
  288. /package/{.claude → tools}/skills/gitnexus/gitnexus-debugging/SKILL.md +0 -0
  289. /package/{.claude → tools}/skills/gitnexus/gitnexus-exploring/SKILL.md +0 -0
  290. /package/{.claude → tools}/skills/gitnexus/gitnexus-guide/SKILL.md +0 -0
  291. /package/{.claude → tools}/skills/gitnexus/gitnexus-impact-analysis/SKILL.md +0 -0
  292. /package/{.claude → tools}/skills/gitnexus/gitnexus-refactoring/SKILL.md +0 -0
  293. /package/{.claude → tools}/skills/vsaf-doc/SKILL.md +0 -0
@@ -22,7 +22,7 @@ VSAF is a meta-framework for AI-driven SDLC — not an application. It has no so
22
22
  | Code Intelligence | GitNexus (MCP) | Impact analysis, call graph, blast radius |
23
23
  | Implementation | Superpowers, Claude Code | Brainstorm, TDD execution, code review |
24
24
 
25
- Key directories: `.claude/` (settings + skills), `_bmad/` (BMAD workspace), `.gitnexus/` (knowledge graph index).
25
+ Key directories: `.claude/` (settings + skills), `.vsaf/_bmad/` (BMAD workspace), `.vsaf/docs/` (artifacts), `.gitnexus/` (knowledge graph index).
26
26
 
27
27
  ---
28
28
 
package/bin/vsaf.js CHANGED
@@ -104,36 +104,12 @@ function printInstallHint() {
104
104
 
105
105
  console.log(`\n Detected OS: \x1b[36m${platform}\x1b[0m\n`);
106
106
 
107
- if (platform === 'windows') {
108
- console.log(` \x1b[1m\x1b[31m[IMPORTANT]\x1b[0m PowerShell blocks npm global scripts by default.`);
109
- console.log(` Run this first (one-time, in PowerShell as Admin):\n`);
110
- console.log(` \x1b[32mSet-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned\x1b[0m\n`);
111
- console.log(` \x1b[1m\x1b[33m[Windows]\x1b[0m Recommended installation methods:\n`);
112
- console.log(` \x1b[1mOption 1: PowerShell (Admin)\x1b[0m`);
113
- console.log(` \x1b[32mnpm install -g ${pkg}\x1b[0m\n`);
114
- console.log(` \x1b[1mOption 2: Setup script (CMD)\x1b[0m`);
115
- console.log(` \x1b[32mscripts\\setup-vsaf.bat\x1b[0m\n`);
116
- console.log(` \x1b[1mOption 3: WSL (Windows Subsystem for Linux)\x1b[0m`);
117
- console.log(` \x1b[90mRun inside WSL terminal for full Linux compatibility:\x1b[0m`);
118
- console.log(` \x1b[32mnpm install -g ${pkg}\x1b[0m`);
119
- console.log(` \x1b[32mbash scripts/setup-vsaf.sh\x1b[0m\n`);
120
- console.log(` \x1b[1mOption 4: Git Bash\x1b[0m`);
121
- console.log(` \x1b[90mIf you have Git for Windows installed:\x1b[0m`);
122
- console.log(` \x1b[32mnpm install -g ${pkg}\x1b[0m`);
123
- console.log(` \x1b[32mbash scripts/setup-vsaf.sh\x1b[0m\n`);
124
- } else if (platform === 'macos') {
125
- console.log(` \x1b[1m\x1b[33m[macOS]\x1b[0m Recommended installation methods:\n`);
126
- console.log(` \x1b[1mOption 1: npm global install\x1b[0m`);
127
- console.log(` \x1b[32mnpm install -g ${pkg}\x1b[0m\n`);
128
- console.log(` \x1b[1mOption 2: Setup script\x1b[0m`);
129
- console.log(` \x1b[32mbash scripts/setup-vsaf.sh\x1b[0m\n`);
130
- } else {
131
- console.log(` \x1b[1m\x1b[33m[Linux]\x1b[0m Recommended installation methods:\n`);
132
- console.log(` \x1b[1mOption 1: npm global install\x1b[0m`);
133
- console.log(` \x1b[32mnpm install -g ${pkg}\x1b[0m\n`);
134
- console.log(` \x1b[1mOption 2: Setup script\x1b[0m`);
135
- console.log(` \x1b[32mbash scripts/setup-vsaf.sh\x1b[0m\n`);
136
- }
107
+ const label = platform === 'macos' ? 'macOS' : 'Linux';
108
+ console.log(` \x1b[1m\x1b[33m[${label}]\x1b[0m Recommended installation methods:\n`);
109
+ console.log(` \x1b[1mOption 1: npm global install\x1b[0m`);
110
+ console.log(` \x1b[32mnpm install -g ${pkg}\x1b[0m\n`);
111
+ console.log(` \x1b[1mOption 2: Setup script\x1b[0m`);
112
+ console.log(` \x1b[32mbash scripts/setup-vsaf.sh\x1b[0m\n`);
137
113
 
138
114
  console.log(` After installation, you can use:\n`);
139
115
  console.log(` \x1b[36mvsaf status\x1b[0m # check installation`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngocsangairvds/vsaf",
3
- "version": "3.1.13",
3
+ "version": "3.1.15",
4
4
  "description": "VSAF — Agentic AI SDLC Framework. 3 integrated tools: BMAD, GitNexus, Superpowers. 2-layer review.",
5
5
  "keywords": ["claude", "claude-code", "ai", "sdlc", "framework", "bmad", "gitnexus", "superpowers"],
6
6
  "bin": {
@@ -15,8 +15,7 @@
15
15
  "files": [
16
16
  "bin/",
17
17
  "src/",
18
- ".claude/skills/",
19
- "_bmad/",
18
+ "tools/",
20
19
  "assets/"
21
20
  ],
22
21
  "license": "MIT"
package/src/global.js CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
  const path = require('path');
3
3
  const fs = require('fs');
4
- const { ok, info, warn, step, hasCommand, exec, copyDir, copyFile, CLAUDE_HOME, isWindows } = require('./utils');
4
+ const { ok, info, warn, step, hasCommand, exec, copyDir, copyFile, CLAUDE_HOME } = require('./utils');
5
5
 
6
6
  const PKG_ROOT = path.join(__dirname, '..');
7
- const SKILLS_SRC = path.join(PKG_ROOT, '.claude', 'skills');
7
+ const SKILLS_SRC = path.join(PKG_ROOT, 'tools', 'skills');
8
8
  const SKILLS_DST = path.join(CLAUDE_HOME, 'skills');
9
9
 
10
10
  async function installGlobal() {
@@ -14,7 +14,6 @@ async function installGlobal() {
14
14
 
15
15
  installSkills();
16
16
  installBinary('gitnexus', () => exec('npm install -g gitnexus'));
17
- if (isWindows) ensureLadybugDbWindows();
18
17
  setupGitnexusMcp();
19
18
 
20
19
  console.log('\n\x1b[32m\x1b[1m✓ Global infra ready.\x1b[0m\n');
@@ -33,22 +32,16 @@ function installSkills() {
33
32
  fs.mkdirSync(SKILLS_DST, { recursive: true });
34
33
 
35
34
  let installed = 0;
36
- let skipped = 0;
37
35
 
38
36
  for (const entry of fs.readdirSync(SKILLS_SRC, { withFileTypes: true })) {
39
37
  const src = path.join(SKILLS_SRC, entry.name);
40
38
  const dst = path.join(SKILLS_DST, entry.name);
41
39
 
42
- if (fs.existsSync(dst)) {
43
- skipped++;
44
- continue;
45
- }
46
-
47
40
  entry.isDirectory() ? copyDir(src, dst) : copyFile(src, dst);
48
41
  installed++;
49
42
  }
50
43
 
51
- ok(`${installed} skill(s) installed, ${skipped} already present`);
44
+ ok(`${installed} skill(s) installed/updated`);
52
45
  }
53
46
 
54
47
  // ── Binary helpers ───────────────────────────────────────────────────────────
@@ -62,33 +55,6 @@ function installBinary(name, installFn) {
62
55
  : warn(`${name} install failed — run manually`);
63
56
  }
64
57
 
65
- function ensureLadybugDbWindows() {
66
- step('LadybugDB native binding (Windows)');
67
-
68
- try {
69
- const npmRoot = require('child_process')
70
- .execSync('npm root -g', { encoding: 'utf8', shell: true }).trim();
71
- const nativePath = path.join(npmRoot, 'gitnexus', 'node_modules', '@ladybugdb', 'core', 'lbugjs.node');
72
- if (fs.existsSync(nativePath)) {
73
- ok('LadybugDB native binding present (lbugjs.node)');
74
- return;
75
- }
76
- warn('LadybugDB native binding missing — installing @ladybugdb/core-win32-x64...');
77
- const gitnexusDir = path.join(npmRoot, 'gitnexus');
78
- if (exec('npm install @ladybugdb/core-win32-x64 --no-save', { cwd: gitnexusDir })) {
79
- ok('LadybugDB native binding installed');
80
- } else {
81
- warn('Could not install LadybugDB binding. Run manually:');
82
- warn(' cd "' + gitnexusDir + '"');
83
- warn(' npm install @ladybugdb/core-win32-x64 --no-save');
84
- }
85
- } catch {
86
- warn('Could not verify LadybugDB binding — if gitnexus analyze fails at 60%, run:');
87
- info(' npm root -g (find global node_modules path)');
88
- info(' cd <path>\\gitnexus && npm install @ladybugdb/core-win32-x64 --no-save');
89
- }
90
- }
91
-
92
58
  function setupGitnexusMcp() {
93
59
  step('GitNexus MCP');
94
60
  if (!hasCommand('claude')) {
@@ -96,17 +62,10 @@ function setupGitnexusMcp() {
96
62
  return;
97
63
  }
98
64
 
99
- if (isWindows) {
100
- info('Configuring GitNexus MCP for Windows...');
101
- exec('claude mcp add gitnexus -- cmd /c npx -y gitnexus@latest mcp')
102
- ? ok('GitNexus MCP configured (Windows)')
103
- : warn('MCP setup failed — run manually: claude mcp add gitnexus -- cmd /c npx -y gitnexus@latest mcp');
104
- } else {
105
- info('Configuring GitNexus MCP...');
106
- exec('claude mcp add gitnexus -- npx -y gitnexus@latest mcp')
107
- ? ok('GitNexus MCP configured')
108
- : warn('MCP setup failed — run manually: claude mcp add gitnexus -- npx -y gitnexus@latest mcp');
109
- }
65
+ info('Configuring GitNexus MCP...');
66
+ exec('claude mcp add gitnexus -- npx -y gitnexus@latest mcp')
67
+ ? ok('GitNexus MCP configured')
68
+ : warn('MCP setup failed — run manually: claude mcp add gitnexus -- npx -y gitnexus@latest mcp');
110
69
  }
111
70
 
112
71
  module.exports = { installGlobal };
package/src/project.js CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
  const path = require('path');
3
3
  const fs = require('fs');
4
- const { ok, info, warn, step, hasCommand, exec, copyDir, copyFile, isWindows } = require('./utils');
4
+ const { ok, info, warn, step, hasCommand, exec, copyDir, copyFile } = require('./utils');
5
5
 
6
6
  const PKG_ROOT = path.join(__dirname, '..');
7
7
  const TEMPLATES = path.join(PKG_ROOT, 'assets', 'templates');
8
- const SKILLS_SRC = path.join(PKG_ROOT, '.claude', 'skills');
9
- const BMAD_SRC = path.join(PKG_ROOT, '_bmad');
8
+ const SKILLS_SRC = path.join(PKG_ROOT, 'tools', 'skills');
9
+ const BMAD_SRC = path.join(PKG_ROOT, 'tools', 'bmad');
10
10
  const CWD = process.cwd();
11
11
 
12
12
  async function installProject() {
@@ -49,7 +49,7 @@ function scaffoldFiles() {
49
49
  ok(`${dst} — already exists, skipped`);
50
50
  } else {
51
51
  copyFile(src, dstAbs);
52
- if (chmod && !isWindows) fs.chmodSync(dstAbs, chmod);
52
+ if (chmod) fs.chmodSync(dstAbs, chmod);
53
53
  ok(`${dst} — created`);
54
54
  }
55
55
  }
@@ -60,7 +60,7 @@ function scaffoldFiles() {
60
60
  function scaffoldBmadWorkspace() {
61
61
  step('BMAD workspace');
62
62
 
63
- const bmadDst = path.join(CWD, '_bmad');
63
+ const bmadDst = path.join(CWD, '.vsaf', '_bmad');
64
64
  if (!fs.existsSync(BMAD_SRC)) {
65
65
  warn('Packaged _bmad not found — skipping BMAD workspace scaffold');
66
66
  } else if (fs.existsSync(bmadDst)) {
@@ -71,11 +71,11 @@ function scaffoldBmadWorkspace() {
71
71
  }
72
72
 
73
73
  const outputDirs = [
74
- path.join(CWD, 'docs', 'project'),
75
- path.join(CWD, 'docs', 'project', 'srs'),
76
- path.join(CWD, 'docs', 'project', 'testcases'),
77
- path.join(CWD, 'docs', 'project', 'planning-artifacts'),
78
- path.join(CWD, 'docs', 'project', 'implementation-artifacts'),
74
+ path.join(CWD, '.vsaf', 'docs'),
75
+ path.join(CWD, '.vsaf', 'docs', 'srs'),
76
+ path.join(CWD, '.vsaf', 'docs', 'testcases'),
77
+ path.join(CWD, '.vsaf', 'docs', 'planning-artifacts'),
78
+ path.join(CWD, '.vsaf', 'docs', 'implementation-artifacts'),
79
79
  ];
80
80
 
81
81
  let created = 0;
@@ -116,7 +116,6 @@ function syncLocalBmadSkills() {
116
116
  ];
117
117
 
118
118
  let installed = 0;
119
- let skipped = 0;
120
119
 
121
120
  for (const targetRoot of targets) {
122
121
  fs.mkdirSync(targetRoot, { recursive: true });
@@ -125,23 +124,18 @@ function syncLocalBmadSkills() {
125
124
  const src = path.join(SKILLS_SRC, entry.name);
126
125
  const dst = path.join(targetRoot, entry.name);
127
126
 
128
- if (fs.existsSync(dst)) {
129
- skipped++;
130
- continue;
131
- }
132
-
133
127
  entry.isDirectory() ? copyDir(src, dst) : copyFile(src, dst);
134
128
  installed++;
135
129
  }
136
130
  }
137
131
 
138
- ok(`${installed} BMAD skill copy(ies), ${skipped} already present`);
132
+ ok(`${installed} BMAD skill(s) installed/updated`);
139
133
  }
140
134
 
141
135
  function initGitNexus() {
142
136
  step('GitNexus');
143
137
  if (!hasCommand('gitnexus')) { warn('gitnexus not found — run: vsaf global'); return; }
144
- const analyzeCmd = 'gitnexus analyze';
138
+ const analyzeCmd = 'gitnexus analyze --skip-git';
145
139
  info('Indexing repository (gitnexus analyze)...');
146
140
  exec(analyzeCmd, { cwd: CWD }) ? ok('Repository indexed') : warn('gitnexus analyze failed — run manually');
147
141
  }
package/src/status.js CHANGED
@@ -15,8 +15,8 @@ async function showStatus() {
15
15
  console.log('\n\x1b[1mProject (current repo)\x1b[0m');
16
16
  checkPath('.claude/settings.json', 'Project settings');
17
17
  checkPath('CLAUDE.md', 'Workflow rules');
18
- checkPath('_bmad', 'BMAD workspace');
19
- checkPath('docs/project', 'Project artifact folder');
18
+ checkPath('.vsaf/_bmad', 'BMAD workspace');
19
+ checkPath('.vsaf/docs', 'Project artifact folder');
20
20
  checkProjectSkillDir('.claude/skills', 'Project BMAD skills (.claude)');
21
21
  checkProjectSkillDir('.codex/skills', 'Project BMAD skills (.codex)');
22
22
  checkPath('.gitnexus', 'GitNexus index');
package/src/utils.js CHANGED
@@ -11,22 +11,14 @@ const info = (msg) => console.log(` \x1b[36m→\x1b[0m ${msg}`);
11
11
  const warn = (msg) => console.log(` \x1b[33m!\x1b[0m ${msg}`);
12
12
  const step = (msg) => console.log(`\n\x1b[1m${msg}\x1b[0m`);
13
13
 
14
- const isWindows = process.platform === 'win32';
15
-
16
14
  function hasCommand(cmd) {
17
- // Try --version first (works on most CLIs across all platforms)
18
- const versionCheck = spawnSync(cmd, ['--version'], { stdio: 'ignore', shell: isWindows });
15
+ // Try --version first (works on most CLIs)
16
+ const versionCheck = spawnSync(cmd, ['--version'], { stdio: 'ignore', shell: false });
19
17
  if (versionCheck.status === 0) return true;
20
18
 
21
19
  // Fallback: check if command exists on PATH
22
- if (isWindows) {
23
- // 'where' is a native Windows command; run as a single string via shell
24
- const whereCheck = spawnSync(`where "${cmd}"`, { stdio: 'ignore', shell: true });
25
- return whereCheck.status === 0;
26
- } else {
27
- const pathCheck = spawnSync('sh', ['-c', `command -v "${cmd}"`], { stdio: 'ignore', shell: false });
28
- return pathCheck.status === 0;
29
- }
20
+ const pathCheck = spawnSync('sh', ['-c', `command -v "${cmd}"`], { stdio: 'ignore', shell: false });
21
+ return pathCheck.status === 0;
30
22
  }
31
23
 
32
24
  function exec(cmd, opts = {}) {
@@ -62,9 +54,8 @@ function hasGitCommits() {
62
54
  }
63
55
 
64
56
  function getPlatform() {
65
- if (process.platform === 'win32') return 'windows';
66
57
  if (process.platform === 'darwin') return 'macos';
67
58
  return 'linux';
68
59
  }
69
60
 
70
- module.exports = { ok, info, warn, step, hasCommand, exec, copyDir, copyFile, CLAUDE_HOME, isWindows, getPlatform, hasGitCommits };
61
+ module.exports = { ok, info, warn, step, hasCommand, exec, copyDir, copyFile, CLAUDE_HOME, getPlatform, hasGitCommits };
package/src/workflow.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  const path = require('path');
4
4
  const fs = require('fs');
5
- const { ok, info, warn, step, hasCommand, exec, isWindows, hasGitCommits } = require('./utils');
5
+ const { ok, info, warn, step, hasCommand, exec, hasGitCommits } = require('./utils');
6
6
 
7
7
  function preflightCheck() {
8
8
  // Check: is this a git repo?
@@ -22,24 +22,6 @@ function preflightCheck() {
22
22
  return false;
23
23
  }
24
24
 
25
- // Check (Windows): is LadybugDB native binding present?
26
- if (isWindows) {
27
- try {
28
- const npmRoot = require('child_process')
29
- .execSync('npm root -g', { encoding: 'utf8', shell: true }).trim();
30
- const lbugNode = path.join(npmRoot, 'gitnexus', 'node_modules', '@ladybugdb', 'core', 'lbugjs.node');
31
- if (!fs.existsSync(lbugNode)) {
32
- warn('LadybugDB native binding missing (lbugjs.node).');
33
- warn('gitnexus analyze will fail at 60% without it.');
34
- info('Fix: run this in CMD:');
35
- info(' cd "' + path.join(npmRoot, 'gitnexus') + '"');
36
- info(' npm install @ladybugdb/core-win32-x64 --no-save');
37
- info('Then retry: vsaf index');
38
- return false;
39
- }
40
- } catch { /* can't check, proceed anyway */ }
41
- }
42
-
43
25
  return true;
44
26
  }
45
27
 
@@ -116,23 +98,7 @@ function runServe() {
116
98
  }
117
99
 
118
100
  function printAnalyzeHint() {
119
- if (isWindows) {
120
- warn('Windows troubleshooting:');
121
- warn('');
122
- warn(' [Most common] PowerShell blocks npm global scripts (.ps1).');
123
- warn(' Use CMD instead of PowerShell, or prefix with cmd /c:');
124
- warn('');
125
- warn(' cmd /c gitnexus analyze');
126
- warn('');
127
- info(' Other options:');
128
- info(' - Run via npx: npx gitnexus analyze');
129
- info(' - Use Git Bash: bash -c "gitnexus analyze"');
130
- info(' - Use WSL: wsl -- bash -c "cd $(wslpath -a .) && gitnexus analyze"');
131
- info(' - Or fix PowerShell permanently (Admin):');
132
- info(' Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned');
133
- } else {
134
- info('Try running manually: gitnexus analyze --verbose');
135
- }
101
+ info('Try running manually: gitnexus analyze --verbose');
136
102
  }
137
103
 
138
104
  module.exports = { runIndex, runReview, runClean, runServe };
@@ -34,9 +34,9 @@ Implement code strictly following PRD, SRS, and testcases, one task at a time, w
34
34
  ```
35
35
 
36
36
  ### Step 1 — Read PRD + SRS + testcase (mandatory — must read all 3 fully)
37
- - Read the PRD file in `docs/project/planning-artifacts/` — understand WHY and WHAT
38
- - Read the SRS file in `docs/project/srs/` — understand HOW, FRs/NFRs
39
- - Read the testcase file in `docs/project/testcases/` — understand acceptance criteria
37
+ - Read the PRD file in `.vsaf/docs/planning-artifacts/` — understand WHY and WHAT
38
+ - Read the SRS file in `.vsaf/docs/srs/` — understand HOW, FRs/NFRs
39
+ - Read the testcase file in `.vsaf/docs/testcases/` — understand acceptance criteria
40
40
  - Confirm FR/NFR → testcase mapping before starting
41
41
  - If a gap is found (FR/NFR without testcase, or testcase contradicts SRS): NOTIFY USER before continuing
42
42
  - **Do NOT start coding without having read all 3 documents**
@@ -21,14 +21,14 @@ Thoroughly understand the domain, market, user needs, and technical feasibility
21
21
  ### Step 1 — Domain Research
22
22
  - Use skill `bmad-domain-research` to deep dive into the domain/industry
23
23
  - Output: terminology, business rules, regulatory constraints, domain patterns
24
- - Save to `docs/project/planning-artifacts/domain-research-[topic].md`
24
+ - Save to `.vsaf/docs/planning-artifacts/domain-research-[topic].md`
25
25
 
26
26
  ### Step 2 — Market Research
27
27
  - Use skill `bmad-market-research` to analyze:
28
28
  - Competition landscape: who is doing what, strengths/weaknesses
29
29
  - Customer needs: pain points, underserved segments
30
30
  - Market trends: which directions are growing
31
- - Save to `docs/project/planning-artifacts/market-research-[topic].md`
31
+ - Save to `.vsaf/docs/planning-artifacts/market-research-[topic].md`
32
32
 
33
33
  ### Step 3 — Technical Feasibility
34
34
  - Use skill `bmad-technical-research` to assess:
@@ -36,12 +36,12 @@ Thoroughly understand the domain, market, user needs, and technical feasibility
36
36
  - Integration constraints
37
37
  - Performance/scale requirements
38
38
  - Build vs buy decisions
39
- - Save to `docs/project/planning-artifacts/tech-research-[topic].md`
39
+ - Save to `.vsaf/docs/planning-artifacts/tech-research-[topic].md`
40
40
 
41
41
  ### Step 4 — Product Brief
42
42
  - Use skill `bmad-product-brief` to synthesize findings into a product brief
43
43
  - Product brief = summary of: what problem, for whom, what solution, why now
44
- - Save to `docs/project/planning-artifacts/product-brief-[name].md`
44
+ - Save to `.vsaf/docs/planning-artifacts/product-brief-[name].md`
45
45
 
46
46
  ### Step 5 — PRFAQ Challenge (Working Backwards)
47
47
  - Use skill `bmad-prfaq` to stress-test the product concept
@@ -55,7 +55,7 @@ Thoroughly understand the domain, market, user needs, and technical feasibility
55
55
  - PRD includes: vision, goals, FRs, NFRs, epics, user stories, success metrics
56
56
  - After creation: use skill `bmad-validate-prd` to validate the PRD meets standards
57
57
  - If validation FAILs: John will use `bmad-edit-prd` to fix issues immediately
58
- - Save to `docs/project/planning-artifacts/prd-[name].md`
58
+ - Save to `.vsaf/docs/planning-artifacts/prd-[name].md`
59
59
 
60
60
  ### Step 7 — Multi-agent Review (Party Mode)
61
61
  - Use skill `bmad-party-mode` to organize a roundtable:
@@ -69,11 +69,11 @@ Thoroughly understand the domain, market, user needs, and technical feasibility
69
69
  ## Discovery Complete: [product/domain]
70
70
 
71
71
  ### Research artifacts
72
- - Domain research: docs/project/planning-artifacts/domain-research-[topic].md
73
- - Market research: docs/project/planning-artifacts/market-research-[topic].md
74
- - Tech research: docs/project/planning-artifacts/tech-research-[topic].md
75
- - Product brief: docs/project/planning-artifacts/product-brief-[name].md
76
- - PRD: docs/project/planning-artifacts/prd-[name].md
72
+ - Domain research: .vsaf/docs/planning-artifacts/domain-research-[topic].md
73
+ - Market research: .vsaf/docs/planning-artifacts/market-research-[topic].md
74
+ - Tech research: .vsaf/docs/planning-artifacts/tech-research-[topic].md
75
+ - Product brief: .vsaf/docs/planning-artifacts/product-brief-[name].md
76
+ - PRD: .vsaf/docs/planning-artifacts/prd-[name].md
77
77
 
78
78
  ### Key findings
79
79
  - [3-5 bullet point summary]
@@ -14,7 +14,7 @@ Must have run `/vsaf-plan` and have its output before running this skill.
14
14
  ## Steps
15
15
 
16
16
  ### Step 0 — Determine mode: Create or Edit
17
- - Check if a PRD already exists in `docs/project/planning-artifacts/` for this feature
17
+ - Check if a PRD already exists in `.vsaf/docs/planning-artifacts/` for this feature
18
18
  - **If none exists** → Mode: CREATE (create from scratch)
19
19
  - **If one exists** → Mode: EDIT (edit based on feedback/changes)
20
20
  - Ask user: "A PRD already exists. Do you want to create a new one from scratch or edit the existing one?"
@@ -25,7 +25,7 @@ Must have run `/vsaf-plan` and have its output before running this skill.
25
25
  - Use skill `bmad-agent-pm` (John) to guide the PRD creation process from `/vsaf-plan` output
26
26
  - John will call skill `bmad-create-prd` to generate a standard PRD
27
27
  - PRD must include: vision, goals, FRs, NFRs, epics, user stories, success metrics, scope, out-of-scope, assumptions
28
- - Save to `docs/project/planning-artifacts/prd-[feature].md`
28
+ - Save to `.vsaf/docs/planning-artifacts/prd-[feature].md`
29
29
 
30
30
  #### Mode EDIT:
31
31
  - Use skill `bmad-edit-prd` to edit the existing PRD
@@ -43,7 +43,7 @@ Must have run `/vsaf-plan` and have its output before running this skill.
43
43
  ## PRD Created/Updated
44
44
 
45
45
  ### File
46
- - docs/project/planning-artifacts/prd-[feature].md
46
+ - .vsaf/docs/planning-artifacts/prd-[feature].md
47
47
  - Mode: [CREATE / EDIT]
48
48
  - Validation: [PASS / FAIL — details if fail]
49
49
 
@@ -15,9 +15,9 @@ Analyze the PRD and write a feature-level SRS following a standard template —
15
15
 
16
16
  ## Configuration
17
17
  ```yaml
18
- outputDir: docs/project/srs
19
- featureTemplate: _bmad/bmm/1-analysis/bmad-document-project/templates/srs-feature-template.md
20
- systemTemplate: _bmad/bmm/1-analysis/bmad-document-project/templates/srs-system-template.md
18
+ outputDir: .vsaf/docs/srs
19
+ featureTemplate: .vsaf/_bmad/bmm/1-analysis/bmad-document-project/templates/srs-feature-template.md
20
+ systemTemplate: .vsaf/_bmad/bmm/1-analysis/bmad-document-project/templates/srs-system-template.md
21
21
  ```
22
22
 
23
23
  ## Steps
@@ -27,7 +27,7 @@ systemTemplate: _bmad/bmm/1-analysis/bmad-document-project/templates/srs-system-
27
27
  Before starting, check if the user has provided sufficient information:
28
28
 
29
29
  **Required:**
30
- - [ ] PRD document (file path or content) — typically at `docs/project/planning-artifacts/prd-[feature].md`
30
+ - [ ] PRD document (file path or content) — typically at `.vsaf/docs/planning-artifacts/prd-[feature].md`
31
31
  - [ ] Figma link (URL figma.com/design/...) — if available
32
32
 
33
33
  If PRD is missing, **stop immediately** and request from the user:
@@ -48,7 +48,7 @@ Only continue when the PRD is available.
48
48
  ---
49
49
 
50
50
  ### Step 1 — Determine mode: Create or Edit
51
- - Check if an SRS already exists in `docs/project/srs/` for this feature
51
+ - Check if an SRS already exists in `.vsaf/docs/srs/` for this feature
52
52
  - **If none exists** → Mode: CREATE
53
53
  - **If one exists** → Mode: EDIT
54
54
  - Ask user: "An SRS already exists. Do you want to create a new one from scratch or edit the existing one?"
@@ -104,7 +104,7 @@ After this step, output a **"Gap Analysis Report"** and ask the user if they wan
104
104
 
105
105
  ### Step 4 — Write SRS following the Feature Template
106
106
 
107
- Read the template at `_bmad/bmm/1-analysis/bmad-document-project/templates/srs-feature-template.md` and write the SRS **strictly following the template structure**, including all 12 sections (0-11):
107
+ Read the template at `.vsaf/_bmad/bmm/1-analysis/bmad-document-project/templates/srs-feature-template.md` and write the SRS **strictly following the template structure**, including all 12 sections (0-11):
108
108
 
109
109
  0. **Preamble** — Document information, change log table, approval table
110
110
  1. **Introduction** — Objectives, scope, reference documents
@@ -140,14 +140,14 @@ Read the template at `_bmad/bmm/1-analysis/bmad-document-project/templates/srs-f
140
140
  ---
141
141
 
142
142
  ### Step 6 — Save SRS file
143
- Save the SRS document to: `docs/project/srs/SRS-[project-name]-[FR-ID]-[feature-name]-v1.0.md`
143
+ Save the SRS document to: `.vsaf/docs/srs/SRS-[project-name]-[FR-ID]-[feature-name]-v1.0.md`
144
144
 
145
145
  ### Step 7 — Output to user
146
146
  ```
147
147
  ## SRS Created/Updated
148
148
 
149
149
  ### File
150
- - docs/project/srs/SRS-[project-name]-[FR-ID]-[feature-name]-v1.0.md
150
+ - .vsaf/docs/srs/SRS-[project-name]-[FR-ID]-[feature-name]-v1.0.md
151
151
  - Mode: [CREATE / EDIT]
152
152
  - Use Cases written: [N]
153
153
  - Validation: [PASS / FAIL — details if fail]
@@ -159,7 +159,7 @@ Save the SRS document to: `docs/project/srs/SRS-[project-name]-[FR-ID]-[feature-
159
159
  - [SRS sections still containing {{...}} that need additional input]
160
160
 
161
161
  ## Next step
162
- Run /vsaf-test docs/project/srs/SRS-[...].md to generate testcases
162
+ Run /vsaf-test .vsaf/docs/srs/SRS-[...].md to generate testcases
163
163
  ```
164
164
 
165
165
  ## Notes
@@ -29,7 +29,7 @@ Ensure documentation is always up to date and AI agents have sufficient context.
29
29
  ### Step 2 — Generate project documentation
30
30
  - Use skill `bmad-document-project` to generate/update project docs
31
31
  - Output: architecture description, module breakdown, API endpoints, data flows
32
- - Save to `docs/project/`
32
+ - Save to `.vsaf/docs/`
33
33
 
34
34
  ### Step 3 — Generate project context for AI
35
35
  - Use skill `bmad-generate-project-context` to create `project-context.md`
@@ -38,8 +38,8 @@ Build a full mental model of the project before touching any code.
38
38
  - Identify: hot symbols (many callers), risk areas (high fan-out)
39
39
 
40
40
  ### Step 7 — Read project documentation + synthesize
41
- - Read `docs/project/planning-artifacts/` to find PRDs, ADRs, architecture docs
42
- - Read `docs/project/srs/` to find existing SRS documents
41
+ - Read `.vsaf/docs/planning-artifacts/` to find PRDs, ADRs, architecture docs
42
+ - Read `.vsaf/docs/srs/` to find existing SRS documents
43
43
  - Synthesize all findings into a project overview
44
44
 
45
45
  ### Step 8 — Output to user
@@ -33,7 +33,7 @@ Fully understand the requirement, analyze impact, and determine the implementati
33
33
  - Use skill `bmad-agent-architect` to propose an architecture approach
34
34
  - Compare alternatives, choose the most suitable approach
35
35
  - **If risk is HIGH or > 3 modules**: use skill `bmad-create-architecture` to create a formal ADR (Architecture Decision Record)
36
- - Save to `docs/project/planning-artifacts/adr-[feature].md`
36
+ - Save to `.vsaf/docs/planning-artifacts/adr-[feature].md`
37
37
 
38
38
  ### Step 4 — Dual Brainstorm
39
39
 
@@ -91,4 +91,4 @@ Date: [YYYY-MM-DD]
91
91
  - Retro must be data-backed — do not accept "I feel like..." without evidence
92
92
  - If GitNexus index is stale: run `vsaf index` before the retro
93
93
  - Action items must be actionable and have an owner — do not write vague "improve testing"
94
- - Save retro output to `docs/project/implementation-artifacts/retro-[sprint].md` to track historical data
94
+ - Save retro output to `.vsaf/docs/implementation-artifacts/retro-[sprint].md` to track historical data
@@ -10,7 +10,7 @@ Multi-layer review, verify scope, validate architecture, push PR. Ensure code ha
10
10
 
11
11
  ## Prerequisites
12
12
  - Have run `/vsaf-build` with PRD + SRS + testcase
13
- - Have run `/vsaf-test run` — results file exists at `docs/project/testcases/[feature]-results.md`
13
+ - Have run `/vsaf-test run` — results file exists at `.vsaf/docs/testcases/[feature]-results.md`
14
14
  - Ship gate from `/vsaf-test run` = PASS
15
15
  - No failing tests
16
16
 
@@ -78,7 +78,7 @@ git push origin feature/<name>
78
78
  ```
79
79
  PR description must include:
80
80
  - Impact summary (from GitNexus detect_changes)
81
- - Test results file path: `docs/project/testcases/[feature]-results.md`
81
+ - Test results file path: `.vsaf/docs/testcases/[feature]-results.md`
82
82
  - Adversarial triage: MUST FIX: 0, SHOULD FIX: N, NOTED: N
83
83
  - Shape check result
84
84
 
@@ -98,7 +98,7 @@ PR description must include:
98
98
  ### PR
99
99
  - Branch: feature/[name]
100
100
  - PR: [link]
101
- - Test results: docs/project/testcases/[feature]-results.md
101
+ - Test results: .vsaf/docs/testcases/[feature]-results.md
102
102
 
103
103
  ## Next step
104
104
  - Run /vsaf-retro if this is the end of a sprint/epic
@@ -33,7 +33,7 @@ Manage backlog and sprints for the project — break PRD/SRS into stories, creat
33
33
  - Prioritize stories (MoSCoW or WSJF)
34
34
  - Assign stories to sprint based on capacity
35
35
  - Identify dependencies between stories
36
- - Save sprint plan to `docs/project/planning-artifacts/sprint-plan.md`
36
+ - Save sprint plan to `.vsaf/docs/planning-artifacts/sprint-plan.md`
37
37
 
38
38
  #### Step 3 — Output
39
39
  ```
@@ -94,12 +94,12 @@ Or: /vsaf-plan <story description> to start the first feature
94
94
  #### Step 1 — Create story file
95
95
  - Use skill `bmad-create-story` with story ID from the sprint plan
96
96
  - Story file includes: full context, acceptance criteria, technical notes, dependencies
97
- - Save to `docs/project/planning-artifacts/stories/story-[id].md`
97
+ - Save to `.vsaf/docs/planning-artifacts/stories/story-[id].md`
98
98
 
99
99
  #### Step 2 — Output
100
100
  ```
101
101
  ## Story Created: [story title]
102
- - File: docs/project/planning-artifacts/stories/story-[id].md
102
+ - File: .vsaf/docs/planning-artifacts/stories/story-[id].md
103
103
 
104
104
  ### Next step
105
105
  Run /vsaf-plan <story description> to plan implementation