@ngocsangairvds/vsaf 5.1.5 → 5.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/package.json +1 -1
  2. package/packages/cli/dist/adapters/antigravity.d.ts.map +1 -1
  3. package/packages/cli/dist/adapters/antigravity.js +14 -30
  4. package/packages/cli/dist/adapters/antigravity.js.map +1 -1
  5. package/packages/cli/dist/adapters/claude.d.ts.map +1 -1
  6. package/packages/cli/dist/adapters/claude.js +8 -10
  7. package/packages/cli/dist/adapters/claude.js.map +1 -1
  8. package/packages/cli/dist/adapters/codex.d.ts.map +1 -1
  9. package/packages/cli/dist/adapters/codex.js +6 -9
  10. package/packages/cli/dist/adapters/codex.js.map +1 -1
  11. package/packages/cli/dist/adapters/cursor.d.ts.map +1 -1
  12. package/packages/cli/dist/adapters/cursor.js +22 -24
  13. package/packages/cli/dist/adapters/cursor.js.map +1 -1
  14. package/packages/cli/dist/commands/init.d.ts.map +1 -1
  15. package/packages/cli/dist/commands/init.js +7 -19
  16. package/packages/cli/dist/commands/init.js.map +1 -1
  17. package/packages/cli/dist/commands/install.d.ts +3 -6
  18. package/packages/cli/dist/commands/install.d.ts.map +1 -1
  19. package/packages/cli/dist/commands/install.js +27 -10
  20. package/packages/cli/dist/commands/install.js.map +1 -1
  21. package/packages/cli/dist/commands/skill.d.ts.map +1 -1
  22. package/packages/cli/dist/commands/skill.js +40 -16
  23. package/packages/cli/dist/commands/skill.js.map +1 -1
  24. package/packages/cli/dist/index.js +2 -2
  25. package/packages/cli/dist/index.js.map +1 -1
  26. package/packages/cli/dist/install/orchestrator.d.ts +0 -8
  27. package/packages/cli/dist/install/orchestrator.d.ts.map +1 -1
  28. package/packages/cli/dist/install/orchestrator.js +3 -54
  29. package/packages/cli/dist/install/orchestrator.js.map +1 -1
  30. package/packages/cli/dist/server/routes/runs.d.ts.map +1 -1
  31. package/packages/cli/dist/server/routes/runs.js +81 -3
  32. package/packages/cli/dist/server/routes/runs.js.map +1 -1
  33. package/packages/cli/dist/server/routes/workflows.d.ts.map +1 -1
  34. package/packages/cli/dist/server/routes/workflows.js +76 -17
  35. package/packages/cli/dist/server/routes/workflows.js.map +1 -1
  36. package/packages/cli/dist/server/services/execution-manager.d.ts +11 -1
  37. package/packages/cli/dist/server/services/execution-manager.d.ts.map +1 -1
  38. package/packages/cli/dist/server/services/execution-manager.js +88 -17
  39. package/packages/cli/dist/server/services/execution-manager.js.map +1 -1
  40. package/packages/cli/dist/server/static.d.ts.map +1 -1
  41. package/packages/cli/dist/server/static.js +4 -1
  42. package/packages/cli/dist/server/static.js.map +1 -1
  43. package/packages/cli/dist/server/workflow-path.d.ts +3 -0
  44. package/packages/cli/dist/server/workflow-path.d.ts.map +1 -0
  45. package/packages/cli/dist/server/workflow-path.js +25 -0
  46. package/packages/cli/dist/server/workflow-path.js.map +1 -0
  47. package/packages/core/dist/store/recovery.d.ts.map +1 -1
  48. package/packages/core/dist/store/recovery.js +12 -1
  49. package/packages/core/dist/store/recovery.js.map +1 -1
  50. package/packages/core/dist/store/run-store.d.ts +3 -0
  51. package/packages/core/dist/store/run-store.d.ts.map +1 -1
  52. package/packages/core/dist/store/run-store.js +33 -0
  53. package/packages/core/dist/store/run-store.js.map +1 -1
  54. package/packages/core/dist/store/types.d.ts +2 -2
  55. package/packages/core/dist/store/types.d.ts.map +1 -1
  56. package/packages/core/dist/store/types.js.map +1 -1
  57. package/packages/core/dist/store/wal.js +1 -1
  58. package/packages/core/dist/store/wal.js.map +1 -1
  59. package/packages/web/dist/web/3rdpartylicenses.txt +26 -26
  60. package/packages/web/dist/web/browser/chunk-4YPNNQ2T.js +4 -0
  61. package/packages/web/dist/web/browser/chunk-E227ZHPJ.js +1 -0
  62. package/packages/web/dist/web/browser/chunk-JFBK3MNW.js +1 -0
  63. package/packages/web/dist/web/browser/chunk-L2VOQBBI.js +1 -0
  64. package/packages/web/dist/web/browser/chunk-OJJM5VOH.js +1 -0
  65. package/packages/web/dist/web/browser/chunk-U2H3QYAG.js +5 -0
  66. package/packages/web/dist/web/browser/chunk-VA7KFQOR.js +1 -0
  67. package/packages/web/dist/web/browser/chunk-WV3C6DNH.js +1 -0
  68. package/packages/web/dist/web/browser/index.html +2 -2
  69. package/packages/web/dist/web/browser/main-THGFWXYL.js +1 -0
  70. package/packages/web/dist/web/browser/{styles-JBPZVY54.css → styles-PWTTI45T.css} +1 -1
  71. package/skills/sdlc/architecture/current-state/SKILL.md +10 -0
  72. package/skills/sdlc/architecture/current-state/step.md +13 -0
  73. package/skills/sdlc/architecture/decision/SKILL.md +10 -0
  74. package/skills/sdlc/architecture/decision/step.md +21 -0
  75. package/skills/sdlc/architecture/epics/SKILL.md +10 -0
  76. package/skills/sdlc/architecture/epics/step.md +34 -0
  77. package/skills/sdlc/architecture/grill/SKILL.md +10 -0
  78. package/skills/sdlc/architecture/grill/step.md +26 -0
  79. package/skills/sdlc/architecture/prereq/SKILL.md +10 -0
  80. package/skills/sdlc/architecture/prereq/step.md +16 -0
  81. package/skills/sdlc/architecture/readiness/SKILL.md +10 -0
  82. package/skills/sdlc/architecture/readiness/step.md +76 -0
  83. package/skills/sdlc/complete/context/SKILL.md +10 -0
  84. package/skills/sdlc/complete/context/step.md +14 -0
  85. package/skills/sdlc/complete/knowledge/SKILL.md +10 -0
  86. package/skills/sdlc/complete/knowledge/step.md +22 -0
  87. package/skills/sdlc/complete/prereq/SKILL.md +10 -0
  88. package/skills/sdlc/complete/prereq/step.md +16 -0
  89. package/skills/sdlc/complete/reindex/SKILL.md +10 -0
  90. package/skills/sdlc/complete/reindex/step.md +24 -0
  91. package/skills/sdlc/complete/status/SKILL.md +10 -0
  92. package/skills/sdlc/complete/status/step.md +52 -0
  93. package/skills/sdlc/discovery/brainstorm/SKILL.md +10 -0
  94. package/skills/sdlc/discovery/brainstorm/step.md +27 -0
  95. package/skills/sdlc/discovery/domain/SKILL.md +10 -0
  96. package/skills/sdlc/discovery/domain/step.md +13 -0
  97. package/skills/sdlc/discovery/grill/SKILL.md +10 -0
  98. package/skills/sdlc/discovery/grill/step.md +22 -0
  99. package/skills/sdlc/discovery/prereq/SKILL.md +10 -0
  100. package/skills/sdlc/discovery/prereq/step.md +16 -0
  101. package/skills/sdlc/discovery/prfaq/SKILL.md +10 -0
  102. package/skills/sdlc/discovery/prfaq/step.md +68 -0
  103. package/skills/sdlc/discovery/system/SKILL.md +10 -0
  104. package/skills/sdlc/discovery/system/step.md +19 -0
  105. package/skills/sdlc/hotfix/analyze/entry/SKILL.md +10 -0
  106. package/skills/sdlc/hotfix/analyze/entry/step.md +15 -0
  107. package/skills/sdlc/hotfix/analyze/exit/SKILL.md +10 -0
  108. package/skills/sdlc/hotfix/analyze/exit/step.md +19 -0
  109. package/skills/sdlc/hotfix/analyze/fix-strategy/SKILL.md +10 -0
  110. package/skills/sdlc/hotfix/analyze/fix-strategy/step.md +15 -0
  111. package/skills/sdlc/hotfix/analyze/gitnexus/SKILL.md +10 -0
  112. package/skills/sdlc/hotfix/analyze/gitnexus/step.md +17 -0
  113. package/skills/sdlc/hotfix/analyze/grill/SKILL.md +10 -0
  114. package/skills/sdlc/hotfix/analyze/grill/step.md +23 -0
  115. package/skills/sdlc/hotfix/analyze/reasoning/SKILL.md +10 -0
  116. package/skills/sdlc/hotfix/analyze/reasoning/step.md +29 -0
  117. package/skills/sdlc/hotfix/analyze/write/SKILL.md +10 -0
  118. package/skills/sdlc/hotfix/analyze/write/step.md +45 -0
  119. package/skills/sdlc/hotfix/implement/branch/SKILL.md +10 -0
  120. package/skills/sdlc/hotfix/implement/branch/step.md +15 -0
  121. package/skills/sdlc/hotfix/implement/entry/SKILL.md +10 -0
  122. package/skills/sdlc/hotfix/implement/entry/step.md +20 -0
  123. package/skills/sdlc/hotfix/implement/gate/SKILL.md +10 -0
  124. package/skills/sdlc/hotfix/implement/gate/step.md +104 -0
  125. package/skills/sdlc/hotfix/implement/impact/SKILL.md +10 -0
  126. package/skills/sdlc/hotfix/implement/impact/step.md +15 -0
  127. package/skills/sdlc/hotfix/implement/sonar/SKILL.md +10 -0
  128. package/skills/sdlc/hotfix/implement/sonar/step.md +27 -0
  129. package/skills/sdlc/hotfix/implement/tdd/SKILL.md +10 -0
  130. package/skills/sdlc/hotfix/implement/tdd/step.md +33 -0
  131. package/skills/sdlc/hotfix/implement/verify/SKILL.md +10 -0
  132. package/skills/sdlc/hotfix/implement/verify/step.md +27 -0
  133. package/skills/sdlc/hotfix/prd/entry/SKILL.md +10 -0
  134. package/skills/sdlc/hotfix/prd/entry/step.md +20 -0
  135. package/skills/sdlc/hotfix/prd/gate/SKILL.md +10 -0
  136. package/skills/sdlc/hotfix/prd/gate/step.md +32 -0
  137. package/skills/sdlc/hotfix/prd/requirements/SKILL.md +10 -0
  138. package/skills/sdlc/hotfix/prd/requirements/step.md +19 -0
  139. package/skills/sdlc/hotfix/prd/validate/SKILL.md +10 -0
  140. package/skills/sdlc/hotfix/prd/validate/step.md +19 -0
  141. package/skills/sdlc/hotfix/prd/write/SKILL.md +10 -0
  142. package/skills/sdlc/hotfix/prd/write/step.md +38 -0
  143. package/skills/sdlc/hotfix/review/entry/SKILL.md +10 -0
  144. package/skills/sdlc/hotfix/review/entry/step.md +13 -0
  145. package/skills/sdlc/hotfix/review/gate/SKILL.md +10 -0
  146. package/skills/sdlc/hotfix/review/gate/step.md +51 -0
  147. package/skills/sdlc/hotfix/review/impact/SKILL.md +10 -0
  148. package/skills/sdlc/hotfix/review/impact/step.md +22 -0
  149. package/skills/sdlc/hotfix/review/minimality/SKILL.md +10 -0
  150. package/skills/sdlc/hotfix/review/minimality/step.md +18 -0
  151. package/skills/sdlc/hotfix/review/test-quality/SKILL.md +10 -0
  152. package/skills/sdlc/hotfix/review/test-quality/step.md +16 -0
  153. package/skills/sdlc/hotfix/ship/commit-pr/SKILL.md +10 -0
  154. package/skills/sdlc/hotfix/ship/commit-pr/step.md +58 -0
  155. package/skills/sdlc/hotfix/ship/entry/SKILL.md +10 -0
  156. package/skills/sdlc/hotfix/ship/entry/step.md +20 -0
  157. package/skills/sdlc/hotfix/ship/exit/SKILL.md +10 -0
  158. package/skills/sdlc/hotfix/ship/exit/step.md +31 -0
  159. package/skills/sdlc/hotfix/ship/gitignore/SKILL.md +10 -0
  160. package/skills/sdlc/hotfix/ship/gitignore/step.md +22 -0
  161. package/skills/sdlc/hotfix/ship/report/SKILL.md +10 -0
  162. package/skills/sdlc/hotfix/ship/report/step.md +47 -0
  163. package/skills/sdlc/hotfix/ship/test-gate/SKILL.md +10 -0
  164. package/skills/sdlc/hotfix/ship/test-gate/step.md +17 -0
  165. package/skills/sdlc/implement/build-run/SKILL.md +10 -0
  166. package/skills/sdlc/implement/build-run/step.md +85 -0
  167. package/skills/sdlc/implement/checkpoint/SKILL.md +10 -0
  168. package/skills/sdlc/implement/checkpoint/step.md +20 -0
  169. package/skills/sdlc/implement/debug/SKILL.md +10 -0
  170. package/skills/sdlc/implement/debug/step.md +25 -0
  171. package/skills/sdlc/implement/impact/SKILL.md +10 -0
  172. package/skills/sdlc/implement/impact/step.md +12 -0
  173. package/skills/sdlc/implement/plan/SKILL.md +10 -0
  174. package/skills/sdlc/implement/plan/step.md +13 -0
  175. package/skills/sdlc/implement/prereq/SKILL.md +10 -0
  176. package/skills/sdlc/implement/prereq/step.md +21 -0
  177. package/skills/sdlc/implement/subagents/SKILL.md +10 -0
  178. package/skills/sdlc/implement/subagents/step.md +38 -0
  179. package/skills/sdlc/implement/tdd/SKILL.md +10 -0
  180. package/skills/sdlc/implement/tdd/step.md +24 -0
  181. package/skills/sdlc/init/SKILL.md +7 -0
  182. package/skills/sdlc/onboard-code/SKILL.md +7 -0
  183. package/skills/sdlc/onboard-docs/SKILL.md +7 -0
  184. package/skills/sdlc/pack.yaml +83 -16
  185. package/skills/sdlc/prd/blast-radius/SKILL.md +10 -0
  186. package/skills/sdlc/prd/blast-radius/step.md +76 -0
  187. package/skills/sdlc/prd/create/SKILL.md +10 -0
  188. package/skills/sdlc/prd/create/step.md +21 -0
  189. package/skills/sdlc/prd/elicitation/SKILL.md +10 -0
  190. package/skills/sdlc/prd/elicitation/step.md +12 -0
  191. package/skills/sdlc/prd/prereq/SKILL.md +10 -0
  192. package/skills/sdlc/prd/prereq/step.md +16 -0
  193. package/skills/sdlc/prd/validate/SKILL.md +10 -0
  194. package/skills/sdlc/prd/validate/step.md +24 -0
  195. package/skills/sdlc/review/code/SKILL.md +10 -0
  196. package/skills/sdlc/review/code/step.md +45 -0
  197. package/skills/sdlc/review/debate/SKILL.md +10 -0
  198. package/skills/sdlc/review/debate/step.md +84 -0
  199. package/skills/sdlc/review/impact/SKILL.md +10 -0
  200. package/skills/sdlc/review/impact/step.md +14 -0
  201. package/skills/sdlc/review/prereq/SKILL.md +10 -0
  202. package/skills/sdlc/review/prereq/step.md +18 -0
  203. package/skills/sdlc/review/verification/SKILL.md +10 -0
  204. package/skills/sdlc/review/verification/step.md +16 -0
  205. package/skills/sdlc/ship/commit/SKILL.md +10 -0
  206. package/skills/sdlc/ship/commit/step.md +23 -0
  207. package/skills/sdlc/ship/gitignore/SKILL.md +10 -0
  208. package/skills/sdlc/ship/gitignore/step.md +22 -0
  209. package/skills/sdlc/ship/pr/SKILL.md +10 -0
  210. package/skills/sdlc/ship/pr/step.md +34 -0
  211. package/skills/sdlc/ship/prereq/SKILL.md +10 -0
  212. package/skills/sdlc/ship/prereq/step.md +16 -0
  213. package/skills/sdlc/ship/report/SKILL.md +10 -0
  214. package/skills/sdlc/ship/report/step.md +74 -0
  215. package/skills/sdlc/srs/interface/SKILL.md +10 -0
  216. package/skills/sdlc/srs/interface/step.md +44 -0
  217. package/skills/sdlc/srs/prereq/SKILL.md +10 -0
  218. package/skills/sdlc/srs/prereq/step.md +19 -0
  219. package/skills/sdlc/srs/validate/SKILL.md +10 -0
  220. package/skills/sdlc/srs/validate/step.md +23 -0
  221. package/skills/sdlc/srs/write/SKILL.md +10 -0
  222. package/skills/sdlc/srs/write/step.md +19 -0
  223. package/skills/sdlc/test-design/boundary/SKILL.md +10 -0
  224. package/skills/sdlc/test-design/boundary/step.md +12 -0
  225. package/skills/sdlc/test-design/cases/SKILL.md +10 -0
  226. package/skills/sdlc/test-design/cases/step.md +22 -0
  227. package/skills/sdlc/test-design/coverage/SKILL.md +10 -0
  228. package/skills/sdlc/test-design/coverage/step.md +63 -0
  229. package/skills/sdlc/test-design/prereq/SKILL.md +10 -0
  230. package/skills/sdlc/test-design/prereq/step.md +15 -0
  231. package/{skills/sdlc/workflows → workflows/sdlc}/hotfix-tdd.yaml +2 -1
  232. package/{skills/sdlc/workflows → workflows/sdlc}/hotfix.yaml +8 -4
  233. package/workflows/sdlc/master-sdlc.yaml +64 -0
  234. package/workflows/sdlc/sdlc-architecture.yaml +43 -0
  235. package/workflows/sdlc/sdlc-build.yaml +51 -0
  236. package/workflows/sdlc/sdlc-design.yaml +61 -0
  237. package/workflows/sdlc/sdlc-discovery.yaml +43 -0
  238. package/workflows/sdlc/sdlc-feature-complete.yaml +36 -0
  239. package/workflows/sdlc/sdlc-hotfix-analyze.yaml +43 -0
  240. package/workflows/sdlc/sdlc-hotfix-implement.yaml +43 -0
  241. package/workflows/sdlc/sdlc-hotfix-prd.yaml +31 -0
  242. package/workflows/sdlc/sdlc-hotfix-review.yaml +31 -0
  243. package/workflows/sdlc/sdlc-hotfix-ship.yaml +37 -0
  244. package/workflows/sdlc/sdlc-implement.yaml +60 -0
  245. package/workflows/sdlc/sdlc-prd.yaml +36 -0
  246. package/workflows/sdlc/sdlc-qa.yaml +91 -0
  247. package/workflows/sdlc/sdlc-review.yaml +36 -0
  248. package/workflows/sdlc/sdlc-ship.yaml +36 -0
  249. package/workflows/sdlc/sdlc-srs.yaml +29 -0
  250. package/workflows/sdlc/sdlc-test-design.yaml +29 -0
  251. package/workflows/sdlc/sdlc-testcase.yaml +25 -0
  252. package/workflows/sdlc/sdlc-thinking.yaml +67 -0
  253. package/packages/web/dist/web/browser/chunk-IPMFXW6N.js +0 -1
  254. package/packages/web/dist/web/browser/chunk-IX2QWMX2.js +0 -1
  255. package/packages/web/dist/web/browser/chunk-QMAH5NZC.js +0 -1
  256. package/packages/web/dist/web/browser/chunk-RGFLNLPM.js +0 -1
  257. package/packages/web/dist/web/browser/chunk-RKWDHBN3.js +0 -5
  258. package/packages/web/dist/web/browser/chunk-XGYEZIV4.js +0 -1
  259. package/packages/web/dist/web/browser/main-IIUZVPMI.js +0 -1
  260. package/skills/sdlc/architecture/SKILL.md +0 -218
  261. package/skills/sdlc/discovery/SKILL.md +0 -197
  262. package/skills/sdlc/feature-complete/SKILL.md +0 -159
  263. package/skills/sdlc/hotfix-analyze/SKILL.md +0 -198
  264. package/skills/sdlc/hotfix-implement/SKILL.md +0 -272
  265. package/skills/sdlc/hotfix-prd/SKILL.md +0 -161
  266. package/skills/sdlc/hotfix-review/SKILL.md +0 -153
  267. package/skills/sdlc/hotfix-ship/SKILL.md +0 -221
  268. package/skills/sdlc/implement/SKILL.md +0 -264
  269. package/skills/sdlc/prd/SKILL.md +0 -182
  270. package/skills/sdlc/review/SKILL.md +0 -210
  271. package/skills/sdlc/ship/SKILL.md +0 -194
  272. package/skills/sdlc/srs/SKILL.md +0 -148
  273. package/skills/sdlc/test-design/SKILL.md +0 -132
  274. package/skills/sdlc/workflows/master-sdlc.yaml +0 -35
  275. package/skills/sdlc/workflows/sdlc-build.yaml +0 -18
  276. package/skills/sdlc/workflows/sdlc-design.yaml +0 -14
  277. package/skills/sdlc/workflows/sdlc-qa.yaml +0 -20
  278. package/skills/sdlc/workflows/sdlc-testcase.yaml +0 -8
  279. package/skills/sdlc/workflows/sdlc-thinking.yaml +0 -12
  280. /package/{skills/sdlc/workflows → workflows/sdlc}/onboarding.yaml +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngocsangairvds/vsaf",
