@ngocsangairvds/vsaf 3.0.0

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 (282) hide show
  1. package/.claude/skills/bmad-advanced-elicitation/SKILL.md +136 -0
  2. package/.claude/skills/bmad-advanced-elicitation/methods.csv +51 -0
  3. package/.claude/skills/bmad-agent-analyst/SKILL.md +59 -0
  4. package/.claude/skills/bmad-agent-analyst/bmad-skill-manifest.yaml +11 -0
  5. package/.claude/skills/bmad-agent-architect/SKILL.md +54 -0
  6. package/.claude/skills/bmad-agent-architect/bmad-skill-manifest.yaml +11 -0
  7. package/.claude/skills/bmad-agent-dev/SKILL.md +69 -0
  8. package/.claude/skills/bmad-agent-dev/bmad-skill-manifest.yaml +11 -0
  9. package/.claude/skills/bmad-agent-pm/SKILL.md +59 -0
  10. package/.claude/skills/bmad-agent-pm/bmad-skill-manifest.yaml +11 -0
  11. package/.claude/skills/bmad-agent-tech-writer/SKILL.md +57 -0
  12. package/.claude/skills/bmad-agent-tech-writer/bmad-skill-manifest.yaml +11 -0
  13. package/.claude/skills/bmad-agent-tech-writer/explain-concept.md +20 -0
  14. package/.claude/skills/bmad-agent-tech-writer/mermaid-gen.md +20 -0
  15. package/.claude/skills/bmad-agent-tech-writer/validate-doc.md +19 -0
  16. package/.claude/skills/bmad-agent-tech-writer/write-document.md +20 -0
  17. package/.claude/skills/bmad-agent-ux-designer/SKILL.md +55 -0
  18. package/.claude/skills/bmad-agent-ux-designer/bmad-skill-manifest.yaml +11 -0
  19. package/.claude/skills/bmad-brainstorming/SKILL.md +6 -0
  20. package/.claude/skills/bmad-brainstorming/brain-methods.csv +62 -0
  21. package/.claude/skills/bmad-brainstorming/steps/step-01-session-setup.md +214 -0
  22. package/.claude/skills/bmad-brainstorming/steps/step-01b-continue.md +124 -0
  23. package/.claude/skills/bmad-brainstorming/steps/step-02a-user-selected.md +229 -0
  24. package/.claude/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md +239 -0
  25. package/.claude/skills/bmad-brainstorming/steps/step-02c-random-selection.md +211 -0
  26. package/.claude/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md +266 -0
  27. package/.claude/skills/bmad-brainstorming/steps/step-03-technique-execution.md +401 -0
  28. package/.claude/skills/bmad-brainstorming/steps/step-04-idea-organization.md +305 -0
  29. package/.claude/skills/bmad-brainstorming/template.md +15 -0
  30. package/.claude/skills/bmad-brainstorming/workflow.md +53 -0
  31. package/.claude/skills/bmad-check-implementation-readiness/SKILL.md +6 -0
  32. package/.claude/skills/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
  33. package/.claude/skills/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
  34. package/.claude/skills/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
  35. package/.claude/skills/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
  36. package/.claude/skills/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
  37. package/.claude/skills/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +126 -0
  38. package/.claude/skills/bmad-check-implementation-readiness/templates/readiness-report-template.md +4 -0
  39. package/.claude/skills/bmad-check-implementation-readiness/workflow.md +47 -0
  40. package/.claude/skills/bmad-checkpoint-preview/SKILL.md +29 -0
  41. package/.claude/skills/bmad-checkpoint-preview/generate-trail.md +38 -0
  42. package/.claude/skills/bmad-checkpoint-preview/step-01-orientation.md +105 -0
  43. package/.claude/skills/bmad-checkpoint-preview/step-02-walkthrough.md +89 -0
  44. package/.claude/skills/bmad-checkpoint-preview/step-03-detail-pass.md +106 -0
  45. package/.claude/skills/bmad-checkpoint-preview/step-04-testing.md +74 -0
  46. package/.claude/skills/bmad-checkpoint-preview/step-05-wrapup.md +24 -0
  47. package/.claude/skills/bmad-code-review/SKILL.md +6 -0
  48. package/.claude/skills/bmad-code-review/steps/step-01-gather-context.md +85 -0
  49. package/.claude/skills/bmad-code-review/steps/step-02-review.md +34 -0
  50. package/.claude/skills/bmad-code-review/steps/step-03-triage.md +49 -0
  51. package/.claude/skills/bmad-code-review/steps/step-04-present.md +129 -0
  52. package/.claude/skills/bmad-code-review/workflow.md +55 -0
  53. package/.claude/skills/bmad-correct-course/SKILL.md +6 -0
  54. package/.claude/skills/bmad-correct-course/checklist.md +288 -0
  55. package/.claude/skills/bmad-correct-course/workflow.md +267 -0
  56. package/.claude/skills/bmad-create-architecture/SKILL.md +6 -0
  57. package/.claude/skills/bmad-create-architecture/architecture-decision-template.md +12 -0
  58. package/.claude/skills/bmad-create-architecture/data/domain-complexity.csv +13 -0
  59. package/.claude/skills/bmad-create-architecture/data/project-types.csv +7 -0
  60. package/.claude/skills/bmad-create-architecture/steps/step-01-init.md +153 -0
  61. package/.claude/skills/bmad-create-architecture/steps/step-01b-continue.md +173 -0
  62. package/.claude/skills/bmad-create-architecture/steps/step-02-context.md +224 -0
  63. package/.claude/skills/bmad-create-architecture/steps/step-03-starter.md +329 -0
  64. package/.claude/skills/bmad-create-architecture/steps/step-04-decisions.md +318 -0
  65. package/.claude/skills/bmad-create-architecture/steps/step-05-patterns.md +359 -0
  66. package/.claude/skills/bmad-create-architecture/steps/step-06-structure.md +379 -0
  67. package/.claude/skills/bmad-create-architecture/steps/step-07-validation.md +359 -0
  68. package/.claude/skills/bmad-create-architecture/steps/step-08-complete.md +76 -0
  69. package/.claude/skills/bmad-create-architecture/workflow.md +32 -0
  70. package/.claude/skills/bmad-create-epics-and-stories/SKILL.md +6 -0
  71. package/.claude/skills/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +255 -0
  72. package/.claude/skills/bmad-create-epics-and-stories/steps/step-02-design-epics.md +212 -0
  73. package/.claude/skills/bmad-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
  74. package/.claude/skills/bmad-create-epics-and-stories/steps/step-04-final-validation.md +131 -0
  75. package/.claude/skills/bmad-create-epics-and-stories/templates/epics-template.md +61 -0
  76. package/.claude/skills/bmad-create-epics-and-stories/workflow.md +51 -0
  77. package/.claude/skills/bmad-create-prd/SKILL.md +6 -0
  78. package/.claude/skills/bmad-create-prd/data/domain-complexity.csv +15 -0
  79. package/.claude/skills/bmad-create-prd/data/prd-purpose.md +197 -0
  80. package/.claude/skills/bmad-create-prd/data/project-types.csv +11 -0
  81. package/.claude/skills/bmad-create-prd/steps-c/step-01-init.md +178 -0
  82. package/.claude/skills/bmad-create-prd/steps-c/step-01b-continue.md +161 -0
  83. package/.claude/skills/bmad-create-prd/steps-c/step-02-discovery.md +208 -0
  84. package/.claude/skills/bmad-create-prd/steps-c/step-02b-vision.md +142 -0
  85. package/.claude/skills/bmad-create-prd/steps-c/step-02c-executive-summary.md +158 -0
  86. package/.claude/skills/bmad-create-prd/steps-c/step-03-success.md +214 -0
  87. package/.claude/skills/bmad-create-prd/steps-c/step-04-journeys.md +201 -0
  88. package/.claude/skills/bmad-create-prd/steps-c/step-05-domain.md +194 -0
  89. package/.claude/skills/bmad-create-prd/steps-c/step-06-innovation.md +211 -0
  90. package/.claude/skills/bmad-create-prd/steps-c/step-07-project-type.md +222 -0
  91. package/.claude/skills/bmad-create-prd/steps-c/step-08-scoping.md +216 -0
  92. package/.claude/skills/bmad-create-prd/steps-c/step-09-functional.md +219 -0
  93. package/.claude/skills/bmad-create-prd/steps-c/step-10-nonfunctional.md +230 -0
  94. package/.claude/skills/bmad-create-prd/steps-c/step-11-polish.md +221 -0
  95. package/.claude/skills/bmad-create-prd/steps-c/step-12-complete.md +115 -0
  96. package/.claude/skills/bmad-create-prd/templates/prd-template.md +10 -0
  97. package/.claude/skills/bmad-create-prd/workflow.md +61 -0
  98. package/.claude/skills/bmad-create-story/SKILL.md +6 -0
  99. package/.claude/skills/bmad-create-story/checklist.md +357 -0
  100. package/.claude/skills/bmad-create-story/discover-inputs.md +88 -0
  101. package/.claude/skills/bmad-create-story/template.md +49 -0
  102. package/.claude/skills/bmad-create-story/workflow.md +380 -0
  103. package/.claude/skills/bmad-create-ux-design/SKILL.md +6 -0
  104. package/.claude/skills/bmad-create-ux-design/steps/step-01-init.md +135 -0
  105. package/.claude/skills/bmad-create-ux-design/steps/step-01b-continue.md +127 -0
  106. package/.claude/skills/bmad-create-ux-design/steps/step-02-discovery.md +190 -0
  107. package/.claude/skills/bmad-create-ux-design/steps/step-03-core-experience.md +217 -0
  108. package/.claude/skills/bmad-create-ux-design/steps/step-04-emotional-response.md +220 -0
  109. package/.claude/skills/bmad-create-ux-design/steps/step-05-inspiration.md +235 -0
  110. package/.claude/skills/bmad-create-ux-design/steps/step-06-design-system.md +253 -0
  111. package/.claude/skills/bmad-create-ux-design/steps/step-07-defining-experience.md +255 -0
  112. package/.claude/skills/bmad-create-ux-design/steps/step-08-visual-foundation.md +225 -0
  113. package/.claude/skills/bmad-create-ux-design/steps/step-09-design-directions.md +225 -0
  114. package/.claude/skills/bmad-create-ux-design/steps/step-10-user-journeys.md +242 -0
  115. package/.claude/skills/bmad-create-ux-design/steps/step-11-component-strategy.md +249 -0
  116. package/.claude/skills/bmad-create-ux-design/steps/step-12-ux-patterns.md +238 -0
  117. package/.claude/skills/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +265 -0
  118. package/.claude/skills/bmad-create-ux-design/steps/step-14-complete.md +171 -0
  119. package/.claude/skills/bmad-create-ux-design/ux-design-template.md +13 -0
  120. package/.claude/skills/bmad-create-ux-design/workflow.md +35 -0
  121. package/.claude/skills/bmad-dev-story/SKILL.md +6 -0
  122. package/.claude/skills/bmad-dev-story/checklist.md +80 -0
  123. package/.claude/skills/bmad-dev-story/workflow.md +450 -0
  124. package/.claude/skills/bmad-distillator/SKILL.md +177 -0
  125. package/.claude/skills/bmad-distillator/agents/distillate-compressor.md +116 -0
  126. package/.claude/skills/bmad-distillator/agents/round-trip-reconstructor.md +68 -0
  127. package/.claude/skills/bmad-distillator/resources/compression-rules.md +51 -0
  128. package/.claude/skills/bmad-distillator/resources/distillate-format-reference.md +227 -0
  129. package/.claude/skills/bmad-distillator/resources/splitting-strategy.md +78 -0
  130. package/.claude/skills/bmad-distillator/scripts/analyze_sources.py +300 -0
  131. package/.claude/skills/bmad-distillator/scripts/tests/test_analyze_sources.py +204 -0
  132. package/.claude/skills/bmad-document-project/SKILL.md +6 -0
  133. package/.claude/skills/bmad-document-project/checklist.md +245 -0
  134. package/.claude/skills/bmad-document-project/documentation-requirements.csv +12 -0
  135. package/.claude/skills/bmad-document-project/instructions.md +128 -0
  136. package/.claude/skills/bmad-document-project/templates/deep-dive-template.md +345 -0
  137. package/.claude/skills/bmad-document-project/templates/index-template.md +169 -0
  138. package/.claude/skills/bmad-document-project/templates/project-overview-template.md +103 -0
  139. package/.claude/skills/bmad-document-project/templates/project-scan-report-schema.json +160 -0
  140. package/.claude/skills/bmad-document-project/templates/source-tree-template.md +135 -0
  141. package/.claude/skills/bmad-document-project/workflow.md +25 -0
  142. package/.claude/skills/bmad-document-project/workflows/deep-dive-instructions.md +299 -0
  143. package/.claude/skills/bmad-document-project/workflows/deep-dive-workflow.md +34 -0
  144. package/.claude/skills/bmad-document-project/workflows/full-scan-instructions.md +1107 -0
  145. package/.claude/skills/bmad-document-project/workflows/full-scan-workflow.md +34 -0
  146. package/.claude/skills/bmad-domain-research/SKILL.md +6 -0
  147. package/.claude/skills/bmad-domain-research/domain-steps/step-01-init.md +137 -0
  148. package/.claude/skills/bmad-domain-research/domain-steps/step-02-domain-analysis.md +229 -0
  149. package/.claude/skills/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +238 -0
  150. package/.claude/skills/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +206 -0
  151. package/.claude/skills/bmad-domain-research/domain-steps/step-05-technical-trends.md +234 -0
  152. package/.claude/skills/bmad-domain-research/domain-steps/step-06-research-synthesis.md +444 -0
  153. package/.claude/skills/bmad-domain-research/research.template.md +29 -0
  154. package/.claude/skills/bmad-domain-research/workflow.md +51 -0
  155. package/.claude/skills/bmad-edit-prd/SKILL.md +6 -0
  156. package/.claude/skills/bmad-edit-prd/data/prd-purpose.md +197 -0
  157. package/.claude/skills/bmad-edit-prd/steps-e/step-e-01-discovery.md +242 -0
  158. package/.claude/skills/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +204 -0
  159. package/.claude/skills/bmad-edit-prd/steps-e/step-e-02-review.md +245 -0
  160. package/.claude/skills/bmad-edit-prd/steps-e/step-e-03-edit.md +250 -0
  161. package/.claude/skills/bmad-edit-prd/steps-e/step-e-04-complete.md +163 -0
  162. package/.claude/skills/bmad-edit-prd/workflow.md +62 -0
  163. package/.claude/skills/bmad-editorial-review-prose/SKILL.md +86 -0
  164. package/.claude/skills/bmad-editorial-review-structure/SKILL.md +179 -0
  165. package/.claude/skills/bmad-generate-project-context/SKILL.md +6 -0
  166. package/.claude/skills/bmad-generate-project-context/project-context-template.md +21 -0
  167. package/.claude/skills/bmad-generate-project-context/steps/step-01-discover.md +186 -0
  168. package/.claude/skills/bmad-generate-project-context/steps/step-02-generate.md +321 -0
  169. package/.claude/skills/bmad-generate-project-context/steps/step-03-complete.md +278 -0
  170. package/.claude/skills/bmad-generate-project-context/workflow.md +39 -0
  171. package/.claude/skills/bmad-help/SKILL.md +75 -0
  172. package/.claude/skills/bmad-index-docs/SKILL.md +66 -0
  173. package/.claude/skills/bmad-market-research/SKILL.md +6 -0
  174. package/.claude/skills/bmad-market-research/research.template.md +29 -0
  175. package/.claude/skills/bmad-market-research/steps/step-01-init.md +184 -0
  176. package/.claude/skills/bmad-market-research/steps/step-02-customer-behavior.md +239 -0
  177. package/.claude/skills/bmad-market-research/steps/step-03-customer-pain-points.md +251 -0
  178. package/.claude/skills/bmad-market-research/steps/step-04-customer-decisions.md +261 -0
  179. package/.claude/skills/bmad-market-research/steps/step-05-competitive-analysis.md +173 -0
  180. package/.claude/skills/bmad-market-research/steps/step-06-research-completion.md +478 -0
  181. package/.claude/skills/bmad-market-research/workflow.md +51 -0
  182. package/.claude/skills/bmad-party-mode/SKILL.md +125 -0
  183. package/.claude/skills/bmad-prfaq/SKILL.md +96 -0
  184. package/.claude/skills/bmad-prfaq/agents/artifact-analyzer.md +60 -0
  185. package/.claude/skills/bmad-prfaq/agents/web-researcher.md +49 -0
  186. package/.claude/skills/bmad-prfaq/assets/prfaq-template.md +62 -0
  187. package/.claude/skills/bmad-prfaq/bmad-manifest.json +16 -0
  188. package/.claude/skills/bmad-prfaq/references/customer-faq.md +55 -0
  189. package/.claude/skills/bmad-prfaq/references/internal-faq.md +51 -0
  190. package/.claude/skills/bmad-prfaq/references/press-release.md +60 -0
  191. package/.claude/skills/bmad-prfaq/references/verdict.md +79 -0
  192. package/.claude/skills/bmad-product-brief/SKILL.md +82 -0
  193. package/.claude/skills/bmad-product-brief/agents/artifact-analyzer.md +60 -0
  194. package/.claude/skills/bmad-product-brief/agents/opportunity-reviewer.md +44 -0
  195. package/.claude/skills/bmad-product-brief/agents/skeptic-reviewer.md +44 -0
  196. package/.claude/skills/bmad-product-brief/agents/web-researcher.md +49 -0
  197. package/.claude/skills/bmad-product-brief/bmad-manifest.json +17 -0
  198. package/.claude/skills/bmad-product-brief/prompts/contextual-discovery.md +57 -0
  199. package/.claude/skills/bmad-product-brief/prompts/draft-and-review.md +86 -0
  200. package/.claude/skills/bmad-product-brief/prompts/finalize.md +75 -0
  201. package/.claude/skills/bmad-product-brief/prompts/guided-elicitation.md +70 -0
  202. package/.claude/skills/bmad-product-brief/resources/brief-template.md +60 -0
  203. package/.claude/skills/bmad-qa-generate-e2e-tests/SKILL.md +6 -0
  204. package/.claude/skills/bmad-qa-generate-e2e-tests/checklist.md +33 -0
  205. package/.claude/skills/bmad-qa-generate-e2e-tests/workflow.md +136 -0
  206. package/.claude/skills/bmad-quick-dev/SKILL.md +6 -0
  207. package/.claude/skills/bmad-quick-dev/compile-epic-context.md +62 -0
  208. package/.claude/skills/bmad-quick-dev/spec-template.md +88 -0
  209. package/.claude/skills/bmad-quick-dev/step-01-clarify-and-route.md +91 -0
  210. package/.claude/skills/bmad-quick-dev/step-02-plan.md +47 -0
  211. package/.claude/skills/bmad-quick-dev/step-03-implement.md +39 -0
  212. package/.claude/skills/bmad-quick-dev/step-04-review.md +49 -0
  213. package/.claude/skills/bmad-quick-dev/step-05-present.md +63 -0
  214. package/.claude/skills/bmad-quick-dev/step-oneshot.md +61 -0
  215. package/.claude/skills/bmad-quick-dev/workflow.md +75 -0
  216. package/.claude/skills/bmad-retrospective/SKILL.md +6 -0
  217. package/.claude/skills/bmad-retrospective/workflow.md +1479 -0
  218. package/.claude/skills/bmad-review-adversarial-general/SKILL.md +37 -0
  219. package/.claude/skills/bmad-review-edge-case-hunter/SKILL.md +67 -0
  220. package/.claude/skills/bmad-shard-doc/SKILL.md +105 -0
  221. package/.claude/skills/bmad-sprint-planning/SKILL.md +6 -0
  222. package/.claude/skills/bmad-sprint-planning/checklist.md +33 -0
  223. package/.claude/skills/bmad-sprint-planning/sprint-status-template.yaml +56 -0
  224. package/.claude/skills/bmad-sprint-planning/workflow.md +263 -0
  225. package/.claude/skills/bmad-sprint-status/SKILL.md +6 -0
  226. package/.claude/skills/bmad-sprint-status/workflow.md +261 -0
  227. package/.claude/skills/bmad-technical-research/SKILL.md +6 -0
  228. package/.claude/skills/bmad-technical-research/research.template.md +29 -0
  229. package/.claude/skills/bmad-technical-research/technical-steps/step-01-init.md +137 -0
  230. package/.claude/skills/bmad-technical-research/technical-steps/step-02-technical-overview.md +239 -0
  231. package/.claude/skills/bmad-technical-research/technical-steps/step-03-integration-patterns.md +248 -0
  232. package/.claude/skills/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
  233. package/.claude/skills/bmad-technical-research/technical-steps/step-05-implementation-research.md +233 -0
  234. package/.claude/skills/bmad-technical-research/technical-steps/step-06-research-synthesis.md +487 -0
  235. package/.claude/skills/bmad-technical-research/workflow.md +52 -0
  236. package/.claude/skills/bmad-validate-prd/SKILL.md +6 -0
  237. package/.claude/skills/bmad-validate-prd/data/domain-complexity.csv +15 -0
  238. package/.claude/skills/bmad-validate-prd/data/prd-purpose.md +197 -0
  239. package/.claude/skills/bmad-validate-prd/data/project-types.csv +11 -0
  240. package/.claude/skills/bmad-validate-prd/steps-v/step-v-01-discovery.md +221 -0
  241. package/.claude/skills/bmad-validate-prd/steps-v/step-v-02-format-detection.md +188 -0
  242. package/.claude/skills/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +206 -0
  243. package/.claude/skills/bmad-validate-prd/steps-v/step-v-03-density-validation.md +171 -0
  244. package/.claude/skills/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +211 -0
  245. package/.claude/skills/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +225 -0
  246. package/.claude/skills/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +214 -0
  247. package/.claude/skills/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +202 -0
  248. package/.claude/skills/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +240 -0
  249. package/.claude/skills/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +260 -0
  250. package/.claude/skills/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +206 -0
  251. package/.claude/skills/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +261 -0
  252. package/.claude/skills/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +239 -0
  253. package/.claude/skills/bmad-validate-prd/steps-v/step-v-13-report-complete.md +229 -0
  254. package/.claude/skills/bmad-validate-prd/workflow.md +61 -0
  255. package/.claude/skills/gitnexus/gitnexus-cli/SKILL.md +82 -0
  256. package/.claude/skills/gitnexus/gitnexus-debugging/SKILL.md +89 -0
  257. package/.claude/skills/gitnexus/gitnexus-exploring/SKILL.md +78 -0
  258. package/.claude/skills/gitnexus/gitnexus-guide/SKILL.md +64 -0
  259. package/.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md +97 -0
  260. package/.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md +121 -0
  261. package/.claude/skills/openspec-apply-change/SKILL.md +156 -0
  262. package/.claude/skills/openspec-archive-change/SKILL.md +114 -0
  263. package/.claude/skills/openspec-explore/SKILL.md +288 -0
  264. package/.claude/skills/openspec-propose/SKILL.md +110 -0
  265. package/.claude/skills/vsaf-build/SKILL.md +52 -0
  266. package/.claude/skills/vsaf-doc/SKILL.md +66 -0
  267. package/.claude/skills/vsaf-memory-protocol.md +51 -0
  268. package/.claude/skills/vsaf-onboard/SKILL.md +55 -0
  269. package/.claude/skills/vsaf-plan/SKILL.md +68 -0
  270. package/.claude/skills/vsaf-ship/SKILL.md +76 -0
  271. package/.claude/skills/vsaf-test/SKILL.md +70 -0
  272. package/README.md +124 -0
  273. package/assets/templates/.claude/settings.json +82 -0
  274. package/assets/templates/CLAUDE.md +248 -0
  275. package/assets/templates/Makefile +77 -0
  276. package/assets/templates/scripts/session-end-check.sh +28 -0
  277. package/bin/vsaf.js +68 -0
  278. package/package.json +22 -0
  279. package/src/global.js +98 -0
  280. package/src/project.js +94 -0
  281. package/src/status.js +51 -0
  282. package/src/utils.js +42 -0
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env bash
2
+ # Session-end verification hook for Claude Code.
3
+ # Checks staged files for secrets and debug artifacts.
4
+ set -euo pipefail
5
+
6
+ cd "${PROJECT_DIR:-.}" 2>/dev/null || exit 0
7
+
8
+ ISSUES=""
9
+
10
+ # Check for hardcoded secrets in staged files
11
+ SECRETS=$(git diff --cached --diff-filter=ACM --name-only 2>/dev/null \
12
+ | xargs grep -lE 'AKIA[0-9A-Z]{16}|ghp_[a-zA-Z0-9]{36}|sk-[a-zA-Z0-9]{48}|xox[bpoas]-|BEGIN.*PRIVATE' 2>/dev/null) || true
13
+
14
+ if [ -n "$SECRETS" ]; then
15
+ ISSUES="${ISSUES}WARNING: Possible secrets staged: ${SECRETS} "
16
+ fi
17
+
18
+ # Check for debug artifacts in staged files
19
+ LOGS=$(git diff --cached --name-only 2>/dev/null \
20
+ | xargs grep -lE 'console[.]log|debugger' 2>/dev/null) || true
21
+
22
+ if [ -n "$LOGS" ]; then
23
+ ISSUES="${ISSUES}WARNING: Debug artifacts in staged files: ${LOGS} "
24
+ fi
25
+
26
+ if [ -n "$ISSUES" ]; then
27
+ echo "$ISSUES"
28
+ fi
package/bin/vsaf.js ADDED
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const [,, cmd] = process.argv;
5
+
6
+ const HELP = `
7
+ vsaf — Agentic AI SDLC Framework v3
8
+
9
+ USAGE
10
+ vsaf init Full setup: global infra + project scaffold
11
+ vsaf global Install global infra only (skills, binaries)
12
+ vsaf project Scaffold project files only (assumes global done)
13
+ vsaf status Show installation status
14
+
15
+ GLOBAL (once per machine → ~/.claude/)
16
+ Skills : bmad (41), openspec (4), vsaf (5), gitnexus (6)
17
+ Binaries: gitnexus, openspec, graphify, mempalace, bun, claude-mem
18
+
19
+ PER PROJECT (per repo, run inside the repo root)
20
+ .claude/settings.json Hooks: secret detection, protected files
21
+ CLAUDE.md 10-step workflow rules
22
+ Makefile index, verify, review, archive, mine, status
23
+ scripts/ Session-end check hook
24
+
25
+ EXAMPLES
26
+ npx vsaf init # New machine + new project (recommended)
27
+ npx vsaf global # Already have projects, new machine
28
+ npx vsaf project # Global already done, add VSAF to existing repo
29
+ npx vsaf status # Check what is installed
30
+ `;
31
+
32
+ async function main() {
33
+ switch (cmd) {
34
+ case 'init': {
35
+ const { installGlobal } = require('../src/global');
36
+ const { installProject } = require('../src/project');
37
+ await installGlobal();
38
+ await installProject();
39
+ break;
40
+ }
41
+ case 'global': {
42
+ const { installGlobal } = require('../src/global');
43
+ await installGlobal();
44
+ break;
45
+ }
46
+ case 'project': {
47
+ const { installProject } = require('../src/project');
48
+ await installProject();
49
+ break;
50
+ }
51
+ case 'status': {
52
+ const { showStatus } = require('../src/status');
53
+ await showStatus();
54
+ break;
55
+ }
56
+ default:
57
+ console.log(HELP);
58
+ if (cmd && cmd !== '--help' && cmd !== 'help') {
59
+ console.error(`\nUnknown command: ${cmd}`);
60
+ process.exit(1);
61
+ }
62
+ }
63
+ }
64
+
65
+ main().catch(err => {
66
+ console.error('\x1b[31mError:\x1b[0m', err.message);
67
+ process.exit(1);
68
+ });
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@ngocsangairvds/vsaf",
3
+ "version": "3.0.0",
4
+ "description": "VSAF — Agentic AI SDLC Framework. Spec-driven development, 3-layer review, 7 integrated tools.",
5
+ "keywords": ["claude", "claude-code", "ai", "sdlc", "framework", "bmad", "openspec"],
6
+ "bin": {
7
+ "vsaf": "./bin/vsaf.js"
8
+ },
9
+ "scripts": {
10
+ "test": "echo 'No tests'"
11
+ },
12
+ "engines": {
13
+ "node": ">=18"
14
+ },
15
+ "files": [
16
+ "bin/",
17
+ "src/",
18
+ ".claude/skills/",
19
+ "assets/"
20
+ ],
21
+ "license": "MIT"
22
+ }
package/src/global.js ADDED
@@ -0,0 +1,98 @@
1
+ 'use strict';
2
+ const path = require('path');
3
+ const fs = require('fs');
4
+ const { ok, info, warn, step, hasCommand, exec, copyDir, copyFile, CLAUDE_HOME } = require('./utils');
5
+
6
+ const PKG_ROOT = path.join(__dirname, '..');
7
+ const SKILLS_SRC = path.join(PKG_ROOT, '.claude', 'skills');
8
+ const SKILLS_DST = path.join(CLAUDE_HOME, 'skills');
9
+
10
+ async function installGlobal() {
11
+ console.log('\n\x1b[1m╔══════════════════════════════════════════╗\x1b[0m');
12
+ console.log( '\x1b[1m║ VSAF — Global Infra ║\x1b[0m');
13
+ console.log( '\x1b[1m╚══════════════════════════════════════════╝\x1b[0m');
14
+
15
+ installSkills();
16
+ installBinary('gitnexus', () => exec('npm install -g gitnexus'));
17
+ installBinary('openspec', () => exec('npm install -g @fission-ai/openspec@latest'));
18
+ installPipx('graphify', 'graphifyy');
19
+ installPipx('mempalace', 'mempalace');
20
+ installBun();
21
+ installClaudeMem();
22
+
23
+ console.log('\n\x1b[32m\x1b[1m✓ Global infra ready.\x1b[0m\n');
24
+ }
25
+
26
+ // ── Skills ──────────────────────────────────────────────────────────────────
27
+
28
+ function installSkills() {
29
+ step('Skills → ~/.claude/skills/');
30
+
31
+ if (!fs.existsSync(SKILLS_SRC)) {
32
+ warn('Skills directory not found in package — skipping');
33
+ return;
34
+ }
35
+
36
+ fs.mkdirSync(SKILLS_DST, { recursive: true });
37
+
38
+ let installed = 0;
39
+ let skipped = 0;
40
+
41
+ for (const entry of fs.readdirSync(SKILLS_SRC, { withFileTypes: true })) {
42
+ const src = path.join(SKILLS_SRC, entry.name);
43
+ const dst = path.join(SKILLS_DST, entry.name);
44
+
45
+ if (fs.existsSync(dst)) {
46
+ skipped++;
47
+ continue;
48
+ }
49
+
50
+ entry.isDirectory() ? copyDir(src, dst) : copyFile(src, dst);
51
+ installed++;
52
+ }
53
+
54
+ ok(`${installed} skill(s) installed, ${skipped} already present`);
55
+ }
56
+
57
+ // ── Binary helpers ───────────────────────────────────────────────────────────
58
+
59
+ function installBinary(name, installFn) {
60
+ step(`${name}`);
61
+ if (hasCommand(name)) { ok(`${name} already installed`); return; }
62
+ info(`Installing ${name}...`);
63
+ installFn()
64
+ ? ok(`${name} installed`)
65
+ : warn(`${name} install failed — run manually`);
66
+ }
67
+
68
+ function installPipx(cmd, pkg) {
69
+ step(cmd);
70
+ if (hasCommand(cmd)) { ok(`${cmd} already installed`); return; }
71
+ if (!hasCommand('pipx')) {
72
+ warn(`pipx not found — install pipx first, then run: pipx install ${pkg}`);
73
+ return;
74
+ }
75
+ info(`Installing ${pkg} via pipx...`);
76
+ exec(`pipx install ${pkg}`)
77
+ ? ok(`${cmd} installed`)
78
+ : warn(`${cmd} install failed — run: pipx install ${pkg}`);
79
+ }
80
+
81
+ function installBun() {
82
+ step('bun (claude-mem runtime)');
83
+ if (hasCommand('bun')) { ok('bun already installed'); return; }
84
+ info('Installing bun...');
85
+ exec('curl -fsSL https://bun.sh/install | bash')
86
+ ? ok('bun installed')
87
+ : warn('bun install failed — run: curl -fsSL https://bun.sh/install | bash');
88
+ }
89
+
90
+ function installClaudeMem() {
91
+ step('claude-mem');
92
+ info('Running claude-mem install...');
93
+ exec('npx claude-mem install')
94
+ ? ok('claude-mem installed')
95
+ : warn('claude-mem install had issues — check manually');
96
+ }
97
+
98
+ module.exports = { installGlobal };
package/src/project.js ADDED
@@ -0,0 +1,94 @@
1
+ 'use strict';
2
+ const path = require('path');
3
+ const fs = require('fs');
4
+ const { ok, info, warn, step, hasCommand, exec, copyDir, copyFile } = require('./utils');
5
+
6
+ const PKG_ROOT = path.join(__dirname, '..');
7
+ const TEMPLATES = path.join(PKG_ROOT, 'assets', 'templates');
8
+ const CWD = process.cwd();
9
+
10
+ async function installProject() {
11
+ console.log('\n\x1b[1m╔══════════════════════════════════════════╗\x1b[0m');
12
+ console.log( '\x1b[1m║ VSAF — Project Scaffold ║\x1b[0m');
13
+ console.log( '\x1b[1m╚══════════════════════════════════════════╝\x1b[0m');
14
+
15
+ scaffoldFiles();
16
+ initOpenSpec();
17
+ initGitNexus();
18
+ initMemPalace();
19
+ configureGitHooks();
20
+
21
+ console.log('\n\x1b[32m\x1b[1m✓ Project ready.\x1b[0m');
22
+ console.log('\n Next steps:');
23
+ console.log(' make status check all tools');
24
+ console.log(' /graphify . build knowledge graph (inside Claude Code)');
25
+ console.log(' /superpowers install install Superpowers plugin (inside Claude Code)\n');
26
+ }
27
+
28
+ // ── File scaffold ────────────────────────────────────────────────────────────
29
+
30
+ function scaffoldFiles() {
31
+ step('Scaffolding project files');
32
+
33
+ const files = [
34
+ { tpl: '.claude/settings.json', dst: '.claude/settings.json' },
35
+ { tpl: 'CLAUDE.md', dst: 'CLAUDE.md' },
36
+ { tpl: 'Makefile', dst: 'Makefile' },
37
+ { tpl: 'scripts/session-end-check.sh', dst: 'scripts/session-end-check.sh', chmod: 0o755 },
38
+ ];
39
+
40
+ for (const { tpl, dst, chmod } of files) {
41
+ const src = path.join(TEMPLATES, tpl);
42
+ const dstAbs = path.join(CWD, dst);
43
+
44
+ if (!fs.existsSync(src)) {
45
+ warn(`Template missing: ${tpl}`);
46
+ continue;
47
+ }
48
+
49
+ if (fs.existsSync(dstAbs)) {
50
+ ok(`${dst} — already exists, skipped`);
51
+ } else {
52
+ copyFile(src, dstAbs);
53
+ if (chmod) fs.chmodSync(dstAbs, chmod);
54
+ ok(`${dst} — created`);
55
+ }
56
+ }
57
+ }
58
+
59
+ // ── Tool initialisation ──────────────────────────────────────────────────────
60
+
61
+ function initOpenSpec() {
62
+ step('OpenSpec');
63
+ if (!hasCommand('openspec')) { warn('openspec not found — run: vsaf global'); return; }
64
+ const already = fs.existsSync(path.join(CWD, 'openspec.json'))
65
+ || fs.existsSync(path.join(CWD, 'openspec'));
66
+ if (already) { ok('OpenSpec already initialised'); return; }
67
+ info('Initialising openspec...');
68
+ exec('openspec init', { cwd: CWD }) ? ok('OpenSpec initialised') : warn('openspec init failed — run manually');
69
+ }
70
+
71
+ function initGitNexus() {
72
+ step('GitNexus');
73
+ if (!hasCommand('gitnexus')) { warn('gitnexus not found — run: vsaf global'); return; }
74
+ info('Indexing repository (gitnexus analyze)...');
75
+ exec('gitnexus analyze', { cwd: CWD }) ? ok('Repository indexed') : warn('gitnexus analyze failed — run manually');
76
+ }
77
+
78
+ function initMemPalace() {
79
+ step('MemPalace');
80
+ if (!hasCommand('mempalace')) { warn('mempalace not found — run: vsaf global'); return; }
81
+ if (fs.existsSync(path.join(CWD, 'mempalace.yaml'))) { ok('MemPalace already initialised'); return; }
82
+ info('Initialising mempalace...');
83
+ exec(`mempalace init --yes "${CWD}"`, { cwd: CWD }) ? ok('MemPalace initialised') : warn('mempalace init failed — run manually');
84
+ }
85
+
86
+ function configureGitHooks() {
87
+ step('Git hooks');
88
+ if (!fs.existsSync(path.join(CWD, '.git'))) { warn('Not a git repo — skipping'); return; }
89
+ fs.mkdirSync(path.join(CWD, 'githooks'), { recursive: true });
90
+ exec('git config core.hooksPath githooks/', { cwd: CWD });
91
+ ok('Git hooks path → githooks/');
92
+ }
93
+
94
+ module.exports = { installProject };
package/src/status.js ADDED
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+ const path = require('path');
3
+ const fs = require('fs');
4
+ const { hasCommand, CLAUDE_HOME } = require('./utils');
5
+
6
+ async function showStatus() {
7
+ console.log('\n\x1b[1mVSAF Status\x1b[0m\n');
8
+
9
+ // ── Global ─────────────────────────────────────────────────────────────────
10
+ console.log('\x1b[1mGlobal (machine-wide → ~/.claude/)\x1b[0m');
11
+ checkSkills();
12
+ checkCmd('gitnexus', 'GitNexus');
13
+ checkCmd('openspec', 'OpenSpec');
14
+ checkCmd('graphify', 'Graphify');
15
+ checkCmd('mempalace', 'MemPalace');
16
+ checkCmd('bun', 'Bun');
17
+
18
+ // ── Project ────────────────────────────────────────────────────────────────
19
+ console.log('\n\x1b[1mProject (current repo)\x1b[0m');
20
+ checkPath('.claude/settings.json', 'Project settings');
21
+ checkPath('CLAUDE.md', 'Workflow rules');
22
+ checkPath('Makefile', 'Makefile');
23
+ checkPath('scripts/session-end-check.sh', 'Session-end hook');
24
+ checkPath('.gitnexus', 'GitNexus index');
25
+ checkPath('openspec', 'OpenSpec');
26
+ checkPath('mempalace.yaml', 'MemPalace');
27
+ checkPath('githooks', 'Git hooks');
28
+ console.log('');
29
+ }
30
+
31
+ function checkCmd(cmd, label) {
32
+ const found = hasCommand(cmd);
33
+ console.log(` ${found ? '\x1b[32m✓\x1b[0m' : '\x1b[31m✗\x1b[0m'} ${label}`);
34
+ }
35
+
36
+ function checkSkills() {
37
+ const dir = path.join(CLAUDE_HOME, 'skills');
38
+ if (!fs.existsSync(dir)) {
39
+ console.log(' \x1b[31m✗\x1b[0m Skills (not installed)');
40
+ return;
41
+ }
42
+ const count = fs.readdirSync(dir).length;
43
+ console.log(` \x1b[32m✓\x1b[0m Skills (${count} in ~/.claude/skills/)`);
44
+ }
45
+
46
+ function checkPath(rel, label) {
47
+ const exists = fs.existsSync(path.join(process.cwd(), rel));
48
+ console.log(` ${exists ? '\x1b[32m✓\x1b[0m' : '\x1b[31m✗\x1b[0m'} ${label}`);
49
+ }
50
+
51
+ module.exports = { showStatus };
package/src/utils.js ADDED
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+ const { execSync, spawnSync } = require('child_process');
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const os = require('os');
6
+
7
+ const CLAUDE_HOME = path.join(os.homedir(), '.claude');
8
+
9
+ const ok = (msg) => console.log(` \x1b[32m✓\x1b[0m ${msg}`);
10
+ const info = (msg) => console.log(` \x1b[36m→\x1b[0m ${msg}`);
11
+ const warn = (msg) => console.log(` \x1b[33m!\x1b[0m ${msg}`);
12
+ const step = (msg) => console.log(`\n\x1b[1m${msg}\x1b[0m`);
13
+
14
+ function hasCommand(cmd) {
15
+ const r = spawnSync(cmd, ['--version'], { stdio: 'ignore', shell: false });
16
+ return r.status === 0;
17
+ }
18
+
19
+ function exec(cmd, opts = {}) {
20
+ try {
21
+ execSync(cmd, { stdio: opts.silent ? 'pipe' : 'inherit', shell: true, ...opts });
22
+ return true;
23
+ } catch {
24
+ return false;
25
+ }
26
+ }
27
+
28
+ function copyDir(src, dst) {
29
+ fs.mkdirSync(dst, { recursive: true });
30
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
31
+ const s = path.join(src, entry.name);
32
+ const d = path.join(dst, entry.name);
33
+ entry.isDirectory() ? copyDir(s, d) : fs.copyFileSync(s, d);
34
+ }
35
+ }
36
+
37
+ function copyFile(src, dst) {
38
+ fs.mkdirSync(path.dirname(dst), { recursive: true });
39
+ fs.copyFileSync(src, dst);
40
+ }
41
+
42
+ module.exports = { ok, info, warn, step, hasCommand, exec, copyDir, copyFile, CLAUDE_HOME };