@vibe-agent-toolkit/cli 0.1.11 → 0.1.13

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 (44) hide show
  1. package/dist/commands/audit.d.ts.map +1 -1
  2. package/dist/commands/audit.js +30 -10
  3. package/dist/commands/audit.js.map +1 -1
  4. package/dist/commands/resources/index.d.ts.map +1 -1
  5. package/dist/commands/resources/index.js +19 -4
  6. package/dist/commands/resources/index.js.map +1 -1
  7. package/dist/commands/resources/validate.d.ts +2 -0
  8. package/dist/commands/resources/validate.d.ts.map +1 -1
  9. package/dist/commands/resources/validate.js +6 -3
  10. package/dist/commands/resources/validate.js.map +1 -1
  11. package/dist/commands/skills/build.d.ts.map +1 -1
  12. package/dist/commands/skills/build.js +85 -37
  13. package/dist/commands/skills/build.js.map +1 -1
  14. package/dist/commands/skills/command-helpers.d.ts +17 -1
  15. package/dist/commands/skills/command-helpers.d.ts.map +1 -1
  16. package/dist/commands/skills/command-helpers.js +16 -0
  17. package/dist/commands/skills/command-helpers.js.map +1 -1
  18. package/dist/commands/skills/index.d.ts.map +1 -1
  19. package/dist/commands/skills/index.js +13 -8
  20. package/dist/commands/skills/index.js.map +1 -1
  21. package/dist/commands/skills/install-helpers.d.ts +7 -2
  22. package/dist/commands/skills/install-helpers.d.ts.map +1 -1
  23. package/dist/commands/skills/install-helpers.js +18 -2
  24. package/dist/commands/skills/install-helpers.js.map +1 -1
  25. package/dist/commands/skills/install.d.ts +2 -0
  26. package/dist/commands/skills/install.d.ts.map +1 -1
  27. package/dist/commands/skills/install.js +227 -56
  28. package/dist/commands/skills/install.js.map +1 -1
  29. package/dist/commands/skills/shared.d.ts +23 -0
  30. package/dist/commands/skills/shared.d.ts.map +1 -0
  31. package/dist/commands/skills/shared.js +33 -0
  32. package/dist/commands/skills/shared.js.map +1 -0
  33. package/dist/commands/skills/uninstall.d.ts +11 -0
  34. package/dist/commands/skills/uninstall.d.ts.map +1 -0
  35. package/dist/commands/skills/uninstall.js +142 -0
  36. package/dist/commands/skills/uninstall.js.map +1 -0
  37. package/dist/commands/skills/validate-command.d.ts.map +1 -1
  38. package/dist/commands/skills/validate-command.js +55 -42
  39. package/dist/commands/skills/validate-command.js.map +1 -1
  40. package/dist/commands/skills/validate.d.ts +6 -11
  41. package/dist/commands/skills/validate.d.ts.map +1 -1
  42. package/dist/commands/skills/validate.js +128 -212
  43. package/dist/commands/skills/validate.js.map +1 -1
  44. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"command-helpers.js","sourceRoot":"","sources":["../../../src/commands/skills/command-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,MAAc,EACd,SAAiB,EACjB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAExC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,KAAK,IAAI,gBAAgB,EAAE,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,YAAY,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,QAAQ,IAAI,CAAC,CAAC;IAExC,yCAAyC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAA0B,EAC1B,SAAkB;IAElB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAE1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,UAAU,SAAS,wCAAwC,CAC5D,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAiD;IAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"command-helpers.js","sourceRoot":"","sources":["../../../src/commands/skills/command-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAE,YAAY,EAAe,MAAM,uBAAuB,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,MAAc,EACd,SAAiB,EACjB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAExC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,KAAK,IAAI,gBAAgB,EAAE,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,YAAY,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,QAAQ,IAAI,CAAC,CAAC;IAExC,yCAAyC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAA0B,EAC1B,SAAkB;IAElB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAE1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,UAAU,SAAS,wCAAwC,CAC5D,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAiD;IAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA2B,EAC3B,KAAe;IAEf,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEvD,MAAM,CAAC,IAAI,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;IAEnD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,mBAAmB,IAAI,OAAO,CAwC7C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,IAAI,OAAO,CA4C7C"}
@@ -8,6 +8,7 @@ import { createBuildCommand } from './build.js';
8
8
  import { createInstallCommand } from './install.js';
9
9
  import { listCommand } from './list.js';
10
10
  import { createPackageCommand } from './package.js';
11
+ import { createUninstallCommand } from './uninstall.js';
11
12
  import { createValidateCommand } from './validate-command.js';
12
13
  export function createSkillsCommand() {
13
14
  const command = new Command('skills');
@@ -18,9 +19,10 @@ export function createSkillsCommand() {
18
19
  Examples:
19
20
  $ vat skills validate # Validate all skills
20
21
  $ vat skills build # Build skills from package.json
21
- $ vat skills package resources/skills/SKILL.md # Package a skill
22
- $ vat skills install ./my-skill.zip # Install from ZIP
23
- $ vat skills list # List installed skills
22
+ $ vat skills install --dev # Dev-install (symlink) all skills
23
+ $ vat skills install --build # Build then dev-install
24
+ $ vat skills uninstall --all # Uninstall all package skills
25
+ $ vat skills list --user # List installed skills
24
26
 
25
27
  Distribution Workflow:
26
28
  1. Validate: Ensure SKILL.md is valid
@@ -29,18 +31,21 @@ Distribution Workflow:
29
31
  4. Share: Distribute via npm or GitHub releases
30
32
  5. Install: Users install from npm or extract ZIP to ~/.claude/plugins/
31
33
 
34
+ Development Workflow:
35
+ 1. Build: vat skills build
36
+ 2. Install: vat skills install --dev (or --build to combine)
37
+ 3. Iterate: Rebuild, /reload-skills in Claude Code
38
+ 4. Clean up: vat skills uninstall --all
39
+
32
40
  For detailed command help:
33
- $ vat skills validate --help
34
- $ vat skills build --help
35
- $ vat skills package --help
36
- $ vat skills install --help
37
- $ vat skills list --help
41
+ $ vat skills <command> --help
38
42
  `);
39
43
  // Add subcommands
40
44
  command.addCommand(createValidateCommand());
41
45
  command.addCommand(createBuildCommand());
42
46
  command.addCommand(createPackageCommand());
43
47
  command.addCommand(createInstallCommand());
48
+ command.addCommand(createUninstallCommand());
44
49
  command.addCommand(createListCommand());
45
50
  return command;
46
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/skills/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,OAAO;SACJ,WAAW,CAAC,iDAAiD,CAAC;SAC9D,WAAW,CAAC,KAAK,CAAC;SAClB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;CAqBL,CACI,CAAC;IAEJ,kBAAkB;IAClB,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO;SACJ,WAAW,CAAC,6CAA6C,CAAC;SAC1D,QAAQ,CAAC,QAAQ,EAAE,uDAAuD,CAAC;SAC3E,MAAM,CAAC,YAAY,EAAE,yCAAyC,CAAC;SAC/D,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,WAAW,CAAC;SACnB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCL,CACI,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wEAAwE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/skills/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,OAAO;SACJ,WAAW,CAAC,iDAAiD,CAAC;SAC9D,WAAW,CAAC,KAAK,CAAC;SAClB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;CAwBL,CACI,CAAC;IAEJ,kBAAkB;IAClB,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO;SACJ,WAAW,CAAC,6CAA6C,CAAC;SAC1D,QAAQ,CAAC,QAAQ,EAAE,uDAAuD,CAAC;SAC3E,MAAM,CAAC,YAAY,EAAE,yCAAyC,CAAC;SAC/D,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,WAAW,CAAC;SACnB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCL,CACI,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wEAAwE"}
@@ -8,7 +8,7 @@
8
8
  * - npm postinstall hook
9
9
  */
10
10
  import type { VatSkillMetadata } from '@vibe-agent-toolkit/agent-schema';
11
- export type SkillSource = 'npm' | 'local' | 'zip' | 'npm-postinstall';
11
+ export type SkillSource = 'npm' | 'local' | 'zip' | 'npm-postinstall' | 'dev';
12
12
  export interface PackageJsonVat {
13
13
  version?: string;
14
14
  type?: string;
@@ -39,7 +39,12 @@ export declare function readPackageJsonVatMetadata(dir: string): Promise<{
39
39
  export declare function downloadNpmPackage(packageName: string, tempDir: string): string;
40
40
  /**
41
41
  * Validate npm postinstall environment
42
- * Returns true if running in global install context
42
+ * Returns true if running in global install context (but not during npm link)
43
43
  */
44
44
  export declare function isGlobalNpmInstall(): boolean;
45
+ /**
46
+ * Write the common YAML header for skill command output
47
+ * Eliminates duplication between install and uninstall output functions
48
+ */
49
+ export declare function writeYamlHeader(dryRun?: boolean): void;
45
50
  //# sourceMappingURL=install-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/install-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIzE,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,iBAAiB,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,cAAc,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAqCvD;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC,CAwBnE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAyC/E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAQ5C"}
1
+ {"version":3,"file":"install-helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/install-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIzE,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,iBAAiB,GAAG,KAAK,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,cAAc,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAqCvD;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC,CAwBnE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAyC/E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAc5C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAMtD"}
@@ -108,13 +108,29 @@ export function downloadNpmPackage(packageName, tempDir) {
108
108
  }
109
109
  /**
110
110
  * Validate npm postinstall environment
111
- * Returns true if running in global install context
111
+ * Returns true if running in global install context (but not during npm link)
112
112
  */
113
113
  export function isGlobalNpmInstall() {
114
114
  // Check if npm_config_global is set (npm sets this during global installs)
115
115
  const isGlobal = process.env['npm_config_global'] === 'true';
116
116
  // Check if running as postinstall script
117
117
  const isPostinstall = process.env['npm_lifecycle_event'] === 'postinstall';
118
- return isGlobal && isPostinstall;
118
+ // Check npm command to distinguish between:
119
+ // - npm install -g → npm_command === 'install' → Run postinstall ✅
120
+ // - npm link → npm_command === 'link' → Skip postinstall ✅
121
+ // This prevents npm link from corrupting npm's internal state
122
+ const isInstallCommand = process.env['npm_command'] === 'install';
123
+ return isGlobal && isPostinstall && isInstallCommand;
124
+ }
125
+ /**
126
+ * Write the common YAML header for skill command output
127
+ * Eliminates duplication between install and uninstall output functions
128
+ */
129
+ export function writeYamlHeader(dryRun) {
130
+ process.stdout.write('---\n');
131
+ process.stdout.write(`status: success\n`);
132
+ if (dryRun) {
133
+ process.stdout.write(`dryRun: true\n`);
134
+ }
119
135
  }
120
136
  //# sourceMappingURL=install-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-helpers.js","sourceRoot":"","sources":["../../../src/commands/skills/install-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-helpers.js","sourceRoot":"","sources":["../../../src/commands/skills/install-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAgB3B;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,wCAAwC;IACxC,IAAI,KAAK,KAAK,mBAAmB,EAAE,CAAC;QAClC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,mCAAmC;IACnC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gCAAgC;IAChC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpC,iGAAiG;IACjG,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,kHAAkH;QAClH,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,IAAI;QACzC,mFAAmF,CACtF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAW;IAEX,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAElD,yGAAyG;IACzG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,yGAAyG;IACzG,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;IAEvD,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,qDAAqD;YACnD,YAAY,WAAW,CAAC,IAAI,IAAI;YAChC,oDAAoD,CACvD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,WAAW;QACX,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,OAAe;IACrE,gCAAgC;IAChC,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;QACtD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,WAAW,CAAC;IAEhB,iEAAiE;IACjE,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE;QAClE,GAAG,EAAE,OAAO;QACZ,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,gCAAgC,iBAAiB,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,4DAA4D;IAC5D,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAE/C,wGAAwG;IACxG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,6CAA6C,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,yDAAyD;IACzD,gCAAgC;IAChC,GAAG,CAAC,OAAO,CAAC;QACV,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE5C,wGAAwG;IACxG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,MAAM,CAAC;IAE7D,yCAAyC;IACzC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,aAAa,CAAC;IAE3E,4CAA4C;IAC5C,mEAAmE;IACnE,2DAA2D;IAC3D,8DAA8D;IAC9D,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,SAAS,CAAC;IAElE,OAAO,QAAQ,IAAI,aAAa,IAAI,gBAAgB,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAgB;IAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC1C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
@@ -15,6 +15,8 @@ export interface SkillsInstallCommandOptions {
15
15
  dryRun?: boolean;
16
16
  debug?: boolean;
17
17
  npmPostinstall?: boolean;
18
+ dev?: boolean;
19
+ build?: boolean;
18
20
  }
19
21
  export declare function createInstallCommand(): Command;
20
22
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAoD9C"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CA2D9C"}
@@ -7,16 +7,16 @@
7
7
  * - Local directory
8
8
  * - npm postinstall hook (--npm-postinstall)
9
9
  */
10
- import { existsSync } from 'node:fs';
11
- import { cp, mkdir, mkdtemp, rm } from 'node:fs/promises';
10
+ import { existsSync, lstatSync } from 'node:fs';
11
+ import { cp, mkdir, mkdtemp, rm, symlink } from 'node:fs/promises';
12
12
  import { basename, join, resolve } from 'node:path';
13
- import { normalizedTmpdir } from '@vibe-agent-toolkit/utils';
13
+ import { normalizedTmpdir, safeExecSync } from '@vibe-agent-toolkit/utils';
14
14
  import AdmZip from 'adm-zip';
15
15
  import { Command } from 'commander';
16
16
  import { getClaudeUserPaths } from '../../utils/claude-paths.js';
17
17
  import { handleCommandError } from '../../utils/command-error.js';
18
18
  import { createLogger } from '../../utils/logger.js';
19
- import { detectSource, downloadNpmPackage, isGlobalNpmInstall, readPackageJsonVatMetadata, } from './install-helpers.js';
19
+ import { detectSource, downloadNpmPackage, isGlobalNpmInstall, readPackageJsonVatMetadata, writeYamlHeader, } from './install-helpers.js';
20
20
  export function createInstallCommand() {
21
21
  const command = new Command('install');
22
22
  command
@@ -27,26 +27,32 @@ export function createInstallCommand() {
27
27
  .option('-f, --force', 'Overwrite existing skill if present', false)
28
28
  .option('--dry-run', 'Preview installation without creating files', false)
29
29
  .option('--npm-postinstall', 'Run as npm postinstall hook (internal use)', false)
30
+ .option('-d, --dev', 'Development mode: symlink skills from cwd package.json (rebuilds reflected immediately)')
31
+ .option('--build', 'Build skills before installing (implies --dev)')
30
32
  .option('--debug', 'Enable debug logging')
31
33
  .action(installCommand)
32
34
  .addHelpText('after', `
33
35
  Description:
34
- Installs a skill to Claude Code's skills directory from various sources.
36
+ Installs skills to Claude Code's skills directory from various sources.
35
37
 
36
38
  Supported sources:
37
39
  - npm package: npm:@scope/package-name
38
40
  - Local ZIP file: ./path/to/skill.zip
39
41
  - Local directory: ./path/to/skill-dir
40
42
  - npm postinstall: --npm-postinstall (automatic during global install)
43
+ - Dev mode: --dev (symlinks from cwd package.json vat.skills[])
41
44
 
42
45
  Default skills directory: ~/.claude/skills/
43
46
 
47
+ Dev mode creates symlinks so rebuilds are immediately reflected.
48
+ Use --build to auto-build before symlinking.
49
+
44
50
  Output:
45
51
  - status: success/error
46
52
  - skillName: Name of installed skill
47
53
  - installPath: Where the skill was installed
48
54
  - source: Original source
49
- - sourceType: npm/local/zip/npm-postinstall
55
+ - sourceType: npm/local/zip/npm-postinstall/dev
50
56
 
51
57
  Exit Codes:
52
58
  0 - Installation successful
@@ -54,10 +60,11 @@ Exit Codes:
54
60
  2 - System error
55
61
 
56
62
  Example:
57
- $ vat skills install npm:@vibe-agent-toolkit/vat-development-agents
58
- $ vat skills install ./cat-agents-skill.zip
59
- $ vat skills install ./my-skill-dir --name custom-skill-name
60
- $ vat skills install skill.zip --force
63
+ $ vat skills install --dev # Symlink all skills from cwd
64
+ $ vat skills install --build # Build + symlink
65
+ $ vat skills install --dev --name my-skill # Symlink specific skill
66
+ $ vat skills install npm:@scope/package # Install from npm
67
+ $ vat skills install ./my-skill.zip --force # Install from ZIP
61
68
  `);
62
69
  return command;
63
70
  }
@@ -65,6 +72,15 @@ async function installCommand(source, options) {
65
72
  const logger = createLogger(options.debug ? { debug: true } : {});
66
73
  const startTime = Date.now();
67
74
  try {
75
+ // Handle --build (implies --dev)
76
+ if (options.build) {
77
+ options.dev = true;
78
+ }
79
+ // Handle --dev flag
80
+ if (options.dev) {
81
+ await handleDevInstall(options, logger, startTime);
82
+ return;
83
+ }
68
84
  // Handle --npm-postinstall flag
69
85
  if (options.npmPostinstall) {
70
86
  await handleNpmPostinstall(options, logger, startTime);
@@ -95,6 +111,10 @@ async function installCommand(source, options) {
95
111
  // This case is handled by --npm-postinstall flag, not by source detection
96
112
  throw new Error('npm-postinstall source type should be handled by --npm-postinstall flag');
97
113
  }
114
+ case 'dev': {
115
+ // This case is handled by --dev flag, not by source detection
116
+ throw new Error('dev source type should be handled by --dev flag');
117
+ }
98
118
  }
99
119
  }
100
120
  catch (error) {
@@ -103,6 +123,7 @@ async function installCommand(source, options) {
103
123
  }
104
124
  /**
105
125
  * Handle npm package installation
126
+ * Installs ALL skills from the package (or filtered by --name)
106
127
  */
107
128
  async function handleNpmInstall(source, options, logger, startTime) {
108
129
  const packageName = source.startsWith('npm:') ? source.slice(4) : source;
@@ -118,20 +139,25 @@ async function handleNpmInstall(source, options, logger, startTime) {
118
139
  if (skills.length === 0) {
119
140
  throw new Error(`No skills found in package ${packageName}`);
120
141
  }
121
- // Install first skill (or specific skill if --name provided)
122
- const skillToInstall = options.name
123
- ? skills.find(s => s.name === options.name)
124
- : skills[0];
125
- if (!skillToInstall) {
142
+ // Filter by --name if specified, otherwise install all
143
+ const skillsToInstall = options.name
144
+ ? skills.filter(s => s.name === options.name)
145
+ : skills;
146
+ if (skillsToInstall.length === 0) {
126
147
  throw new Error(`Skill "${options.name ?? ''}" not found in package ${packageName}. ` +
127
148
  `Available: ${skills.map(s => s.name).join(', ')}`);
128
149
  }
129
- // Determine skill path (from vat.skills metadata)
130
- const skillPath = resolve(extractedPath, skillToInstall.path);
131
- // Install skill
132
- await installSkillFromPath(skillPath, skillToInstall.name, options, logger);
150
+ const skillsDir = options.skillsDir ?? getClaudeUserPaths().skillsDir;
151
+ // Install all matching skills
152
+ for (const skill of skillsToInstall) {
153
+ const skillPath = resolve(extractedPath, skill.path);
154
+ await installSkillFromPath(skillPath, skill.name, options, logger);
155
+ }
133
156
  const duration = Date.now() - startTime;
134
- outputSuccess(skillToInstall.name, join(options.skillsDir ?? getClaudeUserPaths().skillsDir, skillToInstall.name), `npm:${packageName}`, 'npm', duration, logger, options.dryRun);
157
+ outputInstallSuccess(skillsToInstall.map(s => ({
158
+ name: s.name,
159
+ installPath: join(skillsDir, s.name),
160
+ })), `npm:${packageName}`, 'npm', duration, logger, options.dryRun);
135
161
  process.exit(0);
136
162
  }
137
163
  finally {
@@ -141,6 +167,7 @@ async function handleNpmInstall(source, options, logger, startTime) {
141
167
  }
142
168
  /**
143
169
  * Handle local directory installation
170
+ * If directory has package.json with vat.skills, installs ALL skills (or filtered by --name)
144
171
  */
145
172
  async function handleLocalInstall(source, options, logger, startTime) {
146
173
  const sourcePath = resolve(source);
@@ -149,29 +176,32 @@ async function handleLocalInstall(source, options, logger, startTime) {
149
176
  const packageJsonPath = join(sourcePath, 'package.json');
150
177
  // eslint-disable-next-line security/detect-non-literal-fs-filename -- User-provided CLI argument
151
178
  const hasPackageJson = existsSync(packageJsonPath);
152
- let skillName;
153
- let skillPath;
179
+ const skillsDir = options.skillsDir ?? getClaudeUserPaths().skillsDir;
180
+ let installed;
154
181
  if (hasPackageJson) {
155
- // Read vat metadata
156
- const { skills } = await readPackageJsonVatMetadata(sourcePath);
157
- const skillToInstall = options.name
158
- ? skills.find(s => s.name === options.name)
159
- : skills[0];
160
- if (!skillToInstall) {
161
- throw new Error(`Skill "${options.name ?? ''}" not found in package. ` +
182
+ // Read vat metadata - install all skills (or filtered by --name)
183
+ const { packageJson, skills } = await readPackageJsonVatMetadata(sourcePath);
184
+ const skillsToInstall = options.name
185
+ ? skills.filter(s => s.name === options.name)
186
+ : skills;
187
+ if (skillsToInstall.length === 0) {
188
+ throw new Error(`Skill "${options.name ?? ''}" not found in package ${packageJson.name}. ` +
162
189
  `Available: ${skills.map(s => s.name).join(', ')}`);
163
190
  }
164
- skillName = skillToInstall.name;
165
- skillPath = resolve(sourcePath, skillToInstall.path);
191
+ for (const skill of skillsToInstall) {
192
+ const skillPath = resolve(sourcePath, skill.path);
193
+ await installSkillFromPath(skillPath, skill.name, options, logger);
194
+ }
195
+ installed = skillsToInstall.map(s => ({ name: s.name, installPath: join(skillsDir, s.name) }));
166
196
  }
167
197
  else {
168
198
  // Plain directory - use directory name
169
- skillName = options.name ?? basename(sourcePath);
170
- skillPath = sourcePath;
199
+ const skillName = options.name ?? basename(sourcePath);
200
+ await installSkillFromPath(sourcePath, skillName, options, logger);
201
+ installed = [{ name: skillName, installPath: join(skillsDir, skillName) }];
171
202
  }
172
- await installSkillFromPath(skillPath, skillName, options, logger);
173
203
  const duration = Date.now() - startTime;
174
- outputSuccess(skillName, join(options.skillsDir ?? getClaudeUserPaths().skillsDir, skillName), `local:${sourcePath}`, 'local', duration, logger, options.dryRun);
204
+ outputInstallSuccess(installed, `local:${sourcePath}`, 'local', duration, logger, options.dryRun);
175
205
  process.exit(0);
176
206
  }
177
207
  /**
@@ -195,9 +225,143 @@ async function handleZipInstall(source, options, logger, startTime) {
195
225
  zip.extractAllTo(installPath, /* overwrite */ true);
196
226
  }
197
227
  const duration = Date.now() - startTime;
198
- outputSuccess(skillName, installPath, sourcePath, 'zip', duration, logger, options.dryRun);
228
+ outputInstallSuccess([{ name: skillName, installPath }], sourcePath, 'zip', duration, logger, options.dryRun);
229
+ process.exit(0);
230
+ }
231
+ /**
232
+ * Handle development mode installation (symlinks)
233
+ * Reads package.json vat.skills[], symlinks each built skill to ~/.claude/skills/
234
+ */
235
+ async function handleDevInstall(options, logger, startTime) {
236
+ // Windows check - symlinks require elevated privileges
237
+ if (process.platform === 'win32') {
238
+ throw new Error('--dev (symlink) not supported on Windows.\n' +
239
+ 'Use copy mode (omit --dev) or WSL for development.');
240
+ }
241
+ const cwd = process.cwd();
242
+ // If --build, shell out to vat skills build first
243
+ if (options.build) {
244
+ runSkillsBuild(cwd, options.name, logger);
245
+ }
246
+ // Read package.json for skill metadata
247
+ const { packageJson, skills } = await readPackageJsonVatMetadata(cwd);
248
+ logger.info(`📥 Dev-installing skills from ${packageJson.name}`);
249
+ // Filter by --name if specified
250
+ const skillsToInstall = options.name
251
+ ? skills.filter(s => s.name === options.name)
252
+ : skills;
253
+ if (skillsToInstall.length === 0) {
254
+ const msg = options.name
255
+ ? `Skill "${options.name}" not found in package. Available: ${skills.map(s => s.name).join(', ')}`
256
+ : `No skills found in ${packageJson.name}`;
257
+ throw new Error(msg);
258
+ }
259
+ const skillsDir = options.skillsDir ?? getClaudeUserPaths().skillsDir;
260
+ const installed = [];
261
+ for (const skill of skillsToInstall) {
262
+ const result = await symlinkSkill(skill, cwd, skillsDir, options, logger);
263
+ installed.push(result);
264
+ }
265
+ const duration = Date.now() - startTime;
266
+ outputDevSuccess(installed, packageJson.name, duration, logger, options.dryRun);
199
267
  process.exit(0);
200
268
  }
269
+ /**
270
+ * Shell out to vat skills build
271
+ */
272
+ function runSkillsBuild(cwd, skillName, logger) {
273
+ logger.info('🔨 Building skills first...');
274
+ const binPath = resolve(join(import.meta.dirname, '../../bin/vat.js'));
275
+ const buildArgs = ['skills', 'build'];
276
+ if (skillName) {
277
+ buildArgs.push('--skill', skillName);
278
+ }
279
+ safeExecSync('node', [binPath, ...buildArgs], {
280
+ cwd,
281
+ stdio: ['inherit', 'inherit', 'inherit'],
282
+ });
283
+ logger.info('');
284
+ }
285
+ /**
286
+ * Symlink a single skill to the skills directory
287
+ * Verifies skill is built, checks for existing installation, creates symlink
288
+ */
289
+ async function symlinkSkill(skill, cwd, skillsDir, options, logger) {
290
+ const sourcePath = resolve(cwd, skill.path);
291
+ const installPath = join(skillsDir, skill.name);
292
+ // Verify skill is built
293
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Validated path from package.json
294
+ if (!existsSync(sourcePath)) {
295
+ const buildCmd = options.name ? `vat skills build --skill ${skill.name}` : 'vat skills build';
296
+ throw new Error(`Skill "${skill.name}" not built at ${sourcePath}\n` +
297
+ `Run: ${buildCmd}\n` +
298
+ `Or use: vat skills install --build`);
299
+ }
300
+ // Check existing installation
301
+ const existingIsSymlink = await handleExistingDevInstall(installPath, skill.name, options);
302
+ if (!options.dryRun) {
303
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Skills directory from config
304
+ await mkdir(skillsDir, { recursive: true });
305
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Validated paths
306
+ await symlink(sourcePath, installPath, 'dir');
307
+ }
308
+ const action = existingIsSymlink ? 'Re-symlinked' : 'Symlinked';
309
+ logger.info(` ${options.dryRun ? 'Would symlink' : action}: ${skill.name} → ${sourcePath}`);
310
+ return { name: skill.name, installPath, sourcePath };
311
+ }
312
+ /**
313
+ * Check if a skill is already installed at the target path
314
+ * Returns whether the existing entry was a symlink (for logging)
315
+ */
316
+ async function handleExistingDevInstall(installPath, skillName, options) {
317
+ let existingIsSymlink = false;
318
+ try {
319
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Validated install path
320
+ lstatSync(installPath);
321
+ // Path exists (lstat doesn't follow symlinks, so broken symlinks are detected)
322
+ if (!options.force) {
323
+ throw new Error(`Skill "${skillName}" already installed at ${installPath}.\n` +
324
+ `Use --force to overwrite.`);
325
+ }
326
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Validated install path
327
+ existingIsSymlink = lstatSync(installPath).isSymbolicLink();
328
+ if (!options.dryRun) {
329
+ await rm(installPath, { recursive: true, force: true });
330
+ }
331
+ }
332
+ catch (error) {
333
+ // Re-throw if it's our "already installed" error
334
+ if (error instanceof Error && error.message.includes('already installed')) {
335
+ throw error;
336
+ }
337
+ // Otherwise: not installed, continue
338
+ }
339
+ return existingIsSymlink;
340
+ }
341
+ /**
342
+ * Output success YAML for dev install (multiple skills)
343
+ */
344
+ function outputDevSuccess(installed, packageName, duration, logger, dryRun) {
345
+ writeYamlHeader(dryRun);
346
+ process.stdout.write(`sourceType: dev\n`);
347
+ process.stdout.write(`package: "${packageName}"\n`);
348
+ process.stdout.write(`skillsInstalled: ${installed.length}\n`);
349
+ process.stdout.write(`symlink: true\n`);
350
+ process.stdout.write(`skills:\n`);
351
+ for (const skill of installed) {
352
+ process.stdout.write(` - name: ${skill.name}\n`);
353
+ process.stdout.write(` installPath: ${skill.installPath}\n`);
354
+ process.stdout.write(` sourcePath: ${skill.sourcePath}\n`);
355
+ }
356
+ process.stdout.write(`duration: ${duration}ms\n`);
357
+ if (dryRun) {
358
+ logger.info(`\n✅ Dry-run complete: ${installed.length} skill(s) would be symlinked`);
359
+ }
360
+ else {
361
+ logger.info(`\n✅ Dev-installed ${installed.length} skill(s) via symlink`);
362
+ logger.info(` After rebuilding, run /reload-skills in Claude Code`);
363
+ }
364
+ }
201
365
  /**
202
366
  * Handle npm postinstall hook
203
367
  */
@@ -230,14 +394,25 @@ async function handleNpmPostinstall(options, logger, startTime) {
230
394
  async function prepareInstallation(skillName, options) {
231
395
  const skillsDir = options.skillsDir ?? getClaudeUserPaths().skillsDir;
232
396
  const installPath = join(skillsDir, skillName);
233
- // Check if skill already exists
234
- // eslint-disable-next-line security/detect-non-literal-fs-filename -- Constructed from validated paths
235
- if (existsSync(installPath) && !options.force) {
397
+ // Check if skill already exists (lstatSync detects broken symlinks too)
398
+ let exists = false;
399
+ try {
400
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Install path from config
401
+ lstatSync(installPath);
402
+ exists = true;
403
+ }
404
+ catch {
405
+ // Does not exist
406
+ }
407
+ if (exists && !options.force) {
236
408
  throw new Error(`Skill already exists at ${installPath}. Use --force to overwrite.`);
237
409
  }
410
+ if (exists && options.force && !options.dryRun) {
411
+ await rm(installPath, { recursive: true, force: true });
412
+ }
238
413
  if (!options.dryRun) {
239
- // Create plugins directory
240
- // eslint-disable-next-line security/detect-non-literal-fs-filename -- Plugins directory path, safe
414
+ // Create skills directory
415
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Skills directory path, safe
241
416
  await mkdir(skillsDir, { recursive: true });
242
417
  }
243
418
  return { skillsDir, installPath };
@@ -258,28 +433,24 @@ async function installSkillFromPath(skillPath, skillName, options, logger) {
258
433
  }
259
434
  }
260
435
  /**
261
- * Output success YAML and human-readable messages
436
+ * Output success YAML and human-readable messages for install (supports multiple skills)
262
437
  */
263
- function outputSuccess(skillName, installPath, source, sourceType, duration, logger, dryRun) {
264
- // Output YAML to stdout
265
- process.stdout.write('---\n');
266
- process.stdout.write(`status: success\n`);
267
- if (dryRun) {
268
- process.stdout.write(`dryRun: true\n`);
269
- }
270
- process.stdout.write(`skillName: ${skillName}\n`);
271
- process.stdout.write(`installPath: ${installPath}\n`);
438
+ function outputInstallSuccess(skills, source, sourceType, duration, logger, dryRun) {
439
+ writeYamlHeader(dryRun);
272
440
  process.stdout.write(`source: ${source}\n`);
273
441
  process.stdout.write(`sourceType: ${sourceType}\n`);
442
+ process.stdout.write(`skillsInstalled: ${skills.length}\n`);
443
+ process.stdout.write(`skills:\n`);
444
+ for (const skill of skills) {
445
+ process.stdout.write(` - name: ${skill.name}\n`);
446
+ process.stdout.write(` installPath: ${skill.installPath}\n`);
447
+ }
274
448
  process.stdout.write(`duration: ${duration}ms\n`);
275
449
  if (dryRun) {
276
- logger.info(`✅ Dry-run complete (no files created)`);
277
- logger.info(` Skill: ${skillName}`);
278
- logger.info(` Would install to: ${installPath}`);
450
+ logger.info(`\n✅ Dry-run complete: ${skills.length} skill(s) would be installed`);
279
451
  }
280
452
  else {
281
- logger.info(`✅ Installed skill: ${skillName}`);
282
- logger.info(` Location: ${installPath}`);
453
+ logger.info(`\n✅ Installed ${skills.length} skill(s)`);
283
454
  logger.info(`\n💡 Run 'vat skills list' to verify installation`);
284
455
  logger.info(` Restart Claude Code or run /reload-skills to use the new skill`);
285
456
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/skills/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/skills/install.ts"],"names":[],"mappings":"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"}