@vibe-agent-toolkit/cli 0.1.11 → 0.1.12

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 (33) 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/install-helpers.d.ts +1 -1
  19. package/dist/commands/skills/install-helpers.d.ts.map +1 -1
  20. package/dist/commands/skills/install-helpers.js +7 -2
  21. package/dist/commands/skills/install-helpers.js.map +1 -1
  22. package/dist/commands/skills/shared.d.ts +23 -0
  23. package/dist/commands/skills/shared.d.ts.map +1 -0
  24. package/dist/commands/skills/shared.js +33 -0
  25. package/dist/commands/skills/shared.js.map +1 -0
  26. package/dist/commands/skills/validate-command.d.ts.map +1 -1
  27. package/dist/commands/skills/validate-command.js +55 -42
  28. package/dist/commands/skills/validate-command.js.map +1 -1
  29. package/dist/commands/skills/validate.d.ts +6 -11
  30. package/dist/commands/skills/validate.d.ts.map +1 -1
  31. package/dist/commands/skills/validate.js +128 -212
  32. package/dist/commands/skills/validate.js.map +1 -1
  33. 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"}
@@ -39,7 +39,7 @@ 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
45
  //# 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,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,CAc5C"}
@@ -108,13 +108,18 @@ 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;
119
124
  }
120
125
  //# 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":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shared utilities for skills commands
