renma 0.16.0 → 0.17.0
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/CHANGELOG.md +35 -1
- package/README.md +210 -749
- package/architecture.md +523 -0
- package/design.md +458 -0
- package/dist/cli-help.d.ts +7 -5
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +23 -9
- package/dist/cli-help.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +139 -40
- package/dist/cli.js.map +1 -1
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +4 -3
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/graph.d.ts.map +1 -1
- package/dist/commands/graph.js +7 -12
- package/dist/commands/graph.js.map +1 -1
- package/dist/commands/readiness.d.ts.map +1 -1
- package/dist/commands/readiness.js +7 -6
- package/dist/commands/readiness.js.map +1 -1
- package/dist/commands/scaffold.d.ts.map +1 -1
- package/dist/commands/scaffold.js +14 -2
- package/dist/commands/scaffold.js.map +1 -1
- package/dist/commands/suggest-metadata.d.ts.map +1 -1
- package/dist/commands/suggest-metadata.js +54 -8
- package/dist/commands/suggest-metadata.js.map +1 -1
- package/dist/commands/suggest-semantic-split.js +3 -3
- package/dist/commands/suggest-semantic-split.js.map +1 -1
- package/dist/dependency-resolution.d.ts +6 -0
- package/dist/dependency-resolution.d.ts.map +1 -0
- package/dist/dependency-resolution.js +11 -0
- package/dist/dependency-resolution.js.map +1 -0
- package/dist/discovery.d.ts +28 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +70 -15
- package/dist/discovery.js.map +1 -1
- package/dist/repository-paths.d.ts +13 -0
- package/dist/repository-paths.d.ts.map +1 -1
- package/dist/repository-paths.js +60 -2
- package/dist/repository-paths.js.map +1 -1
- package/dist/rules.d.ts.map +1 -1
- package/dist/rules.js +64 -85
- package/dist/rules.js.map +1 -1
- package/dist/trust-graph.d.ts.map +1 -1
- package/dist/trust-graph.js +7 -11
- package/dist/trust-graph.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +55 -0
- package/docs/advanced-skill-authoring.md +140 -0
- package/docs/agent-skills-compatibility.md +500 -0
- package/docs/authoring-guide.md +324 -0
- package/docs/context-conflict-diagnostics.md +32 -0
- package/docs/context-language-diagnostics.md +99 -0
- package/docs/context-lens.md +253 -0
- package/docs/context-lifecycle-diagnostics.md +55 -0
- package/docs/diagnostics.md +373 -0
- package/docs/metadata-budget.md +14 -0
- package/docs/repository-context-bom.md +113 -0
- package/docs/security-policy.md +338 -0
- package/docs/user-manual.md +813 -0
- package/examples/context-lens/README.md +101 -0
- package/examples/context-lens/contexts/testing/boundary-value-analysis.md +23 -0
- package/examples/context-lens/lenses/testing/spec-review-boundary-values.md +29 -0
- package/examples/context-lens/lenses/testing/test-design-boundary-values.md +29 -0
- package/examples/context-lens/skills/testing/spec-review/SKILL.md +49 -0
- package/examples/context-repo/README.md +149 -0
- package/examples/context-repo/contexts/domain/payment/idempotency.md +20 -0
- package/examples/context-repo/contexts/testing/boundary-value-analysis.md +19 -0
- package/examples/context-repo/contexts/testing/negative-testing.md +19 -0
- package/examples/context-repo/lenses/testing/spec-review-boundary-values.md +35 -0
- package/examples/context-repo/renma.config.json +12 -0
- package/examples/context-repo/skills/testing/spec-review/SKILL.md +66 -0
- package/examples/context-repo/tools/appium/README.md +14 -0
- package/examples/github-actions/renma-ci-report.yml +36 -0
- package/examples/interactive-placeholder/README.md +104 -0
- package/examples/interactive-placeholder/assets/template.txt +1 -0
- package/examples/interactive-placeholder/renma.config.json +6 -0
- package/examples/interactive-placeholder/skills/replace-placeholder/SKILL.md +54 -0
- package/examples/interactive-placeholder/tools/README.md +48 -0
- package/examples/interactive-placeholder/tools/placeholder-demo.mjs +99 -0
- package/package.json +8 -1
- package/plan-discovery.md +740 -0
- package/plan.md +150 -0
- package/scripts/verify-package.mjs +97 -0
package/dist/discovery.js
CHANGED
|
@@ -2,7 +2,7 @@ import { glob, lstat, readFile, stat } from "node:fs/promises";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
const SKILL_LIKE_FILE_OUTSIDE_SKILLS_DIR_CODE = "LAYOUT-SKILL-LIKE-FILE-OUTSIDE-SKILLS-DIR";
|
|
4
4
|
const SKILL_ENTRYPOINT_UNDER_RESERVED_SUPPORT_DIR_CODE = "LAYOUT-SKILL-ENTRYPOINT-UNDER-RESERVED-SUPPORT-DIR";
|
|
5
|
-
const RESERVED_SKILL_SUPPORT_DIRS = [
|
|
5
|
+
export const RESERVED_SKILL_SUPPORT_DIRS = [
|
|
6
6
|
"assets",
|
|
7
7
|
"examples",
|
|
8
8
|
"profiles",
|
|
@@ -22,8 +22,8 @@ const SKILL_LIKE_FILE_GLOBS = [
|
|
|
22
22
|
];
|
|
23
23
|
const SKILL_LIKE_FILE_LLM_HINT = "No action is required unless this file is intended to be a Renma skill. If it is intended to be a skill, move it under skills/** or .agents/skills/**.";
|
|
24
24
|
const SKILL_ENTRYPOINT_UNDER_RESERVED_SUPPORT_DIR_LLM_HINT = "Do not move or rename this file only to reduce diagnostics. Rename the skill directory only if this file is intended to define a Renma skill. For example, use `skills/example-review/SKILL.md` instead of `skills/examples/SKILL.md`.";
|
|
25
|
-
/** Classify
|
|
26
|
-
export function
|
|
25
|
+
/** Classify canonical, historical, and reserved support paths at explicit Skill roots. */
|
|
26
|
+
export function classifyRepositorySkillPath(relativePath) {
|
|
27
27
|
const currentPath = normalizeRepositoryRelativePath(relativePath);
|
|
28
28
|
if (!currentPath)
|
|
29
29
|
return undefined;
|
|
@@ -31,7 +31,57 @@ export function classifyRepositorySkillEntrypointPath(relativePath) {
|
|
|
31
31
|
const rootEndIndex = repositorySkillRootEndIndex(segments);
|
|
32
32
|
if (rootEndIndex === undefined)
|
|
33
33
|
return undefined;
|
|
34
|
-
|
|
34
|
+
const root = repositorySkillRoot(segments);
|
|
35
|
+
const localSegments = segments.slice(rootEndIndex);
|
|
36
|
+
const supportIndex = localSegments.findIndex(isReservedSkillSupportDirectory);
|
|
37
|
+
if (supportIndex >= 0) {
|
|
38
|
+
const supportDirectory = localSegments[supportIndex];
|
|
39
|
+
if (supportIndex === 0) {
|
|
40
|
+
return { kind: "reserved-root", currentPath, root, supportDirectory };
|
|
41
|
+
}
|
|
42
|
+
const skillSegments = localSegments.slice(0, supportIndex);
|
|
43
|
+
const skillName = skillSegments.at(-1);
|
|
44
|
+
if (!skillName)
|
|
45
|
+
return undefined;
|
|
46
|
+
const skillDirectory = [
|
|
47
|
+
...segments.slice(0, rootEndIndex),
|
|
48
|
+
...skillSegments,
|
|
49
|
+
].join("/");
|
|
50
|
+
return {
|
|
51
|
+
kind: "support",
|
|
52
|
+
currentPath,
|
|
53
|
+
root,
|
|
54
|
+
skillDirectory,
|
|
55
|
+
skillName,
|
|
56
|
+
domainPath: skillSegments.slice(0, -1),
|
|
57
|
+
relativeToSkillDirectory: localSegments.slice(supportIndex).join("/"),
|
|
58
|
+
supportDirectory,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const entrypoint = classifySkillEntrypointAtRoot(currentPath, segments, rootEndIndex);
|
|
62
|
+
if (!entrypoint)
|
|
63
|
+
return undefined;
|
|
64
|
+
const skillDirectory = path.posix.dirname(entrypoint.targetPath);
|
|
65
|
+
const skillDirectorySegments = skillDirectory.split("/").filter(Boolean);
|
|
66
|
+
const skillSegments = skillDirectorySegments.slice(rootEndIndex);
|
|
67
|
+
const skillName = skillSegments.at(-1);
|
|
68
|
+
if (!skillName)
|
|
69
|
+
return undefined;
|
|
70
|
+
return {
|
|
71
|
+
kind: "entrypoint",
|
|
72
|
+
currentPath,
|
|
73
|
+
root,
|
|
74
|
+
skillDirectory,
|
|
75
|
+
skillName,
|
|
76
|
+
domainPath: skillSegments.slice(0, -1),
|
|
77
|
+
relativeToSkillDirectory: path.posix.relative(skillDirectory, currentPath),
|
|
78
|
+
entrypoint,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/** Classify a repository-relative Skill entrypoint only at an explicit root. */
|
|
82
|
+
export function classifyRepositorySkillEntrypointPath(relativePath) {
|
|
83
|
+
const classified = classifyRepositorySkillPath(relativePath);
|
|
84
|
+
return classified?.kind === "entrypoint" ? classified.entrypoint : undefined;
|
|
35
85
|
}
|
|
36
86
|
/** Classify an absolute Skill path only when it contains one unambiguous root. */
|
|
37
87
|
export function classifyAbsoluteSkillEntrypointPath(absolutePath) {
|
|
@@ -82,7 +132,7 @@ function classifySkillEntrypointAtRoot(currentPath, segments, rootEndIndex) {
|
|
|
82
132
|
const basename = path.posix.basename(currentPath);
|
|
83
133
|
const directory = path.posix.dirname(currentPath);
|
|
84
134
|
const localDirectories = segments.slice(rootEndIndex, -1);
|
|
85
|
-
if (localDirectories.some(
|
|
135
|
+
if (localDirectories.some(isReservedSkillSupportDirectory)) {
|
|
86
136
|
return undefined;
|
|
87
137
|
}
|
|
88
138
|
if (basename === "SKILL.md" || basename === "skill.md") {
|
|
@@ -208,7 +258,11 @@ function classify(relativePath) {
|
|
|
208
258
|
return "unknown";
|
|
209
259
|
}
|
|
210
260
|
function classifyExplicitSkillSupportPath(relativePath) {
|
|
211
|
-
|
|
261
|
+
const classified = classifyRepositorySkillPath(relativePath);
|
|
262
|
+
const supportDirectory = classified?.kind === "support" || classified?.kind === "reserved-root"
|
|
263
|
+
? classified.supportDirectory
|
|
264
|
+
: undefined;
|
|
265
|
+
switch (supportDirectory) {
|
|
212
266
|
case "assets":
|
|
213
267
|
return "unknown";
|
|
214
268
|
case "profiles":
|
|
@@ -293,15 +347,16 @@ function isExplicitSkillsPath(relativePath) {
|
|
|
293
347
|
return normalizeRepositoryRelativePath(relativePath) !== undefined;
|
|
294
348
|
}
|
|
295
349
|
function skillSupportPathSegment(relativePath) {
|
|
296
|
-
const
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
350
|
+
const classified = classifyRepositorySkillPath(relativePath);
|
|
351
|
+
return classified?.kind === "support" || classified?.kind === "reserved-root"
|
|
352
|
+
? classified.supportDirectory
|
|
353
|
+
: undefined;
|
|
354
|
+
}
|
|
355
|
+
function isReservedSkillSupportDirectory(segment) {
|
|
356
|
+
return RESERVED_SKILL_SUPPORT_DIRS.includes(segment);
|
|
357
|
+
}
|
|
358
|
+
function repositorySkillRoot(segments) {
|
|
359
|
+
return segments[0] === "skills" ? "skills" : ".agents/skills";
|
|
305
360
|
}
|
|
306
361
|
function repositorySkillRootEndIndex(segments) {
|
|
307
362
|
if (segments[0] === "skills")
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,MAAM,uCAAuC,GAC3C,2CAA2C,CAAC;AAC9C,MAAM,gDAAgD,GACpD,oDAAoD,CAAC;AACvD,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;IACZ,SAAS;CACD,CAAC;AAGX,MAAM,qBAAqB,GAAG;IAC5B,UAAU;IACV,UAAU;IACV,YAAY;IACZ,aAAa;IACb,aAAa;IACb,eAAe;IACf,qBAAqB;IACrB,qBAAqB;IACrB,uBAAuB;CACxB,CAAC;AACF,MAAM,wBAAwB,GAC5B,wJAAwJ,CAAC;AAC3J,MAAM,oDAAoD,GACxD,wOAAwO,CAAC;AAkD3O,0FAA0F;AAC1F,MAAM,UAAU,2BAA2B,CACzC,YAAoB;IAEpB,MAAM,WAAW,GAAG,+BAA+B,CAAC,YAAY,CAAC,CAAC;IAClE,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjD,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAE9E,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,gBAAgB,GAAG,aAAa,CACpC,YAAY,CACoB,CAAC;QACnC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;QACxE,CAAC;QACD,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACjC,MAAM,cAAc,GAAG;YACrB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;YAClC,GAAG,aAAa;SACjB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,OAAO;YACL,IAAI,EAAE,SAAS;YACf,WAAW;YACX,IAAI;YACJ,cAAc;YACd,SAAS;YACT,UAAU,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,wBAAwB,EAAE,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACrE,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,6BAA6B,CAC9C,WAAW,EACX,QAAQ,EACR,YAAY,CACb,CAAC;IACF,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,sBAAsB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,WAAW;QACX,IAAI;QACJ,cAAc;QACd,SAAS;QACT,UAAU,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;QAC1E,UAAU;KACX,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,qCAAqC,CACnD,YAAoB;IAEpB,MAAM,UAAU,GAAG,2BAA2B,CAAC,YAAY,CAAC,CAAC;IAC7D,OAAO,UAAU,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,mCAAmC,CACjD,YAAoB;IAEpB,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,OAAO,6BAA6B,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;AACzE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAC7C,QAAgB;IAEhB,MAAM,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,cAAc,CAAC,oBAAoB,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpD,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACvD,WAAW,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,YAAY,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAC9D,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACpD,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG;YAAE,SAAS;QAC1C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,IAAI,QAAQ,CAAC,MAAM,IAAI,YAAY;gBAAE,OAAO,SAAS,CAAC;YACtD,QAAQ,CAAC,GAAG,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,MAAM,sBAAsB,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACrE,OAAO,sBAAsB,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC;AAED,SAAS,6BAA6B,CACpC,WAAmB,EACnB,QAAkB,EAClB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,IAAI,gBAAgB,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QAC9D,OAAO;YACL,IAAI,EAAE,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB;YACpE,WAAW;YACX,UAAU,EACR,QAAQ,KAAK,UAAU;gBACrB,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;YAC5C,aAAa;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IACrC,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,WAAW;QACX,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC;QACjE,aAAa;KACd,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,MAAkB;IAElB,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;gBACtC,GAAG,EAAE,IAAI;gBACT,aAAa,EAAE,KAAK;aACrB,CAAC,EAAE,CAAC;gBACH,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,4BAA4B,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC;SAC1B,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;SACnE,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;SAChE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAC9B,UAAU,EACV,MAAM,CAAC,WAAW,EAClB,KAAK,EAAE,YAAY,EAAE,EAAE;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC9B,WAAW,CAAC,IAAI,CAAC;oBACf,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,yBAAyB;iBACnC,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,OAAO,SAAS,CAAC;YACrC,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBACxC,WAAW,CAAC,IAAI,CAAC;oBACf,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,kDAAkD,MAAM,CAAC,gBAAgB,IAAI;iBACvF,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACrD,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,YAAY;gBACZ,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC;gBAC5B,SAAS,EAAE,IAAI,CAAC,IAAI;gBACpB,OAAO;aACW,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,wBAAwB,YAAY,CAAC,KAAK,CAAC,EAAE;aACvD,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,MAAM,CACzB,CAAC,QAAQ,EAAwB,EAAE,CAAC,QAAQ,KAAK,SAAS,CAC3D;QACD,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,YAAoB;IACpC,IAAI,yBAAyB,CAAC,YAAY,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5D,MAAM,wBAAwB,GAC5B,gCAAgC,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,wBAAwB,KAAK,SAAS;QAAE,OAAO,wBAAwB,CAAC;IAC5E,IAAI,YAAY,KAAK,WAAW,IAAI,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC;QACrE,OAAO,OAAO,CAAC;IACjB,IAAI,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,cAAc,CAAC;IAC9D,IACE,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC;QACnC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC;QAEpC,OAAO,SAAS,CAAC;IACnB,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,WAAW,CAAC;IAC9D,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1D,IACE,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC1C,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EACpC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gCAAgC,CACvC,YAAoB;IAEpB,MAAM,UAAU,GAAG,2BAA2B,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GACpB,UAAU,EAAE,IAAI,KAAK,SAAS,IAAI,UAAU,EAAE,IAAI,KAAK,eAAe;QACpE,CAAC,CAAC,UAAU,CAAC,gBAAgB;QAC7B,CAAC,CAAC,SAAS,CAAC;IAChB,QAAQ,gBAAgB,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,WAAW,CAAC;QACrB,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,IAAY,EACZ,MAAkB;IAElB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,KAAK,MAAM,OAAO,IAAI,qBAAqB,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;gBACtC,GAAG,EAAE,IAAI;gBACT,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;gBACrC,aAAa,EAAE,KAAK;aACrB,CAAC,EAAE,CAAC;gBACH,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,4BAA4B,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,IAAI,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC;YAAE,SAAS;QACvD,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,QAAQ;YAAE,SAAS;QAEpD,IAAI,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;gBAAE,SAAS;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;QACrE,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;YACzC,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,gDAAgD;gBACtD,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,wEAAwE,YAAY,uBAAuB,sBAAsB,2HAA2H;gBACrQ,OAAO,EAAE,oDAAoD;gBAC7D,OAAO,EAAE;oBACP,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,KAAK;oBACrB,sBAAsB;iBACvB;aACF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,oBAAoB,CAAC,YAAY,CAAC;YAAE,SAAS;QAEjD,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,uCAAuC;YAC7C,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,oEAAoE,YAAY,mLAAmL;YAC5Q,OAAO,EAAE,wBAAwB;YACjC,OAAO,EAAE;gBACP,YAAY,EAAE,IAAI;gBAClB,cAAc,EAAE,KAAK;aACtB;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,yBAAyB,CAAC,YAAoB;IACrD,OAAO,qCAAqC,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC;AAC3E,CAAC;AAED,SAAS,oBAAoB,CAAC,YAAoB;IAChD,OAAO,+BAA+B,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC;AACrE,CAAC;AAED,SAAS,uBAAuB,CAAC,YAAoB;IACnD,MAAM,UAAU,GAAG,2BAA2B,CAAC,YAAY,CAAC,CAAC;IAC7D,OAAO,UAAU,EAAE,IAAI,KAAK,SAAS,IAAI,UAAU,EAAE,IAAI,KAAK,eAAe;QAC3E,CAAC,CAAC,UAAU,CAAC,gBAAgB;QAC7B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,+BAA+B,CACtC,OAAe;IAEf,OAAQ,2BAAiD,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAkB;IAC7C,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAChE,CAAC;AAED,SAAS,2BAA2B,CAAC,QAAkB;IACrD,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAkB;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YACtE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACtB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,KAAU,EACV,KAAa,EACb,MAA+B;IAE/B,MAAM,OAAO,GAAG,IAAI,KAAK,CAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CACxB,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EACzC,KAAK,IAAI,EAAE;QACT,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC;YACrB,MAAM,IAAI,CAAC,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CACF,CAAC;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,YAAoB,EAAE,QAAkB;IAC1D,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC,IAAI,CAClB,CAAC,OAAO,EAAE,EAAE,CACV,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC1B,YAAY,KAAK,OAAO;QACxB,YAAY,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,QAAkB;IACtC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACnC,OAAO;QACP,GAAG,OAAO,KAAK;QACf,MAAM,OAAO,EAAE;QACf,MAAM,OAAO,KAAK;KACnB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,KAAK,CAAC,YAAoB;IACjC,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACxD,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import type { Catalog } from "./model.js";
|
|
2
2
|
import type { Artifact, ParsedDocument } from "./types.js";
|
|
3
|
+
export type HelperScriptPathResolution = {
|
|
4
|
+
kind: "candidate";
|
|
5
|
+
path: string;
|
|
6
|
+
source: "repository-root" | "skill-relative";
|
|
7
|
+
} | {
|
|
8
|
+
kind: "unsafe";
|
|
9
|
+
path: string;
|
|
10
|
+
} | {
|
|
11
|
+
kind: "unscoped";
|
|
12
|
+
path: string;
|
|
13
|
+
};
|
|
3
14
|
/** Collect immutable repository-relative path existence evidence for rules. */
|
|
4
15
|
export declare function collectRepositoryPaths(root: string, artifacts: Artifact[], documents: ParsedDocument[], catalog: Catalog): Promise<ReadonlySet<string>>;
|
|
5
16
|
export declare function helperScriptPath(command: string): string | undefined;
|
|
17
|
+
/** Resolve a helper command path without escaping an unambiguous owning Skill. */
|
|
18
|
+
export declare function resolveHelperScriptPath(sourcePath: string, scriptPath: string): HelperScriptPathResolution;
|
|
6
19
|
//# sourceMappingURL=repository-paths.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository-paths.d.ts","sourceRoot":"","sources":["../src/repository-paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repository-paths.d.ts","sourceRoot":"","sources":["../src/repository-paths.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,0BAA0B,GAClC;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;CAC9C,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,QAAQ,EAAE,EACrB,SAAS,EAAE,cAAc,EAAE,EAC3B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAa9B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYpE;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,0BAA0B,CAgC5B"}
|
package/dist/repository-paths.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { access } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { classifyRepositorySkillPath } from "./discovery.js";
|
|
3
4
|
/** Collect immutable repository-relative path existence evidence for rules. */
|
|
4
5
|
export async function collectRepositoryPaths(root, artifacts, documents, catalog) {
|
|
5
6
|
const paths = new Set(artifacts
|
|
@@ -15,7 +16,46 @@ export async function collectRepositoryPaths(root, artifacts, documents, catalog
|
|
|
15
16
|
}
|
|
16
17
|
export function helperScriptPath(command) {
|
|
17
18
|
const parts = command.split(/\s+/).slice(1);
|
|
18
|
-
|
|
19
|
+
const target = parts.find((part) => !part.startsWith("-"));
|
|
20
|
+
if (!target)
|
|
21
|
+
return undefined;
|
|
22
|
+
const hasSupportedExtension = /\.(?:mjs|js|cjs|sh|bash|py)$/.test(target);
|
|
23
|
+
if (!hasSupportedExtension)
|
|
24
|
+
return undefined;
|
|
25
|
+
const startsAtSupportedRoot = /^(?:(?:\.\.?\/)+)?(?:scripts|tools)\//.test(target);
|
|
26
|
+
const isExplicitSkillScript = /(?:^|\/)scripts\//.test(target);
|
|
27
|
+
return startsAtSupportedRoot || isExplicitSkillScript ? target : undefined;
|
|
28
|
+
}
|
|
29
|
+
/** Resolve a helper command path without escaping an unambiguous owning Skill. */
|
|
30
|
+
export function resolveHelperScriptPath(sourcePath, scriptPath) {
|
|
31
|
+
const rawPath = scriptPath.replace(/\\/g, "/");
|
|
32
|
+
const sourceSkill = owningSkillPath(sourcePath);
|
|
33
|
+
const isSkillRelative = /^(?:\.\/)?scripts\//.test(rawPath);
|
|
34
|
+
const hasTraversal = rawPath.split("/").includes("..");
|
|
35
|
+
if (isSkillRelative) {
|
|
36
|
+
if (!sourceSkill)
|
|
37
|
+
return { kind: "unscoped", path: rawPath };
|
|
38
|
+
if (hasTraversal)
|
|
39
|
+
return { kind: "unsafe", path: rawPath };
|
|
40
|
+
const relativePath = rawPath.replace(/^\.\//, "");
|
|
41
|
+
const candidate = normalizeRepositoryPath(path.posix.join(sourceSkill.skillDirectory, relativePath));
|
|
42
|
+
if (!candidate || !isWithinSkill(candidate, sourceSkill.skillDirectory)) {
|
|
43
|
+
return { kind: "unsafe", path: rawPath };
|
|
44
|
+
}
|
|
45
|
+
return { kind: "candidate", path: candidate, source: "skill-relative" };
|
|
46
|
+
}
|
|
47
|
+
if (hasTraversal) {
|
|
48
|
+
return sourceSkill
|
|
49
|
+
? { kind: "unsafe", path: rawPath }
|
|
50
|
+
: { kind: "unscoped", path: rawPath };
|
|
51
|
+
}
|
|
52
|
+
const candidate = normalizeRepositoryPath(rawPath);
|
|
53
|
+
if (!candidate) {
|
|
54
|
+
return sourceSkill
|
|
55
|
+
? { kind: "unsafe", path: rawPath }
|
|
56
|
+
: { kind: "unscoped", path: rawPath };
|
|
57
|
+
}
|
|
58
|
+
return { kind: "candidate", path: candidate, source: "repository-root" };
|
|
19
59
|
}
|
|
20
60
|
function repositoryPathCandidates(documents, catalog) {
|
|
21
61
|
return [
|
|
@@ -33,9 +73,27 @@ function helperCommandPathCandidates(documents) {
|
|
|
33
73
|
.map((line) => line.trim())
|
|
34
74
|
.filter((command) => /^(node|bash|sh|python|python3)\s+/.test(command))
|
|
35
75
|
.map(helperScriptPath)
|
|
36
|
-
.map((candidate) =>
|
|
76
|
+
.map((candidate) => {
|
|
77
|
+
if (!candidate)
|
|
78
|
+
return undefined;
|
|
79
|
+
const resolution = resolveHelperScriptPath(document.artifact.path, candidate);
|
|
80
|
+
return resolution.kind === "candidate" ? resolution.path : undefined;
|
|
81
|
+
})
|
|
37
82
|
.filter((candidate) => candidate !== undefined)));
|
|
38
83
|
}
|
|
84
|
+
function owningSkillPath(sourcePath) {
|
|
85
|
+
const classified = classifyRepositorySkillPath(sourcePath);
|
|
86
|
+
if (classified?.kind === "support")
|
|
87
|
+
return classified;
|
|
88
|
+
if (classified?.kind === "entrypoint" &&
|
|
89
|
+
classified.entrypoint.kind === "canonical") {
|
|
90
|
+
return classified;
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
function isWithinSkill(candidate, skillDirectory) {
|
|
95
|
+
return (candidate === skillDirectory || candidate.startsWith(`${skillDirectory}/`));
|
|
96
|
+
}
|
|
39
97
|
function normalizeRepositoryPath(value) {
|
|
40
98
|
const normalized = value.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
41
99
|
if (!normalized ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository-paths.js","sourceRoot":"","sources":["../src/repository-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"repository-paths.js","sourceRoot":"","sources":["../src/repository-paths.ts"],"names":[],"mappings":"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"}
|
package/dist/rules.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,YAAY,CAAC;AAmBpE,OAAO,KAAK,EAEV,OAAO,EAEP,cAAc,EACd,UAAU,EACV,QAAQ,EACT,MAAM,YAAY,CAAC;AAcpB,UAAU,WAAW;IACnB,cAAc,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACvC;AA+HD,8EAA8E;AAC9E,wBAAgB,QAAQ,CACtB,SAAS,EAAE,cAAc,EAAE,EAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,GAAE,WAAgB,GACxB,OAAO,EAAE,CAeX;AAkmBD,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAQ3E"}
|
package/dist/rules.js
CHANGED
|
@@ -2,7 +2,8 @@ import path from "node:path";
|
|
|
2
2
|
import { resolvedAgentSkillDescription } from "./agent-skills.js";
|
|
3
3
|
import { addDaysIsoDate, isIsoDate, parseDayDuration, todayIsoDate, } from "./freshness.js";
|
|
4
4
|
import { DIAGNOSTIC_IDS } from "./diagnostic-ids.js";
|
|
5
|
-
import {
|
|
5
|
+
import { classifyRepositorySkillEntrypointPath, classifyRepositorySkillPath, normalizeRepositoryRelativePath, } from "./discovery.js";
|
|
6
|
+
import { helperScriptPath, resolveHelperScriptPath, } from "./repository-paths.js";
|
|
6
7
|
import { parseAssetMetadata } from "./metadata.js";
|
|
7
8
|
import { runRuleRegistry } from "./rule-engine.js";
|
|
8
9
|
const SECRET_PATTERN = /\b(?:password|passwd|token|api[_-]?key|secret|credential|private[_-]?key)\b\s*[:=]\s*["']?([A-Za-z0-9_./+=-]{8,})/i;
|
|
@@ -133,7 +134,7 @@ function rulesForEvaluationDate(evaluationDate, repositoryPaths) {
|
|
|
133
134
|
return [
|
|
134
135
|
{
|
|
135
136
|
id: "strict-layout-policy",
|
|
136
|
-
run: (context) => strictLayoutPolicyFindings(context.documents, context.
|
|
137
|
+
run: (context) => strictLayoutPolicyFindings(context.documents, context.catalog, repositoryPaths),
|
|
137
138
|
},
|
|
138
139
|
{
|
|
139
140
|
id: "security",
|
|
@@ -808,7 +809,10 @@ function reusableContextCandidateFinding(document, tokenCount) {
|
|
|
808
809
|
function supportSharedContextCandidateFindings(document) {
|
|
809
810
|
if (document.artifact.kind !== "reference")
|
|
810
811
|
return [];
|
|
811
|
-
|
|
812
|
+
const skillPath = classifyRepositorySkillPath(document.artifact.path);
|
|
813
|
+
if (skillPath?.kind !== "support" ||
|
|
814
|
+
skillPath.supportDirectory !== "references" ||
|
|
815
|
+
!document.artifact.path.endsWith(".md")) {
|
|
812
816
|
return [];
|
|
813
817
|
}
|
|
814
818
|
const tokenCount = approximateTokenCount(document.artifact.content);
|
|
@@ -1061,8 +1065,11 @@ function skillReferencesSupersededAssetFindings(documents) {
|
|
|
1061
1065
|
});
|
|
1062
1066
|
}
|
|
1063
1067
|
function isSkillLocalReference(document) {
|
|
1068
|
+
const skillPath = classifyRepositorySkillPath(document.artifact.path);
|
|
1064
1069
|
return (document.artifact.kind === "reference" &&
|
|
1065
|
-
|
|
1070
|
+
skillPath?.kind === "support" &&
|
|
1071
|
+
skillPath.supportDirectory === "references" &&
|
|
1072
|
+
document.artifact.path.endsWith(".md"));
|
|
1066
1073
|
}
|
|
1067
1074
|
function sharedContextTargets(document) {
|
|
1068
1075
|
const operationalMetadata = parseAssetMetadata(document).metadata;
|
|
@@ -1072,10 +1079,10 @@ function sharedContextTargets(document) {
|
|
|
1072
1079
|
].filter((target, index, targets) => /^contexts?\//u.test(target) && targets.indexOf(target) === index);
|
|
1073
1080
|
}
|
|
1074
1081
|
function parentSkillPath(referencePath) {
|
|
1075
|
-
const
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1082
|
+
const skillPath = classifyRepositorySkillPath(referencePath);
|
|
1083
|
+
return skillPath?.kind === "support"
|
|
1084
|
+
? `${skillPath.skillDirectory}/SKILL.md`
|
|
1085
|
+
: undefined;
|
|
1079
1086
|
}
|
|
1080
1087
|
function skillReferenceLine(skill, referencePath) {
|
|
1081
1088
|
const skillDir = path.posix.dirname(skill.artifact.path);
|
|
@@ -1347,14 +1354,13 @@ function matchingLineFindings(document, matcher) {
|
|
|
1347
1354
|
];
|
|
1348
1355
|
});
|
|
1349
1356
|
}
|
|
1350
|
-
function strictLayoutPolicyFindings(documents,
|
|
1357
|
+
function strictLayoutPolicyFindings(documents, catalog, repositoryPaths) {
|
|
1351
1358
|
const findings = [];
|
|
1352
1359
|
const paths = repositoryPaths ??
|
|
1353
1360
|
new Set(documents.map((document) => document.artifact.path));
|
|
1354
1361
|
for (const document of documents) {
|
|
1355
|
-
findings.push(...disallowedSkillAssetFindings(document, config));
|
|
1356
1362
|
findings.push(...thinSkillLayoutFindings(document));
|
|
1357
|
-
findings.push(...helperCommandFindings(document, paths
|
|
1363
|
+
findings.push(...helperCommandFindings(document, paths));
|
|
1358
1364
|
findings.push(...layoutConsistencyFindings(document));
|
|
1359
1365
|
findings.push(...contextRootFindings(document));
|
|
1360
1366
|
findings.push(...helperRootFindings(document));
|
|
@@ -1364,34 +1370,9 @@ function strictLayoutPolicyFindings(documents, config, catalog, repositoryPaths)
|
|
|
1364
1370
|
}
|
|
1365
1371
|
return findings;
|
|
1366
1372
|
}
|
|
1367
|
-
function disallowedSkillAssetFindings(document, config) {
|
|
1368
|
-
const match = document.artifact.path.match(/^skills\/([^/]+)\/(references|profiles|examples|scripts)\/(.+)$/);
|
|
1369
|
-
if (!match)
|
|
1370
|
-
return [];
|
|
1371
|
-
const [, skillName = "", assetRoot = "", rest = ""] = match;
|
|
1372
|
-
const target = canonicalSkillAssetTarget(config, skillName, assetRoot, rest);
|
|
1373
|
-
return [
|
|
1374
|
-
documentFinding(document, DIAGNOSTIC_IDS.LAYOUT_DISALLOWED_SKILL_ASSET, `Disallowed skill-local ${assetRoot} asset`, "structure", assetRoot === "scripts" ? "medium" : "low", `Move this file to \`${target}\` and update every repo-local reference to the new canonical path.`, {
|
|
1375
|
-
whyItMatters: "Strict layout keeps skills as thin entrypoints, shared context under contexts/, and executable helpers under tools/ so agents can migrate repositories deterministically.",
|
|
1376
|
-
verificationSteps: [
|
|
1377
|
-
`Move ${document.artifact.path} to ${target}.`,
|
|
1378
|
-
"Run renma scan and renma readiness again.",
|
|
1379
|
-
],
|
|
1380
|
-
llmHint: `Move ${document.artifact.path} to ${target}, then rewrite references from the old path to the new path. Do not leave a compatibility shim unless another Renma finding requires it.`,
|
|
1381
|
-
}),
|
|
1382
|
-
];
|
|
1383
|
-
}
|
|
1384
|
-
function canonicalSkillAssetTarget(config, skillName, assetRoot, rest) {
|
|
1385
|
-
const workflow = canonicalWorkflowName(config, skillName);
|
|
1386
|
-
if (assetRoot === "scripts")
|
|
1387
|
-
return helperAssetPath(config, workflow, `scripts/${rest}`);
|
|
1388
|
-
return contextAssetPath(config, workflow, `${assetRoot}/${rest}`);
|
|
1389
|
-
}
|
|
1390
|
-
function canonicalWorkflowName(config, skillName) {
|
|
1391
|
-
return config.layout.workflowAliases[skillName] ?? skillName;
|
|
1392
|
-
}
|
|
1393
1373
|
function thinSkillLayoutFindings(document) {
|
|
1394
|
-
if (
|
|
1374
|
+
if (classifyRepositorySkillEntrypointPath(document.artifact.path)?.kind !==
|
|
1375
|
+
"canonical")
|
|
1395
1376
|
return [];
|
|
1396
1377
|
const findings = [];
|
|
1397
1378
|
const wordCount = words(document.artifact.content).length;
|
|
@@ -1402,7 +1383,7 @@ function thinSkillLayoutFindings(document) {
|
|
|
1402
1383
|
if (wordCount > 450 ||
|
|
1403
1384
|
procedureSignals.some((pattern) => pattern.test(document.artifact.content))) {
|
|
1404
1385
|
findings.push(documentFinding(document, DIAGNOSTIC_IDS.LAYOUT_SKILL_NOT_THIN, "Skill entrypoint contains procedure content", "structure", wordCount > 700 ? "medium" : "low", "Move reusable procedure content into contexts/** and keep SKILL.md as a concise router that points to the required context assets.", {
|
|
1405
|
-
whyItMatters: "
|
|
1386
|
+
whyItMatters: "Canonical Skill entrypoints should route agents instead of owning reusable knowledge, helper implementations, or detailed procedures.",
|
|
1406
1387
|
verificationSteps: [
|
|
1407
1388
|
"Confirm SKILL.md contains routing guidance and required context references only.",
|
|
1408
1389
|
"Run renma readiness and check layout.skills_thin.",
|
|
@@ -1412,32 +1393,40 @@ function thinSkillLayoutFindings(document) {
|
|
|
1412
1393
|
}
|
|
1413
1394
|
const command = firstExecutableCommand(document);
|
|
1414
1395
|
if (command) {
|
|
1415
|
-
findings.push(findingAt(document, DIAGNOSTIC_IDS.LAYOUT_SKILL_EXECUTABLE_COMMAND, "Skill entrypoint contains executable command", "structure", "low", command.line, command.command, "Move executable
|
|
1416
|
-
whyItMatters: "Executable setup commands in SKILL.md make the entrypoint procedural
|
|
1396
|
+
findings.push(findingAt(document, DIAGNOSTIC_IDS.LAYOUT_SKILL_EXECUTABLE_COMMAND, "Skill entrypoint contains executable command", "structure", "low", command.line, command.command, "Move executable command detail into Skill-local references or governed contexts/** procedures, and keep SKILL.md as a router.", {
|
|
1397
|
+
whyItMatters: "Executable setup commands in SKILL.md make the entrypoint procedural instead of a concise routing layer.",
|
|
1417
1398
|
verificationSteps: [
|
|
1418
1399
|
"Move the command guidance to a context/reference/procedure.",
|
|
1419
|
-
"If the command invokes a helper script, ensure it
|
|
1400
|
+
"If the command invokes a helper script, ensure it resolves to local scripts/** in the owning Skill or a shared tools/** helper.",
|
|
1420
1401
|
],
|
|
1421
1402
|
}));
|
|
1422
1403
|
}
|
|
1423
1404
|
return findings;
|
|
1424
1405
|
}
|
|
1425
|
-
function helperCommandFindings(document, paths
|
|
1406
|
+
function helperCommandFindings(document, paths) {
|
|
1426
1407
|
const findings = [];
|
|
1427
1408
|
for (const command of executableCommands(document)) {
|
|
1428
|
-
const
|
|
1429
|
-
if (!
|
|
1409
|
+
const commandPath = helperScriptPath(command.command);
|
|
1410
|
+
if (!commandPath)
|
|
1430
1411
|
continue;
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
],
|
|
1412
|
+
const resolution = resolveHelperScriptPath(document.artifact.path, commandPath);
|
|
1413
|
+
if (resolution.kind === "unscoped")
|
|
1414
|
+
continue;
|
|
1415
|
+
if (resolution.kind === "unsafe") {
|
|
1416
|
+
findings.push(unresolvedHelperCommandFinding(document, command, commandPath, {
|
|
1417
|
+
details: { unsafePath: true },
|
|
1438
1418
|
}));
|
|
1439
1419
|
continue;
|
|
1440
1420
|
}
|
|
1421
|
+
const scriptPath = resolution.path;
|
|
1422
|
+
const skillPath = classifyRepositorySkillPath(scriptPath);
|
|
1423
|
+
if (skillPath?.kind === "support" &&
|
|
1424
|
+
skillPath.supportDirectory === "scripts") {
|
|
1425
|
+
if (!paths.has(scriptPath)) {
|
|
1426
|
+
findings.push(unresolvedHelperCommandFinding(document, command, scriptPath));
|
|
1427
|
+
}
|
|
1428
|
+
continue;
|
|
1429
|
+
}
|
|
1441
1430
|
if (scriptPath.includes("/scripts/") && !scriptPath.startsWith("tools/")) {
|
|
1442
1431
|
findings.push(findingAt(document, DIAGNOSTIC_IDS.PATH_HELPER_COMMAND_NON_TOOLS, "Helper command does not use tools root", "structure", "low", command.line, command.command, "Update helper script commands to reference scripts under tools/**.", {
|
|
1443
1432
|
whyItMatters: "Helper commands should resolve to non-context helper assets in tools/** so contexts remain LLM-readable guidance.",
|
|
@@ -1445,9 +1434,7 @@ function helperCommandFindings(document, paths, config) {
|
|
|
1445
1434
|
continue;
|
|
1446
1435
|
}
|
|
1447
1436
|
if (scriptPath.startsWith("tools/") && !paths.has(scriptPath)) {
|
|
1448
|
-
findings.push(
|
|
1449
|
-
whyItMatters: "Agents need helper commands in markdown procedures to resolve deterministically before running them.",
|
|
1450
|
-
}));
|
|
1437
|
+
findings.push(unresolvedHelperCommandFinding(document, command, scriptPath));
|
|
1451
1438
|
}
|
|
1452
1439
|
}
|
|
1453
1440
|
return findings;
|
|
@@ -1467,10 +1454,6 @@ function layoutConsistencyFindings(document) {
|
|
|
1467
1454
|
pattern: /Each skill includes a self-improvement prompt/i,
|
|
1468
1455
|
message: "Describe self-improvement prompts as loaded context/reference/procedure workflow prompts instead of SKILL.md-only content.",
|
|
1469
1456
|
},
|
|
1470
|
-
{
|
|
1471
|
-
pattern: /skills\/[^/\s`]+\/(?:references|profiles|examples|scripts)\//,
|
|
1472
|
-
message: "Update docs to point to canonical contexts/** assets or tools/** helper scripts instead of skill-local support directories.",
|
|
1473
|
-
},
|
|
1474
1457
|
{
|
|
1475
1458
|
pattern: /\]\(contexts\/tools\//,
|
|
1476
1459
|
message: "Use backtick repo-root paths for contexts/tools/... references instead of file-relative Markdown links.",
|
|
@@ -1481,10 +1464,10 @@ function layoutConsistencyFindings(document) {
|
|
|
1481
1464
|
if (!match)
|
|
1482
1465
|
continue;
|
|
1483
1466
|
const line = lineForOffset(text, match.index ?? 0);
|
|
1484
|
-
findings.push(findingAt(document, DIAGNOSTIC_IDS.DOCS_LAYOUT_INCONSISTENT, "Repository docs
|
|
1485
|
-
whyItMatters: "README.md and AGENTS.md should
|
|
1467
|
+
findings.push(findingAt(document, DIAGNOSTIC_IDS.DOCS_LAYOUT_INCONSISTENT, "Repository docs contradict the supported layout", "maintenance", "low", line, lineText(document, line), stale.message, {
|
|
1468
|
+
whyItMatters: "README.md and AGENTS.md should describe the current repository model without treating valid Skill-local support as stale.",
|
|
1486
1469
|
verificationSteps: [
|
|
1487
|
-
"
|
|
1470
|
+
"Confirm docs distinguish canonical Skill roots and valid local support from governed contexts/** assets and shared tools/** helpers.",
|
|
1488
1471
|
"Run renma scan again.",
|
|
1489
1472
|
],
|
|
1490
1473
|
}));
|
|
@@ -1502,6 +1485,11 @@ function contextRootFindings(document) {
|
|
|
1502
1485
|
return [];
|
|
1503
1486
|
}
|
|
1504
1487
|
function helperRootFindings(document) {
|
|
1488
|
+
const skillPath = classifyRepositorySkillPath(document.artifact.path);
|
|
1489
|
+
if (skillPath?.kind === "support" &&
|
|
1490
|
+
skillPath.supportDirectory === "scripts") {
|
|
1491
|
+
return [];
|
|
1492
|
+
}
|
|
1505
1493
|
if (document.artifact.path.includes("/scripts/") &&
|
|
1506
1494
|
!document.artifact.path.startsWith("tools/")) {
|
|
1507
1495
|
return [
|
|
@@ -1522,7 +1510,7 @@ function declaredDependencyLayoutFindings(catalog, paths) {
|
|
|
1522
1510
|
continue;
|
|
1523
1511
|
}
|
|
1524
1512
|
if (target.startsWith("contexts/") ||
|
|
1525
|
-
target
|
|
1513
|
+
normalizeRepositoryRelativePath(target) !== undefined ||
|
|
1526
1514
|
target.startsWith("tools/")) {
|
|
1527
1515
|
continue;
|
|
1528
1516
|
}
|
|
@@ -1536,7 +1524,7 @@ function declaredDependencyLayoutFindings(catalog, paths) {
|
|
|
1536
1524
|
severity: "low",
|
|
1537
1525
|
confidence: "medium",
|
|
1538
1526
|
evidence: metadataFindingEvidence(source.sourcePath, target),
|
|
1539
|
-
whyItMatters: "Declared context references should resolve through canonical contexts/**, skills/**, or tools/**
|
|
1527
|
+
whyItMatters: "Declared context references should resolve through canonical contexts/**, skills/**, .agents/skills/**, or tools/** repository paths.",
|
|
1540
1528
|
remediation: "Rewrite declared required or optional context dependency values to canonical repo-root paths without changing the Skill's operational metadata format.",
|
|
1541
1529
|
verificationSteps: ["Run renma graph and confirm all edges resolve."],
|
|
1542
1530
|
details: {
|
|
@@ -1561,27 +1549,18 @@ function executableCommands(document) {
|
|
|
1561
1549
|
function firstExecutableCommand(document) {
|
|
1562
1550
|
return executableCommands(document)[0];
|
|
1563
1551
|
}
|
|
1564
|
-
function
|
|
1565
|
-
const
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
}
|
|
1577
|
-
function helperAssetPath(config, workflow, rest) {
|
|
1578
|
-
const namespace = config.layout.toolNamespace;
|
|
1579
|
-
if (namespace)
|
|
1580
|
-
return `tools/${namespace}/${workflow}/${rest}`;
|
|
1581
|
-
return `tools/${workflow}/${rest}`;
|
|
1582
|
-
}
|
|
1583
|
-
function isCanonicalSkillEntrypoint(pathValue) {
|
|
1584
|
-
return /^skills\/[^/]+\/SKILL\.md$/.test(pathValue);
|
|
1552
|
+
function unresolvedHelperCommandFinding(document, command, scriptPath, details = {}) {
|
|
1553
|
+
const unsafePath = details.details?.unsafePath === true;
|
|
1554
|
+
return findingAt(document, DIAGNOSTIC_IDS.PATH_HELPER_COMMAND_UNRESOLVED, "Helper command target does not resolve", "structure", "medium", command.line, command.command, unsafePath
|
|
1555
|
+
? "Update this command to a path inside the owning Skill's scripts/** directory or to a repository-root tools/** helper; do not escape the Skill with `..`."
|
|
1556
|
+
: `Create \`${scriptPath}\` or update this command to the correct local helper path.`, {
|
|
1557
|
+
whyItMatters: "Agents need shared tools/** helpers and Skill-local scripts to resolve deterministically before running them.",
|
|
1558
|
+
verificationSteps: [
|
|
1559
|
+
"Confirm the command resolves to an existing tools/** helper or to scripts/** inside its owning Skill.",
|
|
1560
|
+
"Run renma readiness and check paths.helper_commands.",
|
|
1561
|
+
],
|
|
1562
|
+
...details,
|
|
1563
|
+
});
|
|
1585
1564
|
}
|
|
1586
1565
|
function findingAt(document, id, title, category, severity, line, snippet, remediation, details = {}) {
|
|
1587
1566
|
return {
|