@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.
- package/package.json +1 -1
- package/packages/cli/dist/adapters/antigravity.d.ts.map +1 -1
- package/packages/cli/dist/adapters/antigravity.js +14 -30
- package/packages/cli/dist/adapters/antigravity.js.map +1 -1
- package/packages/cli/dist/adapters/claude.d.ts.map +1 -1
- package/packages/cli/dist/adapters/claude.js +8 -10
- package/packages/cli/dist/adapters/claude.js.map +1 -1
- package/packages/cli/dist/adapters/codex.d.ts.map +1 -1
- package/packages/cli/dist/adapters/codex.js +6 -9
- package/packages/cli/dist/adapters/codex.js.map +1 -1
- package/packages/cli/dist/adapters/cursor.d.ts.map +1 -1
- package/packages/cli/dist/adapters/cursor.js +22 -24
- package/packages/cli/dist/adapters/cursor.js.map +1 -1
- package/packages/cli/dist/commands/init.d.ts.map +1 -1
- package/packages/cli/dist/commands/init.js +7 -19
- package/packages/cli/dist/commands/init.js.map +1 -1
- package/packages/cli/dist/commands/install.d.ts +3 -6
- package/packages/cli/dist/commands/install.d.ts.map +1 -1
- package/packages/cli/dist/commands/install.js +27 -10
- package/packages/cli/dist/commands/install.js.map +1 -1
- package/packages/cli/dist/commands/skill.d.ts.map +1 -1
- package/packages/cli/dist/commands/skill.js +40 -16
- package/packages/cli/dist/commands/skill.js.map +1 -1
- package/packages/cli/dist/index.js +2 -2
- package/packages/cli/dist/index.js.map +1 -1
- package/packages/cli/dist/install/orchestrator.d.ts +0 -8
- package/packages/cli/dist/install/orchestrator.d.ts.map +1 -1
- package/packages/cli/dist/install/orchestrator.js +3 -54
- package/packages/cli/dist/install/orchestrator.js.map +1 -1
- package/packages/cli/dist/server/routes/runs.d.ts.map +1 -1
- package/packages/cli/dist/server/routes/runs.js +81 -3
- package/packages/cli/dist/server/routes/runs.js.map +1 -1
- package/packages/cli/dist/server/routes/workflows.d.ts.map +1 -1
- package/packages/cli/dist/server/routes/workflows.js +76 -17
- package/packages/cli/dist/server/routes/workflows.js.map +1 -1
- package/packages/cli/dist/server/services/execution-manager.d.ts +11 -1
- package/packages/cli/dist/server/services/execution-manager.d.ts.map +1 -1
- package/packages/cli/dist/server/services/execution-manager.js +88 -17
- package/packages/cli/dist/server/services/execution-manager.js.map +1 -1
- package/packages/cli/dist/server/static.d.ts.map +1 -1
- package/packages/cli/dist/server/static.js +4 -1
- package/packages/cli/dist/server/static.js.map +1 -1
- package/packages/cli/dist/server/workflow-path.d.ts +3 -0
- package/packages/cli/dist/server/workflow-path.d.ts.map +1 -0
- package/packages/cli/dist/server/workflow-path.js +25 -0
- package/packages/cli/dist/server/workflow-path.js.map +1 -0
- package/packages/core/dist/store/recovery.d.ts.map +1 -1
- package/packages/core/dist/store/recovery.js +12 -1
- package/packages/core/dist/store/recovery.js.map +1 -1
- package/packages/core/dist/store/run-store.d.ts +3 -0
- package/packages/core/dist/store/run-store.d.ts.map +1 -1
- package/packages/core/dist/store/run-store.js +33 -0
- package/packages/core/dist/store/run-store.js.map +1 -1
- package/packages/core/dist/store/types.d.ts +2 -2
- package/packages/core/dist/store/types.d.ts.map +1 -1
- package/packages/core/dist/store/types.js.map +1 -1
- package/packages/core/dist/store/wal.js +1 -1
- package/packages/core/dist/store/wal.js.map +1 -1
- package/packages/web/dist/web/3rdpartylicenses.txt +26 -26
- package/packages/web/dist/web/browser/chunk-4YPNNQ2T.js +4 -0
- package/packages/web/dist/web/browser/chunk-E227ZHPJ.js +1 -0
- package/packages/web/dist/web/browser/chunk-JFBK3MNW.js +1 -0
- package/packages/web/dist/web/browser/chunk-L2VOQBBI.js +1 -0
- package/packages/web/dist/web/browser/chunk-OJJM5VOH.js +1 -0
- package/packages/web/dist/web/browser/chunk-U2H3QYAG.js +5 -0
- package/packages/web/dist/web/browser/chunk-VA7KFQOR.js +1 -0
- package/packages/web/dist/web/browser/chunk-WV3C6DNH.js +1 -0
- package/packages/web/dist/web/browser/index.html +2 -2
- package/packages/web/dist/web/browser/main-THGFWXYL.js +1 -0
- package/packages/web/dist/web/browser/{styles-JBPZVY54.css → styles-PWTTI45T.css} +1 -1
- package/skills/sdlc/architecture/current-state/SKILL.md +10 -0
- package/skills/sdlc/architecture/current-state/step.md +13 -0
- package/skills/sdlc/architecture/decision/SKILL.md +10 -0
- package/skills/sdlc/architecture/decision/step.md +21 -0
- package/skills/sdlc/architecture/epics/SKILL.md +10 -0
- package/skills/sdlc/architecture/epics/step.md +34 -0
- package/skills/sdlc/architecture/grill/SKILL.md +10 -0
- package/skills/sdlc/architecture/grill/step.md +26 -0
- package/skills/sdlc/architecture/prereq/SKILL.md +10 -0
- package/skills/sdlc/architecture/prereq/step.md +16 -0
- package/skills/sdlc/architecture/readiness/SKILL.md +10 -0
- package/skills/sdlc/architecture/readiness/step.md +76 -0
- package/skills/sdlc/complete/context/SKILL.md +10 -0
- package/skills/sdlc/complete/context/step.md +14 -0
- package/skills/sdlc/complete/knowledge/SKILL.md +10 -0
- package/skills/sdlc/complete/knowledge/step.md +22 -0
- package/skills/sdlc/complete/prereq/SKILL.md +10 -0
- package/skills/sdlc/complete/prereq/step.md +16 -0
- package/skills/sdlc/complete/reindex/SKILL.md +10 -0
- package/skills/sdlc/complete/reindex/step.md +24 -0
- package/skills/sdlc/complete/status/SKILL.md +10 -0
- package/skills/sdlc/complete/status/step.md +52 -0
- package/skills/sdlc/discovery/brainstorm/SKILL.md +10 -0
- package/skills/sdlc/discovery/brainstorm/step.md +27 -0
- package/skills/sdlc/discovery/domain/SKILL.md +10 -0
- package/skills/sdlc/discovery/domain/step.md +13 -0
- package/skills/sdlc/discovery/grill/SKILL.md +10 -0
- package/skills/sdlc/discovery/grill/step.md +22 -0
- package/skills/sdlc/discovery/prereq/SKILL.md +10 -0
- package/skills/sdlc/discovery/prereq/step.md +16 -0
- package/skills/sdlc/discovery/prfaq/SKILL.md +10 -0
- package/skills/sdlc/discovery/prfaq/step.md +68 -0
- package/skills/sdlc/discovery/system/SKILL.md +10 -0
- package/skills/sdlc/discovery/system/step.md +19 -0
- package/skills/sdlc/hotfix/analyze/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/entry/step.md +15 -0
- package/skills/sdlc/hotfix/analyze/exit/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/exit/step.md +19 -0
- package/skills/sdlc/hotfix/analyze/fix-strategy/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/fix-strategy/step.md +15 -0
- package/skills/sdlc/hotfix/analyze/gitnexus/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/gitnexus/step.md +17 -0
- package/skills/sdlc/hotfix/analyze/grill/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/grill/step.md +23 -0
- package/skills/sdlc/hotfix/analyze/reasoning/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/reasoning/step.md +29 -0
- package/skills/sdlc/hotfix/analyze/write/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/write/step.md +45 -0
- package/skills/sdlc/hotfix/implement/branch/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/branch/step.md +15 -0
- package/skills/sdlc/hotfix/implement/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/entry/step.md +20 -0
- package/skills/sdlc/hotfix/implement/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/gate/step.md +104 -0
- package/skills/sdlc/hotfix/implement/impact/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/impact/step.md +15 -0
- package/skills/sdlc/hotfix/implement/sonar/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/sonar/step.md +27 -0
- package/skills/sdlc/hotfix/implement/tdd/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/tdd/step.md +33 -0
- package/skills/sdlc/hotfix/implement/verify/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/verify/step.md +27 -0
- package/skills/sdlc/hotfix/prd/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/entry/step.md +20 -0
- package/skills/sdlc/hotfix/prd/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/gate/step.md +32 -0
- package/skills/sdlc/hotfix/prd/requirements/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/requirements/step.md +19 -0
- package/skills/sdlc/hotfix/prd/validate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/validate/step.md +19 -0
- package/skills/sdlc/hotfix/prd/write/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/write/step.md +38 -0
- package/skills/sdlc/hotfix/review/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/entry/step.md +13 -0
- package/skills/sdlc/hotfix/review/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/gate/step.md +51 -0
- package/skills/sdlc/hotfix/review/impact/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/impact/step.md +22 -0
- package/skills/sdlc/hotfix/review/minimality/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/minimality/step.md +18 -0
- package/skills/sdlc/hotfix/review/test-quality/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/test-quality/step.md +16 -0
- package/skills/sdlc/hotfix/ship/commit-pr/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/commit-pr/step.md +58 -0
- package/skills/sdlc/hotfix/ship/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/entry/step.md +20 -0
- package/skills/sdlc/hotfix/ship/exit/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/exit/step.md +31 -0
- package/skills/sdlc/hotfix/ship/gitignore/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/gitignore/step.md +22 -0
- package/skills/sdlc/hotfix/ship/report/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/report/step.md +47 -0
- package/skills/sdlc/hotfix/ship/test-gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/test-gate/step.md +17 -0
- package/skills/sdlc/implement/build-run/SKILL.md +10 -0
- package/skills/sdlc/implement/build-run/step.md +85 -0
- package/skills/sdlc/implement/checkpoint/SKILL.md +10 -0
- package/skills/sdlc/implement/checkpoint/step.md +20 -0
- package/skills/sdlc/implement/debug/SKILL.md +10 -0
- package/skills/sdlc/implement/debug/step.md +25 -0
- package/skills/sdlc/implement/impact/SKILL.md +10 -0
- package/skills/sdlc/implement/impact/step.md +12 -0
- package/skills/sdlc/implement/plan/SKILL.md +10 -0
- package/skills/sdlc/implement/plan/step.md +13 -0
- package/skills/sdlc/implement/prereq/SKILL.md +10 -0
- package/skills/sdlc/implement/prereq/step.md +21 -0
- package/skills/sdlc/implement/subagents/SKILL.md +10 -0
- package/skills/sdlc/implement/subagents/step.md +38 -0
- package/skills/sdlc/implement/tdd/SKILL.md +10 -0
- package/skills/sdlc/implement/tdd/step.md +24 -0
- package/skills/sdlc/init/SKILL.md +7 -0
- package/skills/sdlc/onboard-code/SKILL.md +7 -0
- package/skills/sdlc/onboard-docs/SKILL.md +7 -0
- package/skills/sdlc/pack.yaml +83 -16
- package/skills/sdlc/prd/blast-radius/SKILL.md +10 -0
- package/skills/sdlc/prd/blast-radius/step.md +76 -0
- package/skills/sdlc/prd/create/SKILL.md +10 -0
- package/skills/sdlc/prd/create/step.md +21 -0
- package/skills/sdlc/prd/elicitation/SKILL.md +10 -0
- package/skills/sdlc/prd/elicitation/step.md +12 -0
- package/skills/sdlc/prd/prereq/SKILL.md +10 -0
- package/skills/sdlc/prd/prereq/step.md +16 -0
- package/skills/sdlc/prd/validate/SKILL.md +10 -0
- package/skills/sdlc/prd/validate/step.md +24 -0
- package/skills/sdlc/review/code/SKILL.md +10 -0
- package/skills/sdlc/review/code/step.md +45 -0
- package/skills/sdlc/review/debate/SKILL.md +10 -0
- package/skills/sdlc/review/debate/step.md +84 -0
- package/skills/sdlc/review/impact/SKILL.md +10 -0
- package/skills/sdlc/review/impact/step.md +14 -0
- package/skills/sdlc/review/prereq/SKILL.md +10 -0
- package/skills/sdlc/review/prereq/step.md +18 -0
- package/skills/sdlc/review/verification/SKILL.md +10 -0
- package/skills/sdlc/review/verification/step.md +16 -0
- package/skills/sdlc/ship/commit/SKILL.md +10 -0
- package/skills/sdlc/ship/commit/step.md +23 -0
- package/skills/sdlc/ship/gitignore/SKILL.md +10 -0
- package/skills/sdlc/ship/gitignore/step.md +22 -0
- package/skills/sdlc/ship/pr/SKILL.md +10 -0
- package/skills/sdlc/ship/pr/step.md +34 -0
- package/skills/sdlc/ship/prereq/SKILL.md +10 -0
- package/skills/sdlc/ship/prereq/step.md +16 -0
- package/skills/sdlc/ship/report/SKILL.md +10 -0
- package/skills/sdlc/ship/report/step.md +74 -0
- package/skills/sdlc/srs/interface/SKILL.md +10 -0
- package/skills/sdlc/srs/interface/step.md +44 -0
- package/skills/sdlc/srs/prereq/SKILL.md +10 -0
- package/skills/sdlc/srs/prereq/step.md +19 -0
- package/skills/sdlc/srs/validate/SKILL.md +10 -0
- package/skills/sdlc/srs/validate/step.md +23 -0
- package/skills/sdlc/srs/write/SKILL.md +10 -0
- package/skills/sdlc/srs/write/step.md +19 -0
- package/skills/sdlc/test-design/boundary/SKILL.md +10 -0
- package/skills/sdlc/test-design/boundary/step.md +12 -0
- package/skills/sdlc/test-design/cases/SKILL.md +10 -0
- package/skills/sdlc/test-design/cases/step.md +22 -0
- package/skills/sdlc/test-design/coverage/SKILL.md +10 -0
- package/skills/sdlc/test-design/coverage/step.md +63 -0
- package/skills/sdlc/test-design/prereq/SKILL.md +10 -0
- package/skills/sdlc/test-design/prereq/step.md +15 -0
- package/{skills/sdlc/workflows → workflows/sdlc}/hotfix-tdd.yaml +2 -1
- package/{skills/sdlc/workflows → workflows/sdlc}/hotfix.yaml +8 -4
- package/workflows/sdlc/master-sdlc.yaml +64 -0
- package/workflows/sdlc/sdlc-architecture.yaml +43 -0
- package/workflows/sdlc/sdlc-build.yaml +51 -0
- package/workflows/sdlc/sdlc-design.yaml +61 -0
- package/workflows/sdlc/sdlc-discovery.yaml +43 -0
- package/workflows/sdlc/sdlc-feature-complete.yaml +36 -0
- package/workflows/sdlc/sdlc-hotfix-analyze.yaml +43 -0
- package/workflows/sdlc/sdlc-hotfix-implement.yaml +43 -0
- package/workflows/sdlc/sdlc-hotfix-prd.yaml +31 -0
- package/workflows/sdlc/sdlc-hotfix-review.yaml +31 -0
- package/workflows/sdlc/sdlc-hotfix-ship.yaml +37 -0
- package/workflows/sdlc/sdlc-implement.yaml +60 -0
- package/workflows/sdlc/sdlc-prd.yaml +36 -0
- package/workflows/sdlc/sdlc-qa.yaml +91 -0
- package/workflows/sdlc/sdlc-review.yaml +36 -0
- package/workflows/sdlc/sdlc-ship.yaml +36 -0
- package/workflows/sdlc/sdlc-srs.yaml +29 -0
- package/workflows/sdlc/sdlc-test-design.yaml +29 -0
- package/workflows/sdlc/sdlc-testcase.yaml +25 -0
- package/workflows/sdlc/sdlc-thinking.yaml +67 -0
- package/packages/web/dist/web/browser/chunk-IPMFXW6N.js +0 -1
- package/packages/web/dist/web/browser/chunk-IX2QWMX2.js +0 -1
- package/packages/web/dist/web/browser/chunk-QMAH5NZC.js +0 -1
- package/packages/web/dist/web/browser/chunk-RGFLNLPM.js +0 -1
- package/packages/web/dist/web/browser/chunk-RKWDHBN3.js +0 -5
- package/packages/web/dist/web/browser/chunk-XGYEZIV4.js +0 -1
- package/packages/web/dist/web/browser/main-IIUZVPMI.js +0 -1
- package/skills/sdlc/architecture/SKILL.md +0 -218
- package/skills/sdlc/discovery/SKILL.md +0 -197
- package/skills/sdlc/feature-complete/SKILL.md +0 -159
- package/skills/sdlc/hotfix-analyze/SKILL.md +0 -198
- package/skills/sdlc/hotfix-implement/SKILL.md +0 -272
- package/skills/sdlc/hotfix-prd/SKILL.md +0 -161
- package/skills/sdlc/hotfix-review/SKILL.md +0 -153
- package/skills/sdlc/hotfix-ship/SKILL.md +0 -221
- package/skills/sdlc/implement/SKILL.md +0 -264
- package/skills/sdlc/prd/SKILL.md +0 -182
- package/skills/sdlc/review/SKILL.md +0 -210
- package/skills/sdlc/ship/SKILL.md +0 -194
- package/skills/sdlc/srs/SKILL.md +0 -148
- package/skills/sdlc/test-design/SKILL.md +0 -132
- package/skills/sdlc/workflows/master-sdlc.yaml +0 -35
- package/skills/sdlc/workflows/sdlc-build.yaml +0 -18
- package/skills/sdlc/workflows/sdlc-design.yaml +0 -14
- package/skills/sdlc/workflows/sdlc-qa.yaml +0 -20
- package/skills/sdlc/workflows/sdlc-testcase.yaml +0 -8
- package/skills/sdlc/workflows/sdlc-thinking.yaml +0 -12
- /package/{skills/sdlc/workflows → workflows/sdlc}/onboarding.yaml +0 -0
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../src/adapters/antigravity.ts"],"names":[],"mappings":"
|
|
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.
|
|
4
|
-
//
|
|
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.
|
|
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
|
-
//
|
|
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:
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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\`) ·
|
|
109
|
-
//
|
|
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":";AAAA,2CAA2C;AAC3C
|
|
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":"
|
|
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.
|
|
4
|
-
// stays
|
|
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
|
-
|
|
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
|
-
|
|
28
|
-
if (
|
|
29
|
-
result.warnings.push(
|
|
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,
|
|
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":"
|
|
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.
|
|
4
|
-
//
|
|
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.
|
|
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. MCP → project .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
|
-
//
|
|
46
|
-
(0, shared_js_1.writeMarkerFile)((0, path_1.join)(ctx.projectPath, 'AGENTS.md'), `pack=${ctx.packName} ide=codex`, `## VSAF \`${ctx.packName}\` (Codex)\n\
|
|
47
|
-
//
|
|
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,
|
|
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":"
|
|
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
|
|
4
|
-
//
|
|
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
|
-
//
|
|
36
|
-
for (const name of
|
|
37
|
-
const
|
|
38
|
-
if
|
|
39
|
-
|
|
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`),
|
|
33
|
+
(0, fs_1.writeFileSync)((0, path_1.join)(commandsDir, `${name}.md`), body, 'utf-8');
|
|
46
34
|
result.commands.push(name);
|
|
47
35
|
}
|
|
48
|
-
//
|
|
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
|
-
//
|
|
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/\` ·
|
|
52
|
-
//
|
|
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":";AAAA,sCAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,gFAAgF;AAChF,kFAAkF;;;AAElF,2BAA0D;AAC1D,+BAA4B;AAC5B,6CAA0G;AAC1G,2CAAwI;AAE3H,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,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,CAAC,GAAmB;QACzB,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAEhD,IAAA,cAAS,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,IAAA,cAAS,EAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,oEAAoE;QACpE,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,kBAAkB,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,KAAK,IAAI,6BAA6B,IAAI,gDAAgD,IAAI,4EAA4E,IAAI,kFAAkF,CAAC;YAC9Q,MAAM,GAAG,GAAG,qBAAqB,WAAW,6CAA6C,IAAI,EAAE,CAAC;YAChG,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAC3D,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,+BAA+B;QAC/B,MAAM,CAAC,GAAG,GAAG,IAAA,wBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAA,2BAAe,GAAE,EAAE,QAAQ,EAAE,IAAA,+BAAmB,GAAE,EAAE,CAAC,CAAC;QAErH,4CAA4C;QAC5C,IAAA,2BAAe,EACb,IAAA,WAAI,EAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAClC,QAAQ,GAAG,CAAC,QAAQ,aAAa,EACjC,aAAa,GAAG,CAAC,QAAQ,qjBAAqjB,CAC/kB,CAAC;QAEF,6DAA6D;QAC7D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,IAAA,mCAAuB,EAAC,QAAQ,CAAC,EAAE,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QACxF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC;AAEF,SAAS,eAAe,CAAC,GAAmB;IAC1C,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU;SACvC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,uBAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC7C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
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
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
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 (
|
|
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":";;
|
|
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 `.
|
|
79
|
-
*
|
|
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;
|
|
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":"AAQA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE;QAAE,eAAe,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAGD,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,eAAO,MAAM,WAAW,UAAY,CAAC;
|
|
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
|
-
|
|
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 `.
|
|
606
|
-
*
|
|
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;
|
|
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 (
|
|
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
|
|
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, '.
|
|
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);
|