3
+ */
4
+ import type { VatSkillMetadata } from '@vibe-agent-toolkit/agent-schema';
5
+ import type { createLogger } from '../../utils/logger.js';
6
+ /**
7
+ * Package.json with VAT skill metadata
8
+ */
9
+ export interface PackageJson {
10
+ name?: string;
11
+ vat?: {
12
+ skills: VatSkillMetadata[];
13
+ };
14
+ }
15
+ /**
16
+ * Read and parse package.json from current directory
17
+ */
18
+ export declare function readPackageJson(cwd: string): Promise<PackageJson>;
19
+ /**
20
+ * Validate skill source exists
21
+ */
22
+ export declare function validateSkillSource(skill: VatSkillMetadata, cwd: string, logger: ReturnType<typeof createLogger>): string;
23
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE;QACL,MAAM,EAAE,gBAAgB,EAAE,CAAC;KAC3B,CAAC;CACF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAWvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,GACrC,MAAM,CAWR"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shared utilities for skills commands
3
+ */
4
+ import { existsSync } from 'node:fs';
5
+ import { readFile } from 'node:fs/promises';
6
+ import { join, resolve } from 'node:path';
7
+ /**
8
+ * Read and parse package.json from current directory
9
+ */
10
+ export async function readPackageJson(cwd) {
11
+ const packageJsonPath = join(cwd, 'package.json');
12
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Reading from validated current directory
13
+ if (!existsSync(packageJsonPath)) {
14
+ throw new Error(`package.json not found in current directory: ${cwd}`);
15
+ }
16
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Reading from validated current directory
17
+ const content = await readFile(packageJsonPath, 'utf-8');
18
+ return JSON.parse(content);
19
+ }
20
+ /**
21
+ * Validate skill source exists
22
+ */
23
+ export function validateSkillSource(skill, cwd, logger) {
24
+ const sourcePath = resolve(cwd, skill.source);
25
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- Path resolved from package.json
26
+ if (!existsSync(sourcePath)) {
27
+ logger.error(`❌ Skill source not found: ${skill.source}`);
28
+ logger.error(` Expected path: ${sourcePath}`);
29
+ process.exit(1);
30
+ }
31
+ return sourcePath;
32
+ }
33
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/skills/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgB1C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAChD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAElD,+GAA+G;IAC/G,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,gDAAgD,GAAG,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,+GAA+G;IAC/G,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAClC,KAAuB,EACvB,GAAW,EACX,MAAuC;IAEvC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE9C,sGAAsG;IACtG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-command.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/validate-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,qBAAqB,IAAI,OAAO,CA0E/C"}
1
+ {"version":3,"file":"validate-command.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/validate-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,qBAAqB,IAAI,OAAO,CAuF/C"}
@@ -6,50 +6,63 @@ import { validateCommand } from './validate.js';
6
6
  export function createValidateCommand() {
7
7
  const command = new Command('validate');
8
8
  command
9
- .description('Validate SKILL.md files (links, frontmatter, skill rules)')
10
- .argument('[path]', 'Path to validate (default: current directory)')
11
- .option('-u, --user', 'Validate user-installed skills in ~/.claude')
9
+ .description('Validate skills for packaging (reads vat.skills from package.json)')
10
+ .argument('[path]', 'Path to directory with package.json (default: current directory)')
11
+ .option('--skill <name>', 'Validate specific skill only')
12
+ .option('-v, --verbose', 'Show full details including excluded reference paths')
12
13
  .option('-d, --debug', 'Enable debug logging')
13
14
  .action(validateCommand)
14
15
  .addHelpText('after', `
15
16
  Description:
16
- Validates all SKILL.md files using both resource validation (markdown,
17
- links, frontmatter) and skill-specific validation (reserved words, XML
18
- tags, console compatibility). Reports all errors in a unified format.
17
+ Validates skills declared in package.json vat.skills field using
18
+ enhanced packaging validation. Checks size/complexity, link depth,
19
+ navigation patterns, and applies validation overrides.
19
20
 
20
- Supports three modes:
21
- - Project mode (default): Validate project skills with strict filename validation
22
- - User mode (--user): Validate ~/.claude skills with permissive validation
23
- - Path mode: Validate skills at specific path with strict validation
21
+ Reads skills from package.json vat.skills and runs validateSkillForPackaging()
22
+ for each skill. Supports validation overrides with expiration checking.
24
23
 
25
- Validation Modes:
26
- Project mode (strict):
27
- - Respects vibe-agent-toolkit.config.yaml boundaries
28
- - Filename must be exactly "SKILL.md" (case-sensitive)
29
- - Errors on non-standard filenames (skill.md, Skill.md)
24
+ Validation Checks:
25
+ Required (non-overridable):
26
+ - Valid YAML frontmatter
27
+ - Skill has a name
28
+ - No reserved words (anthropic/claude)
29
+ - No broken internal links
30
+ - No circular references
31
+ - Links stay within package boundary
32
+ - No filename collisions
33
+ - Forward slashes in paths (not backslashes)
30
34
 
31
- User mode (permissive):
32
- - Scans ~/.claude/plugins and ~/.claude/skills
33
- - Filename warnings for non-standard names (not errors)
34
- - More tolerant for user-installed content
35
+ Best practices (overridable):
36
+ - SKILL.md ≤500 lines (recommended)
37
+ - Total skill size ≤2000 lines
38
+ - File count ≤6 files
39
+ - Reference depth ≤2 levels
40
+ - No links to navigation files (README.md, index.md)
41
+ - Description ≥50 characters
42
+ - Progressive disclosure pattern
35
43
 
36
- Validation Checks:
37
- Resource validation:
38
- - Internal file links (relative paths)
39
- - Anchor links within files (#heading)
40
- - Cross-file anchor links (file.md#heading)
41
- - Frontmatter schema (if SKILL.md has frontmatter)
44
+ Validation Overrides:
45
+ Configure overrides in package.json vat.skills:
42
46
 
43
- Skill-specific validation:
44
- - Reserved word checks (name field)
45
- - XML tag detection (name/description fields)
46
- - Console compatibility warnings
47
- - Frontmatter required fields (name, description)
47
+ {
48
+ "vat": {
49
+ "skills": [{
50
+ "name": "my-skill",
51
+ "source": "./SKILL.md",
52
+ "path": "./dist/skills/my-skill",
53
+ "ignoreValidationErrors": {
54
+ "SKILL_LENGTH_EXCEEDS_RECOMMENDED": "Complex domain requires detailed examples",
55
+ "SKILL_TOO_MANY_FILES": {
56
+ "reason": "Migration in progress - will split skill",
57
+ "expires": "2026-06-01"
58
+ }
59
+ }
60
+ }]
61
+ }
62
+ }
48
63
 
49
- Filename validation:
50
- - Must be "SKILL.md" (uppercase)
51
- - Strict mode: error on skill.md, Skill.md
52
- - Permissive mode: warning only
64
+ Non-overridable rules (required for correctness) cannot be ignored.
65
+ Expired overrides are reported as errors.
53
66
 
54
67
  Output:
55
68
  YAML summary → stdout (for programmatic parsing)
@@ -57,19 +70,19 @@ Output:
57
70
 
58
71
  Output includes:
59
72
  - status: success/error
60
- - skillsValidated: number of SKILL.md files found
61
- - results: per-skill validation details
73
+ - skillsValidated: number of skills validated
74
+ - results: per-skill validation details (activeErrors, ignoredErrors, expiredOverrides)
62
75
  - durationSecs: validation time
63
76
 
64
77
  Exit Codes:
65
- 0 - All validations passed
66
- 1 - Validation errors found (warnings don't fail)
67
- 2 - System error (file not found, config invalid, etc.)
78
+ 0 - All validations passed (or all errors ignored by valid overrides)
79
+ 1 - Active validation errors found (or expired overrides)
80
+ 2 - System error (file not found, invalid config, etc.)
68
81
 
69
82
  Examples:
70
- $ vat skills validate # Project mode: validate all project skills
71
- $ vat skills validate --user # User mode: validate ~/.claude skills
72
- $ vat skills validate packages/ # Path mode: validate specific directory
83
+ $ vat skills validate # Validate all skills in package.json
84
+ $ vat skills validate --skill my-skill # Validate specific skill only
85
+ $ vat skills validate packages/my-pkg/ # Validate skills in specific directory
73
86
  `);
74
87
  return command;
75
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate-command.js","sourceRoot":"","sources":["../../../src/commands/skills/validate-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO;SACJ,WAAW,CAAC,2DAA2D,CAAC;SACxE,QAAQ,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACnE,MAAM,CAAC,YAAY,EAAE,6CAA6C,CAAC;SACnE,MAAM,CAAC,aAAa,EAAE,sBAAsB,CAAC;SAC7C,MAAM,CAAC,eAAe,CAAC;SACvB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DL,CACI,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"validate-command.js","sourceRoot":"","sources":["../../../src/commands/skills/validate-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO;SACJ,WAAW,CAAC,oEAAoE,CAAC;SACjF,QAAQ,CAAC,QAAQ,EAAE,kEAAkE,CAAC;SACtF,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;SACxD,MAAM,CAAC,eAAe,EAAE,sDAAsD,CAAC;SAC/E,MAAM,CAAC,aAAa,EAAE,sBAAsB,CAAC;SAC7C,MAAM,CAAC,eAAe,CAAC;SACvB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEL,CACI,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,24 +1,19 @@
1
1
  /**
2
- * Skills validate command - unified validation for SKILL.md files
2
+ * Skills validate command - validate skills for packaging
3
3
  *
4
- * Combines resource validation (markdown, links, frontmatter) with
5
- * skill-specific validation (reserved words, XML tags, console compatibility).
6
- *
7
- * Supports three modes:
8
- * 1. Project context (default): Validate project skills with strict filename validation
9
- * 2. User context (--user flag): Validate ~/.claude skills with permissive validation
10
- * 3. Path context (explicit path): Validate skills at specific path
4
+ * Validates skills declared in package.json vat.skills using validateSkillForPackaging.
5
+ * Supports validation overrides and expiration checking.
11
6
  */
12
7
  /**
13
8
  * Skills validate command options
14
9
  */
15
- interface SkillsValidateCommandOptions {
10
+ export interface SkillsValidateCommandOptions {
11
+ skill?: string;
16
12
  debug?: boolean;
17
- user?: boolean;
13
+ verbose?: boolean;
18
14
  }
19
15
  /**
20
16
  * Skills validate command implementation
21
17
  */
22
18
  export declare function validateCommand(pathArg: string | undefined, options: SkillsValidateCommandOptions): Promise<void>;
23
- export {};
24
19
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAoSH;;GAEG;AACH,UAAU,4BAA4B;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAkGf"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA6LD;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAoCf"}