@vibe-agent-toolkit/agent-skills 0.1.32-rc.2 → 0.1.32-rc.4
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/evidence/derive-observations.d.ts.map +1 -1
- package/dist/evidence/derive-observations.js +33 -13
- package/dist/evidence/derive-observations.js.map +1 -1
- package/dist/evidence/index.d.ts +1 -0
- package/dist/evidence/index.d.ts.map +1 -1
- package/dist/evidence/index.js +1 -0
- package/dist/evidence/index.js.map +1 -1
- package/dist/evidence/interpreter-detection.d.ts +29 -0
- package/dist/evidence/interpreter-detection.d.ts.map +1 -0
- package/dist/evidence/interpreter-detection.js +58 -0
- package/dist/evidence/interpreter-detection.js.map +1 -0
- package/dist/validators/code-registry.d.ts +1 -1
- package/dist/validators/code-registry.d.ts.map +1 -1
- package/dist/validators/code-registry.js +5 -0
- package/dist/validators/code-registry.js.map +1 -1
- package/dist/validators/frontmatter-validation.d.ts.map +1 -1
- package/dist/validators/frontmatter-validation.js +130 -41
- package/dist/validators/frontmatter-validation.js.map +1 -1
- package/dist/validators/packaging-validator.d.ts +8 -0
- package/dist/validators/packaging-validator.d.ts.map +1 -1
- package/dist/validators/packaging-validator.js +101 -1
- package/dist/validators/packaging-validator.js.map +1 -1
- package/dist/validators/validation-rules.d.ts +5 -0
- package/dist/validators/validation-rules.d.ts.map +1 -1
- package/dist/validators/validation-rules.js +5 -0
- package/dist/validators/validation-rules.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-observations.d.ts","sourceRoot":"","sources":["../../src/evidence/derive-observations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"derive-observations.d.ts","sourceRoot":"","sources":["../../src/evidence/derive-observations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,yBAAyB;IACxC,sEAAsE;IACtE,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,mDAAmD;IACnD,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAStF,CAAC;AAqDF,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,OAAO,EAAE,yBAAyB,GACjC,WAAW,EAAE,CAoCf"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* check fewer patterns than full plugins) and a subject label for summary
|
|
7
7
|
* wording.
|
|
8
8
|
*/
|
|
9
|
+
import { detectInterpreter, extractMcpCommandFromMatchText, } from './interpreter-detection.js';
|
|
9
10
|
/** External-CLI pattern IDs paired with their binary name. */
|
|
10
11
|
export const EXTERNAL_CLI_BINARIES = [
|
|
11
12
|
{ binary: 'az', patternId: 'EXTERNAL_CLI_AZ' },
|
|
@@ -25,6 +26,37 @@ const BROWSER_AUTH_PATTERN_IDS = new Set([
|
|
|
25
26
|
'BROWSER_AUTH_AWS_SSO_LOGIN',
|
|
26
27
|
'BROWSER_AUTH_WEBBROWSER_OPEN',
|
|
27
28
|
]);
|
|
29
|
+
/**
|
|
30
|
+
* Classify a single evidence record as contributing to a specific external-CLI
|
|
31
|
+
* binary (e.g. via `EXTERNAL_CLI_*` patterns, or an `MCP_SERVER_COMMAND` whose
|
|
32
|
+
* command field is a known interpreter). Returns `undefined` if the record
|
|
33
|
+
* does not contribute.
|
|
34
|
+
*/
|
|
35
|
+
function externalCliBinaryFor(record) {
|
|
36
|
+
const explicit = EXTERNAL_CLI_BINARIES.find(b => b.patternId === record.patternId);
|
|
37
|
+
if (explicit)
|
|
38
|
+
return explicit.binary;
|
|
39
|
+
if (record.patternId !== 'MCP_SERVER_COMMAND')
|
|
40
|
+
return undefined;
|
|
41
|
+
const command = extractMcpCommandFromMatchText(record.matchText);
|
|
42
|
+
return command === undefined ? undefined : detectInterpreter(command);
|
|
43
|
+
}
|
|
44
|
+
function aggregateExternalCliEvidence(evidence) {
|
|
45
|
+
const cliByBinary = new Map();
|
|
46
|
+
for (const e of evidence) {
|
|
47
|
+
const binary = externalCliBinaryFor(e);
|
|
48
|
+
if (!binary)
|
|
49
|
+
continue;
|
|
50
|
+
const existing = cliByBinary.get(binary);
|
|
51
|
+
if (existing) {
|
|
52
|
+
existing.push(e);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
cliByBinary.set(binary, [e]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return cliByBinary;
|
|
59
|
+
}
|
|
28
60
|
function dedupePatternIds(records) {
|
|
29
61
|
const seen = new Set();
|
|
30
62
|
const out = [];
|
|
@@ -47,19 +79,7 @@ export function deriveObservationsFromEvidence(evidence, options) {
|
|
|
47
79
|
supportingEvidence: dedupePatternIds(localShell),
|
|
48
80
|
});
|
|
49
81
|
}
|
|
50
|
-
const cliByBinary =
|
|
51
|
-
for (const e of evidence) {
|
|
52
|
-
const match = EXTERNAL_CLI_BINARIES.find(b => b.patternId === e.patternId);
|
|
53
|
-
if (!match)
|
|
54
|
-
continue;
|
|
55
|
-
const existing = cliByBinary.get(match.binary);
|
|
56
|
-
if (existing) {
|
|
57
|
-
existing.push(e);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
cliByBinary.set(match.binary, [e]);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
82
|
+
const cliByBinary = aggregateExternalCliEvidence(evidence);
|
|
63
83
|
const sortedBinaries = [...cliByBinary.keys()].sort((a, b) => a.localeCompare(b));
|
|
64
84
|
for (const binary of sortedBinaries) {
|
|
65
85
|
const records = cliByBinary.get(binary);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-observations.js","sourceRoot":"","sources":["../../src/evidence/derive-observations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"derive-observations.js","sourceRoot":"","sources":["../../src/evidence/derive-observations.ts"],"names":[],"mappings":"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"}
|
package/dist/evidence/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type { EvidenceRecord, EvidenceSource, EvidenceConfidence, EvidenceLocation, PatternDefinition, Observation, } from './types.js';
|
|
2
2
|
export { PATTERN_REGISTRY, getPatternDefinition, assertPatternRegistered, } from './pattern-registry.js';
|
|
3
3
|
export { deriveObservationsFromEvidence, EXTERNAL_CLI_BINARIES, type DeriveObservationsOptions, type DerivationSubject, } from './derive-observations.js';
|
|
4
|
+
export { detectInterpreter, extractMcpCommandFromMatchText, } from './interpreter-detection.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/evidence/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/evidence/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC"}
|
package/dist/evidence/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { PATTERN_REGISTRY, getPatternDefinition, assertPatternRegistered, } from './pattern-registry.js';
|
|
2
2
|
export { deriveObservationsFromEvidence, EXTERNAL_CLI_BINARIES, } from './derive-observations.js';
|
|
3
|
+
export { detectInterpreter, extractMcpCommandFromMatchText, } from './interpreter-detection.js';
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/evidence/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,GAGtB,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/evidence/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,GAGtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interpreter detection for MCP server commands.
|
|
3
|
+
*
|
|
4
|
+
* When an MCP server's `command` field is a well-known interpreter (python,
|
|
5
|
+
* node), we treat it as an external CLI the plugin depends on — it must be
|
|
6
|
+
* present on the target runtime. This gives MCP-rich plugins (especially
|
|
7
|
+
* python-based ones) a meaningful `CAPABILITY_EXTERNAL_CLI` signal.
|
|
8
|
+
*
|
|
9
|
+
* Unknown/bespoke commands (e.g. `./scripts/my-server.sh`) are intentionally
|
|
10
|
+
* left alone — we don't speculate about what they require.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Normalize an MCP server command to a canonical external-CLI binary name,
|
|
14
|
+
* or `undefined` if the command is not a recognized interpreter.
|
|
15
|
+
*
|
|
16
|
+
* Handles absolute paths (`/usr/bin/python3`, `/opt/homebrew/bin/node`),
|
|
17
|
+
* versioned suffixes (`python3.11`), and plain names (`python3`, `node`).
|
|
18
|
+
*/
|
|
19
|
+
export declare function detectInterpreter(command: string): string | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Extract the command string from an `MCP_SERVER_COMMAND` evidence record's
|
|
22
|
+
* matchText. The mcp-config-scanner emits matchText of the form
|
|
23
|
+
* `MCP server "<name>" command: <command>`.
|
|
24
|
+
*
|
|
25
|
+
* Returns `undefined` if the pattern is unrecognized (e.g. evidence from a
|
|
26
|
+
* different scanner shape).
|
|
27
|
+
*/
|
|
28
|
+
export declare function extractMcpCommandFromMatchText(matchText: string): string | undefined;
|
|
29
|
+
//# sourceMappingURL=interpreter-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter-detection.d.ts","sourceRoot":"","sources":["../../src/evidence/interpreter-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAcrE;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGpF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interpreter detection for MCP server commands.
|
|
3
|
+
*
|
|
4
|
+
* When an MCP server's `command` field is a well-known interpreter (python,
|
|
5
|
+
* node), we treat it as an external CLI the plugin depends on — it must be
|
|
6
|
+
* present on the target runtime. This gives MCP-rich plugins (especially
|
|
7
|
+
* python-based ones) a meaningful `CAPABILITY_EXTERNAL_CLI` signal.
|
|
8
|
+
*
|
|
9
|
+
* Unknown/bespoke commands (e.g. `./scripts/my-server.sh`) are intentionally
|
|
10
|
+
* left alone — we don't speculate about what they require.
|
|
11
|
+
*/
|
|
12
|
+
/** Canonical interpreter binary names VAT normalizes matches to. */
|
|
13
|
+
const CANONICAL_PYTHON = 'python3';
|
|
14
|
+
const CANONICAL_NODE = 'node';
|
|
15
|
+
/** Regex for python interpreter basenames: python, python2, python3, python3.11. */
|
|
16
|
+
// eslint-disable-next-line security/detect-unsafe-regex -- Bounded: matches `python` + optional digits + optional `.digits`. No unbounded backtracking.
|
|
17
|
+
const PYTHON_BASENAME = /^python(?:\d{1,3}(?:\.\d{1,3})?)?$/;
|
|
18
|
+
/** Regex for node interpreter basenames: node, nodejs. */
|
|
19
|
+
const NODE_BASENAME = /^(?:node|nodejs)$/;
|
|
20
|
+
/**
|
|
21
|
+
* Normalize an MCP server command to a canonical external-CLI binary name,
|
|
22
|
+
* or `undefined` if the command is not a recognized interpreter.
|
|
23
|
+
*
|
|
24
|
+
* Handles absolute paths (`/usr/bin/python3`, `/opt/homebrew/bin/node`),
|
|
25
|
+
* versioned suffixes (`python3.11`), and plain names (`python3`, `node`).
|
|
26
|
+
*/
|
|
27
|
+
export function detectInterpreter(command) {
|
|
28
|
+
const trimmed = command.trim();
|
|
29
|
+
if (trimmed.length === 0)
|
|
30
|
+
return undefined;
|
|
31
|
+
// Take the last segment after POSIX or Windows path separators; we don't use
|
|
32
|
+
// node:path.basename because we need to handle BOTH separators regardless of
|
|
33
|
+
// the host platform (an MCP config authored on Windows may be evaluated on
|
|
34
|
+
// Linux CI and vice versa).
|
|
35
|
+
// eslint-disable-next-line local/no-hardcoded-path-split -- Intentional cross-platform basename extraction from semi-structured MCP config strings (not filesystem paths).
|
|
36
|
+
const segments = trimmed.split(/[/\\]/);
|
|
37
|
+
const basename = segments.at(-1);
|
|
38
|
+
if (!basename)
|
|
39
|
+
return undefined;
|
|
40
|
+
if (PYTHON_BASENAME.test(basename))
|
|
41
|
+
return CANONICAL_PYTHON;
|
|
42
|
+
if (NODE_BASENAME.test(basename))
|
|
43
|
+
return CANONICAL_NODE;
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Extract the command string from an `MCP_SERVER_COMMAND` evidence record's
|
|
48
|
+
* matchText. The mcp-config-scanner emits matchText of the form
|
|
49
|
+
* `MCP server "<name>" command: <command>`.
|
|
50
|
+
*
|
|
51
|
+
* Returns `undefined` if the pattern is unrecognized (e.g. evidence from a
|
|
52
|
+
* different scanner shape).
|
|
53
|
+
*/
|
|
54
|
+
export function extractMcpCommandFromMatchText(matchText) {
|
|
55
|
+
const match = /command:\s*(\S.*)$/.exec(matchText);
|
|
56
|
+
return match?.[1]?.trim();
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=interpreter-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter-detection.js","sourceRoot":"","sources":["../../src/evidence/interpreter-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oEAAoE;AACpE,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,oFAAoF;AACpF,wJAAwJ;AACxJ,MAAM,eAAe,GAAG,oCAAoC,CAAC;AAC7D,0DAA0D;AAC1D,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,4BAA4B;IAC5B,2KAA2K;IAC3K,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC5D,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,cAAc,CAAC;IACxD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAAC,SAAiB;IAC9D,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AAC5B,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' | '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_NAME_MISMATCHES_DIR' | 'SKILL_TIME_SENSITIVE_CONTENT' | '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,
|
|
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,8BAA8B,GAE9B,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,CAyK9D,CAAC"}
|
|
@@ -25,6 +25,11 @@ export const CODE_REGISTRY = {
|
|
|
25
25
|
REFERENCE_TOO_DEEP: entry('warning', 'Bundled link graph exceeds the recommended depth; deeply nested references hurt discoverability.', 'Flatten the reference structure or allow if depth is intentional.', 'reference_too_deep'),
|
|
26
26
|
DESCRIPTION_TOO_VAGUE: entry('warning', 'SKILL.md description is too short to reliably trigger the skill.', 'Expand the description with concrete triggers and use cases.', 'description_too_vague'),
|
|
27
27
|
NO_PROGRESSIVE_DISCLOSURE: entry('warning', 'Long SKILL.md with no linked references; progressive disclosure recommended.', 'Move background detail into linked resources and reference them from SKILL.md.', 'no_progressive_disclosure'),
|
|
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
|
+
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
|
+
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_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
|
+
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'),
|
|
28
33
|
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'),
|
|
29
34
|
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'),
|
|
30
35
|
CAPABILITY_BROWSER_AUTH: entry('info', 'Skill appears to require an interactive browser login flow.', 'Informational. If a service-principal flow would work, prefer it. Otherwise declare a browser-capable target.', 'capability_browser_auth'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-registry.js","sourceRoot":"","sources":["../../src/validators/code-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"code-registry.js","sourceRoot":"","sources":["../../src/validators/code-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmDH,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,4BAA4B,EAAE,KAAK,CACjC,MAAM,EACN,kGAAkG,EAClG,iIAAiI,EACjI,8BAA8B,CAC/B;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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter-validation.d.ts","sourceRoot":"","sources":["../../src/validators/frontmatter-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"frontmatter-validation.d.ts","sourceRoot":"","sources":["../../src/validators/frontmatter-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAQlD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACxC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,cAAc,EAAE,OAAO,GACrB,eAAe,EAAE,CAiDnB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,eAAe,EAAE,CAcnB"}
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
* @see https://code.claude.com/docs/en/skills — Official Claude Code skill frontmatter fields
|
|
9
9
|
*/
|
|
10
10
|
import { AgentSkillFrontmatterSchema, VATAgentSkillFrontmatterSchema } from '../schemas/agent-skill-frontmatter.js';
|
|
11
|
+
import { CODE_REGISTRY } from './code-registry.js';
|
|
12
|
+
import { VALIDATION_THRESHOLDS } from './validation-rules.js';
|
|
11
13
|
// Location constants for validation messages
|
|
12
14
|
const FRONTMATTER_LOC = 'frontmatter';
|
|
13
15
|
const FRONTMATTER_NAME_LOC = 'frontmatter.name';
|
|
@@ -82,51 +84,138 @@ export function validateFrontmatterRules(frontmatter) {
|
|
|
82
84
|
const issues = [];
|
|
83
85
|
// Validate name field
|
|
84
86
|
if (frontmatter['name'] && typeof frontmatter['name'] === 'string') {
|
|
85
|
-
|
|
86
|
-
// Check for reserved words
|
|
87
|
-
if (name.includes('anthropic') || name.includes('claude')) {
|
|
88
|
-
issues.push({
|
|
89
|
-
severity: 'error',
|
|
90
|
-
code: 'SKILL_NAME_RESERVED_WORD',
|
|
91
|
-
message: 'Name contains reserved word "anthropic" or "claude"',
|
|
92
|
-
location: FRONTMATTER_NAME_LOC,
|
|
93
|
-
fix: 'Remove reserved word from name',
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
// Check for XML tags
|
|
97
|
-
if (/[<>]/.test(frontmatter['name'])) {
|
|
98
|
-
issues.push({
|
|
99
|
-
severity: 'error',
|
|
100
|
-
code: 'SKILL_NAME_XML_TAGS',
|
|
101
|
-
message: 'Name contains XML tags',
|
|
102
|
-
location: FRONTMATTER_NAME_LOC,
|
|
103
|
-
fix: 'Remove < and > characters from name',
|
|
104
|
-
});
|
|
105
|
-
}
|
|
87
|
+
issues.push(...validateNameRules(frontmatter['name']));
|
|
106
88
|
}
|
|
107
89
|
// Validate description field
|
|
108
90
|
if (frontmatter['description'] && typeof frontmatter['description'] === 'string') {
|
|
109
|
-
|
|
110
|
-
if (/[<>]/.test(frontmatter['description'])) {
|
|
111
|
-
issues.push({
|
|
112
|
-
severity: 'error',
|
|
113
|
-
code: 'SKILL_DESCRIPTION_XML_TAGS',
|
|
114
|
-
message: 'Description contains XML tags',
|
|
115
|
-
location: FRONTMATTER_DESC_LOC,
|
|
116
|
-
fix: 'Remove < and > characters from description',
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
// Check for empty description
|
|
120
|
-
if (frontmatter['description'].trim() === '') {
|
|
121
|
-
issues.push({
|
|
122
|
-
severity: 'error',
|
|
123
|
-
code: 'SKILL_DESCRIPTION_EMPTY',
|
|
124
|
-
message: 'Description is empty',
|
|
125
|
-
location: FRONTMATTER_DESC_LOC,
|
|
126
|
-
fix: 'Add description explaining what the skill does and when to use it',
|
|
127
|
-
});
|
|
128
|
-
}
|
|
91
|
+
issues.push(...validateDescriptionRules(frontmatter['description']));
|
|
129
92
|
}
|
|
130
93
|
return issues;
|
|
131
94
|
}
|
|
95
|
+
function validateNameRules(name) {
|
|
96
|
+
const issues = [];
|
|
97
|
+
const lowered = name.toLowerCase();
|
|
98
|
+
if (lowered.includes('anthropic') || lowered.includes('claude')) {
|
|
99
|
+
issues.push({
|
|
100
|
+
severity: 'error',
|
|
101
|
+
code: 'SKILL_NAME_RESERVED_WORD',
|
|
102
|
+
message: 'Name contains reserved word "anthropic" or "claude"',
|
|
103
|
+
location: FRONTMATTER_NAME_LOC,
|
|
104
|
+
fix: 'Remove reserved word from name',
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (/[<>]/.test(name)) {
|
|
108
|
+
issues.push({
|
|
109
|
+
severity: 'error',
|
|
110
|
+
code: 'SKILL_NAME_XML_TAGS',
|
|
111
|
+
message: 'Name contains XML tags',
|
|
112
|
+
location: FRONTMATTER_NAME_LOC,
|
|
113
|
+
fix: 'Remove < and > characters from name',
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return issues;
|
|
117
|
+
}
|
|
118
|
+
function validateDescriptionRules(description) {
|
|
119
|
+
const issues = [];
|
|
120
|
+
if (/[<>]/.test(description)) {
|
|
121
|
+
issues.push({
|
|
122
|
+
severity: 'error',
|
|
123
|
+
code: 'SKILL_DESCRIPTION_XML_TAGS',
|
|
124
|
+
message: 'Description contains XML tags',
|
|
125
|
+
location: FRONTMATTER_DESC_LOC,
|
|
126
|
+
fix: 'Remove < and > characters from description',
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
if (description.trim() === '') {
|
|
130
|
+
issues.push({
|
|
131
|
+
severity: 'error',
|
|
132
|
+
code: 'SKILL_DESCRIPTION_EMPTY',
|
|
133
|
+
message: 'Description is empty',
|
|
134
|
+
location: FRONTMATTER_DESC_LOC,
|
|
135
|
+
fix: 'Add description explaining what the skill does and when to use it',
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// Soft check: description exceeds Claude Code /skills display limit (250 chars)
|
|
139
|
+
// Sits alongside the 1024-char hard schema limit as an earlier, softer warning.
|
|
140
|
+
if (description.length > VALIDATION_THRESHOLDS.MAX_DESCRIPTION_CHARS_CLAUDE_CODE) {
|
|
141
|
+
const registryEntry = CODE_REGISTRY.SKILL_DESCRIPTION_OVER_CLAUDE_CODE_LIMIT;
|
|
142
|
+
issues.push({
|
|
143
|
+
severity: registryEntry.defaultSeverity,
|
|
144
|
+
code: 'SKILL_DESCRIPTION_OVER_CLAUDE_CODE_LIMIT',
|
|
145
|
+
message: `Description is ${description.length} characters (Claude Code truncates at ${VALIDATION_THRESHOLDS.MAX_DESCRIPTION_CHARS_CLAUDE_CODE} in /skills listing)`,
|
|
146
|
+
location: FRONTMATTER_DESC_LOC,
|
|
147
|
+
fix: registryEntry.fix,
|
|
148
|
+
reference: registryEntry.reference,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const fillerIssue = detectFillerOpener(description);
|
|
152
|
+
if (fillerIssue !== null) {
|
|
153
|
+
issues.push(fillerIssue);
|
|
154
|
+
}
|
|
155
|
+
const wrongPersonIssue = detectWrongPerson(description);
|
|
156
|
+
if (wrongPersonIssue !== null) {
|
|
157
|
+
issues.push(wrongPersonIssue);
|
|
158
|
+
}
|
|
159
|
+
return issues;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Filler opener patterns that describe the skill-as-object rather than the behavior.
|
|
163
|
+
* Anchored to the start of the trimmed description (case-insensitive).
|
|
164
|
+
*
|
|
165
|
+
* Note: `Use when <concrete trigger>` is allowed — that's Anthropic's recommended
|
|
166
|
+
* pattern. Only `Use when you want to` / `Use when you need to` are flagged.
|
|
167
|
+
*/
|
|
168
|
+
const FILLER_OPENER_PATTERNS = [
|
|
169
|
+
/^this\s+skill\b/i,
|
|
170
|
+
/^a\s+skill\s+that\b/i,
|
|
171
|
+
/^a\s+skill\s+which\b/i,
|
|
172
|
+
/^used\s+to\b/i,
|
|
173
|
+
/^use\s+when\s+you\s+want\s+to\b/i,
|
|
174
|
+
/^use\s+when\s+you\s+need\s+to\b/i,
|
|
175
|
+
];
|
|
176
|
+
function detectFillerOpener(description) {
|
|
177
|
+
const trimmed = description.trimStart();
|
|
178
|
+
const match = FILLER_OPENER_PATTERNS.find((pattern) => pattern.test(trimmed));
|
|
179
|
+
if (match === undefined) {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
// Extract matched prefix for the error message
|
|
183
|
+
const execResult = match.exec(trimmed);
|
|
184
|
+
const matchedText = execResult?.[0] ?? '';
|
|
185
|
+
const registryEntry = CODE_REGISTRY.SKILL_DESCRIPTION_FILLER_OPENER;
|
|
186
|
+
return {
|
|
187
|
+
severity: registryEntry.defaultSeverity,
|
|
188
|
+
code: 'SKILL_DESCRIPTION_FILLER_OPENER',
|
|
189
|
+
message: `Description opens with filler "${matchedText}..." — lead with a verb phrase or "Use when <concrete trigger>" instead`,
|
|
190
|
+
location: FRONTMATTER_DESC_LOC,
|
|
191
|
+
fix: registryEntry.fix,
|
|
192
|
+
reference: registryEntry.reference,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Wrong-person patterns: first-person (I/I'll/I'm) or conversational second-person
|
|
197
|
+
* (You/You'll/You're) followed by a common verb/modal.
|
|
198
|
+
*
|
|
199
|
+
* Word-boundary anchored to avoid matches on `Iowa`, `Ionic`, etc.
|
|
200
|
+
* Case-insensitive.
|
|
201
|
+
*/
|
|
202
|
+
const WRONG_PERSON_PRONOUNS = '(?:I|I\'ll|I\'m|I\'ve|You|You\'ll|You\'re|You\'ve)';
|
|
203
|
+
const WRONG_PERSON_VERBS = '(?:can|should|will|might|need|want|must|may|could|would|have|are|am)';
|
|
204
|
+
// eslint-disable-next-line security/detect-non-literal-regexp -- compile-time constant pattern, no user input
|
|
205
|
+
const WRONG_PERSON_PATTERN = new RegExp(String.raw `\b${WRONG_PERSON_PRONOUNS}\s+${WRONG_PERSON_VERBS}\b`, 'i');
|
|
206
|
+
function detectWrongPerson(description) {
|
|
207
|
+
const match = WRONG_PERSON_PATTERN.exec(description);
|
|
208
|
+
if (match === null) {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
const registryEntry = CODE_REGISTRY.SKILL_DESCRIPTION_WRONG_PERSON;
|
|
212
|
+
return {
|
|
213
|
+
severity: registryEntry.defaultSeverity,
|
|
214
|
+
code: 'SKILL_DESCRIPTION_WRONG_PERSON',
|
|
215
|
+
message: `Description uses first-person or conversational second-person voice ("${match[0]}") — Anthropic recommends third person`,
|
|
216
|
+
location: FRONTMATTER_DESC_LOC,
|
|
217
|
+
fix: registryEntry.fix,
|
|
218
|
+
reference: registryEntry.reference,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
132
221
|
//# sourceMappingURL=frontmatter-validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter-validation.js","sourceRoot":"","sources":["../../src/validators/frontmatter-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"frontmatter-validation.js","sourceRoot":"","sources":["../../src/validators/frontmatter-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AAEpH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,6CAA6C;AAC7C,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAChD,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACxC,WAAoC,EACpC,cAAuB;IAEvB,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,2BAA2B,CAAC;IAC7F,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEnD,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IACf,CAAC;IAED,oCAAoC;IACpC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,kCAAkC;gBAC3C,QAAQ,EAAE,eAAe;gBACzB,GAAG,EAAE,iCAAiC;aACtC,CAAC,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,KAAK,aAAa,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,yCAAyC;gBAClD,QAAQ,EAAE,eAAe;gBACzB,GAAG,EAAE,wCAAwC;aAC7C,CAAC,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,oBAAoB;gBAC9B,GAAG,EAAE,uEAAuE;aAC5E,CAAC,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,4BAA4B;gBAClC,OAAO,EAAE,gDAAiD,WAAW,CAAC,aAAa,CAAY,EAAE,MAAM,IAAI,CAAC,GAAG;gBAC/G,QAAQ,EAAE,oBAAoB;gBAC9B,GAAG,EAAE,+CAA+C;aACpD,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACvC,WAAoC;IAEpC,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,sBAAsB;IACtB,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,6BAA6B;IAC7B,IAAI,WAAW,CAAC,aAAa,CAAC,IAAI,OAAO,WAAW,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACtC,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEnC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,qDAAqD;YAC9D,QAAQ,EAAE,oBAAoB;YAC9B,GAAG,EAAE,gCAAgC;SACrC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,wBAAwB;YACjC,QAAQ,EAAE,oBAAoB;YAC9B,GAAG,EAAE,qCAAqC;SAC1C,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,WAAmB;IACpD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,+BAA+B;YACxC,QAAQ,EAAE,oBAAoB;YAC9B,GAAG,EAAE,4CAA4C;SACjD,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,sBAAsB;YAC/B,QAAQ,EAAE,oBAAoB;YAC9B,GAAG,EAAE,mEAAmE;SACxE,CAAC,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,gFAAgF;IAChF,IAAI,WAAW,CAAC,MAAM,GAAG,qBAAqB,CAAC,iCAAiC,EAAE,CAAC;QAClF,MAAM,aAAa,GAAG,aAAa,CAAC,wCAAwC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,aAAa,CAAC,eAAe;YACvC,IAAI,EAAE,0CAA0C;YAChD,OAAO,EAAE,kBAAkB,WAAW,CAAC,MAAM,yCAAyC,qBAAqB,CAAC,iCAAiC,sBAAsB;YACnK,QAAQ,EAAE,oBAAoB;YAC9B,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,SAAS,EAAE,aAAa,CAAC,SAAS;SAClC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAsB;IACjD,kBAAkB;IAClB,sBAAsB;IACtB,uBAAuB;IACvB,eAAe;IACf,kCAAkC;IAClC,kCAAkC;CAClC,CAAC;AAEF,SAAS,kBAAkB,CAAC,WAAmB;IAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,+CAA+C;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,aAAa,CAAC,+BAA+B,CAAC;IACpE,OAAO;QACN,QAAQ,EAAE,aAAa,CAAC,eAAe;QACvC,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE,kCAAkC,WAAW,yEAAyE;QAC/H,QAAQ,EAAE,oBAAoB;QAC9B,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,SAAS,EAAE,aAAa,CAAC,SAAS;KAClC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG,oDAAoD,CAAC;AACnF,MAAM,kBAAkB,GAAG,sEAAsE,CAAC;AAClG,8GAA8G;AAC9G,MAAM,oBAAoB,GAAG,IAAI,MAAM,CACtC,MAAM,CAAC,GAAG,CAAA,KAAK,qBAAqB,MAAM,kBAAkB,IAAI,EAChE,GAAG,CACH,CAAC;AAEF,SAAS,iBAAiB,CAAC,WAAmB;IAC7C,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,aAAa,GAAG,aAAa,CAAC,8BAA8B,CAAC;IACnE,OAAO;QACN,QAAQ,EAAE,aAAa,CAAC,eAAe;QACvC,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE,yEAAyE,KAAK,CAAC,CAAC,CAAC,wCAAwC;QAClI,QAAQ,EAAE,oBAAoB;QAC9B,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,SAAS,EAAE,aAAa,CAAC,SAAS;KAClC,CAAC;AACH,CAAC"}
|
|
@@ -106,4 +106,12 @@ export interface PackagingValidationResult {
|
|
|
106
106
|
* @returns Validation result with active errors, warnings, and allowed issues
|
|
107
107
|
*/
|
|
108
108
|
export declare function validateSkillForPackaging(skillPath: string, packagingConfig?: SkillPackagingConfig, context?: 'source' | 'built'): Promise<PackagingValidationResult>;
|
|
109
|
+
/**
|
|
110
|
+
* Detect SKILL_NAME_MISMATCHES_DIR issue from a frontmatter `name` and a
|
|
111
|
+
* parent directory name. Returns null when no mismatch should be reported.
|
|
112
|
+
*
|
|
113
|
+
* Exported for direct unit testing — the packaging validator wires it up
|
|
114
|
+
* with values derived from the skill path.
|
|
115
|
+
*/
|
|
116
|
+
export declare function detectNameMismatchIssue(frontmatterName: unknown, parentDir: string, skillPath: string): ValidationIssue | null;
|
|
109
117
|
//# sourceMappingURL=packaging-validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packaging-validator.d.ts","sourceRoot":"","sources":["../../src/validators/packaging-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAY1F;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,2BAA2B,CAAC,EAAE;QAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzD,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,uFAAuF;IACvF,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC1C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,aAAa,GAAG,eAAe,GAAG,aAAa,CAAC,CAAC;CAC1E;AAED,mDAAmD;AACnD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,YAAY,CAAC;IACzH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,wBAAwB;IACxB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAE5B,uEAAuE;IACvE,SAAS,EAAE,eAAe,EAAE,CAAC;IAE7B,oEAAoE;IACpE,YAAY,EAAE,eAAe,EAAE,CAAC;IAEhC,wEAAwE;IACxE,cAAc,EAAE,eAAe,EAAE,CAAC;IAElC,yCAAyC;IACzC,aAAa,EAAE,WAAW,EAAE,CAAC;IAE7B;;;;;OAKG;IACH,YAAY,EAAE,WAAW,EAAE,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,EAAE,cAAc,EAAE,CAAC;IAE3B,+BAA+B;IAC/B,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,kBAAkB,EAAE,uBAAuB,EAAE,CAAC;KAC/C,CAAC;CACH;AAkDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,oBAAoB,EACtC,OAAO,GAAE,QAAQ,GAAG,OAAkB,GACrC,OAAO,CAAC,yBAAyB,CAAC,
|
|
1
|
+
{"version":3,"file":"packaging-validator.d.ts","sourceRoot":"","sources":["../../src/validators/packaging-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAY1F;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,2BAA2B,CAAC,EAAE;QAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzD,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,uFAAuF;IACvF,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC1C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,aAAa,GAAG,eAAe,GAAG,aAAa,CAAC,CAAC;CAC1E;AAED,mDAAmD;AACnD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,YAAY,CAAC;IACzH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,wBAAwB;IACxB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAE5B,uEAAuE;IACvE,SAAS,EAAE,eAAe,EAAE,CAAC;IAE7B,oEAAoE;IACpE,YAAY,EAAE,eAAe,EAAE,CAAC;IAEhC,wEAAwE;IACxE,cAAc,EAAE,eAAe,EAAE,CAAC;IAElC,yCAAyC;IACzC,aAAa,EAAE,WAAW,EAAE,CAAC;IAE7B;;;;;OAKG;IACH,YAAY,EAAE,WAAW,EAAE,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,EAAE,cAAc,EAAE,CAAC;IAE3B,+BAA+B;IAC/B,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,kBAAkB,EAAE,uBAAuB,EAAE,CAAC;KAC/C,CAAC;CACH;AAkDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,oBAAoB,EACtC,OAAO,GAAE,QAAQ,GAAG,OAAkB,GACrC,OAAO,CAAC,yBAAyB,CAAC,CA0HpC;AAkFD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,OAAO,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,eAAe,GAAG,IAAI,CAyBxB"}
|
|
@@ -16,7 +16,7 @@ import { existsSync } from 'node:fs';
|
|
|
16
16
|
import { readFile } from 'node:fs/promises';
|
|
17
17
|
import { basename, dirname } from 'node:path';
|
|
18
18
|
import { parseMarkdown, ResourceRegistry } from '@vibe-agent-toolkit/resources';
|
|
19
|
-
import { findProjectRoot, toForwardSlash, safePath } from '@vibe-agent-toolkit/utils';
|
|
19
|
+
import { findProjectRoot, normalizedTmpdir, toForwardSlash, safePath } from '@vibe-agent-toolkit/utils';
|
|
20
20
|
import { walkLinkGraph } from '../walk-link-graph.js';
|
|
21
21
|
import { CODE_REGISTRY } from './code-registry.js';
|
|
22
22
|
import { observationToIssue, runCompatDetectors } from './compat-detectors.js';
|
|
@@ -145,6 +145,8 @@ export async function validateSkillForPackaging(skillPath, packagingConfig, cont
|
|
|
145
145
|
collectSizeIssues(skillLines, totalLines, fileCount, maxLinkDepth, skillPath, rawIssues);
|
|
146
146
|
collectDescriptionIssue(parseResult.frontmatter, skillPath, rawIssues);
|
|
147
147
|
collectProgressiveDisclosureIssue(skillLines, bundledFiles.length, skillPath, rawIssues);
|
|
148
|
+
collectNameMismatchIssue(parseResult.frontmatter, skillPath, rawIssues);
|
|
149
|
+
collectTimeSensitiveContentIssues(parseResult.content, skillPath, rawIssues);
|
|
148
150
|
// Filter out source-only codes when validating built output
|
|
149
151
|
const filteredIssues = context === 'built'
|
|
150
152
|
? rawIssues.filter(issue => !SOURCE_ONLY_CODES.has(issue.code))
|
|
@@ -209,6 +211,104 @@ function collectDescriptionIssue(frontmatter, skillPath, issues) {
|
|
|
209
211
|
issues.push(createRegistryIssue(rule.code, rule.message({ length: description.length }), skillPath));
|
|
210
212
|
}
|
|
211
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Kebab-case pattern used by the Agent Skill schema for `name`. The check
|
|
216
|
+
* only fires when the parent directory itself looks like a skill directory
|
|
217
|
+
* (same kebab-case shape). This avoids false positives when SKILL.md lives
|
|
218
|
+
* at a repo root or inside an unrelated container.
|
|
219
|
+
*/
|
|
220
|
+
const SKILL_DIR_NAME_PATTERN = /^[a-z][a-z0-9-]*$/;
|
|
221
|
+
/**
|
|
222
|
+
* Detect SKILL_NAME_MISMATCHES_DIR issue from a frontmatter `name` and a
|
|
223
|
+
* parent directory name. Returns null when no mismatch should be reported.
|
|
224
|
+
*
|
|
225
|
+
* Exported for direct unit testing — the packaging validator wires it up
|
|
226
|
+
* with values derived from the skill path.
|
|
227
|
+
*/
|
|
228
|
+
export function detectNameMismatchIssue(frontmatterName, parentDir, skillPath) {
|
|
229
|
+
if (typeof frontmatterName !== 'string' || frontmatterName.trim() === '') {
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
if (parentDir === '' || parentDir === '.' || parentDir === 'SKILL.md') {
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
if (!SKILL_DIR_NAME_PATTERN.test(parentDir)) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
const normalize = (s) => s.trim().toLowerCase();
|
|
239
|
+
if (normalize(frontmatterName) === normalize(parentDir)) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
const registryEntry = CODE_REGISTRY.SKILL_NAME_MISMATCHES_DIR;
|
|
243
|
+
return {
|
|
244
|
+
severity: registryEntry.defaultSeverity,
|
|
245
|
+
code: 'SKILL_NAME_MISMATCHES_DIR',
|
|
246
|
+
message: `Frontmatter name "${frontmatterName}" does not match parent directory "${parentDir}"`,
|
|
247
|
+
location: skillPath,
|
|
248
|
+
fix: registryEntry.fix,
|
|
249
|
+
reference: registryEntry.reference,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Collect SKILL_NAME_MISMATCHES_DIR issue. Skips when the skill lives in an
|
|
254
|
+
* OS temp directory — unit tests and ad-hoc scratch runs don't have
|
|
255
|
+
* meaningful parent-directory names.
|
|
256
|
+
*/
|
|
257
|
+
function collectNameMismatchIssue(frontmatter, skillPath, issues) {
|
|
258
|
+
const resolvedSkillPath = toForwardSlash(safePath.resolve(skillPath));
|
|
259
|
+
const resolvedTmpdir = toForwardSlash(safePath.resolve(normalizedTmpdir()));
|
|
260
|
+
// eslint-disable-next-line local/no-path-startswith -- both operands are already toForwardSlash-normalized
|
|
261
|
+
if (resolvedSkillPath.startsWith(`${resolvedTmpdir}/`)) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const parentDir = basename(dirname(skillPath));
|
|
265
|
+
const issue = detectNameMismatchIssue(frontmatter?.['name'], parentDir, skillPath);
|
|
266
|
+
if (issue !== null) {
|
|
267
|
+
issues.push(issue);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Time-sensitive content patterns. Case-insensitive.
|
|
272
|
+
* Matches: "as of <month> YYYY", "after/before/until <month> YYYY",
|
|
273
|
+
* and the year-first form "as of YYYY-MM".
|
|
274
|
+
*/
|
|
275
|
+
const MONTH_NAME_PATTERN = '(?:january|february|march|april|may|june|july|august|september|october|november|december)';
|
|
276
|
+
/* eslint-disable security/detect-non-literal-regexp -- compile-time constant patterns composed from MONTH_NAME_PATTERN, no user input */
|
|
277
|
+
const TIME_SENSITIVE_PATTERNS = [
|
|
278
|
+
new RegExp(String.raw `\bas of ${MONTH_NAME_PATTERN} \d{4}\b`, 'i'),
|
|
279
|
+
new RegExp(String.raw `\bafter ${MONTH_NAME_PATTERN} \d{4}\b`, 'i'),
|
|
280
|
+
new RegExp(String.raw `\bbefore ${MONTH_NAME_PATTERN} \d{4}\b`, 'i'),
|
|
281
|
+
new RegExp(String.raw `\buntil ${MONTH_NAME_PATTERN} \d{4}\b`, 'i'),
|
|
282
|
+
/\bas of \d{4}-\d{2}\b/i,
|
|
283
|
+
];
|
|
284
|
+
/* eslint-enable security/detect-non-literal-regexp */
|
|
285
|
+
/**
|
|
286
|
+
* Collect SKILL_TIME_SENSITIVE_CONTENT issues — scan the SKILL.md body for
|
|
287
|
+
* time-sensitive prose that may become stale. One issue per distinct match
|
|
288
|
+
* with line-number location.
|
|
289
|
+
*/
|
|
290
|
+
function collectTimeSensitiveContentIssues(content, skillPath, issues) {
|
|
291
|
+
const registryEntry = CODE_REGISTRY.SKILL_TIME_SENSITIVE_CONTENT;
|
|
292
|
+
const lines = content.split('\n');
|
|
293
|
+
for (const [index, line] of lines.entries()) {
|
|
294
|
+
for (const pattern of TIME_SENSITIVE_PATTERNS) {
|
|
295
|
+
const match = pattern.exec(line);
|
|
296
|
+
if (match !== null) {
|
|
297
|
+
const lineNumber = index + 1;
|
|
298
|
+
issues.push({
|
|
299
|
+
severity: registryEntry.defaultSeverity,
|
|
300
|
+
code: 'SKILL_TIME_SENSITIVE_CONTENT',
|
|
301
|
+
message: `Time-sensitive phrase "${match[0]}" may become stale`,
|
|
302
|
+
location: `${skillPath}:${lineNumber}`,
|
|
303
|
+
fix: registryEntry.fix,
|
|
304
|
+
reference: registryEntry.reference,
|
|
305
|
+
});
|
|
306
|
+
// Only emit one issue per line (first match wins)
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
212
312
|
/**
|
|
213
313
|
* Collect progressive disclosure issue (NO_PROGRESSIVE_DISCLOSURE)
|
|
214
314
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packaging-validator.js","sourceRoot":"","sources":["../../src/validators/packaging-validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"packaging-validator.js","sourceRoot":"","sources":["../../src/validators/packaging-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,11 @@ export declare const VALIDATION_THRESHOLDS: {
|
|
|
51
51
|
readonly MAX_REFERENCE_DEPTH: 2;
|
|
52
52
|
/** Minimum description length (characters) */
|
|
53
53
|
readonly MIN_DESCRIPTION_LENGTH: 50;
|
|
54
|
+
/**
|
|
55
|
+
* Claude Code /skills listing truncates descriptions at this character count (since v2.1.86).
|
|
56
|
+
* Descriptions longer than this lose their tail — critical trigger keywords may be cut.
|
|
57
|
+
*/
|
|
58
|
+
readonly MAX_DESCRIPTION_CHARS_CLAUDE_CODE: 250;
|
|
54
59
|
};
|
|
55
60
|
/**
|
|
56
61
|
* Navigation file patterns to detect
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-rules.d.ts","sourceRoot":"","sources":["../../src/validators/validation-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAE1B,qBAAqB,GACrB,cAAc,GACd,uBAAuB,GACvB,sBAAsB,GACtB,oBAAoB,GACpB,0BAA0B,GAC1B,oBAAoB,GACpB,2BAA2B,GAC3B,wBAAwB,GAExB,kCAAkC,GAClC,wBAAwB,GACxB,sBAAsB,GACtB,oBAAoB,GACpB,2BAA2B,GAC3B,uBAAuB,GACvB,2BAA2B,GAC3B,4BAA4B,GAC5B,sBAAsB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAyHvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,6CAA6C;;IAG7C,uDAAuD;;IAGvD,uCAAuC;;IAGvC,uDAAuD;;IAGvD,8CAA8C;;
|
|
1
|
+
{"version":3,"file":"validation-rules.d.ts","sourceRoot":"","sources":["../../src/validators/validation-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAE1B,qBAAqB,GACrB,cAAc,GACd,uBAAuB,GACvB,sBAAsB,GACtB,oBAAoB,GACpB,0BAA0B,GAC1B,oBAAoB,GACpB,2BAA2B,GAC3B,wBAAwB,GAExB,kCAAkC,GAClC,wBAAwB,GACxB,sBAAsB,GACtB,oBAAoB,GACpB,2BAA2B,GAC3B,uBAAuB,GACvB,2BAA2B,GAC3B,4BAA4B,GAC5B,sBAAsB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAyHvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC,6CAA6C;;IAG7C,uDAAuD;;IAGvD,uCAAuC;;IAGvC,uDAAuD;;IAGvD,8CAA8C;;IAG9C;;;OAGG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,wBAAwB,+GAS3B,CAAC;AAEX;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,CAajB"}
|
|
@@ -148,6 +148,11 @@ export const VALIDATION_THRESHOLDS = {
|
|
|
148
148
|
MAX_REFERENCE_DEPTH: 2,
|
|
149
149
|
/** Minimum description length (characters) */
|
|
150
150
|
MIN_DESCRIPTION_LENGTH: 50,
|
|
151
|
+
/**
|
|
152
|
+
* Claude Code /skills listing truncates descriptions at this character count (since v2.1.86).
|
|
153
|
+
* Descriptions longer than this lose their tail — critical trigger keywords may be cut.
|
|
154
|
+
*/
|
|
155
|
+
MAX_DESCRIPTION_CHARS_CLAUDE_CODE: 250,
|
|
151
156
|
};
|
|
152
157
|
/**
|
|
153
158
|
* Navigation file patterns to detect
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-rules.js","sourceRoot":"","sources":["../../src/validators/validation-rules.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validation-rules.js","sourceRoot":"","sources":["../../src/validators/validation-rules.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.32-rc.
|
|
3
|
+
"version": "0.1.32-rc.4",
|
|
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.32-rc.
|
|
32
|
-
"@vibe-agent-toolkit/agent-schema": "0.1.32-rc.
|
|
33
|
-
"@vibe-agent-toolkit/resources": "0.1.32-rc.
|
|
34
|
-
"@vibe-agent-toolkit/utils": "0.1.32-rc.
|
|
31
|
+
"@vibe-agent-toolkit/agent-config": "0.1.32-rc.4",
|
|
32
|
+
"@vibe-agent-toolkit/agent-schema": "0.1.32-rc.4",
|
|
33
|
+
"@vibe-agent-toolkit/resources": "0.1.32-rc.4",
|
|
34
|
+
"@vibe-agent-toolkit/utils": "0.1.32-rc.4",
|
|
35
35
|
"adm-zip": "^0.5.16",
|
|
36
36
|
"picomatch": "^4.0.3",
|
|
37
37
|
"yaml": "^2.6.1",
|