@vibe-agent-toolkit/agent-schema 0.1.41-rc.7 → 0.1.41-rc.8
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/validation-codes.d.ts +4 -2
- package/dist/validation-codes.d.ts.map +1 -1
- package/dist/validation-codes.js +3 -1
- package/dist/validation-codes.js.map +1 -1
- package/dist/validation-config.d.ts +6 -6
- package/dist/validation-framework.d.ts +81 -6
- package/dist/validation-framework.d.ts.map +1 -1
- package/dist/validation-framework.js +94 -25
- package/dist/validation-framework.js.map +1 -1
- package/package.json +2 -2
- package/schemas/validation-config.json +4 -0
|
@@ -31,6 +31,7 @@ export declare const CODE_REGISTRY: {
|
|
|
31
31
|
readonly PACKAGED_UNREFERENCED_FILE: CodeRegistryEntry;
|
|
32
32
|
readonly PACKAGED_TEST_INPUT: CodeRegistryEntry;
|
|
33
33
|
readonly PACKAGED_BROKEN_LINK: CodeRegistryEntry;
|
|
34
|
+
readonly FILENAME_COLLISION: CodeRegistryEntry;
|
|
34
35
|
readonly DUPLICATE_RESOURCE_ID: CodeRegistryEntry;
|
|
35
36
|
readonly SKILL_LENGTH_EXCEEDS_RECOMMENDED: CodeRegistryEntry;
|
|
36
37
|
readonly SKILL_TOTAL_SIZE_LARGE: CodeRegistryEntry;
|
|
@@ -69,6 +70,7 @@ export declare const CODE_REGISTRY: {
|
|
|
69
70
|
readonly COMPONENT_PRESENT_BUT_UNDECLARED: CodeRegistryEntry;
|
|
70
71
|
readonly REFERENCE_TARGET_MISSING: CodeRegistryEntry;
|
|
71
72
|
readonly MARKETPLACE_PLUGIN_SOURCE_MISSING: CodeRegistryEntry;
|
|
73
|
+
readonly REGISTRY_SHAPE_DRIFT: CodeRegistryEntry;
|
|
72
74
|
readonly LINK_BROKEN_FILE: CodeRegistryEntry;
|
|
73
75
|
readonly LINK_BROKEN_ANCHOR: CodeRegistryEntry;
|
|
74
76
|
readonly LINK_UNKNOWN: CodeRegistryEntry;
|
|
@@ -92,9 +94,9 @@ export declare const CODE_REGISTRY: {
|
|
|
92
94
|
readonly LINK_AUTH_UNVERIFIED: CodeRegistryEntry;
|
|
93
95
|
};
|
|
94
96
|
export type IssueCode = keyof typeof CODE_REGISTRY;
|
|
95
|
-
export declare const IssueCodeSchema: z.ZodEnum<["LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", ...("LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED")[]]>;
|
|
97
|
+
export declare const IssueCodeSchema: z.ZodEnum<["LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "FILENAME_COLLISION" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "REGISTRY_SHAPE_DRIFT" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", ...("LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "FILENAME_COLLISION" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "REGISTRY_SHAPE_DRIFT" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED")[]]>;
|
|
96
98
|
/** Codes outside the overridable framework — structural reports. */
|
|
97
99
|
export type InfoCode = 'FILE_STRUCTURE_REPORT' | 'RESOURCE_INVENTORY' | 'METADATA_SUMMARY' | 'SKILL_IMPLICIT_REFERENCE' | 'SKILL_UNREFERENCED_FILE';
|
|
98
100
|
/** Codes outside the overridable framework — structural prerequisites / errors that are not subject to severity overrides. */
|
|
99
|
-
export type NonOverridableCode = 'SKILL_MISSING_FRONTMATTER' | 'SKILL_MISSING_NAME' | 'SKILL_MISSING_DESCRIPTION' | 'SKILL_NAME_INVALID' | 'SKILL_NAME_XML_TAGS' | 'SKILL_DESCRIPTION_XML_TAGS' | 'SKILL_DESCRIPTION_TOO_LONG' | 'SKILL_DESCRIPTION_EMPTY' | 'SKILL_MISCONFIGURED_LOCATION' | 'LINK_INTEGRITY_BROKEN' | 'PATH_STYLE_WINDOWS' | '
|
|
101
|
+
export type NonOverridableCode = 'SKILL_MISSING_FRONTMATTER' | 'SKILL_MISSING_NAME' | 'SKILL_MISSING_DESCRIPTION' | 'SKILL_NAME_INVALID' | 'SKILL_NAME_XML_TAGS' | 'SKILL_DESCRIPTION_XML_TAGS' | 'SKILL_DESCRIPTION_TOO_LONG' | 'SKILL_DESCRIPTION_EMPTY' | 'SKILL_MISCONFIGURED_LOCATION' | 'LINK_INTEGRITY_BROKEN' | 'PATH_STYLE_WINDOWS' | 'DUPLICATE_FILES_DEST' | 'PLUGIN_MISSING_MANIFEST' | 'PLUGIN_INVALID_JSON' | 'PLUGIN_INVALID_SCHEMA' | 'PLUGIN_MISSING_VERSION' | 'MARKETPLACE_MISSING_MANIFEST' | 'MARKETPLACE_INVALID_JSON' | 'MARKETPLACE_INVALID_SCHEMA' | 'MARKETPLACE_MISSING_LICENSE' | 'MARKETPLACE_MISSING_README' | 'MARKETPLACE_MISSING_CHANGELOG' | 'MARKETPLACE_MISSING_VERSION' | 'REGISTRY_MISSING_FILE' | 'REGISTRY_INVALID_JSON' | 'REGISTRY_INVALID_SCHEMA' | 'UNKNOWN_FORMAT' | 'SKILL_TOO_LONG' | 'REFERENCE_MISSING_TOC' | 'DESCRIPTION_FIRST_PERSON' | 'RESOURCE_UNREACHABLE';
|
|
100
102
|
//# sourceMappingURL=validation-codes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-codes.d.ts","sourceRoot":"","sources":["../src/validation-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,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,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
|
|
1
|
+
{"version":3,"file":"validation-codes.d.ts","sourceRoot":"","sources":["../src/validation-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,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,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAub4B,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,aAAa,CAAC;AAEnD,eAAO,MAAM,eAAe,shIAE3B,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,QAAQ,GAChB,uBAAuB,GACvB,oBAAoB,GACpB,kBAAkB,GAClB,0BAA0B,GAC1B,yBAAyB,CAAC;AAE9B,8HAA8H;AAC9H,MAAM,MAAM,kBAAkB,GAC1B,2BAA2B,GAC3B,oBAAoB,GACpB,2BAA2B,GAC3B,oBAAoB,GACpB,qBAAqB,GACrB,4BAA4B,GAC5B,4BAA4B,GAC5B,yBAAyB,GACzB,8BAA8B,GAC9B,uBAAuB,GACvB,oBAAoB,GAMpB,sBAAsB,GACtB,yBAAyB,GACzB,qBAAqB,GACrB,uBAAuB,GACvB,wBAAwB,GACxB,8BAA8B,GAC9B,0BAA0B,GAC1B,4BAA4B,GAC5B,6BAA6B,GAC7B,4BAA4B,GAC5B,+BAA+B,GAC/B,6BAA6B,GAC7B,uBAAuB,GACvB,uBAAuB,GACvB,yBAAyB,GACzB,gBAAgB,GAChB,gBAAgB,GAChB,uBAAuB,GACvB,0BAA0B,GAC1B,sBAAsB,CAAC"}
|
package/dist/validation-codes.js
CHANGED
|
@@ -22,6 +22,7 @@ export const CODE_REGISTRY = {
|
|
|
22
22
|
PACKAGED_UNREFERENCED_FILE: entry('error', 'File in the packaged output is not referenced from any packaged markdown.', 'Add a markdown link or code-block mention in SKILL.md or a linked resource. A file consumed programmatically belongs in skills.config.<name>.files as a source/dest pair — a declared dest is exempt, so do NOT restate it in validation.allow.', 'packaged_unreferenced_file'),
|
|
23
23
|
PACKAGED_TEST_INPUT: entry('warning', "A link or files: entry pointed into the skill's declared test input (its test.evals path) and was NOT packaged; test input — including the expected_output answer key — never ships to consumers.", 'No action needed — the build already excluded it. Remove the link or files: entry to silence this, or move the target out of the test.evals directory if it is genuinely a shipped resource.', 'packaged_test_input'),
|
|
24
24
|
PACKAGED_BROKEN_LINK: entry('error', 'Link in the packaged output resolves to a file that is not present in the output (likely a link-rewriter bug).', 'Report the issue — this indicates a VAT bug. As a temporary workaround, set severity.PACKAGED_BROKEN_LINK to ignore while the underlying bug is fixed.', 'packaged_broken_link'),
|
|
25
|
+
FILENAME_COLLISION: entry('error', 'Two source files package to the same destination path in the bundle; one would overwrite the other.', "Rename one of the files, or switch resourceNaming to a path-based strategy ('resource-id' or 'preserve-path') so the sources map to distinct destinations.", 'filename_collision'),
|
|
25
26
|
DUPLICATE_RESOURCE_ID: entry('error', 'Two files resolve to the same resource id after path normalization.', 'Rename one of the files so they produce distinct resource ids.', 'duplicate_resource_id'),
|
|
26
27
|
SKILL_LENGTH_EXCEEDS_RECOMMENDED: entry('warning', 'SKILL.md line count exceeds the recommended limit; longer files degrade skill triggering.', 'Split content into linked resources (progressive disclosure) or allow if the length is justified.', 'skill_length_exceeds_recommended'),
|
|
27
28
|
SKILL_TOTAL_SIZE_LARGE: entry('warning', 'Total packaged line count exceeds the recommended limit.', 'Reduce bundled content, move references out of the bundle, or allow if the size is justified.', 'skill_total_size_large'),
|
|
@@ -46,7 +47,7 @@ export const CODE_REGISTRY = {
|
|
|
46
47
|
PLUGIN_MISSING_LICENSE: entry('info', 'plugin.json is missing the recommended `license` field.', 'Add a "license" SPDX identifier (e.g. "MIT") to plugin.json so redistribution terms are explicit.', 'plugin_missing_license'),
|
|
47
48
|
PLUGIN_NAME_NOT_KEBAB_CASE: entry('info', 'Plugin name does not match the kebab-case convention required by Claude Code (lowercase alphanumeric with single hyphens).', 'Rename the plugin to kebab-case (e.g. "my-plugin"). Schema parse already errors; this code surfaces the same finding with a more actionable message.', 'plugin_name_not_kebab_case'),
|
|
48
49
|
SKILL_NAME_NOT_KEBAB_CASE: entry('info', 'Skill frontmatter `name` does not match the kebab-case convention.', 'Rename the skill to kebab-case (e.g. "my-skill"). Schema parse already errors; this code surfaces the same finding with a more actionable message.', 'skill_name_not_kebab_case'),
|
|
49
|
-
SKILL_REFERENCES_BUT_NO_LINKS: entry('info', 'Skill directory contains scripts/, references/, or assets/ subdirectories but the SKILL.md body has zero markdown links into them.', 'Add explicit markdown links from SKILL.md (or a linked file) into the bundled subdirectories, or remove the unreferenced directory.
|
|
50
|
+
SKILL_REFERENCES_BUT_NO_LINKS: entry('info', 'Skill directory contains scripts/, references/, or assets/ subdirectories but the SKILL.md body has zero markdown links into them.', 'Add explicit markdown links from SKILL.md (or a linked file) into the bundled subdirectories, or remove the unreferenced directory. Assets consumed programmatically belong in skills.config.<name>.files as source/dest pairs — a declared dest is exempt, so do NOT restate them in validation.allow.', 'skill_references_but_no_links'),
|
|
50
51
|
SKILL_BODY_NOT_IMPERATIVE: entry('info', 'SKILL.md body contains second-person instructional openers (e.g. "You should…", "You need to…", "You can…").', 'Rewrite as imperative ("Configure the MCP server…" instead of "You should configure…"). Skill bodies read more cleanly as instructions to the agent rather than to a human reader. Allow via validation.allow if the heuristic misfires on quoted prompts or user dialog.', 'skill_body_not_imperative'),
|
|
51
52
|
CAPABILITY_LOCAL_SHELL: entry('info', 'Skill references a local-shell tool (Bash/Edit/Write/NotebookEdit) or invokes a shell.', 'Informational. Declare a plugin target that provides shell (claude-code, claude-cowork) so this observation resolves to an expected verdict.', 'capability_local_shell'),
|
|
52
53
|
CAPABILITY_EXTERNAL_CLI: entry('info', 'Skill invokes an external CLI binary not bundled with the skill.', 'Informational. Ensure the declared target guarantees the binary or document the prerequisite.', 'capability_external_cli'),
|
|
@@ -60,6 +61,7 @@ export const CODE_REGISTRY = {
|
|
|
60
61
|
COMPONENT_PRESENT_BUT_UNDECLARED: entry('info', 'A component is present under the canonical layout but the manifest declares an explicit list that omits it; the runtime may silently skip it at install.', 'Add the component to the appropriate manifest field, or remove the file if unintended. Skipped when the manifest omits the field entirely (auto-discovery is intentional).', 'component_present_but_undeclared'),
|
|
61
62
|
REFERENCE_TARGET_MISSING: entry('error', 'A cross-component reference resolved from the manifest points to a path that does not exist.', 'Add the referenced file or correct the path in the manifest.', 'reference_target_missing'),
|
|
62
63
|
MARKETPLACE_PLUGIN_SOURCE_MISSING: entry('error', 'A marketplace declares a plugin with a path-based source that does not exist.', 'Correct the source path or remove the entry from marketplace.plugins[].', 'marketplace_plugin_source_missing'),
|
|
64
|
+
REGISTRY_SHAPE_DRIFT: entry('info', "An installed-plugins registry written by Claude Code carries a field or scope value VAT's model does not recognize; the registry shape is newer than the model reading it. The value was preserved, not rejected.", "No action needed — VAT reads registries it does not own liberally, so the unknown value passed through untouched. Report the field so VAT's model can catch up, or set severity.REGISTRY_SHAPE_DRIFT to ignore.", 'registry_shape_drift'),
|
|
63
65
|
// Resources path — link / frontmatter / external-URL codes
|
|
64
66
|
// Promotions of existing resources-package validator behavior (formerly free-form
|
|
65
67
|
// lowercase `type` strings). Severities are locked by the design spec and reflect
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-codes.js","sourceRoot":"","sources":["../src/validation-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,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,GAAG;IAC3B,oBAAoB,EAAE,KAAK,CACzB,OAAO,EACP,0DAA0D,EAC1D,gIAAgI,EAChI,sBAAsB,CACvB;IACD,sBAAsB,EAAE,KAAK,CAC3B,OAAO,EACP,mHAAmH,EACnH,iLAAiL,EACjL,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,sBAAsB,EAAE,KAAK,CAC3B,MAAM,EACN,4HAA4H,EAC5H,sHAAsH,EACtH,wBAAwB,CACzB;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,iPAAiP,EACjP,4BAA4B,CAC7B;IACD,mBAAmB,EAAE,KAAK,CACxB,SAAS,EACT,mMAAmM,EACnM,8LAA8L,EAC9L,qBAAqB,CACtB;IACD,oBAAoB,EAAE,KAAK,CACzB,OAAO,EACP,gHAAgH,EAChH,wJAAwJ,EACxJ,sBAAsB,CACvB;IACD,qBAAqB,EAAE,KAAK,CAC1B,OAAO,EACP,qEAAqE,EACrE,gEAAgE,EAChE,uBAAuB,CACxB;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,iCAAiC,EAAE,KAAK,CACtC,SAAS,EACT,gFAAgF,EAChF,gNAAgN,EAChN,mCAAmC,CACpC;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,4BAA4B,EAAE,KAAK,CACjC,SAAS,EACT,mUAAmU,EACnU,yNAAyN,EACzN,8BAA8B,CAC/B;IACD,oBAAoB,EAAE,KAAK,CACzB,SAAS,EACT,gUAAgU,EAChU,qTAAqT,EACrT,sBAAsB,CACvB;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,0BAA0B,EAAE,KAAK,CAC/B,MAAM,EACN,6DAA6D,EAC7D,4FAA4F,EAC5F,4BAA4B,CAC7B;IACD,qBAAqB,EAAE,KAAK,CAC1B,MAAM,EACN,wDAAwD,EACxD,kHAAkH,EAClH,uBAAuB,CACxB;IACD,sBAAsB,EAAE,KAAK,CAC3B,MAAM,EACN,yDAAyD,EACzD,mGAAmG,EACnG,wBAAwB,CACzB;IACD,0BAA0B,EAAE,KAAK,CAC/B,MAAM,EACN,4HAA4H,EAC5H,sJAAsJ,EACtJ,4BAA4B,CAC7B;IACD,yBAAyB,EAAE,KAAK,CAC9B,MAAM,EACN,oEAAoE,EACpE,oJAAoJ,EACpJ,2BAA2B,CAC5B;IACD,6BAA6B,EAAE,KAAK,CAClC,MAAM,EACN,oIAAoI,EACpI,
|
|
1
|
+
{"version":3,"file":"validation-codes.js","sourceRoot":"","sources":["../src/validation-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,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,GAAG;IAC3B,oBAAoB,EAAE,KAAK,CACzB,OAAO,EACP,0DAA0D,EAC1D,gIAAgI,EAChI,sBAAsB,CACvB;IACD,sBAAsB,EAAE,KAAK,CAC3B,OAAO,EACP,mHAAmH,EACnH,iLAAiL,EACjL,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,sBAAsB,EAAE,KAAK,CAC3B,MAAM,EACN,4HAA4H,EAC5H,sHAAsH,EACtH,wBAAwB,CACzB;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,iPAAiP,EACjP,4BAA4B,CAC7B;IACD,mBAAmB,EAAE,KAAK,CACxB,SAAS,EACT,mMAAmM,EACnM,8LAA8L,EAC9L,qBAAqB,CACtB;IACD,oBAAoB,EAAE,KAAK,CACzB,OAAO,EACP,gHAAgH,EAChH,wJAAwJ,EACxJ,sBAAsB,CACvB;IACD,kBAAkB,EAAE,KAAK,CACvB,OAAO,EACP,qGAAqG,EACrG,4JAA4J,EAC5J,oBAAoB,CACrB;IACD,qBAAqB,EAAE,KAAK,CAC1B,OAAO,EACP,qEAAqE,EACrE,gEAAgE,EAChE,uBAAuB,CACxB;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,iCAAiC,EAAE,KAAK,CACtC,SAAS,EACT,gFAAgF,EAChF,gNAAgN,EAChN,mCAAmC,CACpC;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,4BAA4B,EAAE,KAAK,CACjC,SAAS,EACT,mUAAmU,EACnU,yNAAyN,EACzN,8BAA8B,CAC/B;IACD,oBAAoB,EAAE,KAAK,CACzB,SAAS,EACT,gUAAgU,EAChU,qTAAqT,EACrT,sBAAsB,CACvB;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,0BAA0B,EAAE,KAAK,CAC/B,MAAM,EACN,6DAA6D,EAC7D,4FAA4F,EAC5F,4BAA4B,CAC7B;IACD,qBAAqB,EAAE,KAAK,CAC1B,MAAM,EACN,wDAAwD,EACxD,kHAAkH,EAClH,uBAAuB,CACxB;IACD,sBAAsB,EAAE,KAAK,CAC3B,MAAM,EACN,yDAAyD,EACzD,mGAAmG,EACnG,wBAAwB,CACzB;IACD,0BAA0B,EAAE,KAAK,CAC/B,MAAM,EACN,4HAA4H,EAC5H,sJAAsJ,EACtJ,4BAA4B,CAC7B;IACD,yBAAyB,EAAE,KAAK,CAC9B,MAAM,EACN,oEAAoE,EACpE,oJAAoJ,EACpJ,2BAA2B,CAC5B;IACD,6BAA6B,EAAE,KAAK,CAClC,MAAM,EACN,oIAAoI,EACpI,ySAAyS,EACzS,+BAA+B,CAChC;IACD,yBAAyB,EAAE,KAAK,CAC9B,MAAM,EACN,8GAA8G,EAC9G,2QAA2Q,EAC3Q,2BAA2B,CAC5B;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;IACD,8BAA8B,EAAE,KAAK,CACnC,SAAS,EACT,0EAA0E,EAC1E,8JAA8J,EAC9J,gCAAgC,CACjC;IACD,gCAAgC,EAAE,KAAK,CACrC,MAAM,EACN,0JAA0J,EAC1J,4KAA4K,EAC5K,kCAAkC,CACnC;IACD,wBAAwB,EAAE,KAAK,CAC7B,OAAO,EACP,8FAA8F,EAC9F,8DAA8D,EAC9D,0BAA0B,CAC3B;IACD,iCAAiC,EAAE,KAAK,CACtC,OAAO,EACP,+EAA+E,EAC/E,yEAAyE,EACzE,mCAAmC,CACpC;IACD,oBAAoB,EAAE,KAAK,CACzB,MAAM,EACN,mNAAmN,EACnN,iNAAiN,EACjN,sBAAsB,CACvB;IAED,2DAA2D;IAC3D,kFAAkF;IAClF,kFAAkF;IAClF,gFAAgF;IAChF,gEAAgE;IAChE,gBAAgB,EAAE,KAAK,CACrB,OAAO,EACP,gDAAgD,EAChD,oCAAoC,EACpC,kBAAkB,CACnB;IACD,kBAAkB,EAAE,KAAK,CACvB,OAAO,EACP,kDAAkD,EAClD,yCAAyC,EACzC,oBAAoB,CACrB;IACD,YAAY,EAAE,KAAK,CACjB,SAAS,EACT,oCAAoC,EACpC,6BAA6B,EAC7B,cAAc,CACf;IACD,kBAAkB,EAAE,KAAK,CACvB,OAAO,EACP,4CAA4C,EAC5C,wCAAwC,EACxC,oBAAoB,CACrB;IACD,yBAAyB,EAAE,KAAK,CAC9B,SAAS,EACT,iIAAiI,EACjI,oFAAoF,EACpF,2BAA2B,CAC5B;IACD,cAAc,EAAE,KAAK,CACnB,MAAM,EACN,kEAAkE,EAClE,0IAA0I,EAC1I,gBAAgB,CACjB;IACD,mBAAmB,EAAE,KAAK,CACxB,OAAO,EACP,oDAAoD,EACpD,+BAA+B,EAC/B,qBAAqB,CACtB;IACD,wBAAwB,EAAE,KAAK,CAC7B,OAAO,EACP,mCAAmC,EACnC,sBAAsB,EACtB,0BAA0B,CAC3B;IACD,wBAAwB,EAAE,KAAK,CAC7B,OAAO,EACP,4CAA4C,EAC5C,6CAA6C,EAC7C,0BAA0B,CAC3B;IACD,uBAAuB,EAAE,KAAK,CAC5B,OAAO,EACP,4DAA4D,EAC5D,yBAAyB,EACzB,yBAAyB,CAC1B;IACD,0BAA0B,EAAE,KAAK,CAC/B,OAAO,EACP,yDAAyD,EACzD,mBAAmB,EACnB,4BAA4B,CAC7B;IACD,8BAA8B,EAAE,KAAK,CACnC,OAAO,EACP,wDAAwD,EACxD,6BAA6B,EAC7B,gCAAgC,CACjC;IACD,wBAAwB,EAAE,KAAK,CAC7B,SAAS,EACT,sDAAsD,EACtD,kCAAkC,EAClC,0BAA0B,CAC3B;IACD,iBAAiB,EAAE,KAAK,CACtB,SAAS,EACT,kDAAkD,EAClD,kDAAkD,EAClD,mBAAmB,CACpB;IACD,oBAAoB,EAAE,KAAK,CACzB,SAAS,EACT,iCAAiC,EACjC,gDAAgD,EAChD,sBAAsB,CACvB;IACD,kBAAkB,EAAE,KAAK,CACvB,SAAS,EACT,+CAA+C,EAC/C,0CAA0C,EAC1C,oBAAoB,CACrB;IACD,cAAc,EAAE,KAAK,CACnB,OAAO,EACP,4HAA4H,EAC5H,2GAA2G,EAC3G,gBAAgB,CACjB;IACD,8BAA8B,EAAE,KAAK,CACnC,SAAS,EACT,wNAAwN,EACxN,sMAAsM,EACtM,gCAAgC,CACjC;IACD,mBAAmB,EAAE,KAAK,CACxB,SAAS,EACT,qIAAqI,EACrI,gLAAgL,EAChL,qBAAqB,CACtB;IACD,sBAAsB,EAAE,KAAK,CAC3B,SAAS,EACT,iGAAiG,EACjG,+KAA+K,EAC/K,wBAAwB,CACzB;IACD,oBAAoB,EAAE,KAAK,CACzB,SAAS,EACT,gJAAgJ,EAChJ,+MAA+M,EAC/M,sBAAsB,CACvB;CACmD,CAAC;AAIvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CACnC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAgC,CAC1D,CAAC"}
|
|
@@ -16,8 +16,8 @@ export declare const AllowEntrySchema: z.ZodObject<{
|
|
|
16
16
|
}>;
|
|
17
17
|
export type AllowEntry = z.infer<typeof AllowEntrySchema>;
|
|
18
18
|
export declare const ValidationConfigSchema: z.ZodObject<{
|
|
19
|
-
severity: z.ZodOptional<z.ZodRecord<z.ZodEnum<["LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", ...("LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED")[]]>, z.ZodEnum<["error", "warning", "info", "ignore"]>>>;
|
|
20
|
-
allow: z.ZodOptional<z.ZodRecord<z.ZodEnum<["LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", ...("LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED")[]]>, z.ZodArray<z.ZodObject<{
|
|
19
|
+
severity: z.ZodOptional<z.ZodRecord<z.ZodEnum<["LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "FILENAME_COLLISION" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "REGISTRY_SHAPE_DRIFT" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", ...("LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "FILENAME_COLLISION" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "REGISTRY_SHAPE_DRIFT" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED")[]]>, z.ZodEnum<["error", "warning", "info", "ignore"]>>>;
|
|
20
|
+
allow: z.ZodOptional<z.ZodRecord<z.ZodEnum<["LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "FILENAME_COLLISION" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "REGISTRY_SHAPE_DRIFT" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", ...("LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "FILENAME_COLLISION" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "REGISTRY_SHAPE_DRIFT" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED")[]]>, z.ZodArray<z.ZodObject<{
|
|
21
21
|
paths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
22
22
|
reason: z.ZodString;
|
|
23
23
|
expires: z.ZodOptional<z.ZodString>;
|
|
@@ -31,15 +31,15 @@ export declare const ValidationConfigSchema: z.ZodObject<{
|
|
|
31
31
|
expires?: string | undefined;
|
|
32
32
|
}>, "many">>>;
|
|
33
33
|
}, "strict", z.ZodTypeAny, {
|
|
34
|
-
severity?: Partial<Record<"LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", "error" | "warning" | "info" | "ignore">> | undefined;
|
|
35
|
-
allow?: Partial<Record<"LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", {
|
|
34
|
+
severity?: Partial<Record<"LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "FILENAME_COLLISION" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "REGISTRY_SHAPE_DRIFT" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", "error" | "warning" | "info" | "ignore">> | undefined;
|
|
35
|
+
allow?: Partial<Record<"LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "FILENAME_COLLISION" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "REGISTRY_SHAPE_DRIFT" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", {
|
|
36
36
|
paths: string[];
|
|
37
37
|
reason: string;
|
|
38
38
|
expires?: string | undefined;
|
|
39
39
|
}[]>> | undefined;
|
|
40
40
|
}, {
|
|
41
|
-
severity?: Partial<Record<"LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", "error" | "warning" | "info" | "ignore">> | undefined;
|
|
42
|
-
allow?: Partial<Record<"LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", {
|
|
41
|
+
severity?: Partial<Record<"LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "FILENAME_COLLISION" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "REGISTRY_SHAPE_DRIFT" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", "error" | "warning" | "info" | "ignore">> | undefined;
|
|
42
|
+
allow?: Partial<Record<"LINK_OUTSIDE_PROJECT" | "LINK_TARGETS_DIRECTORY" | "LINK_TO_NAVIGATION_FILE" | "LINK_TO_GITIGNORED_FILE" | "LINK_MISSING_TARGET" | "LINK_DEFERRED_ARTIFACT" | "LINK_TO_SKILL_DEFINITION" | "LINK_DROPPED_BY_DEPTH" | "PACKAGED_UNREFERENCED_FILE" | "PACKAGED_TEST_INPUT" | "PACKAGED_BROKEN_LINK" | "FILENAME_COLLISION" | "DUPLICATE_RESOURCE_ID" | "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" | "NON_PORTABLE_ASSET_REFERENCE" | "NON_PORTABLE_COMMAND" | "SKILL_FRONTMATTER_EXTRA_FIELDS" | "SKILL_CROSS_SKILL_AUTH_UNDECLARED" | "SKILL_DESCRIPTION_STYLE_MIXED_IN_PACKAGE" | "PLUGIN_MISSING_DESCRIPTION" | "PLUGIN_MISSING_AUTHOR" | "PLUGIN_MISSING_LICENSE" | "PLUGIN_NAME_NOT_KEBAB_CASE" | "SKILL_NAME_NOT_KEBAB_CASE" | "SKILL_REFERENCES_BUT_NO_LINKS" | "SKILL_BODY_NOT_IMPERATIVE" | "CAPABILITY_LOCAL_SHELL" | "CAPABILITY_EXTERNAL_CLI" | "CAPABILITY_BROWSER_AUTH" | "COMPAT_TARGET_INCOMPATIBLE" | "COMPAT_TARGET_NEEDS_REVIEW" | "COMPAT_TARGET_UNDECLARED" | "ALLOW_EXPIRED" | "ALLOW_UNUSED" | "COMPONENT_DECLARED_BUT_MISSING" | "COMPONENT_PRESENT_BUT_UNDECLARED" | "REFERENCE_TARGET_MISSING" | "MARKETPLACE_PLUGIN_SOURCE_MISSING" | "REGISTRY_SHAPE_DRIFT" | "LINK_BROKEN_FILE" | "LINK_BROKEN_ANCHOR" | "LINK_UNKNOWN" | "LINK_TO_GITIGNORED" | "LINK_UNRESOLVED_REFERENCE" | "MALFORMED_HTML" | "FRONTMATTER_MISSING" | "FRONTMATTER_INVALID_YAML" | "FRONTMATTER_SCHEMA_ERROR" | "FRONTMATTER_LINK_BROKEN" | "FRONTMATTER_ANCHOR_MISSING" | "FRONTMATTER_LINK_TO_GITIGNORED" | "FRONTMATTER_UNKNOWN_LINK" | "EXTERNAL_URL_DEAD" | "EXTERNAL_URL_TIMEOUT" | "EXTERNAL_URL_ERROR" | "LINK_AUTH_DEAD" | "LINK_AUTH_DEAD_OR_UNAUTHORIZED" | "LINK_AUTH_FORBIDDEN" | "LINK_AUTH_UNAUTHORIZED" | "LINK_AUTH_UNVERIFIED", {
|
|
43
43
|
reason: string;
|
|
44
44
|
paths?: string[] | undefined;
|
|
45
45
|
expires?: string | undefined;
|
|
@@ -4,11 +4,15 @@
|
|
|
4
4
|
* Three composable stages that turn raw validator issues into the final
|
|
5
5
|
* emitted set:
|
|
6
6
|
* - `applyAllowFilter` — suppress issues matched by `validation.allow`
|
|
7
|
-
* entries,
|
|
7
|
+
* entries, reporting per-entry usage and expired allowances.
|
|
8
8
|
* - `resolveSeverity` — resolve each registry code's severity against
|
|
9
9
|
* `validation.severity` overrides (falling back to the registry default).
|
|
10
10
|
* - `runValidationFramework` — orchestrates the two above, drops `ignore`d
|
|
11
|
-
* issues, and synthesizes ALLOW_EXPIRED
|
|
11
|
+
* issues, and synthesizes ALLOW_EXPIRED meta-issues.
|
|
12
|
+
*
|
|
13
|
+
* ALLOW_UNUSED is deliberately NOT in that list. `validation.allow` is declared
|
|
14
|
+
* once per PACKAGE while validation runs once per SKILL, so "this entry matched
|
|
15
|
+
* nothing" is only answerable across a whole run — see {@link AllowUsageLedger}.
|
|
12
16
|
*
|
|
13
17
|
* Non-registry codes (InfoCode / NonOverridableCode) deliberately bypass
|
|
14
18
|
* severity resolution and pass through unchanged.
|
|
@@ -26,11 +30,22 @@ export interface AllowRecord {
|
|
|
26
30
|
reason: string;
|
|
27
31
|
expires?: string | undefined;
|
|
28
32
|
}
|
|
29
|
-
|
|
33
|
+
/**
|
|
34
|
+
* One `validation.allow` entry's usage during ONE call of the filter.
|
|
35
|
+
*
|
|
36
|
+
* `used` is deliberately not named `unused`: a single call sees a single unit of
|
|
37
|
+
* work (one skill), and `used: false` therefore means "this unit did not match
|
|
38
|
+
* it", NOT "the entry is dead". Only {@link AllowUsageLedger} can answer the
|
|
39
|
+
* latter. The negative name invited exactly that misreading — it was read as a
|
|
40
|
+
* verdict and emitted as ALLOW_UNUSED once per non-matching skill.
|
|
41
|
+
*/
|
|
42
|
+
export interface AllowEntryUsage {
|
|
30
43
|
code: IssueCode;
|
|
31
44
|
paths: string[];
|
|
32
45
|
reason: string;
|
|
33
46
|
expires?: string | undefined;
|
|
47
|
+
/** True iff at least one issue in THIS call matched the entry. */
|
|
48
|
+
used: boolean;
|
|
34
49
|
}
|
|
35
50
|
export interface ExpiredRecord {
|
|
36
51
|
code: IssueCode;
|
|
@@ -43,11 +58,53 @@ export interface AllowFilterResult {
|
|
|
43
58
|
emitted: ValidationIssue[];
|
|
44
59
|
allowed: AllowRecord[];
|
|
45
60
|
expired: ExpiredRecord[];
|
|
46
|
-
|
|
61
|
+
/** Per-entry usage for THIS call — a contribution to a run, not a verdict. */
|
|
62
|
+
usage: AllowEntryUsage[];
|
|
47
63
|
}
|
|
48
64
|
export declare function applyAllowFilter(issues: readonly ValidationIssue[], config: AllowConfig, now?: Date): AllowFilterResult;
|
|
65
|
+
/**
|
|
66
|
+
* Run-level record of which `validation.allow` entries anything matched.
|
|
67
|
+
*
|
|
68
|
+
* The unit of DECLARATION for an allow entry is the package (`skills.defaults.
|
|
69
|
+
* validation.allow`); the unit of ANALYSIS is one skill. So an entry scoped to
|
|
70
|
+
* two files is not matched by any of the package's other skills — and reporting
|
|
71
|
+
* that per skill produced 78 ALLOW_UNUSED warnings from 3 legitimate entries on
|
|
72
|
+
* this repo's own tree. "Matched nothing" is a property of the RUN.
|
|
73
|
+
*
|
|
74
|
+
* The ledger makes that structural rather than remembered:
|
|
75
|
+
* - it is monotone — `runValidationFramework` can only ADD to `matched`, so no
|
|
76
|
+
* single call can conclude an entry is dead, in any call order;
|
|
77
|
+
* - it is the ONLY producer of ALLOW_UNUSED (see {@link allowUnusedIssues}),
|
|
78
|
+
* so there is no code path by which per-skill semantics can come back.
|
|
79
|
+
*
|
|
80
|
+
* A caller whose run really is one unit of work uses
|
|
81
|
+
* {@link runSingleUnitValidation}, whose name states that claim.
|
|
82
|
+
*/
|
|
83
|
+
export interface AllowUsageLedger {
|
|
84
|
+
/**
|
|
85
|
+
* Entry key → the finalized ALLOW_UNUSED issue to emit if the run never
|
|
86
|
+
* matches it. Populated on first sight of an unmatched entry.
|
|
87
|
+
*/
|
|
88
|
+
readonly candidates: Map<string, ValidationIssue>;
|
|
89
|
+
/** Keys matched by at least one unit of work anywhere in the run. */
|
|
90
|
+
readonly matched: Set<string>;
|
|
91
|
+
}
|
|
92
|
+
export declare function createAllowUsageLedger(): AllowUsageLedger;
|
|
93
|
+
/**
|
|
94
|
+
* ALLOW_UNUSED issues for entries NO unit of work in the run matched.
|
|
95
|
+
*
|
|
96
|
+
* Call once, after the last unit. Severity was already resolved (and `ignore`
|
|
97
|
+
* already applied) when each candidate was recorded, so this needs no config.
|
|
98
|
+
*/
|
|
99
|
+
export declare function allowUnusedIssues(ledger: AllowUsageLedger): ValidationIssue[];
|
|
49
100
|
export interface FrameworkResult {
|
|
50
|
-
/**
|
|
101
|
+
/**
|
|
102
|
+
* Issues the consumer should surface (severity resolved; ignores dropped).
|
|
103
|
+
*
|
|
104
|
+
* Excludes ALLOW_UNUSED, which is not knowable from one unit of work — drain
|
|
105
|
+
* the run's {@link AllowUsageLedger} with {@link allowUnusedIssues} once the
|
|
106
|
+
* last unit has been validated.
|
|
107
|
+
*/
|
|
51
108
|
emitted: ValidationIssue[];
|
|
52
109
|
/** Issues suppressed by an allow entry (for verbose display). */
|
|
53
110
|
allowed: Array<{
|
|
@@ -59,5 +116,23 @@ export interface FrameworkResult {
|
|
|
59
116
|
/** True when any emitted issue has resolved severity 'error'. */
|
|
60
117
|
hasErrors: boolean;
|
|
61
118
|
}
|
|
62
|
-
|
|
119
|
+
/**
|
|
120
|
+
* Run the framework over ONE unit of work (typically one skill).
|
|
121
|
+
*
|
|
122
|
+
* `ledger` is required, not optional-with-a-default, so the compiler asks each
|
|
123
|
+
* caller the question the per-skill call site could not answer on its own:
|
|
124
|
+
* *whose run is this?* Drain it once with {@link allowUnusedIssues} after the
|
|
125
|
+
* last unit; a caller whose run is a single unit should use
|
|
126
|
+
* {@link runSingleUnitValidation} instead.
|
|
127
|
+
*/
|
|
128
|
+
export declare function runValidationFramework(rawIssues: readonly ValidationIssue[], config: ValidationConfig, ledger: AllowUsageLedger, now?: Date): FrameworkResult;
|
|
129
|
+
/**
|
|
130
|
+
* Run the framework where the RUN IS THIS ONE CALL — a whole-registry validate,
|
|
131
|
+
* or a command that validates exactly one skill.
|
|
132
|
+
*
|
|
133
|
+
* The name is the claim: using it inside a loop over skills asserts something
|
|
134
|
+
* false, and is the defect this module's ledger exists to prevent. Multi-unit
|
|
135
|
+
* callers create one {@link AllowUsageLedger} for the run instead.
|
|
136
|
+
*/
|
|
137
|
+
export declare function runSingleUnitValidation(rawIssues: readonly ValidationIssue[], config: ValidationConfig, now?: Date): FrameworkResult;
|
|
63
138
|
//# sourceMappingURL=validation-framework.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-framework.d.ts","sourceRoot":"","sources":["../src/validation-framework.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validation-framework.d.ts","sourceRoot":"","sources":["../src/validation-framework.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,15 @@
|
|
|
4
4
|
* Three composable stages that turn raw validator issues into the final
|
|
5
5
|
* emitted set:
|
|
6
6
|
* - `applyAllowFilter` — suppress issues matched by `validation.allow`
|
|
7
|
-
* entries,
|
|
7
|
+
* entries, reporting per-entry usage and expired allowances.
|
|
8
8
|
* - `resolveSeverity` — resolve each registry code's severity against
|
|
9
9
|
* `validation.severity` overrides (falling back to the registry default).
|
|
10
10
|
* - `runValidationFramework` — orchestrates the two above, drops `ignore`d
|
|
11
|
-
* issues, and synthesizes ALLOW_EXPIRED
|
|
11
|
+
* issues, and synthesizes ALLOW_EXPIRED meta-issues.
|
|
12
|
+
*
|
|
13
|
+
* ALLOW_UNUSED is deliberately NOT in that list. `validation.allow` is declared
|
|
14
|
+
* once per PACKAGE while validation runs once per SKILL, so "this entry matched
|
|
15
|
+
* nothing" is only answerable across a whole run — see {@link AllowUsageLedger}.
|
|
12
16
|
*
|
|
13
17
|
* Non-registry codes (InfoCode / NonOverridableCode) deliberately bypass
|
|
14
18
|
* severity resolution and pass through unchanged.
|
|
@@ -45,9 +49,9 @@ function buildMatchers(allowByCode) {
|
|
|
45
49
|
}
|
|
46
50
|
return matchers;
|
|
47
51
|
}
|
|
48
|
-
function
|
|
52
|
+
function collectExpiredAndUsage(matchers, allowed, now) {
|
|
49
53
|
const expired = [];
|
|
50
|
-
const
|
|
54
|
+
const usage = [];
|
|
51
55
|
for (const [code, list] of matchers) {
|
|
52
56
|
for (const m of list) {
|
|
53
57
|
if (isExpired(m.entry.expires, now)) {
|
|
@@ -61,20 +65,19 @@ function collectExpiredAndUnused(matchers, allowed, now) {
|
|
|
61
65
|
matchedLocations,
|
|
62
66
|
});
|
|
63
67
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
unused.push(unusedRecord);
|
|
68
|
+
const record = {
|
|
69
|
+
code,
|
|
70
|
+
paths: m.entry.paths,
|
|
71
|
+
reason: m.entry.reason,
|
|
72
|
+
used: m.used,
|
|
73
|
+
};
|
|
74
|
+
if (m.entry.expires !== undefined) {
|
|
75
|
+
record.expires = m.entry.expires;
|
|
74
76
|
}
|
|
77
|
+
usage.push(record);
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
|
-
return { expired,
|
|
80
|
+
return { expired, usage };
|
|
78
81
|
}
|
|
79
82
|
export function applyAllowFilter(issues, config, now = new Date()) {
|
|
80
83
|
const emitted = [];
|
|
@@ -110,8 +113,36 @@ export function applyAllowFilter(issues, config, now = new Date()) {
|
|
|
110
113
|
emitted.push(issue);
|
|
111
114
|
}
|
|
112
115
|
}
|
|
113
|
-
const { expired,
|
|
114
|
-
return { emitted, allowed, expired,
|
|
116
|
+
const { expired, usage } = collectExpiredAndUsage(matchers, allowed, now);
|
|
117
|
+
return { emitted, allowed, expired, usage };
|
|
118
|
+
}
|
|
119
|
+
export function createAllowUsageLedger() {
|
|
120
|
+
return { candidates: new Map(), matched: new Set() };
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Identity of an allow entry across the calls of one run.
|
|
124
|
+
*
|
|
125
|
+
* Keyed on the declared content rather than on object identity, because a
|
|
126
|
+
* batching caller may re-parse or re-merge config per skill (and `vat audit`
|
|
127
|
+
* spans several governing configs in one run — entries that differ there are
|
|
128
|
+
* different entries, and must be judged separately).
|
|
129
|
+
*/
|
|
130
|
+
function allowEntryKey(usage) {
|
|
131
|
+
return JSON.stringify([usage.code, usage.paths, usage.reason, usage.expires ?? null]);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* ALLOW_UNUSED issues for entries NO unit of work in the run matched.
|
|
135
|
+
*
|
|
136
|
+
* Call once, after the last unit. Severity was already resolved (and `ignore`
|
|
137
|
+
* already applied) when each candidate was recorded, so this needs no config.
|
|
138
|
+
*/
|
|
139
|
+
export function allowUnusedIssues(ledger) {
|
|
140
|
+
const issues = [];
|
|
141
|
+
for (const [key, issue] of ledger.candidates) {
|
|
142
|
+
if (!ledger.matched.has(key))
|
|
143
|
+
issues.push(issue);
|
|
144
|
+
}
|
|
145
|
+
return issues;
|
|
115
146
|
}
|
|
116
147
|
function finalize(issue, config) {
|
|
117
148
|
const code = issue.code;
|
|
@@ -155,16 +186,38 @@ function emitExpiredMeta(expired, config, emitted) {
|
|
|
155
186
|
emitted.push(final);
|
|
156
187
|
}
|
|
157
188
|
}
|
|
158
|
-
|
|
159
|
-
|
|
189
|
+
/**
|
|
190
|
+
* Fold this call's per-entry usage into the run's ledger.
|
|
191
|
+
*
|
|
192
|
+
* Matched entries record usage; unmatched ones only park a CANDIDATE issue. The
|
|
193
|
+
* two operations are asymmetric on purpose: usage is a run-level union that any
|
|
194
|
+
* later call can still complete, so nothing here can decide an entry is dead.
|
|
195
|
+
*/
|
|
196
|
+
function recordAllowUsage(usage, config, ledger) {
|
|
197
|
+
for (const u of usage) {
|
|
198
|
+
const key = allowEntryKey(u);
|
|
199
|
+
if (u.used) {
|
|
200
|
+
ledger.matched.add(key);
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (ledger.candidates.has(key))
|
|
204
|
+
continue;
|
|
160
205
|
const msg = `Allow entry for ${u.code} matched no issues (paths: ${u.paths.join(', ')}).`;
|
|
161
|
-
const
|
|
162
|
-
const final = finalize(raw, config);
|
|
206
|
+
const final = finalize(metaIssue('ALLOW_UNUSED', msg, `validation.allow.${u.code}`), config);
|
|
163
207
|
if (final)
|
|
164
|
-
|
|
208
|
+
ledger.candidates.set(key, final);
|
|
165
209
|
}
|
|
166
210
|
}
|
|
167
|
-
|
|
211
|
+
/**
|
|
212
|
+
* Run the framework over ONE unit of work (typically one skill).
|
|
213
|
+
*
|
|
214
|
+
* `ledger` is required, not optional-with-a-default, so the compiler asks each
|
|
215
|
+
* caller the question the per-skill call site could not answer on its own:
|
|
216
|
+
* *whose run is this?* Drain it once with {@link allowUnusedIssues} after the
|
|
217
|
+
* last unit; a caller whose run is a single unit should use
|
|
218
|
+
* {@link runSingleUnitValidation} instead.
|
|
219
|
+
*/
|
|
220
|
+
export function runValidationFramework(rawIssues, config, ledger, now = new Date()) {
|
|
168
221
|
// 1. Allow filter against raw issues (before severity resolution — allow is
|
|
169
222
|
// indifferent to severity).
|
|
170
223
|
const filtered = applyAllowFilter(rawIssues, config, now);
|
|
@@ -176,9 +229,11 @@ export function runValidationFramework(rawIssues, config, now = new Date()) {
|
|
|
176
229
|
emitted.push(final);
|
|
177
230
|
}
|
|
178
231
|
// 3. Emit ALLOW_EXPIRED for each expired entry (severity from config).
|
|
232
|
+
// Expiry is a property of the entry's own `expires` date, so unlike
|
|
233
|
+
// unused-ness it IS answerable from one unit of work.
|
|
179
234
|
emitExpiredMeta(filtered.expired, config, emitted);
|
|
180
|
-
// 4.
|
|
181
|
-
|
|
235
|
+
// 4. Contribute this unit's allow-entry usage to the run.
|
|
236
|
+
recordAllowUsage(filtered.usage, config, ledger);
|
|
182
237
|
const allowed = filtered.allowed;
|
|
183
238
|
return {
|
|
184
239
|
emitted,
|
|
@@ -186,4 +241,18 @@ export function runValidationFramework(rawIssues, config, now = new Date()) {
|
|
|
186
241
|
hasErrors: emitted.some(i => i.severity === 'error'),
|
|
187
242
|
};
|
|
188
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* Run the framework where the RUN IS THIS ONE CALL — a whole-registry validate,
|
|
246
|
+
* or a command that validates exactly one skill.
|
|
247
|
+
*
|
|
248
|
+
* The name is the claim: using it inside a loop over skills asserts something
|
|
249
|
+
* false, and is the defect this module's ledger exists to prevent. Multi-unit
|
|
250
|
+
* callers create one {@link AllowUsageLedger} for the run instead.
|
|
251
|
+
*/
|
|
252
|
+
export function runSingleUnitValidation(rawIssues, config, now = new Date()) {
|
|
253
|
+
const ledger = createAllowUsageLedger();
|
|
254
|
+
const result = runValidationFramework(rawIssues, config, ledger, now);
|
|
255
|
+
const emitted = [...result.emitted, ...allowUnusedIssues(ledger)];
|
|
256
|
+
return { ...result, emitted, hasErrors: emitted.some(i => i.severity === 'error') };
|
|
257
|
+
}
|
|
189
258
|
//# sourceMappingURL=validation-framework.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-framework.js","sourceRoot":"","sources":["../src/validation-framework.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validation-framework.js","sourceRoot":"","sources":["../src/validation-framework.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibe-agent-toolkit/agent-schema",
|
|
3
|
-
"version": "0.1.41-rc.
|
|
3
|
+
"version": "0.1.41-rc.8",
|
|
4
4
|
"description": "JSON Schema definitions and TypeScript types for VAT agent manifest format",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/picomatch": "^4.0.2",
|
|
42
|
-
"@vibe-agent-toolkit/utils": "0.1.41-rc.
|
|
42
|
+
"@vibe-agent-toolkit/utils": "0.1.41-rc.8",
|
|
43
43
|
"tsx": "^4.21.0",
|
|
44
44
|
"typescript": "^5.9.3",
|
|
45
45
|
"vitest": "^3.2.4"
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"PACKAGED_UNREFERENCED_FILE",
|
|
29
29
|
"PACKAGED_TEST_INPUT",
|
|
30
30
|
"PACKAGED_BROKEN_LINK",
|
|
31
|
+
"FILENAME_COLLISION",
|
|
31
32
|
"DUPLICATE_RESOURCE_ID",
|
|
32
33
|
"SKILL_LENGTH_EXCEEDS_RECOMMENDED",
|
|
33
34
|
"SKILL_TOTAL_SIZE_LARGE",
|
|
@@ -66,6 +67,7 @@
|
|
|
66
67
|
"COMPONENT_PRESENT_BUT_UNDECLARED",
|
|
67
68
|
"REFERENCE_TARGET_MISSING",
|
|
68
69
|
"MARKETPLACE_PLUGIN_SOURCE_MISSING",
|
|
70
|
+
"REGISTRY_SHAPE_DRIFT",
|
|
69
71
|
"LINK_BROKEN_FILE",
|
|
70
72
|
"LINK_BROKEN_ANCHOR",
|
|
71
73
|
"LINK_UNKNOWN",
|
|
@@ -135,6 +137,7 @@
|
|
|
135
137
|
"PACKAGED_UNREFERENCED_FILE",
|
|
136
138
|
"PACKAGED_TEST_INPUT",
|
|
137
139
|
"PACKAGED_BROKEN_LINK",
|
|
140
|
+
"FILENAME_COLLISION",
|
|
138
141
|
"DUPLICATE_RESOURCE_ID",
|
|
139
142
|
"SKILL_LENGTH_EXCEEDS_RECOMMENDED",
|
|
140
143
|
"SKILL_TOTAL_SIZE_LARGE",
|
|
@@ -173,6 +176,7 @@
|
|
|
173
176
|
"COMPONENT_PRESENT_BUT_UNDECLARED",
|
|
174
177
|
"REFERENCE_TARGET_MISSING",
|
|
175
178
|
"MARKETPLACE_PLUGIN_SOURCE_MISSING",
|
|
179
|
+
"REGISTRY_SHAPE_DRIFT",
|
|
176
180
|
"LINK_BROKEN_FILE",
|
|
177
181
|
"LINK_BROKEN_ANCHOR",
|
|
178
182
|
"LINK_UNKNOWN",
|