@vibe-agent-toolkit/agent-skills 0.1.33 → 0.1.34-rc.2

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/dist/index.d.ts CHANGED
@@ -18,11 +18,11 @@ export { validateMarketplace } from './validators/marketplace-validator.js';
18
18
  export { validatePlugin } from './validators/plugin-validator.js';
19
19
  export { validateSkill } from './validators/skill-validator.js';
20
20
  export { validate } from './validators/unified-validator.js';
21
- export { detectResourceFormat } from './validators/format-detection.js';
21
+ export { detectResourceFormat, enumerateSurfaces } from './validators/format-detection.js';
22
22
  export { validateSkillForPackaging, type ExcludedReferenceDetail, type PackagingValidationResult, type SkillPackagingConfig, type SkillValidationSharedContext, } from './validators/packaging-validator.js';
23
23
  export { type ValidationConfig } from './validators/validation-framework.js';
24
24
  export { createIssue, NAVIGATION_FILE_PATTERNS, VALIDATION_RULES, VALIDATION_THRESHOLDS, type RuleCategory, type ValidationRule, type ValidationRuleCode, } from './validators/validation-rules.js';
25
- export type { ValidationResult, ValidationIssue, ValidateOptions, ResourceFormat, } from './validators/types.js';
25
+ export type { ValidationResult, ValidationIssue, ValidateOptions, ResourceFormat, Surface, } from './validators/types.js';
26
26
  export { importSkillToAgent, type ImportOptions, type ImportResult, } from './import.js';
27
27
  export type { EvidenceRecord, EvidenceSource, EvidenceConfidence, EvidenceLocation, PatternDefinition, Observation, } from './evidence/index.js';
28
28
  export { PATTERN_REGISTRY, getPatternDefinition, assertPatternRegistered, deriveObservationsFromEvidence, } from './evidence/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE3G,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAEvI,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EACL,gBAAgB,EAChB,KAAK,iBAAiB,GACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,cAAc,GACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EACL,yBAAyB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,GAClC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE3G,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAEvI,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EACL,gBAAgB,EAChB,KAAK,iBAAiB,GACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,cAAc,GACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EACL,yBAAyB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,GAClC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,OAAO,GACR,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -18,7 +18,7 @@ export { validateMarketplace } from './validators/marketplace-validator.js';
18
18
  export { validatePlugin } from './validators/plugin-validator.js';
19
19
  export { validateSkill } from './validators/skill-validator.js';
20
20
  export { validate } from './validators/unified-validator.js';
21
- export { detectResourceFormat } from './validators/format-detection.js';
21
+ export { detectResourceFormat, enumerateSurfaces } from './validators/format-detection.js';
22
22
  export { validateSkillForPackaging, } from './validators/packaging-validator.js';
23
23
  export { createIssue, NAVIGATION_FILE_PATTERNS, VALIDATION_RULES, VALIDATION_THRESHOLDS, } from './validators/validation-rules.js';
24
24
  export { importSkillToAgent, } from './import.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAuC,MAAM,cAAc,CAAC;AAEpF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,GAMlB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,aAAa,GAMd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,wBAAwB,GAEzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,GAG/B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAqB,MAAM,4BAA4B,CAAC;AAE3G,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAA4B,MAAM,mCAAmC,CAAC;AAEvI,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EACL,gBAAgB,GAEjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAA0B,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EACL,yBAAyB,GAK1B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,GAItB,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,EACL,kBAAkB,GAGnB,MAAM,aAAa,CAAC;AAWrB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAuC,MAAM,cAAc,CAAC;AAEpF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,GAMlB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,aAAa,GAMd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,wBAAwB,GAEzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,GAG/B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAqB,MAAM,4BAA4B,CAAC;AAE3G,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAA4B,MAAM,mCAAmC,CAAC;AAEvI,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EACL,gBAAgB,GAEjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAA0B,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EACL,yBAAyB,GAK1B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,GAItB,MAAM,kCAAkC,CAAC;AAS1C,OAAO,EACL,kBAAkB,GAGnB,MAAM,aAAa,CAAC;AAWrB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC"}
@@ -11,7 +11,7 @@
11
11
  export type IssueSeverity = 'error' | 'warning' | 'info' | 'ignore';
12
12
  /** Non-ignore severities actually emitted to consumers. */
13
13
  export type EmittedSeverity = Exclude<IssueSeverity, 'ignore'>;