3
- "version": "5.1.5",
3
+ "version": "5.1.7",
4
4
  "description": "logging step",
5
5
  "main": "packages/core/dist/index.js",
6
6
  "types": "packages/core/dist/index.d.ts",
@@ -1 +1 @@
1
- {"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../src/adapters/antigravity.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,eAAe,EAAwD,MAAM,cAAc,CAAC;AAG1G,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,eAAO,MAAM,kBAAkB,EAAE,eAmHhC,CAAC"}
1
+ {"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../src/adapters/antigravity.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,eAAe,EAAwD,MAAM,cAAc,CAAC;AAG1G,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,eAAO,MAAM,kBAAkB,EAAE,eA0FhC,CAAC"}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  // packages/cli/src/adapters/antigravity.ts
3
- // Antigravity (Google `agy`) adapter. Antigravity natively discovers skills in
4
- // .agents/skills/ and slash commands (workflows) in .agents/workflows/. MCP is
5
- // written to the GLOBAL file ~/.gemini/antigravity/mcp_config.json.
3
+ // Antigravity (Google `agy`) adapter. Writes slash-command proxies and MCP only;
4
+ // VSAF skill content stays canonical under .vsaf/skills.
6
5
  var __importDefault = (this && this.__importDefault) || function (mod) {
7
6
  return (mod && mod.__esModule) ? mod : { "default": mod };
8
7
  };
@@ -32,31 +31,11 @@ exports.antigravityAdapter = {
32
31
  install(ctx) {
33
32
  const result = (0, adapter_js_1.emptyResult)('antigravity');
34
33
  const agentsDir = (0, path_1.join)(ctx.projectPath, '.agents');
35
- const skillsDir = (0, path_1.join)(agentsDir, 'skills');
36
34
  const workflowsDir = (0, path_1.join)(agentsDir, 'workflows');
37
35
  const rulesDir = (0, path_1.join)(agentsDir, 'rules');
38
36
  (0, fs_1.mkdirSync)(workflowsDir, { recursive: true });
39
37
  (0, fs_1.mkdirSync)(rulesDir, { recursive: true });
40
- // 1. Deploy Skills → .agents/skills/ (Antigravity natively discovers skills here).
41
- const deploy = (0, shared_js_1.deploySkills)(ctx.packDir, ctx.packName, ctx.deployedSkillNames, skillsDir, { force: ctx.options.force });
42
- if (ctx.packInfo.bundledNames.length > 0) {
43
- const bundled = (0, shared_js_1.deploySkills)(ctx.packDir, ctx.packName, ctx.packInfo.bundledNames, skillsDir, { force: ctx.options.force, noPrefix: true });
44
- deploy.deployed.push(...bundled.deployed);
45
- deploy.skipped.push(...bundled.skipped);
46
- }
47
- // Deploy _shared/ helper folder if pack has it
48
- const sharedSrc = (0, path_1.join)(ctx.packDir, '_shared');
49
- if ((0, fs_1.existsSync)(sharedSrc)) {
50
- const sharedTarget = (0, path_1.join)(skillsDir, '_shared', ctx.packName);
51
- if ((0, fs_1.existsSync)(sharedTarget)) {
52
- (0, fs_1.rmSync)(sharedTarget, { recursive: true, force: true });
53
- }
54
- (0, fs_1.mkdirSync)((0, path_1.join)(skillsDir, '_shared'), { recursive: true });
55
- (0, fs_1.cpSync)(sharedSrc, sharedTarget, { recursive: true });
56
- deploy.deployed.push(`_shared/${ctx.packName}`);
57
- }
58
- result.skills = deploy;
59
- // 2. Workflows (Slash Commands) → .agents/workflows/<name>.md
38
+ // 1. Workflows (Slash Commands) → .agents/workflows/<name>.md
60
39
  const workflowNames = [];
61
40
  if (ctx.packInfo.workflows && Object.keys(ctx.packInfo.workflows).length > 0) {
62
41
  for (const [filename, yamlContent] of Object.entries(ctx.packInfo.workflows)) {
@@ -95,18 +74,23 @@ exports.antigravityAdapter = {
95
74
  }
96
75
  }
97
76
  result.commands = workflowNames;
98
- // 3. Rules summary listing the workflows and skills.
77
+ // 2. Rules summary listing the workflows and canonical skill location.
99
78
  const ruleBody = `---\nname: vsaf-${ctx.packName}\ndescription: VSAF ${ctx.packName} workflows and skills for Antigravity\n---\n\n`
100
79
  + `# VSAF ${ctx.packName}\n\n`
101
80
  + (workflowNames.length > 0 ? `Workflows (invoke with \`/name\`):\n` + workflowNames.map(w => `- \`/${w}\``).join('\n') + '\n\n' : '')
102
- + `Skills: Loaded from \`.agents/skills/\`.\n`;
81
+ + `Skills: Read from canonical \`.vsaf/skills/\`; do not copy them into \`.agents/skills/\`.\n\n`
82
+ + `## Artifact Write Boundary\n\n`
83
+ + `- All generated knowledge, documentation, SDLC artifacts, reports, and agent-readable markdown MUST be created only at the project root beside \`.vsaf\` (for example \`CONTEXT.md\`, \`AGENTS.md\`) or inside the root \`.vsaf/\` directory.\n`
84
+ + `- Do NOT automatically create or update \`docs/\`, \`.vsaf/\`, \`CONTEXT.md\`, \`AGENTS.md\`, knowledge files, reports, or generated artifacts inside service/subproject folders.\n`
85
+ + `- For service-specific notes, write under root \`.vsaf/docs/\` using the service name in the path or filename.\n`
86
+ + `- Write inside a service/subproject folder only when the user explicitly authorizes that path, or when the task is a source-code/test change for that service.\n`;
103
87
  (0, fs_1.writeFileSync)((0, path_1.join)(rulesDir, `vsaf-${ctx.packName}.md`), ruleBody, 'utf-8');
104
- // 4. MCP → GLOBAL ~/.gemini/antigravity/mcp_config.json (absolute bin via getGitnexusMcpEntry).
88
+ // 3. MCP → GLOBAL ~/.gemini/antigravity/mcp_config.json (absolute bin via getGitnexusMcpEntry).
105
89
  const home = ctx.options._homeDir ?? (0, os_1.homedir)();
106
90
  result.mcp = (0, shared_js_1.writeJsonMcp)(antigravityMcpPath(home), { vsaf: (0, shared_js_1.getVsafMcpEntry)(), gitnexus: (0, shared_js_1.getGitnexusMcpEntry)() });
107
- // 5. Instruction marker block in AGENTS.md.
108
- (0, shared_js_1.writeMarkerFile)((0, path_1.join)(ctx.projectPath, 'AGENTS.md'), `pack=${ctx.packName} ide=antigravity`, `## VSAF \`${ctx.packName}\` (Antigravity)\n\nWorkflows: \`.agents/workflows/\` (\`/name\`) · Skills: \`.agents/skills/\` · Rules: \`.agents/rules/\` · MCP: \`~/.gemini/antigravity/mcp_config.json\` (vsaf + gitnexus, global).`);
109
- // 6. Binaries.
91
+ // 4. Instruction marker block in AGENTS.md.
92
+ (0, shared_js_1.writeMarkerFile)((0, path_1.join)(ctx.projectPath, 'AGENTS.md'), `pack=${ctx.packName} ide=antigravity`, `## VSAF \`${ctx.packName}\` (Antigravity)\n\nWorkflows: \`.agents/workflows/\` (\`/name\`) · Canonical skills: \`.vsaf/skills/\` · Commands: \`.vsaf/commands/\` · Rules: \`.agents/rules/\` · MCP: \`~/.gemini/antigravity/mcp_config.json\` (vsaf + gitnexus, global).\n\nWhen a workflow/node references a skill, read \`.vsaf/commands/<name>.md\` first, then \`.vsaf/skills/<name>/SKILL.md\` and any files it includes. Do not install or copy skill directories into \`.agents/skills/\`.\n\nArtifact boundary: generated knowledge/docs/artifacts stay at project root beside \`.vsaf\` or inside root \`.vsaf/\`; never auto-write them inside service/subproject folders unless explicitly authorized.`);
93
+ // 5. Binaries.
110
94
  if (!ctx.options._skipGraphify && !(0, shared_js_1.installGraphifyPlatform)('antigravity')) {
111
95
  result.warnings.push('graphify antigravity install failed — run: graphify install --platform antigravity');
112
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/adapters/antigravity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/adapters/antigravity.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,eAAe,EAAwD,MAAM,cAAc,CAAC;AAE1G,eAAO,MAAM,aAAa,EAAE,eAwB3B,CAAC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,eAAe,EAAwD,MAAM,cAAc,CAAC;AAI1G,eAAO,MAAM,aAAa,EAAE,eA0B3B,CAAC"}
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  // packages/cli/src/adapters/claude.ts
3
- // Claude Code adapter. Delegates to the proven execInstall so the Claude output
4
- // stays byte-identical to pre-refactor behaviour (NFR-001, golden gate). New IDEs
5
- // (cursor/codex/antigravity) compose shared helpers instead.
3
+ // Claude Code adapter. Writes only MCP/instruction references; skill content
4
+ // stays canonical under .vsaf/skills.
6
5
  Object.defineProperty(exports, "__esModule", { value: true });
7
6
  exports.claudeAdapter = void 0;
8
7
  const fs_1 = require("fs");
9
8
  const path_1 = require("path");
10
- const install_js_1 = require("../commands/install.js");
11
9
  const adapter_js_1 = require("./adapter.js");
10
+ const install_js_1 = require("../commands/install.js");
11
+ const shared_js_1 = require("./shared.js");
12
12
  exports.claudeAdapter = {
13
13
  id: 'claude',
14
14
  graphifyPlatform: 'claude',
@@ -20,13 +20,11 @@ exports.claudeAdapter = {
20
20
  },
21
21
  install(ctx) {
22
22
  const result = (0, adapter_js_1.emptyResult)('claude');
23
- const r = (0, install_js_1.execInstall)(ctx.packName, ctx.projectPath, ctx.options);
24
- result.skills = r.deploy;
25
- result.commands = r.init.commandsCreated;
23
+ (0, install_js_1.ensureMcpConfig)(ctx.projectPath);
26
24
  result.mcp = { path: (0, path_1.join)(ctx.projectPath, '.mcp.json'), servers: ['vsaf', 'gitnexus'] };
27
- result.binaries = r.binaries;
28
- if (r.graphify && r.graphify.installed === false && r.graphify.error) {
29
- result.warnings.push(`graphify: ${r.graphify.error}`);
25
+ (0, shared_js_1.writeMarkerFile)((0, path_1.join)(ctx.projectPath, 'CLAUDE.md'), `pack=${ctx.packName} ide=claude`, `## VSAF \`${ctx.packName}\` (Claude)\n\nCanonical skills live in \`.vsaf/skills/\`; do not copy them into \`.claude/skills/\`. Commands live in \`.vsaf/commands/\` and workflows in \`.vsaf/workflows/\`. When executing a VSAF command, read the referenced \`.vsaf/commands/<name>.md\` and \`.vsaf/skills/<name>/SKILL.md\` files.\n\nArtifact boundary: generated knowledge/docs/artifacts stay at project root beside \`.vsaf\` or inside root \`.vsaf/\`; never auto-write them inside service/subproject folders unless explicitly authorized.`);
26
+ if (!ctx.options._skipGraphify && !(0, shared_js_1.installGraphifyPlatform)('claude')) {
27
+ result.warnings.push('graphify claude install failed — run: graphify install');
30
28
  }
31
29
  return result;
32
30
  },
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,gFAAgF;AAChF,kFAAkF;AAClF,6DAA6D;;;AAE7D,2BAAgC;AAChC,+BAA4B;AAC5B,uDAAqD;AACrD,6CAA0G;AAE7F,QAAA,aAAa,GAAoB;IAC5C,EAAE,EAAE,QAAQ;IACZ,gBAAgB,EAAE,QAAQ;IAE1B,MAAM,CAAC,WAAmB;QACxB,OAAO,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,OAAO,CAAC,GAAmB;QACzB,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,IAAA,wBAAW,EAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACzB,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;QACzC,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;QACzF,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,6EAA6E;AAC7E,sCAAsC;;;AAEtC,2BAAgC;AAChC,+BAA4B;AAC5B,6CAA0G;AAC1G,uDAAyD;AACzD,2CAAuE;AAE1D,QAAA,aAAa,GAAoB;IAC5C,EAAE,EAAE,QAAQ;IACZ,gBAAgB,EAAE,QAAQ;IAE1B,MAAM,CAAC,WAAmB;QACxB,OAAO,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,OAAO,CAAC,GAAmB;QACzB,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,QAAQ,CAAC,CAAC;QACrC,IAAA,4BAAe,EAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;QACzF,IAAA,2BAAe,EACb,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAClC,QAAQ,GAAG,CAAC,QAAQ,aAAa,EACjC,aAAa,GAAG,CAAC,QAAQ,+fAA+f,CACzhB,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,IAAA,mCAAuB,EAAC,QAAQ,CAAC,EAAE,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,eAAe,EAAwD,MAAM,cAAc,CAAC;AAW1G,eAAO,MAAM,YAAY,EAAE,eAgD1B,CAAC"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,eAAe,EAAwD,MAAM,cAAc,CAAC;AAW1G,eAAO,MAAM,YAAY,EAAE,eAyC1B,CAAC"}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  // packages/cli/src/adapters/codex.ts
3
- // Codex adapter. Codex natively loads skills from .agents/skills/ (project), reads
4
- // AGENTS.md for instructions, and takes project MCP from .codex/config.toml. No
5
- // separate command files — the skill itself is the invocable unit.
3
+ // Codex adapter. Writes MCP + AGENTS.md references only; VSAF skill content stays
4
+ // canonical under .vsaf/skills.
6
5
  Object.defineProperty(exports, "__esModule", { value: true });
7
6
  exports.codexAdapter = void 0;
8
7
  const fs_1 = require("fs");
@@ -28,9 +27,7 @@ exports.codexAdapter = {
28
27
  },
29
28
  install(ctx) {
30
29
  const result = (0, adapter_js_1.emptyResult)('codex');
31
- // 1. Skills → .agents/skills/ (native discovery), copied verbatim.
32
- result.skills = (0, shared_js_1.deploySkills)(ctx.packDir, ctx.packName, ctx.deployedSkillNames, (0, path_1.join)(ctx.projectPath, '.agents', 'skills'), { force: ctx.options.force });
33
- // 2. MCP → project .codex/config.toml (surgical merge, preserves trust).
30
+ // 1. MCPproject .codex/config.toml (surgical merge, preserves trust).
34
31
  const tomlPath = (0, path_1.join)(ctx.projectPath, '.codex', 'config.toml');
35
32
  try {
36
33
  result.mcp = (0, toml_mcp_js_1.writeTomlMcp)(tomlPath, {
@@ -42,9 +39,9 @@ exports.codexAdapter = {
42
39
  catch (err) {
43
40
  result.warnings.push(`Không cập nhật được .codex/config.toml: ${err.message}`);
44
41
  }
45
- // 3. Instruction marker block in AGENTS.md.
46
- (0, shared_js_1.writeMarkerFile)((0, path_1.join)(ctx.projectPath, 'AGENTS.md'), `pack=${ctx.packName} ide=codex`, `## VSAF \`${ctx.packName}\` (Codex)\n\nSkills: \`.agents/skills/\` (auto-loaded) · MCP: \`.codex/config.toml\` [mcp_servers] (vsaf + gitnexus).`);
47
- // 4. Binaries.
42
+ // 2. Instruction marker block in AGENTS.md.
43
+ (0, shared_js_1.writeMarkerFile)((0, path_1.join)(ctx.projectPath, 'AGENTS.md'), `pack=${ctx.packName} ide=codex`, `## VSAF \`${ctx.packName}\` (Codex)\n\nCanonical skills: \`.vsaf/skills/\` · Commands: \`.vsaf/commands/\` · Workflows: \`.vsaf/workflows/\` · MCP: \`.codex/config.toml\` [mcp_servers] (vsaf + gitnexus).\n\nWhen a workflow/node references a skill, read \`.vsaf/commands/<name>.md\` first, then \`.vsaf/skills/<name>/SKILL.md\` and any files it includes. Do not install or copy skill directories into \`.agents/skills/\`.\n\nArtifact boundary: generated knowledge/docs/artifacts stay at project root beside \`.vsaf\` or inside root \`.vsaf/\`; never auto-write them inside service/subproject folders unless explicitly authorized.`);
44
+ // 3. Binaries.
48
45
  if (!ctx.options._skipGraphify && !(0, shared_js_1.installGraphifyPlatform)('codex')) {
49
46
  result.warnings.push('graphify codex install failed — run: graphify install --platform codex');
50
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,mFAAmF;AACnF,gFAAgF;AAChF,mEAAmE;;;AAEnE,2BAAgC;AAChC,+BAA4B;AAC5B,2BAA6B;AAC7B,6CAA0G;AAC1G,2CAA2H;AAC3H,+CAA6C;AAE7C,sFAAsF;AACtF,SAAS,WAAW,CAAC,KAA8B;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC;AAEY,QAAA,YAAY,GAAoB;IAC3C,EAAE,EAAE,OAAO;IACX,gBAAgB,EAAE,OAAO;IAEzB,MAAM,CAAC,WAAmB;QACxB,OAAO,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,CAAC,GAAmB;QACzB,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,OAAO,CAAC,CAAC;QAEpC,mEAAmE;QACnE,MAAM,CAAC,MAAM,GAAG,IAAA,wBAAY,EAC1B,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,EACjD,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,EAC1C,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAC7B,CAAC;QAEF,yEAAyE;QACzE,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,GAAG,IAAA,0BAAY,EAAC,QAAQ,EAAE;gBAClC,IAAI,EAAE,WAAW,CAAC,IAAA,2BAAe,GAAE,CAAC;gBACpC,QAAQ,EAAE,WAAW,CAAC,IAAA,+BAAmB,GAAE,CAAC;aAC7C,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;QACzH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,2CAA4C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,4CAA4C;QAC5C,IAAA,2BAAe,EACb,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAClC,QAAQ,GAAG,CAAC,QAAQ,YAAY,EAChC,aAAa,GAAG,CAAC,QAAQ,wHAAwH,CAClJ,CAAC;QAEF,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,IAAA,mCAAuB,EAAC,OAAO,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACjG,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,kFAAkF;AAClF,gCAAgC;;;AAEhC,2BAAgC;AAChC,+BAA4B;AAC5B,2BAA6B;AAC7B,6CAA0G;AAC1G,2CAA6G;AAC7G,+CAA6C;AAE7C,sFAAsF;AACtF,SAAS,WAAW,CAAC,KAA8B;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC;AAEY,QAAA,YAAY,GAAoB;IAC3C,EAAE,EAAE,OAAO;IACX,gBAAgB,EAAE,OAAO;IAEzB,MAAM,CAAC,WAAmB;QACxB,OAAO,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,CAAC,GAAmB;QACzB,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,OAAO,CAAC,CAAC;QAEpC,yEAAyE;QACzE,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,GAAG,IAAA,0BAAY,EAAC,QAAQ,EAAE;gBAClC,IAAI,EAAE,WAAW,CAAC,IAAA,2BAAe,GAAE,CAAC;gBACpC,QAAQ,EAAE,WAAW,CAAC,IAAA,+BAAmB,GAAE,CAAC;aAC7C,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;QACzH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,2CAA4C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,4CAA4C;QAC5C,IAAA,2BAAe,EACb,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAClC,QAAQ,GAAG,CAAC,QAAQ,YAAY,EAChC,aAAa,GAAG,CAAC,QAAQ,6lBAA6lB,CACvnB,CAAC;QAEF,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,IAAA,mCAAuB,EAAC,OAAO,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACjG,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,eAAe,EAAwD,MAAM,cAAc,CAAC;AAG1G,eAAO,MAAM,aAAa,EAAE,eAwD3B,CAAC"}
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,eAAe,EAAwD,MAAM,cAAc,CAAC;AAG1G,eAAO,MAAM,aAAa,EAAE,eAgD3B,CAAC"}
@@ -1,16 +1,11 @@
1
1
  "use strict";
2
2
  // packages/cli/src/adapters/cursor.ts
3
- // Cursor adapter. Cursor has no native "skill" object: copy the skill folders to
4
- // .cursor/skills/, expose each as a .cursor/rules/*.mdc rule + a .cursor/commands/*.md
5
- // command (full SKILL.md body), and wire MCP to .cursor/mcp.json.
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
3
+ // Cursor adapter. Cursor has no native VSAF skill object, so it writes rule and
4
+ // command proxies that point at canonical .vsaf/skills instead of copying skills.
9
5
  Object.defineProperty(exports, "__esModule", { value: true });
10
6
  exports.cursorAdapter = void 0;
11
7
  const fs_1 = require("fs");
12
8
  const path_1 = require("path");
13
- const gray_matter_1 = __importDefault(require("gray-matter"));
14
9
  const adapter_js_1 = require("./adapter.js");
15
10
  const shared_js_1 = require("./shared.js");
16
11
  exports.cursorAdapter = {
@@ -25,35 +20,38 @@ exports.cursorAdapter = {
25
20
  install(ctx) {
26
21
  const result = (0, adapter_js_1.emptyResult)('cursor');
27
22
  const cursorDir = (0, path_1.join)(ctx.projectPath, '.cursor');
28
- const skillsDir = (0, path_1.join)(cursorDir, 'skills');
29
23
  const rulesDir = (0, path_1.join)(cursorDir, 'rules');
30
24
  const commandsDir = (0, path_1.join)(cursorDir, 'commands');
31
- // 1. Copy skill folders verbatim (prefixed), preserving supporting files.
32
- result.skills = (0, shared_js_1.deploySkills)(ctx.packDir, ctx.packName, ctx.deployedSkillNames, skillsDir, { force: ctx.options.force });
33
25
  (0, fs_1.mkdirSync)(rulesDir, { recursive: true });
34
26
  (0, fs_1.mkdirSync)(commandsDir, { recursive: true });
35
- // 2. Per deployed skill → rule (.mdc) + command (.md, full body).
36
- for (const name of result.skills.deployed) {
37
- const skillMd = (0, path_1.join)(skillsDir, name, 'SKILL.md');
38
- if (!(0, fs_1.existsSync)(skillMd))
39
- continue;
40
- const raw = (0, fs_1.readFileSync)(skillMd, 'utf-8');
41
- const { data, content } = (0, gray_matter_1.default)(raw);
42
- const description = typeof data.description === 'string' ? data.description : name;
43
- const mdc = `---\ndescription: ${description}\nglobs: **/*\nalwaysApply: false\n---\n\n# ${name}\n\n> Skill source: \`.cursor/skills/${name}/SKILL.md\`\n\n${content}`;
27
+ // 1. Per skill → rule (.mdc) + command (.md) that references .vsaf.
28
+ for (const name of proxySkillNames(ctx)) {
29
+ const description = `Run VSAF skill ${name}`;
30
+ const body = `# ${name}\n\nRead \`.vsaf/commands/${name}.md\` if it exists, then read \`.vsaf/skills/${name}/SKILL.md\` and any referenced files before acting. Treat \`.vsaf/skills/${name}\` as the single source of truth; do not copy or edit IDE-local skill folders.\n`;
31
+ const mdc = `---\ndescription: ${description}\nglobs: **/*\nalwaysApply: false\n---\n\n${body}`;
44
32
  (0, fs_1.writeFileSync)((0, path_1.join)(rulesDir, `${name}.mdc`), mdc, 'utf-8');
45
- (0, fs_1.writeFileSync)((0, path_1.join)(commandsDir, `${name}.md`), raw, 'utf-8');
33
+ (0, fs_1.writeFileSync)((0, path_1.join)(commandsDir, `${name}.md`), body, 'utf-8');
46
34
  result.commands.push(name);
47
35
  }
48
- // 3. MCP (project-level JSON).
36
+ // 2. MCP (project-level JSON).
49
37
  result.mcp = (0, shared_js_1.writeJsonMcp)((0, path_1.join)(cursorDir, 'mcp.json'), { vsaf: (0, shared_js_1.getVsafMcpEntry)(), gitnexus: (0, shared_js_1.getGitnexusMcpEntry)() });
50
- // 4. Instruction marker block in AGENTS.md.
51
- (0, shared_js_1.writeMarkerFile)((0, path_1.join)(ctx.projectPath, 'AGENTS.md'), `pack=${ctx.packName} ide=cursor`, `## VSAF \`${ctx.packName}\` (Cursor)\n\nRules: \`.cursor/rules/\` · Commands: \`.cursor/commands/\` · Skills: \`.cursor/skills/\` · MCP: \`.cursor/mcp.json\` (vsaf + gitnexus).`);
52
- // 5. Binaries (best-effort; skipped in tests / --skip-deps).
38
+ // 3. Instruction marker block in AGENTS.md.
39
+ (0, shared_js_1.writeMarkerFile)((0, path_1.join)(ctx.projectPath, 'AGENTS.md'), `pack=${ctx.packName} ide=cursor`, `## VSAF \`${ctx.packName}\` (Cursor)\n\nRules: \`.cursor/rules/\` · Commands: \`.cursor/commands/\` · Canonical skills: \`.vsaf/skills/\` · MCP: \`.cursor/mcp.json\` (vsaf + gitnexus).\n\nCursor rules/commands are proxies only. When invoked, read \`.vsaf/commands/<name>.md\` and \`.vsaf/skills/<name>/SKILL.md\`; do not install or copy skill directories into \`.cursor/skills/\`.\n\nArtifact boundary: generated knowledge/docs/artifacts stay at project root beside \`.vsaf\` or inside root \`.vsaf/\`; never auto-write them inside service/subproject folders unless explicitly authorized.`);
40
+ // 4. Binaries (best-effort; skipped in tests / --skip-deps).
53
41
  if (!ctx.options._skipGraphify && !(0, shared_js_1.installGraphifyPlatform)('cursor')) {
54
42
  result.warnings.push('graphify cursor install failed — run: graphify cursor install');
55
43
  }
56
44
  return result;
57
45
  },
58
46
  };
47
+ function proxySkillNames(ctx) {
48
+ const packSkills = ctx.packInfo.skillNames
49
+ .filter(skill => !shared_js_1.SKIP_SKILLS.includes(skill))
50
+ .map(skill => `${ctx.packName}-${flattenSkillName(skill)}`);
51
+ const bundledSkills = ctx.packInfo.bundledNames.map(flattenSkillName);
52
+ return [...packSkills, ...bundledSkills];
53
+ }
54
+ function flattenSkillName(skill) {
55
+ return skill.split(/[\\/]/).filter(Boolean).join('-');
56
+ }
59
57
  //# sourceMappingURL=cursor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAmBA,wBAAsB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCjE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkBA,wBAAsB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BjE"}
@@ -4,7 +4,6 @@ exports.execInit = execInit;
4
4
  const fs_1 = require("fs");
5
5
  const path_1 = require("path");
6
6
  const install_js_1 = require("./install.js");
7
- const skill_js_1 = require("./skill.js");
8
7
  const DEFAULT_CONFIG = `provider: claude
9
8
  model: sonnet
10
9
  isolation:
@@ -31,26 +30,15 @@ async function execInit(projectPath) {
31
30
  (0, fs_1.writeFileSync)((0, path_1.join)(vsafDir, 'config.yaml'), DEFAULT_CONFIG, 'utf-8');
32
31
  // Create/merge .mcp.json with vsaf + gitnexus MCP servers
33
32
  (0, install_js_1.ensureMcpConfig)(projectPath);
34
- // Deploy SDLC skills by default (same as `vsaf install sdlc`)
35
- const skillsDir = (0, path_1.join)(projectPath, '.claude', 'skills');
36
- const packDir = (0, skill_js_1.resolveSource)('sdlc');
37
- const packInfo = (0, skill_js_1.resolvePackInfo)('sdlc', projectPath);
38
- const deploy = (0, install_js_1.deploySkills)(packDir, 'sdlc', packInfo.skillNames, skillsDir, { force: false });
39
- // Deploy bundled skills (BMAD + mattpocock) without prefix (external dependencies)
40
- if (packInfo.bundledNames.length > 0) {
41
- const bundled = (0, install_js_1.deploySkills)(packDir, 'sdlc', packInfo.bundledNames, skillsDir, { force: false, noPrefix: true });
42
- deploy.deployed.push(...bundled.deployed);
43
- deploy.skipped.push(...bundled.skipped);
44
- }
45
- if (deploy.deployed.length > 0 || deploy.skipped.length > 0) {
46
- console.log(`\n[vsaf] Skills deployed to ${skillsDir}`);
47
- for (const name of deploy.deployed)
33
+ // Deploy SDLC substrate by default into .vsaf only.
34
+ const substrate = (0, install_js_1.deployEngineSubstrate)('sdlc', projectPath, { force: false });
35
+ if (substrate.skillsDeployed.length > 0) {
36
+ console.log(`\n[vsaf] Skills deployed to ${(0, path_1.join)(projectPath, '.vsaf', 'skills')}`);
37
+ for (const name of substrate.skillsDeployed)
48
38
  console.log(` ✓ ${name}`);
49
- for (const name of deploy.skipped)
50
- console.log(` ⊘ ${name} (exists, use --force to overwrite)`);
51
- console.log(` ${deploy.deployed.length} deployed, ${deploy.skipped.length} skipped\n`);
39
+ console.log(` ${substrate.skillsDeployed.length} deployed\n`);
52
40
  }
53
41
  console.log(`\n[vsaf] Initialized .vsaf/ at ${projectPath}`);
54
- console.log('[vsaf] Next: vsaf install sdlc (install npm dependencies)\n');
42
+ console.log('[vsaf] Next: vsaf install sdlc --ide-artifacts proxy (optional IDE references + deps)\n');
55
43
  }
56
44
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;AAmBA,4BAuCC;AA1DD,2BAA0D;AAC1D,+BAA4B;AAC5B,6CAA6D;AAC7D,yCAA4D;AAE5D,MAAM,cAAc,GAAG;;;;;;;;;;;;CAYtB,CAAC;AAEK,KAAK,UAAU,QAAQ,CAAC,WAAmB;IAChD,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAE3C,IAAI,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,wCAAwC,WAAW,EAAE,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,oCAAoC;IACpC,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,OAAO,EAAE,aAAa,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAErE,0DAA0D;IAC1D,IAAA,4BAAe,EAAC,WAAW,CAAC,CAAC;IAE7B,8DAA8D;IAC9D,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAA,wBAAa,EAAC,MAAM,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAA,0BAAe,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAA,yBAAY,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAE/F,mFAAmF;IACnF,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAA,yBAAY,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC/D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,qCAAqC,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,WAAW,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;AAkBA,4BA2BC;AA7CD,2BAA0D;AAC1D,+BAA4B;AAC5B,6CAAsE;AAEtE,MAAM,cAAc,GAAG;;;;;;;;;;;;CAYtB,CAAC;AAEK,KAAK,UAAU,QAAQ,CAAC,WAAmB;IAChD,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAE3C,IAAI,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,wCAAwC,WAAW,EAAE,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,oCAAoC;IACpC,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,OAAO,EAAE,aAAa,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAErE,0DAA0D;IAC1D,IAAA,4BAAe,EAAC,WAAW,CAAC,CAAC;IAE7B,oDAAoD;IACpD,MAAM,SAAS,GAAG,IAAA,kCAAqB,EAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAA,WAAI,EAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnF,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,cAAc;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,cAAc,CAAC,MAAM,aAAa,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,WAAW,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAC;AAC1G,CAAC"}
@@ -75,13 +75,10 @@ export declare function ghInstallHint(): string;
75
75
  * vsaf_start) so it works regardless of which IDE was installed.
76
76
  *
77
77
  * The engine resolves workflows at `.vsaf/workflows/<pack>/`, commands at
78
- * `.vsaf/commands/`, and skills at `.claude/skills/` (primary) or `.vsaf/skills/`
79
- * (fallback). The Claude path (execInstall) already provisions `.claude/skills`
80
- * + `.vsaf/{commands,workflows}`. For a NON-Claude install (antigravity/cursor/
81
- * codex only) none of that exists, so the harness silently can't run — this
82
- * deploys skills to `.vsaf/skills/` plus the commands/workflows substrate.
78
+ * `.vsaf/commands/`, and skills at `.vsaf/skills/`. IDE folders are reference
79
+ * surfaces only and must not receive copied SKILL.md directories.
83
80
  *
84
- * Idempotent; skips skills the engine can already reach via `.claude/skills`.
81
+ * Idempotent; overwrites only when `force` is set.
85
82
  */
86
83
  export declare function deployEngineSubstrate(pack: string, projectPath: string, options?: InternalInstallOptions): {
87
84
  skillsDeployed: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -24,13 +24,33 @@ const skill_js_1 = require("./skill.js");
24
24
  // Skills excluded from global deployment — "setup" is replaced by `vsaf install` CLI command
25
25
  exports.SKIP_SKILLS = ['setup'];
26
26
  // ── Deploy Skills ──
27
+ function assertSafeSkillPath(skill) {
28
+ const normalized = (0, path_1.normalize)(skill);
29
+ const parts = skill.split(/[\\/]/).filter(Boolean);
30
+ if (skill.trim() === ''
31
+ || (0, path_1.isAbsolute)(skill)
32
+ || normalized === '..'
33
+ || normalized === '.'
34
+ || normalized.startsWith('../')
35
+ || normalized.startsWith('..\\')
36
+ || parts.includes('..')
37
+ || parts.includes('.')
38
+ || parts.length === 0) {
39
+ throw new Error(`Invalid skill path: "${skill}" — path traversal blocked`);
40
+ }
41
+ }
42
+ function skillTargetName(packName, skill, noPrefix) {
43
+ const flattened = skill.split(/[\\/]/).filter(Boolean).join('-');
44
+ return noPrefix ? flattened : `${packName}-${flattened}`;
45
+ }
27
46
  function deploySkills(packDir, packName, skills, targetDir, options) {
28
47
  (0, fs_1.mkdirSync)(targetDir, { recursive: true });
29
48
  const result = { deployed: [], skipped: [] };
30
49
  for (const skill of skills) {
31
50
  if (exports.SKIP_SKILLS.includes(skill))
32
51
  continue;
33
- const targetName = options.noPrefix ? skill : `${packName}-${skill}`;
52
+ assertSafeSkillPath(skill);
53
+ const targetName = skillTargetName(packName, skill, options.noPrefix);
34
54
  const sourceDir = (0, path_1.join)(packDir, skill);
35
55
  const destDir = (0, path_1.join)(targetDir, targetName);
36
56
  if (!(0, fs_1.existsSync)((0, path_1.join)(sourceDir, 'SKILL.md')))
@@ -602,19 +622,16 @@ function checkNodeLTS() {
602
622
  * vsaf_start) so it works regardless of which IDE was installed.
603
623
  *
604
624
  * The engine resolves workflows at `.vsaf/workflows/<pack>/`, commands at
605
- * `.vsaf/commands/`, and skills at `.claude/skills/` (primary) or `.vsaf/skills/`
606
- * (fallback). The Claude path (execInstall) already provisions `.claude/skills`
607
- * + `.vsaf/{commands,workflows}`. For a NON-Claude install (antigravity/cursor/
608
- * codex only) none of that exists, so the harness silently can't run — this
609
- * deploys skills to `.vsaf/skills/` plus the commands/workflows substrate.
625
+ * `.vsaf/commands/`, and skills at `.vsaf/skills/`. IDE folders are reference
626
+ * surfaces only and must not receive copied SKILL.md directories.
610
627
  *
611
- * Idempotent; skips skills the engine can already reach via `.claude/skills`.
628
+ * Idempotent; overwrites only when `force` is set.
612
629
  */
613
630
  function deployEngineSubstrate(pack, projectPath, options = {}) {
614
631
  const packDir = (0, skill_js_1.resolveSource)(pack);
615
632
  const packInfo = (0, skill_js_1.resolvePackInfo)(pack, projectPath);
616
633
  const skillsDir = (0, path_1.join)(projectPath, '.vsaf', 'skills');
617
- // Skills → .vsaf/skills (engine fallback location). Pack skills keep the
634
+ // Skills → .vsaf/skills (canonical location). Pack skills keep the
618
635
  // pack-name prefix (matching command `skill:` refs); bundled skills are bare.
619
636
  const deploy = deploySkills(packDir, pack, packInfo.skillNames, skillsDir, { force: options.force });
620
637
  if (packInfo.bundledNames.length > 0) {
@@ -622,7 +639,7 @@ function deployEngineSubstrate(pack, projectPath, options = {}) {
622
639
  deploy.deployed.push(...bundled.deployed);
623
640
  deploy.skipped.push(...bundled.skipped);
624
641
  }
625
- // _shared helpers, namespaced by pack (mirror the .claude/skills layout).
642
+ // _shared helpers, namespaced by pack.
626
643
  const sharedSrc = (0, path_1.join)(packDir, '_shared');
627
644
  if ((0, fs_1.existsSync)(sharedSrc)) {
628
645
  const sharedTarget = (0, path_1.join)(skillsDir, '_shared', pack);
@@ -648,7 +665,7 @@ function execInstall(pack, projectPath, options = {}) {
648
665
  if (pack.includes('/') || pack.includes('\\') || pack.startsWith('.') || pack.startsWith('http')) {
649
666
  throw new Error(`"${pack}" is not a valid pack name. Use a built-in pack name (e.g. "sdlc").`);
650
667
  }
651
- const skillsDir = options._skillsDir ?? (0, path_1.join)(projectPath, '.claude', 'skills');
668
+ const skillsDir = options._skillsDir ?? (0, path_1.join)(projectPath, '.vsaf', 'skills');
652
669
  // Step 1: Resolve pack and deploy skills (prefixed with pack name)
653
670
  const packDir = (0, skill_js_1.resolveSource)(pack);
654
671
  const packInfo = (0, skill_js_1.resolvePackInfo)(pack, projectPath);