14
- export type IssueCode = 'LINK_OUTSIDE_PROJECT' | 'LINK_TARGETS_DIRECTORY' | 'LINK_TO_NAVIGATION_FILE' | 'LINK_TO_GITIGNORED_FILE' | 'LINK_MISSING_TARGET' | 'LINK_TO_SKILL_DEFINITION' | 'LINK_DROPPED_BY_DEPTH' | 'PACKAGED_UNREFERENCED_FILE' | 'PACKAGED_BROKEN_LINK' | 'SKILL_LENGTH_EXCEEDS_RECOMMENDED' | 'SKILL_TOTAL_SIZE_LARGE' | 'SKILL_TOO_MANY_FILES' | 'REFERENCE_TOO_DEEP' | 'DESCRIPTION_TOO_VAGUE' | 'NO_PROGRESSIVE_DISCLOSURE' | 'SKILL_DESCRIPTION_OVER_CLAUDE_CODE_LIMIT' | 'SKILL_DESCRIPTION_FILLER_OPENER' | 'SKILL_DESCRIPTION_WRONG_PERSON' | 'SKILL_NAME_MISMATCHES_DIR' | 'RESERVED_WORD_IN_NAME' | 'SKILL_TIME_SENSITIVE_CONTENT' | 'SKILL_FRONTMATTER_EXTRA_FIELDS' | 'SKILL_CROSS_SKILL_AUTH_UNDECLARED' | 'SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE' | 'CAPABILITY_LOCAL_SHELL' | 'CAPABILITY_EXTERNAL_CLI' | 'CAPABILITY_BROWSER_AUTH' | 'COMPAT_TARGET_INCOMPATIBLE' | 'COMPAT_TARGET_NEEDS_REVIEW' | 'COMPAT_TARGET_UNDECLARED' | 'ALLOW_EXPIRED' | 'ALLOW_UNUSED';
14
+ export type IssueCode = 'LINK_OUTSIDE_PROJECT' | 'LINK_TARGETS_DIRECTORY' | 'LINK_TO_NAVIGATION_FILE' | 'LINK_TO_GITIGNORED_FILE' | 'LINK_MISSING_TARGET' | 'LINK_TO_SKILL_DEFINITION' | 'LINK_DROPPED_BY_DEPTH' | 'PACKAGED_UNREFERENCED_FILE' | 'PACKAGED_BROKEN_LINK' | 'SKILL_LENGTH_EXCEEDS_RECOMMENDED' | 'SKILL_TOTAL_SIZE_LARGE' | 'SKILL_TOO_MANY_FILES' | 'REFERENCE_TOO_DEEP' | 'DESCRIPTION_TOO_VAGUE' | 'NO_PROGRESSIVE_DISCLOSURE' | 'SKILL_DESCRIPTION_OVER_CLAUDE_CODE_LIMIT' | 'SKILL_DESCRIPTION_FILLER_OPENER' | 'SKILL_DESCRIPTION_WRONG_PERSON' | 'SKILL_CLAUDE_PLUGIN_NAME_MISMATCH' | 'SKILL_NAME_MISMATCHES_DIR' | 'RESERVED_WORD_IN_NAME' | 'SKILL_TIME_SENSITIVE_CONTENT' | 'SKILL_FRONTMATTER_EXTRA_FIELDS' | 'SKILL_CROSS_SKILL_AUTH_UNDECLARED' | 'SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE' | 'CAPABILITY_LOCAL_SHELL' | 'CAPABILITY_EXTERNAL_CLI' | 'CAPABILITY_BROWSER_AUTH' | 'COMPAT_TARGET_INCOMPATIBLE' | 'COMPAT_TARGET_NEEDS_REVIEW' | 'COMPAT_TARGET_UNDECLARED' | 'ALLOW_EXPIRED' | 'ALLOW_UNUSED';
15
15
  export interface CodeRegistryEntry {
16
16
  defaultSeverity: EmittedSeverity;
17
17
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"code-registry.d.ts","sourceRoot":"","sources":["../../src/validators/code-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpE,2DAA2D;AAC3D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,MAAM,SAAS,GAEjB,sBAAsB,GACtB,wBAAwB,GACxB,yBAAyB,GACzB,yBAAyB,GACzB,qBAAqB,GACrB,0BAA0B,GAE1B,uBAAuB,GACvB,4BAA4B,GAC5B,sBAAsB,GAEtB,kCAAkC,GAClC,wBAAwB,GACxB,sBAAsB,GACtB,oBAAoB,GACpB,uBAAuB,GACvB,2BAA2B,GAC3B,0CAA0C,GAC1C,iCAAiC,GACjC,gCAAgC,GAChC,2BAA2B,GAC3B,uBAAuB,GACvB,8BAA8B,GAC9B,gCAAgC,GAChC,mCAAmC,GACnC,0CAA0C,GAE1C,wBAAwB,GACxB,yBAAyB,GACzB,yBAAyB,GAEzB,4BAA4B,GAC5B,4BAA4B,GAC5B,0BAA0B,GAE1B,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAiM9D,CAAC"}
1
+ {"version":3,"file":"code-registry.d.ts","sourceRoot":"","sources":["../../src/validators/code-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpE,2DAA2D;AAC3D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,MAAM,SAAS,GAEjB,sBAAsB,GACtB,wBAAwB,GACxB,yBAAyB,GACzB,yBAAyB,GACzB,qBAAqB,GACrB,0BAA0B,GAE1B,uBAAuB,GACvB,4BAA4B,GAC5B,sBAAsB,GAEtB,kCAAkC,GAClC,wBAAwB,GACxB,sBAAsB,GACtB,oBAAoB,GACpB,uBAAuB,GACvB,2BAA2B,GAC3B,0CAA0C,GAC1C,iCAAiC,GACjC,gCAAgC,GAChC,mCAAmC,GACnC,2BAA2B,GAC3B,uBAAuB,GACvB,8BAA8B,GAC9B,gCAAgC,GAChC,mCAAmC,GACnC,0CAA0C,GAE1C,wBAAwB,GACxB,yBAAyB,GACzB,yBAAyB,GAEzB,4BAA4B,GAC5B,4BAA4B,GAC5B,0BAA0B,GAE1B,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAuM9D,CAAC"}
@@ -28,6 +28,7 @@ export const CODE_REGISTRY = {
28
28
  SKILL_DESCRIPTION_OVER_CLAUDE_CODE_LIMIT: entry('warning', 'SKILL.md description exceeds the 250-character Claude Code /skills display limit.', 'Shorten the description below 250 chars (target ≤200 for a safety margin, or ≤130 if shipping a large skill collection).', 'skill_description_over_claude_code_limit'),
29
29
  SKILL_DESCRIPTION_FILLER_OPENER: entry('warning', 'SKILL.md description opens with meta-filler (e.g., "This skill...", "A skill that...", "Use when you want to...").', 'Lead with a verb phrase ("Extracts text from PDFs...") or "Use when <concrete trigger>".', 'skill_description_filler_opener'),
30
30
  SKILL_DESCRIPTION_WRONG_PERSON: entry('warning', 'SKILL.md description uses first-person or conversational second-person voice.', 'Rewrite in third person. "I can extract PDFs" → "Extracts text from PDFs". "You can use this to..." → the action itself.', 'skill_description_wrong_person'),
31
+ SKILL_CLAUDE_PLUGIN_NAME_MISMATCH: entry('warning', 'plugin.json name does not match the co-located root SKILL.md frontmatter name.', 'Align the names: update plugin.json `name` to match SKILL.md `name` (the skill is authoritative), or intentionally namespace the plugin (configure `validation.severity` or `validation.allow` with a reason).', 'skill_claude_plugin_name_mismatch'),
31
32
  SKILL_NAME_MISMATCHES_DIR: entry('warning', 'Frontmatter name field does not match the skill parent directory name.', 'Align them: rename the directory to match name, or update name to match the directory.', 'skill_name_mismatches_dir'),
32
33
  RESERVED_WORD_IN_NAME: entry('warning', 'Frontmatter `name` contains a reserved word (`anthropic` or `claude`); Claude Code rejects non-certified skills using these words.', 'Rename the skill to avoid `anthropic` or `claude` in the name.', 'reserved_word_in_name'),
33
34
  SKILL_TIME_SENSITIVE_CONTENT: entry('info', 'SKILL.md body contains time-sensitive prose (e.g., "as of November 2025") that may become stale.', 'Remove the time qualifier, or move deprecated guidance into a clearly labeled "## Old patterns" section with a <details> block.', 'skill_time_sensitive_content'),
@@ -1 +1 @@
1
- {"version":3,"file":"code-registry.js","sourceRoot":"","sources":["../../src/validators/code-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAuDH,MAAM,KAAK,GAAG,CACZ,eAAgC,EAChC,WAAmB,EACnB,GAAW,EACX,MAAc,EACK,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,aAAa,GAAyC;IACjE,oBAAoB,EAAE,KAAK,CACzB,OAAO,EACP,0DAA0D,EAC1D,gIAAgI,EAChI,sBAAsB,CACvB;IACD,sBAAsB,EAAE,KAAK,CAC3B,OAAO,EACP,2DAA2D,EAC3D,0GAA0G,EAC1G,wBAAwB,CACzB;IACD,uBAAuB,EAAE,KAAK,CAC5B,SAAS,EACT,yGAAyG,EACzG,wIAAwI,EACxI,yBAAyB,CAC1B;IACD,uBAAuB,EAAE,KAAK,CAC5B,OAAO,EACP,sFAAsF,EACtF,8HAA8H,EAC9H,yBAAyB,CAC1B;IACD,mBAAmB,EAAE,KAAK,CACxB,OAAO,EACP,mFAAmF,EACnF,yGAAyG,EACzG,qBAAqB,CACtB;IACD,wBAAwB,EAAE,KAAK,CAC7B,OAAO,EACP,kGAAkG,EAClG,2FAA2F,EAC3F,0BAA0B,CAC3B;IACD,qBAAqB,EAAE,KAAK,CAC1B,SAAS,EACT,8FAA8F,EAC9F,gKAAgK,EAChK,uBAAuB,CACxB;IACD,0BAA0B,EAAE,KAAK,CAC/B,OAAO,EACP,2EAA2E,EAC3E,kJAAkJ,EAClJ,4BAA4B,CAC7B;IACD,oBAAoB,EAAE,KAAK,CACzB,OAAO,EACP,gHAAgH,EAChH,wJAAwJ,EACxJ,sBAAsB,CACvB;IACD,gCAAgC,EAAE,KAAK,CACrC,SAAS,EACT,2FAA2F,EAC3F,mGAAmG,EACnG,kCAAkC,CACnC;IACD,sBAAsB,EAAE,KAAK,CAC3B,SAAS,EACT,0DAA0D,EAC1D,+FAA+F,EAC/F,wBAAwB,CACzB;IACD,oBAAoB,EAAE,KAAK,CACzB,SAAS,EACT,oDAAoD,EACpD,iFAAiF,EACjF,sBAAsB,CACvB;IACD,kBAAkB,EAAE,KAAK,CACvB,SAAS,EACT,kGAAkG,EAClG,mEAAmE,EACnE,oBAAoB,CACrB;IACD,qBAAqB,EAAE,KAAK,CAC1B,SAAS,EACT,kEAAkE,EAClE,8DAA8D,EAC9D,uBAAuB,CACxB;IACD,yBAAyB,EAAE,KAAK,CAC9B,SAAS,EACT,8EAA8E,EAC9E,gFAAgF,EAChF,2BAA2B,CAC5B;IACD,wCAAwC,EAAE,KAAK,CAC7C,SAAS,EACT,mFAAmF,EACnF,0HAA0H,EAC1H,0CAA0C,CAC3C;IACD,+BAA+B,EAAE,KAAK,CACpC,SAAS,EACT,oHAAoH,EACpH,0FAA0F,EAC1F,iCAAiC,CAClC;IACD,8BAA8B,EAAE,KAAK,CACnC,SAAS,EACT,+EAA+E,EAC/E,0HAA0H,EAC1H,gCAAgC,CACjC;IACD,yBAAyB,EAAE,KAAK,CAC9B,SAAS,EACT,wEAAwE,EACxE,wFAAwF,EACxF,2BAA2B,CAC5B;IACD,qBAAqB,EAAE,KAAK,CAC1B,SAAS,EACT,oIAAoI,EACpI,gEAAgE,EAChE,uBAAuB,CACxB;IACD,4BAA4B,EAAE,KAAK,CACjC,MAAM,EACN,kGAAkG,EAClG,iIAAiI,EACjI,8BAA8B,CAC/B;IACD,8BAA8B,EAAE,KAAK,CACnC,SAAS,EACT,kGAAkG,EAClG,uJAAuJ,EACvJ,gCAAgC,CACjC;IACD,iCAAiC,EAAE,KAAK,CACtC,SAAS,EACT,0IAA0I,EAC1I,qLAAqL,EACrL,mCAAmC,CACpC;IACD,wCAAwC,EAAE,KAAK,CAC7C,SAAS,EACT,yJAAyJ,EACzJ,iEAAiE,EACjE,0CAA0C,CAC3C;IACD,sBAAsB,EAAE,KAAK,CAC3B,MAAM,EACN,wFAAwF,EACxF,8IAA8I,EAC9I,wBAAwB,CACzB;IACD,uBAAuB,EAAE,KAAK,CAC5B,MAAM,EACN,kEAAkE,EAClE,+FAA+F,EAC/F,yBAAyB,CAC1B;IACD,uBAAuB,EAAE,KAAK,CAC5B,MAAM,EACN,6DAA6D,EAC7D,+GAA+G,EAC/G,yBAAyB,CAC1B;IACD,0BAA0B,EAAE,KAAK,CAC/B,SAAS,EACT,2EAA2E,EAC3E,6FAA6F,EAC7F,4BAA4B,CAC7B;IACD,0BAA0B,EAAE,KAAK,CAC/B,SAAS,EACT,4FAA4F,EAC5F,mDAAmD,EACnD,4BAA4B,CAC7B;IACD,wBAAwB,EAAE,KAAK,CAC7B,MAAM,EACN,8DAA8D,EAC9D,+FAA+F,EAC/F,0BAA0B,CAC3B;IACD,aAAa,EAAE,KAAK,CAClB,SAAS,EACT,gHAAgH,EAChH,gJAAgJ,EAChJ,eAAe,CAChB;IACD,YAAY,EAAE,KAAK,CACjB,SAAS,EACT,2FAA2F,EAC3F,kGAAkG,EAClG,cAAc,CACf;CACF,CAAC"}
1
+ {"version":3,"file":"code-registry.js","sourceRoot":"","sources":["../../src/validators/code-registry.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ResourceFormat } from './types.js';
1
+ import type { ResourceFormat, Surface } from './types.js';
2
2
  /**
3
3
  * Detects the format of a resource at the given path
4
4
  *
@@ -23,4 +23,24 @@ import type { ResourceFormat } from './types.js';
23
23
  * @returns ResourceFormat discriminated union
24
24
  */
25
25
  export declare function detectResourceFormat(resourcePath: string): Promise<ResourceFormat>;
26
+ /**
27
+ * Enumerate all manifest surfaces present at a directory's root layer.
28
+ *
29
+ * Unlike {@link detectResourceFormat} (single-answer), this returns every
30
+ * recognized manifest found in the same directory. A skill-claude-plugin
31
+ * (root SKILL.md + .claude-plugin/plugin.json) returns two surfaces; a
32
+ * canonical plugin layout returns one (SKILL.md lives under skills/<name>/,
33
+ * not at the plugin root, so no agent-skill surface at this level).
34
+ *
35
+ * Detection rules (independent, all applied):
36
+ * - `<dir>/SKILL.md` exists → { type: 'agent-skill', path: <dir>/SKILL.md }
37
+ * - `<dir>/.claude-plugin/plugin.json` exists → { type: 'claude-plugin', path: <dir> }
38
+ * - `<dir>/.claude-plugin/marketplace.json` exists → { type: 'marketplace', path: <dir> }
39
+ *
40
+ * Returns `[]` for nonexistent paths, files, or directories with no recognized manifests.
41
+ *
42
+ * @param dirPath - Absolute path to a directory
43
+ * @returns Array of surfaces in enumerator-stable order (skill, plugin, marketplace)
44
+ */
45
+ export declare function enumerateSurfaces(dirPath: string): Promise<Surface[]>;
26
46
  //# sourceMappingURL=format-detection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-detection.d.ts","sourceRoot":"","sources":["../../src/validators/format-detection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,oBAAoB,CACzC,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAwCzB"}
1
+ {"version":3,"file":"format-detection.d.ts","sourceRoot":"","sources":["../../src/validators/format-detection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,oBAAoB,CACzC,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAwCzB;AAuID;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAyC3E"}
@@ -2,6 +2,7 @@
2
2
  import * as fs from 'node:fs';
3
3
  import * as path from 'node:path';
4
4
  import { safePath } from '@vibe-agent-toolkit/utils';
5
+ const CLAUDE_PLUGIN_DIR_NAME = '.claude-plugin';
5
6
  /**
6
7
  * Detects the format of a resource at the given path
7
8
  *
@@ -66,7 +67,7 @@ export async function detectResourceFormat(resourcePath) {
66
67
  * Detects format for directory resources
67
68
  */
68
69
  function detectDirectoryFormat(dirPath) {
69
- const claudePluginDir = safePath.join(dirPath, '.claude-plugin');
70
+ const claudePluginDir = safePath.join(dirPath, CLAUDE_PLUGIN_DIR_NAME);
70
71
  // Check if .claude-plugin directory exists
71
72
  if (!fs.existsSync(claudePluginDir)) {
72
73
  return {
@@ -178,4 +179,87 @@ function detectFileFormat(filePath) {
178
179
  reason: 'JSON file but not a recognized registry',
179
180
  };
180
181
  }
182
+ /**
183
+ * Enumerate all manifest surfaces present at a directory's root layer.
184
+ *
185
+ * Unlike {@link detectResourceFormat} (single-answer), this returns every
186
+ * recognized manifest found in the same directory. A skill-claude-plugin
187
+ * (root SKILL.md + .claude-plugin/plugin.json) returns two surfaces; a
188
+ * canonical plugin layout returns one (SKILL.md lives under skills/<name>/,
189
+ * not at the plugin root, so no agent-skill surface at this level).
190
+ *
191
+ * Detection rules (independent, all applied):
192
+ * - `<dir>/SKILL.md` exists → { type: 'agent-skill', path: <dir>/SKILL.md }
193
+ * - `<dir>/.claude-plugin/plugin.json` exists → { type: 'claude-plugin', path: <dir> }
194
+ * - `<dir>/.claude-plugin/marketplace.json` exists → { type: 'marketplace', path: <dir> }
195
+ *
196
+ * Returns `[]` for nonexistent paths, files, or directories with no recognized manifests.
197
+ *
198
+ * @param dirPath - Absolute path to a directory
199
+ * @returns Array of surfaces in enumerator-stable order (skill, plugin, marketplace)
200
+ */
201
+ export async function enumerateSurfaces(dirPath) {
202
+ try {
203
+ if (!fs.existsSync(dirPath)) {
204
+ return [];
205
+ }
206
+ const stats = fs.statSync(dirPath);
207
+ if (!stats.isDirectory()) {
208
+ return [];
209
+ }
210
+ }
211
+ catch {
212
+ return [];
213
+ }
214
+ const surfaces = [];
215
+ const skillPath = safePath.join(dirPath, 'SKILL.md');
216
+ if (fs.existsSync(skillPath)) {
217
+ surfaces.push({ type: 'agent-skill', path: skillPath });
218
+ }
219
+ const pluginJsonPath = safePath.join(dirPath, CLAUDE_PLUGIN_DIR_NAME, 'plugin.json');
220
+ const marketplaceJsonPath = safePath.join(dirPath, CLAUDE_PLUGIN_DIR_NAME, 'marketplace.json');
221
+ const hasPlugin = fs.existsSync(pluginJsonPath);
222
+ const hasMarketplace = fs.existsSync(marketplaceJsonPath);
223
+ // Co-located plugin/marketplace pattern: when both plugin.json and
224
+ // marketplace.json are present AND the marketplace references the current
225
+ // directory via `source: "./"`, detectResourceFormat collapses to a single
226
+ // `marketplace` surface. Preserve that collapse here so a co-located
227
+ // marketplace does not produce two parallel results (marketplace AND plugin).
228
+ const isColocated = hasPlugin && hasMarketplace && hasColocatedPluginInMarketplace(marketplaceJsonPath);
229
+ if (hasPlugin && !isColocated) {
230
+ surfaces.push({ type: 'claude-plugin', path: dirPath });
231
+ }
232
+ if (hasMarketplace) {
233
+ surfaces.push({ type: 'marketplace', path: dirPath });
234
+ }
235
+ return surfaces;
236
+ }
237
+ /**
238
+ * Returns true when marketplace.json declares a plugin with `source` pointing
239
+ * at the current directory (`./`, `.`, etc.), indicating a single-directory
240
+ * marketplace that owns the co-located plugin.
241
+ *
242
+ * Best-effort: swallows read/parse errors (caller treats as "not co-located").
243
+ */
244
+ function hasColocatedPluginInMarketplace(marketplaceJsonPath) {
245
+ try {
246
+ const content = fs.readFileSync(marketplaceJsonPath, 'utf-8');
247
+ const data = JSON.parse(content);
248
+ const plugins = data['plugins'];
249
+ if (!Array.isArray(plugins)) {
250
+ return false;
251
+ }
252
+ return plugins.some((plugin) => {
253
+ if (typeof plugin !== 'object' || plugin === null)
254
+ return false;
255
+ const source = plugin['source'];
256
+ if (typeof source !== 'string')
257
+ return false;
258
+ return source === './' || source === '.' || source === '.\\' || source === '';
259
+ });
260
+ }
261
+ catch {
262
+ return false;
263
+ }
264
+ }
181
265
  //# sourceMappingURL=format-detection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-detection.js","sourceRoot":"","sources":["../../src/validators/format-detection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format-detection.js","sourceRoot":"","sources":["../../src/validators/format-detection.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- export { detectResourceFormat } from './format-detection.js';
1
+ export { detectResourceFormat, enumerateSurfaces } from './format-detection.js';
2
2
  export { validatePlugin } from './plugin-validator.js';
3
3
  export { validateInstalledPluginsRegistry, validateKnownMarketplacesRegistry, } from './registry-validator.js';
4
4
  export { validateSkill } from './skill-validator.js';
5
5
  export { validate } from './unified-validator.js';
6
- export type { IssueCode, IssueSeverity, LinkedFileValidationResult, ResourceFormat, ValidateOptions, ValidationIssue, ValidationResult, } from './types.js';
6
+ export type { IssueCode, IssueSeverity, LinkedFileValidationResult, ResourceFormat, Surface, ValidateOptions, ValidationIssue, ValidationResult, } from './types.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACN,gCAAgC,EAChC,iCAAiC,GACjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,YAAY,EACX,SAAS,EACT,aAAa,EACb,0BAA0B,EAC1B,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACN,gCAAgC,EAChC,iCAAiC,GACjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,YAAY,EACX,SAAS,EACT,aAAa,EACb,0BAA0B,EAC1B,cAAc,EACd,OAAO,EACP,eAAe,EACf,eAAe,EACf,gBAAgB,GAChB,MAAM,YAAY,CAAC"}
@@ -1,4 +1,4 @@
1
- export { detectResourceFormat } from './format-detection.js';
1
+ export { detectResourceFormat, enumerateSurfaces } from './format-detection.js';
2
2
  export { validatePlugin } from './plugin-validator.js';
3
3
  export { validateInstalledPluginsRegistry, validateKnownMarketplacesRegistry, } from './registry-validator.js';
4
4
  export { validateSkill } from './skill-validator.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACN,gCAAgC,EAChC,iCAAiC,GACjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACN,gCAAgC,EAChC,iCAAiC,GACjC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-validator.d.ts","sourceRoot":"","sources":["../../src/validators/plugin-validator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAQpE;;;;;;GAMG;AACH,wBAAsB,cAAc,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CA8F3B"}
1
+ {"version":3,"file":"plugin-validator.d.ts","sourceRoot":"","sources":["../../src/validators/plugin-validator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6JpE;;;;;;GAMG;AACH,wBAAsB,cAAc,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAmF3B"}
@@ -4,6 +4,127 @@ import { safePath } from '@vibe-agent-toolkit/utils';
4
4
  import { ClaudePluginSchema } from '../schemas/claude-plugin.js';
5
5
  import { calculateValidationStatus, generateFixSuggestion, } from './validation-utils.js';
6
6
  const PLUGIN_TYPE = 'claude-plugin';
7
+ /**
8
+ * Best-effort read of a co-located SKILL.md's frontmatter `name` field.
9
+ *
10
+ * Returns `{ skillFrontmatterName: undefined }` when SKILL.md is absent,
11
+ * unreadable, has no frontmatter, or the frontmatter has no `name`. Silent
12
+ * failure is intentional — the skill validator handles its own errors, and
13
+ * this helper only exists to enable the plugin-side cross-check.
14
+ *
15
+ * Accepts a minimal YAML subset: only extracts `name: <value>` from the first
16
+ * frontmatter block. Full YAML parsing is not needed here because the skill
17
+ * validator already reports every frontmatter-parse failure separately.
18
+ */
19
+ /**
20
+ * Extract the YAML frontmatter block from file content, or undefined when
21
+ * the content does not begin with a `---` fence.
22
+ *
23
+ * Uses indexOf instead of regex to avoid slow-regex lint errors.
24
+ */
25
+ function extractFrontmatterBlock(content) {
26
+ // Normalize CRLF to LF so Windows-authored SKILL.md files parse identically.
27
+ // Matches the convention in parsers/frontmatter-parser.ts.
28
+ const normalized = content.replaceAll('\r\n', '\n');
29
+ const FENCE = '---';
30
+ if (!normalized.startsWith(`${FENCE}\n`)) {
31
+ return undefined;
32
+ }
33
+ const openerEnd = FENCE.length + 1;
34
+ const closerStart = normalized.indexOf(`\n${FENCE}`, openerEnd);
35
+ return closerStart === -1 ? undefined : normalized.slice(openerEnd, closerStart);
36
+ }
37
+ /** Strip optional surrounding single or double quotes from a YAML scalar. */
38
+ function stripYamlQuotes(raw) {
39
+ if (raw.length >= 2) {
40
+ const first = raw.at(0);
41
+ const last = raw.at(-1);
42
+ if ((first === '"' && last === '"') || (first === "'" && last === "'")) {
43
+ return raw.slice(1, -1);
44
+ }
45
+ }
46
+ return raw;
47
+ }
48
+ function readColocatedSkillFrontmatterName(pluginDir) {
49
+ const skillPath = safePath.join(pluginDir, 'SKILL.md');
50
+ if (!existsSync(skillPath)) {
51
+ return {};
52
+ }
53
+ let content;
54
+ try {
55
+ content = readFileSync(skillPath, 'utf-8');
56
+ }
57
+ catch {
58
+ return {};
59
+ }
60
+ const frontmatter = extractFrontmatterBlock(content);
61
+ if (frontmatter === undefined) {
62
+ return {};
63
+ }
64
+ // Find the `name:` line using a non-backtracking line scan.
65
+ const nameLine = frontmatter.split('\n').find((line) => line.startsWith('name:'));
66
+ if (nameLine === undefined) {
67
+ return {};
68
+ }
69
+ const raw = nameLine.slice('name:'.length).trim();
70
+ if (raw.length === 0) {
71
+ return {};
72
+ }
73
+ return { skillFrontmatterName: stripYamlQuotes(raw) };
74
+ }
75
+ /**
76
+ * Return a SKILL_CLAUDE_PLUGIN_NAME_MISMATCH issue when the plugin's co-located
77
+ * root SKILL.md has a `name` frontmatter field that disagrees with `pluginName`,
78
+ * or undefined when the names agree or SKILL.md is absent / unreadable.
79
+ */
80
+ function checkPluginSkillNameMismatch(pluginPath, pluginJsonPath, pluginName) {
81
+ const { skillFrontmatterName } = readColocatedSkillFrontmatterName(pluginPath);
82
+ if (skillFrontmatterName === undefined || skillFrontmatterName === pluginName) {
83
+ return undefined;
84
+ }
85
+ return {
86
+ severity: 'warning',
87
+ code: 'SKILL_CLAUDE_PLUGIN_NAME_MISMATCH',
88
+ message: `plugin.json name "${pluginName}" does not match co-located SKILL.md frontmatter name "${skillFrontmatterName}"`,
89
+ location: pluginJsonPath,
90
+ fix: 'Align the names: update plugin.json `name` to match SKILL.md `name` (the skill is authoritative), or intentionally namespace the plugin (configure `validation.severity` or `validation.allow` with a reason).',
91
+ };
92
+ }
93
+ /**
94
+ * Apply schema-success post-checks: set metadata, warn on missing version,
95
+ * and cross-check skill-claude-plugin name agreement. Mutates `issues` and
96
+ * `validationResult` in place; callers re-use the computed status/summary.
97
+ *
98
+ * Extracted from `validatePlugin` to keep cognitive complexity under the
99
+ * project threshold.
100
+ */
101
+ function applyPostSchemaChecks(args) {
102
+ const { pluginPath, pluginJsonPath, data, strict, issues, validationResult } = args;
103
+ validationResult.metadata = {
104
+ name: data.name,
105
+ ...(data.version !== undefined && { version: data.version }),
106
+ };
107
+ // Warn when version is missing — Claude Code caches plugins by version,
108
+ // and without it the cache directory becomes "unknown/", causing stale
109
+ // skill resolution across upgrades.
110
+ if (data.version === undefined) {
111
+ issues.push({
112
+ severity: strict ? 'error' : 'warning',
113
+ code: 'PLUGIN_MISSING_VERSION',
114
+ message: 'plugin.json missing version field — Claude Code will cache as "unknown/", causing stale skill resolution across upgrades',
115
+ location: pluginJsonPath,
116
+ fix: 'Add a "version" field to plugin.json (semver format, e.g. "1.0.0")',
117
+ });
118
+ }
119
+ const mismatchIssue = checkPluginSkillNameMismatch(pluginPath, pluginJsonPath, data.name);
120
+ if (mismatchIssue !== undefined) {
121
+ issues.push(mismatchIssue);
122
+ }
123
+ if (issues.length > 0) {
124
+ validationResult.status = calculateValidationStatus(issues);
125
+ validationResult.summary = `Found ${issues.length} issue(s)`;
126
+ }
127
+ }
7
128
  /**
8
129
  * Validate a plugin directory structure against the ClaudePluginSchema.
9
130
  *
@@ -75,24 +196,14 @@ export async function validatePlugin(pluginPath, options) {
75
196
  issues,
76
197
  };
77
198
  if (result.success) {
78
- validationResult.metadata = {
79
- name: result.data.name,
80
- ...(result.data.version !== undefined && { version: result.data.version }),
81
- };
82
- // Warn when version is missing — Claude Code caches plugins by version,
83
- // and without it the cache directory becomes "unknown/", causing stale
84
- // skill resolution across upgrades.
85
- if (result.data.version === undefined) {
86
- issues.push({
87
- severity: options?.strict ? 'error' : 'warning',
88
- code: 'PLUGIN_MISSING_VERSION',
89
- message: 'plugin.json missing version field — Claude Code will cache as "unknown/", causing stale skill resolution across upgrades',
90
- location: pluginJsonPath,
91
- fix: 'Add a "version" field to plugin.json (semver format, e.g. "1.0.0")',
92
- });
93
- validationResult.status = calculateValidationStatus(issues);
94
- validationResult.summary = `Found ${issues.length} issue(s)`;
95
- }
199
+ applyPostSchemaChecks({
200
+ pluginPath,
201
+ pluginJsonPath,
202
+ data: result.data,
203
+ strict: options?.strict === true,
204
+ issues,
205
+ validationResult,
206
+ });
96
207
  }
97
208
  return validationResult;
98
209
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-validator.js","sourceRoot":"","sources":["../../src/validators/plugin-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-validator.js","sourceRoot":"","sources":["../../src/validators/plugin-validator.ts"],"names":[],"mappings":"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"}
@@ -84,4 +84,27 @@ export type ResourceFormat = {
84
84
  path: string;
85
85
  reason?: string;
86
86
  };
87
+ /**
88
+ * One recognized manifest surface at a directory's root layer.
89
+ *
90
+ * Unlike {@link ResourceFormat} — which is the single-answer API used by
91
+ * `detectResourceFormat()` — `Surface` is emitted by `enumerateSurfaces()`
92
+ * which returns *every* manifest found in the same directory. A directory can
93
+ * contain multiple surfaces: e.g., a skill-claude-plugin has both `agent-skill`
94
+ * (root SKILL.md) and `claude-plugin` (.claude-plugin/plugin.json) surfaces.
95
+ *
96
+ * The `path` field points to the file to hand the validator: the SKILL.md path
97
+ * for skills, the directory path for plugin/marketplace (those validators resolve
98
+ * `<dir>/.claude-plugin/<manifest>.json` themselves).
99
+ */
100
+ export type Surface = {
101
+ type: 'agent-skill';
102
+ path: string;
103
+ } | {
104
+ type: 'claude-plugin';
105
+ path: string;
106
+ } | {
107
+ type: 'marketplace';
108
+ path: string;
109
+ };
87
110
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validators/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validators/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-agent-toolkit/agent-skills",
3
- "version": "0.1.33",
3
+ "version": "0.1.34-rc.2",
4
4
  "description": "Build, validate, and package agent skills in the Agent Skills format",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -28,10 +28,10 @@
28
28
  "typecheck": "tsc --noEmit"
29
29
  },
30
30
  "dependencies": {
31
- "@vibe-agent-toolkit/agent-config": "0.1.33",
32
- "@vibe-agent-toolkit/agent-schema": "0.1.33",
33
- "@vibe-agent-toolkit/resources": "0.1.33",
34
- "@vibe-agent-toolkit/utils": "0.1.33",
31
+ "@vibe-agent-toolkit/agent-config": "0.1.34-rc.2",
32
+ "@vibe-agent-toolkit/agent-schema": "0.1.34-rc.2",
33
+ "@vibe-agent-toolkit/resources": "0.1.34-rc.2",
34
+ "@vibe-agent-toolkit/utils": "0.1.34-rc.2",
35
35
  "adm-zip": "^0.5.16",
36
36
  "picomatch": "^4.0.3",
37
37
  "yaml": "^2.6.1",