renma 0.15.1 → 0.16.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.
Files changed (81) hide show
  1. package/CHANGELOG.md +34 -1
  2. package/README.md +138 -38
  3. package/dist/agent-skills.d.ts +77 -0
  4. package/dist/agent-skills.d.ts.map +1 -0
  5. package/dist/agent-skills.js +468 -0
  6. package/dist/agent-skills.js.map +1 -0
  7. package/dist/catalog.d.ts.map +1 -1
  8. package/dist/catalog.js +38 -5
  9. package/dist/catalog.js.map +1 -1
  10. package/dist/cli-help.d.ts +8 -8
  11. package/dist/cli-help.d.ts.map +1 -1
  12. package/dist/cli-help.js +15 -3
  13. package/dist/cli-help.js.map +1 -1
  14. package/dist/commands/bom.d.ts +7 -0
  15. package/dist/commands/bom.d.ts.map +1 -1
  16. package/dist/commands/bom.js +24 -13
  17. package/dist/commands/bom.js.map +1 -1
  18. package/dist/commands/graph.d.ts +2 -1
  19. package/dist/commands/graph.d.ts.map +1 -1
  20. package/dist/commands/graph.js +3 -0
  21. package/dist/commands/graph.js.map +1 -1
  22. package/dist/commands/scaffold.d.ts.map +1 -1
  23. package/dist/commands/scaffold.js +45 -14
  24. package/dist/commands/scaffold.js.map +1 -1
  25. package/dist/commands/suggest-metadata.d.ts +3 -1
  26. package/dist/commands/suggest-metadata.d.ts.map +1 -1
  27. package/dist/commands/suggest-metadata.js +179 -6
  28. package/dist/commands/suggest-metadata.js.map +1 -1
  29. package/dist/diagnostic-ids.d.ts +29 -0
  30. package/dist/diagnostic-ids.d.ts.map +1 -1
  31. package/dist/diagnostic-ids.js +28 -0
  32. package/dist/diagnostic-ids.js.map +1 -1
  33. package/dist/discovery.d.ts +22 -0
  34. package/dist/discovery.d.ts.map +1 -1
  35. package/dist/discovery.js +124 -21
  36. package/dist/discovery.js.map +1 -1
  37. package/dist/metadata.d.ts +3 -1
  38. package/dist/metadata.d.ts.map +1 -1
  39. package/dist/metadata.js +166 -29
  40. package/dist/metadata.js.map +1 -1
  41. package/dist/model.d.ts +1 -0
  42. package/dist/model.d.ts.map +1 -1
  43. package/dist/report.d.ts.map +1 -1
  44. package/dist/report.js +16 -1
  45. package/dist/report.js.map +1 -1
  46. package/dist/repository-evidence.d.ts +11 -1
  47. package/dist/repository-evidence.d.ts.map +1 -1
  48. package/dist/repository-evidence.js +22 -2
  49. package/dist/repository-evidence.js.map +1 -1
  50. package/dist/repository-paths.d.ts +6 -0
  51. package/dist/repository-paths.d.ts.map +1 -0
  52. package/dist/repository-paths.js +62 -0
  53. package/dist/repository-paths.js.map +1 -0
  54. package/dist/rules.d.ts +6 -1
  55. package/dist/rules.d.ts.map +1 -1
  56. package/dist/rules.js +111 -97
  57. package/dist/rules.js.map +1 -1
  58. package/dist/scanner.d.ts +7 -1
  59. package/dist/scanner.d.ts.map +1 -1
  60. package/dist/scanner.js +29 -29
  61. package/dist/scanner.js.map +1 -1
  62. package/dist/security-diagnostics.d.ts.map +1 -1
  63. package/dist/security-diagnostics.js +98 -35
  64. package/dist/security-diagnostics.js.map +1 -1
  65. package/dist/security-policy-inventory.js +11 -4
  66. package/dist/security-policy-inventory.js.map +1 -1
  67. package/dist/security-policy.d.ts +27 -1
  68. package/dist/security-policy.d.ts.map +1 -1
  69. package/dist/security-policy.js +247 -34
  70. package/dist/security-policy.js.map +1 -1
  71. package/dist/skill-migration.d.ts +30 -0
  72. package/dist/skill-migration.d.ts.map +1 -0
  73. package/dist/skill-migration.js +566 -0
  74. package/dist/skill-migration.js.map +1 -0
  75. package/dist/types.d.ts +2 -0
  76. package/dist/types.d.ts.map +1 -1
  77. package/dist/yaml-frontmatter.d.ts +26 -0
  78. package/dist/yaml-frontmatter.d.ts.map +1 -0
  79. package/dist/yaml-frontmatter.js +114 -0
  80. package/dist/yaml-frontmatter.js.map +1 -0
  81. package/package.json +4 -1
@@ -1,5 +1,6 @@
1
1
  import { mkdir, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { normalizeAgentSkillDirectoryName } from "../agent-skills.js";
3
4
  export async function runScaffoldCommand(options) {
4
5
  const bundle = buildScaffoldBundle(options);
5
6
  if (options.format === "json") {
@@ -21,7 +22,13 @@ export function buildScaffoldBundle(options) {
21
22
  const owner = options.owner ?? "unowned";
22
23
  const tags = options.tags && options.tags.length > 0 ? options.tags : ["authoring"];
23
24
  const content = options.kind === "skill"
24
- ? renderSkillScaffold({ id, title, owner, tags })
25
+ ? renderSkillScaffold({
26
+ name: canonicalSkillName(options.targetPath),
27
+ id,
28
+ title,
29
+ owner,
30
+ tags,
31
+ })
25
32
  : options.kind === "context_lens"
26
33
  ? renderContextLensScaffold({ id, title, owner, tags })
27
34
  : renderContextScaffold({ id, title, owner, tags });
@@ -47,15 +54,18 @@ export function buildScaffoldBundle(options) {
47
54
  }
48
55
  function renderSkillScaffold(metadata) {
49
56
  return `---
50
- id: ${metadata.id}
51
- title: ${metadata.title}
52
- version: 0.1.0
53
- owner: ${metadata.owner}
54
- status: experimental
55
- ${renderTagBlock(metadata.tags)}
56
- requires_context:
57
- optional_context:
58
- conflicts:
57
+ name: ${metadata.name}
58
+ description: Replace this description with clear routing guidance. Use when the intended workflow applies.
59
+ metadata:
60
+ renma.id: ${yamlString(metadata.id)}
61
+ renma.title: ${yamlString(metadata.title)}
62
+ renma.version: "0.1.0"
63
+ renma.owner: ${yamlString(metadata.owner)}
64
+ renma.status: experimental
65
+ renma.tags: ${yamlString(JSON.stringify(metadata.tags))}
66
+ renma.requires-context: '[]'
67
+ renma.optional-context: '[]'
68
+ renma.conflicts: '[]'
59
69
  ---
60
70
 
61
71
  # ${metadata.title}
@@ -76,7 +86,7 @@ Describe the recurring task, decision, or workflow this skill should guide.
76
86
 
77
87
  ## Context References
78
88
 
79
- Use \`requires_context\` and \`optional_context\` in frontmatter to reference durable context assets.
89
+ Use \`metadata.renma.requires-context\` and \`metadata.renma.optional-context\` JSON-array strings to reference durable context assets.
80
90
 
81
91
  Move reusable domain, testing, platform, product, or tool knowledge into separately owned context assets under \`contexts/\`.
82
92
 
@@ -173,6 +183,14 @@ This context lens is a purpose-oriented interpretation layer for the context ass
173
183
  `;
174
184
  }
175
185
  function renderPrompt(input) {
186
+ const skillGuidance = input.kind === "skill"
187
+ ? [
188
+ "- Keep the Skill in Agent Skills format with Renma extensions under `metadata.renma.*`.",
189
+ "- Use `metadata.renma.requires-context` for context the skill normally depends on, encoded as a JSON-array string.",
190
+ "- Use `metadata.renma.optional-context` for context useful only in some cases, encoded as a JSON-array string.",
191
+ "- Use `metadata.renma.requires-lens` or `metadata.renma.optional-lens` for static lens relationships, encoded as JSON-array strings.",
192
+ ]
193
+ : [];
176
194
  return `Create a Renma ${input.kind} asset at \`${input.targetPath}\`.
177
195
 
178
196
  Use this metadata exactly:
@@ -194,9 +212,7 @@ Constraints:
194
212
  - Preserve the YAML frontmatter shape unless the repository already requires a stricter local convention.
195
213
  - Use only supported statuses: experimental, stable, deprecated, archived.
196
214
  - Move durable domain, testing, platform, product, or tool knowledge into separately owned context assets under \`contexts/\`.
197
- - For skill assets, use \`requires_context\` for context the skill normally depends on.
198
- - For skill assets, use \`optional_context\` for context useful only in some cases.
199
- - For skill assets, use \`requires_lens\` or \`optional_lens\` for static lens relationships.
215
+ ${skillGuidance.join("\n")}
200
216
  - For context lens assets, use \`applies_to\` for context assets the lens interprets.
201
217
  - Use simple supported metadata shapes only.
202
218
  - For context assets, keep content durable, reviewable, and source-backed.
@@ -215,6 +231,21 @@ function renderTagBlock(tags) {
215
231
  return `tags:
216
232
  ${tags.map((tag) => ` - ${tag}`).join("\n")}`;
217
233
  }
234
+ function canonicalSkillName(targetPath) {
235
+ const normalizedPath = targetPath.replaceAll("\\", "/");
236
+ if (path.posix.basename(normalizedPath) !== "SKILL.md") {
237
+ throw new Error("Skill scaffolds require the canonical SKILL.md filename.");
238
+ }
239
+ const directory = path.posix.basename(path.posix.dirname(normalizedPath));
240
+ const validation = normalizeAgentSkillDirectoryName(directory);
241
+ if (validation.normalized === undefined || validation.problems.length > 0) {
242
+ throw new Error(`Skill scaffold directory "${directory}" is not a valid Agent Skills name: ${validation.problems.join("; ")}.`);
243
+ }
244
+ return validation.normalized;
245
+ }
246
+ function yamlString(value) {
247
+ return `'${value.replaceAll("'", "''")}'`;
248
+ }
218
249
  function inferId(kind, targetPath) {
219
250
  const withoutExtension = targetPath.replace(/\.[^/.]+$/, "");
220
251
  const normalized = withoutExtension
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type AgentSkillMigrationSuggestion } from "../skill-migration.js";
1
2
  import type { ArtifactKind } from "../types.js";
2
3
  export type SuggestMetadataFormat = "prompt" | "json";
3
4
  export interface SuggestMetadataOptions {
@@ -11,11 +12,12 @@ export interface BlockedMetadata {
11
12
  export interface MetadataSuggestion {
12
13
  path: string;
13
14
  kind: ArtifactKind;
14
- suggestedMode: "metadata-retrofit";
15
+ suggestedMode: "metadata-retrofit" | "agent-skills-migration" | "agent-skills-metadata-retrofit";
15
16
  ownerProvided: boolean;
16
17
  instructions: string[];
17
18
  candidateMetadata: Record<string, string>;
18
19
  blockedMetadata: BlockedMetadata[];
20
+ agentSkills?: AgentSkillMigrationSuggestion;
19
21
  }
20
22
  export declare class SuggestMetadataTargetError extends Error {
21
23
  constructor(target: string, cause: unknown);
@@ -1 +1 @@
1
- {"version":3,"file":"suggest-metadata.d.ts","sourceRoot":"","sources":["../../src/commands/suggest-metadata.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAY,YAAY,EAAiB,MAAM,aAAa,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,eAAe,EAAE,eAAe,EAAE,CAAC;CACpC;AAED,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAM3C;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,kBAAkB,CAAC,CAiE7B;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CA0B3E"}
1
+ {"version":3,"file":"suggest-metadata.d.ts","sourceRoot":"","sources":["../../src/commands/suggest-metadata.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAY,YAAY,EAAiB,MAAM,aAAa,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,EACT,mBAAmB,GACnB,wBAAwB,GACxB,gCAAgC,CAAC;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,6BAA6B,CAAC;CAC7C;AAED,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAM3C;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,kBAAkB,CAAC,CAwH7B;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CA4B3E"}
@@ -1,7 +1,9 @@
1
- import { readFile } from "node:fs/promises";
1
+ import { lstat, readFile, realpath, stat } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { parseDocument } from "../markdown.js";
4
4
  import { parseAssetMetadata } from "../metadata.js";
5
+ import { classifyAbsoluteSkillEntrypointPath, classifyRepositorySkillEntrypointPath, } from "../discovery.js";
6
+ import { buildAgentSkillMigrationSuggestion, } from "../skill-migration.js";
5
7
  export class SuggestMetadataTargetError extends Error {
6
8
  constructor(target, cause) {
7
9
  super(`Could not read metadata target ${target}: ${readErrorReason(cause)}`);
@@ -26,7 +28,8 @@ export async function buildMetadataSuggestion(target, options = {}) {
26
28
  throw new SuggestMetadataTargetError(target, error);
27
29
  }
28
30
  const outputPath = toPosix(target);
29
- const initialKind = classifyPath(outputPath);
31
+ const entrypoint = classifySuggestionSkillEntrypointPath(outputPath);
32
+ const initialKind = classifyPath(outputPath, entrypoint);
30
33
  const document = parseDocument({
31
34
  path: outputPath,
32
35
  absolutePath,
@@ -38,10 +41,62 @@ export async function buildMetadataSuggestion(target, options = {}) {
38
41
  const kind = initialKind === "context" && metadata.type === "context_lens"
39
42
  ? "context_lens"
40
43
  : initialKind;
44
+ const explicitOwner = optionalText(options.owner);
45
+ if (kind === "skill") {
46
+ const collisionBlock = entrypoint
47
+ ? await pathMigrationCollision(entrypoint, absolutePath)
48
+ : undefined;
49
+ const agentSkills = buildAgentSkillMigrationSuggestion(document, {
50
+ ...(explicitOwner ? { explicitOwner } : {}),
51
+ ...(entrypoint ? { entrypoint } : {}),
52
+ ...(collisionBlock ? { additionalBlocks: [collisionBlock] } : {}),
53
+ });
54
+ const metadataRetrofit = agentSkills.proposalKind === "canonical-metadata-retrofit";
55
+ const noMigrationProposed = agentSkills.proposalKind === "none" &&
56
+ agentSkills.sourceFormat === "agent-skills";
57
+ return {
58
+ path: outputPath,
59
+ kind,
60
+ suggestedMode: metadataRetrofit
61
+ ? "agent-skills-metadata-retrofit"
62
+ : "agent-skills-migration",
63
+ ownerProvided: Boolean(explicitOwner),
64
+ instructions: noMigrationProposed
65
+ ? [
66
+ "Inspect the canonical Agent Skill without rewriting it.",
67
+ "Preserve the Markdown body, standard Agent Skills fields, and metadata.renma.* extensions.",
68
+ "Do not propose reverse migration or an unnecessary frontmatter rewrite.",
69
+ "Run renma scan . if the Skill is edited for another reason.",
70
+ ]
71
+ : metadataRetrofit
72
+ ? [
73
+ "Inspect the canonical Agent Skill before editing.",
74
+ "Preserve the Markdown body and existing standard Agent Skills fields.",
75
+ "Add only the explicitly provided owner as a flat metadata.renma.owner string entry.",
76
+ "Preserve unknown renma.* and other-vendor metadata child keys.",
77
+ "Do not apply a proposal with blocked ownership evidence.",
78
+ "Do not perform reverse migration.",
79
+ "Run renma scan . after human review and application.",
80
+ ]
81
+ : [
82
+ "Inspect the existing Skill before editing.",
83
+ "Preserve the Markdown body and existing standard Agent Skills fields.",
84
+ "If present, move only recognized pre-0.16 Renma Skill fields to flat metadata.renma.* string entries.",
85
+ "Preserve unknown renma.* and other-vendor metadata child keys.",
86
+ "Do not discard or automatically relocate unknown top-level fields.",
87
+ "Apply the entrypoint rename or move together with the frontmatter migration when required.",
88
+ "Do not apply a proposal with blocked migration evidence.",
89
+ "Keep selection boundaries in description and execution constraints in the body.",
90
+ "Run renma scan . after human review and application.",
91
+ ],
92
+ candidateMetadata: {},
93
+ blockedMetadata: agentSkills.blocked,
94
+ agentSkills,
95
+ };
96
+ }
41
97
  const existingId = optionalText(metadataValueText(document.metadata.id));
42
98
  const existingTitle = optionalText(metadataValueText(document.metadata.title));
43
99
  const existingOwner = optionalText(metadata.owner);
44
- const explicitOwner = optionalText(options.owner);
45
100
  const candidateMetadata = {};
46
101
  const candidateId = inferCandidateId(kind, outputPath);
47
102
  const candidateTitle = mainHeadingTitle(document.headings);
@@ -78,6 +133,8 @@ export async function buildMetadataSuggestion(target, options = {}) {
78
133
  };
79
134
  }
80
135
  export function renderMetadataPrompt(suggestion) {
136
+ if (suggestion.agentSkills)
137
+ return renderAgentSkillMigrationPrompt(suggestion);
81
138
  return `${[
82
139
  "# Codex Task: Safely Retrofit Renma Metadata",
83
140
  "",
@@ -104,6 +161,70 @@ export function renderMetadataPrompt(suggestion) {
104
161
  "Return a small reviewed patch. Do not rewrite the asset body.",
105
162
  ].join("\n")}\n`;
106
163
  }
164
+ function renderAgentSkillMigrationPrompt(suggestion) {
165
+ const migration = suggestion.agentSkills;
166
+ if (!migration)
167
+ return "";
168
+ const metadataRetrofit = migration.proposalKind === "canonical-metadata-retrofit";
169
+ const noMigrationProposed = migration.proposalKind === "none" &&
170
+ migration.sourceFormat === "agent-skills";
171
+ const candidate = migration.canonicalFrontmatter
172
+ ? [
173
+ "Canonical Frontmatter Candidate:",
174
+ "",
175
+ "```yaml",
176
+ migration.canonicalFrontmatter,
177
+ "```",
178
+ ]
179
+ : [
180
+ "Canonical Frontmatter Candidate:",
181
+ "",
182
+ "(not generated while migration is blocked or unnecessary)",
183
+ ];
184
+ return `${[
185
+ noMigrationProposed
186
+ ? "# Codex Task: Inspect Canonical Agent Skill (No Migration Proposed)"
187
+ : metadataRetrofit
188
+ ? "# Codex Task: Review Canonical Agent Skills Metadata Retrofit"
189
+ : "# Codex Task: Review One-Way Agent Skills Migration",
190
+ "",
191
+ `Asset: \`${suggestion.path}\``,
192
+ `Source format: \`${migration.sourceFormat}\``,
193
+ `Direction: \`${migration.direction}\``,
194
+ `Proposal: \`${migration.proposalKind}\``,
195
+ `Source path: \`${migration.sourcePath}\``,
196
+ `Target path: \`${migration.targetPath}\``,
197
+ `Entrypoint migration: \`${migration.entrypointMigration}\``,
198
+ "",
199
+ "Rules:",
200
+ ...suggestion.instructions.map((instruction) => `- ${instruction}`),
201
+ "",
202
+ "Candidate Agent Skills Fields:",
203
+ ...metadataLines(migration.candidateAgentSkillsFields),
204
+ "",
205
+ "Candidate Renma Metadata:",
206
+ ...metadataLines(migration.candidateRenmaMetadata),
207
+ "",
208
+ ...candidate,
209
+ "",
210
+ "Blocked Migration Evidence:",
211
+ ...blockedMetadataLines(suggestion.blockedMetadata),
212
+ "",
213
+ "Human Review:",
214
+ migration.reviewPrompt,
215
+ "",
216
+ "Verification:",
217
+ "- Run `renma scan .`.",
218
+ "",
219
+ migration.canonicalFrontmatter
220
+ ? migration.entrypointMigration === "none"
221
+ ? "Return a small reviewed frontmatter patch. Do not rewrite the Skill body."
222
+ : "Return one small reviewed patch containing both the entrypoint path migration and frontmatter migration. Do not rewrite the Skill body."
223
+ : migration.blocked.length > 0
224
+ ? "Do not return or apply a frontmatter patch while migration is blocked. Preserve the existing source until every blocked item is resolved with human review."
225
+ : "No frontmatter patch is proposed. Preserve the existing source.",
226
+ ].join("\n")}\n`;
227
+ }
107
228
  function buildInstructions(input) {
108
229
  return [
109
230
  "Inspect the existing asset before editing.",
@@ -144,11 +265,11 @@ function blockedMetadataLines(blockedMetadata) {
144
265
  }
145
266
  return blockedMetadata.map((item) => `- ${item.field}: ${item.reason}`);
146
267
  }
147
- function classifyPath(filePath) {
268
+ function classifyPath(filePath, entrypoint) {
269
+ if (entrypoint)
270
+ return "skill";
148
271
  const parts = pathParts(filePath);
149
272
  const basename = parts.at(-1) ?? "";
150
- if (basename === "SKILL.md")
151
- return "skill";
152
273
  if (parts.includes("lenses"))
153
274
  return "context_lens";
154
275
  if (parts.includes("contexts") || parts.includes("context"))
@@ -166,6 +287,58 @@ function classifyPath(filePath) {
166
287
  }
167
288
  return "unknown";
168
289
  }
290
+ function classifySuggestionSkillEntrypointPath(filePath) {
291
+ return isAbsoluteLike(filePath)
292
+ ? classifyAbsoluteSkillEntrypointPath(filePath)
293
+ : classifyRepositorySkillEntrypointPath(filePath);
294
+ }
295
+ async function pathMigrationCollision(entrypoint, sourceAbsolutePath) {
296
+ if (entrypoint.kind === "canonical")
297
+ return undefined;
298
+ const targetAbsolutePath = path.resolve(entrypoint.targetPath);
299
+ try {
300
+ await lstat(targetAbsolutePath);
301
+ }
302
+ catch (error) {
303
+ if (isMissingFileError(error))
304
+ return undefined;
305
+ return {
306
+ field: "targetPath",
307
+ reason: `Could not safely inspect migration target ${entrypoint.targetPath}: ${readErrorReason(error)} Human review is required before migration.`,
308
+ };
309
+ }
310
+ try {
311
+ const [sourceInfo, targetInfo, sourceRealPath, targetRealPath] = await Promise.all([
312
+ stat(sourceAbsolutePath),
313
+ stat(targetAbsolutePath),
314
+ realpath(sourceAbsolutePath),
315
+ realpath(targetAbsolutePath),
316
+ ]);
317
+ if (sourceRealPath === targetRealPath ||
318
+ (sourceInfo.dev === targetInfo.dev && sourceInfo.ino === targetInfo.ino)) {
319
+ return undefined;
320
+ }
321
+ return {
322
+ field: "targetPath",
323
+ reason: `Target Agent Skills entrypoint already exists at ${entrypoint.targetPath}. Human review is required before migration.`,
324
+ };
325
+ }
326
+ catch (error) {
327
+ return {
328
+ field: "targetPath",
329
+ reason: `Could not safely verify migration target ${entrypoint.targetPath}: ${readErrorReason(error)} Human review is required before migration.`,
330
+ };
331
+ }
332
+ }
333
+ function isAbsoluteLike(filePath) {
334
+ return path.isAbsolute(filePath) || /^[A-Za-z]:\//.test(filePath);
335
+ }
336
+ function isMissingFileError(error) {
337
+ return (typeof error === "object" &&
338
+ error !== null &&
339
+ "code" in error &&
340
+ error.code === "ENOENT");
341
+ }
169
342
  function inferCandidateId(kind, filePath) {
170
343
  if (kind === "skill") {
171
344
  return inferRootedId("skill", filePath, "skills", (parts) => parts.filter((part) => part !== "SKILL"));
@@ -1 +1 @@
1
- {"version":3,"file":"suggest-metadata.js","sourceRoot":"","sources":["../../src/commands/suggest-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"suggest-metadata.js","sourceRoot":"","sources":["../../src/commands/suggest-metadata.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,7 @@ export declare const DIAGNOSTIC_IDS: {
66
66
  readonly SEC_EXTERNAL_UPLOAD_INSTRUCTION: "SEC-EXTERNAL-UPLOAD-INSTRUCTION";
67
67
  readonly SEC_FORBIDDEN_INPUT_INSTRUCTION: "SEC-FORBIDDEN-INPUT-INSTRUCTION";
68
68
  readonly SEC_INSTRUCTION_VIOLATES_POLICY: "SEC-INSTRUCTION-VIOLATES-POLICY";
69
+ readonly SEC_INVALID_CANONICAL_POLICY_METADATA: "SEC-INVALID-CANONICAL-POLICY-METADATA";
69
70
  readonly SEC_LITERAL_SECRET: "SEC-LITERAL-SECRET";
70
71
  readonly SEC_MISSING_HUMAN_APPROVAL_GUARD: "SEC-MISSING-HUMAN-APPROVAL-GUARD";
71
72
  readonly SEC_MISSING_POLICY_METADATA: "SEC-MISSING-POLICY-METADATA";
@@ -91,4 +92,32 @@ export declare const DIAGNOSTIC_IDS: {
91
92
  readonly SUPPORT_UNREACHABLE_REFERENCE: "SUPPORT-UNREACHABLE-REFERENCE";
92
93
  };
93
94
  export type DiagnosticId = (typeof DIAGNOSTIC_IDS)[keyof typeof DIAGNOSTIC_IDS];
95
+ /** Stable Agent Skills validation identifiers emitted in scan.agentSkills. */
96
+ export declare const AGENT_SKILL_DIAGNOSTIC_IDS: {
97
+ readonly AS_NONCANONICAL_FILENAME: "AS-SKILL-NONCANONICAL-FILENAME";
98
+ readonly AS_MISSING_FRONTMATTER: "AS-SKILL-MISSING-FRONTMATTER";
99
+ readonly AS_UNCLOSED_FRONTMATTER: "AS-SKILL-UNCLOSED-FRONTMATTER";
100
+ readonly AS_INVALID_YAML: "AS-SKILL-INVALID-YAML";
101
+ readonly AS_FRONTMATTER_NOT_MAPPING: "AS-SKILL-FRONTMATTER-NOT-MAPPING";
102
+ readonly AS_DUPLICATE_FIELD: "AS-SKILL-DUPLICATE-FIELD";
103
+ readonly AS_DUPLICATE_METADATA_KEY: "AS-SKILL-DUPLICATE-METADATA-KEY";
104
+ readonly AS_UNEXPECTED_TOP_LEVEL_FIELD: "AS-SKILL-UNEXPECTED-TOP-LEVEL-FIELD";
105
+ readonly AS_MISSING_NAME: "AS-SKILL-MISSING-NAME";
106
+ readonly AS_INVALID_NAME: "AS-SKILL-INVALID-NAME";
107
+ readonly AS_NAME_DIRECTORY_MISMATCH: "AS-SKILL-NAME-DIRECTORY-MISMATCH";
108
+ readonly AS_MISSING_DESCRIPTION: "AS-SKILL-MISSING-DESCRIPTION";
109
+ readonly AS_INVALID_DESCRIPTION: "AS-SKILL-INVALID-DESCRIPTION";
110
+ readonly AS_DESCRIPTION_TOO_LONG: "AS-SKILL-DESCRIPTION-TOO-LONG";
111
+ readonly AS_INVALID_COMPATIBILITY: "AS-SKILL-INVALID-COMPATIBILITY";
112
+ readonly AS_COMPATIBILITY_TOO_LONG: "AS-SKILL-COMPATIBILITY-TOO-LONG";
113
+ readonly AS_INVALID_LICENSE: "AS-SKILL-INVALID-LICENSE";
114
+ readonly AS_INVALID_ALLOWED_TOOLS: "AS-SKILL-INVALID-ALLOWED-TOOLS";
115
+ readonly AS_INVALID_METADATA: "AS-SKILL-INVALID-METADATA";
116
+ readonly RN_DESCRIPTION_MISSING_USAGE_BOUNDARY: "RN-SKILL-DESCRIPTION-MISSING-USAGE-BOUNDARY";
117
+ readonly RN_DESCRIPTION_OMITS_SELECTION_BOUNDARY: "RN-SKILL-DESCRIPTION-OMITS-SELECTION-BOUNDARY";
118
+ readonly RN_EXECUTION_CONSTRAINT_NOT_PROMINENT: "RN-SKILL-EXECUTION-CONSTRAINT-NOT-PROMINENT";
119
+ readonly RN_EXECUTION_CONSTRAINT_SCATTERED: "RN-SKILL-EXECUTION-CONSTRAINT-SCATTERED";
120
+ readonly RN_EXECUTION_CONSTRAINT_MISSING_ALTERNATIVE: "RN-SKILL-EXECUTION-CONSTRAINT-MISSING-ALTERNATIVE";
121
+ };
122
+ export type AgentSkillDiagnosticId = (typeof AGENT_SKILL_DIAGNOSTIC_IDS)[keyof typeof AGENT_SKILL_DIAGNOSTIC_IDS];
94
123
  //# sourceMappingURL=diagnostic-ids.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostic-ids.d.ts","sourceRoot":"","sources":["../src/diagnostic-ids.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmGjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"diagnostic-ids.d.ts","sourceRoot":"","sources":["../src/diagnostic-ids.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEhF,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;CA6B7B,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAChC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC"}
@@ -66,6 +66,7 @@ export const DIAGNOSTIC_IDS = {
66
66
  SEC_EXTERNAL_UPLOAD_INSTRUCTION: "SEC-EXTERNAL-UPLOAD-INSTRUCTION",
67
67
  SEC_FORBIDDEN_INPUT_INSTRUCTION: "SEC-FORBIDDEN-INPUT-INSTRUCTION",
68
68
  SEC_INSTRUCTION_VIOLATES_POLICY: "SEC-INSTRUCTION-VIOLATES-POLICY",
69
+ SEC_INVALID_CANONICAL_POLICY_METADATA: "SEC-INVALID-CANONICAL-POLICY-METADATA",
69
70
  SEC_LITERAL_SECRET: "SEC-LITERAL-SECRET",
70
71
  SEC_MISSING_HUMAN_APPROVAL_GUARD: "SEC-MISSING-HUMAN-APPROVAL-GUARD",
71
72
  SEC_MISSING_POLICY_METADATA: "SEC-MISSING-POLICY-METADATA",
@@ -90,4 +91,31 @@ export const DIAGNOSTIC_IDS = {
90
91
  SUPPORT_UNREACHABLE_PROFILE: "SUPPORT-UNREACHABLE-PROFILE",
91
92
  SUPPORT_UNREACHABLE_REFERENCE: "SUPPORT-UNREACHABLE-REFERENCE",
92
93
  };
94
+ /** Stable Agent Skills validation identifiers emitted in scan.agentSkills. */
95
+ export const AGENT_SKILL_DIAGNOSTIC_IDS = {
96
+ AS_NONCANONICAL_FILENAME: "AS-SKILL-NONCANONICAL-FILENAME",
97
+ AS_MISSING_FRONTMATTER: "AS-SKILL-MISSING-FRONTMATTER",
98
+ AS_UNCLOSED_FRONTMATTER: "AS-SKILL-UNCLOSED-FRONTMATTER",
99
+ AS_INVALID_YAML: "AS-SKILL-INVALID-YAML",
100
+ AS_FRONTMATTER_NOT_MAPPING: "AS-SKILL-FRONTMATTER-NOT-MAPPING",
101
+ AS_DUPLICATE_FIELD: "AS-SKILL-DUPLICATE-FIELD",
102
+ AS_DUPLICATE_METADATA_KEY: "AS-SKILL-DUPLICATE-METADATA-KEY",
103
+ AS_UNEXPECTED_TOP_LEVEL_FIELD: "AS-SKILL-UNEXPECTED-TOP-LEVEL-FIELD",
104
+ AS_MISSING_NAME: "AS-SKILL-MISSING-NAME",
105
+ AS_INVALID_NAME: "AS-SKILL-INVALID-NAME",
106
+ AS_NAME_DIRECTORY_MISMATCH: "AS-SKILL-NAME-DIRECTORY-MISMATCH",
107
+ AS_MISSING_DESCRIPTION: "AS-SKILL-MISSING-DESCRIPTION",
108
+ AS_INVALID_DESCRIPTION: "AS-SKILL-INVALID-DESCRIPTION",
109
+ AS_DESCRIPTION_TOO_LONG: "AS-SKILL-DESCRIPTION-TOO-LONG",
110
+ AS_INVALID_COMPATIBILITY: "AS-SKILL-INVALID-COMPATIBILITY",
111
+ AS_COMPATIBILITY_TOO_LONG: "AS-SKILL-COMPATIBILITY-TOO-LONG",
112
+ AS_INVALID_LICENSE: "AS-SKILL-INVALID-LICENSE",
113
+ AS_INVALID_ALLOWED_TOOLS: "AS-SKILL-INVALID-ALLOWED-TOOLS",
114
+ AS_INVALID_METADATA: "AS-SKILL-INVALID-METADATA",
115
+ RN_DESCRIPTION_MISSING_USAGE_BOUNDARY: "RN-SKILL-DESCRIPTION-MISSING-USAGE-BOUNDARY",
116
+ RN_DESCRIPTION_OMITS_SELECTION_BOUNDARY: "RN-SKILL-DESCRIPTION-OMITS-SELECTION-BOUNDARY",
117
+ RN_EXECUTION_CONSTRAINT_NOT_PROMINENT: "RN-SKILL-EXECUTION-CONSTRAINT-NOT-PROMINENT",
118
+ RN_EXECUTION_CONSTRAINT_SCATTERED: "RN-SKILL-EXECUTION-CONSTRAINT-SCATTERED",
119
+ RN_EXECUTION_CONSTRAINT_MISSING_ALTERNATIVE: "RN-SKILL-EXECUTION-CONSTRAINT-MISSING-ALTERNATIVE",
120
+ };
93
121
  //# sourceMappingURL=diagnostic-ids.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostic-ids.js","sourceRoot":"","sources":["../src/diagnostic-ids.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostic-ids.js","sourceRoot":"","sources":["../src/diagnostic-ids.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,26 @@
1
1
  import type { Artifact, Diagnostic, ScanConfig } from "./types.js";
2
+ export type SkillEntrypointPath = {
3
+ kind: "canonical";
4
+ currentPath: string;
5
+ targetPath: string;
6
+ candidateName: string;
7
+ } | {
8
+ kind: "lowercase-entrypoint";
9
+ currentPath: string;
10
+ targetPath: string;
11
+ candidateName: string;
12
+ } | {
13
+ kind: "flat-legacy-entrypoint";
14
+ currentPath: string;
15
+ targetPath: string;
16
+ candidateName: string;
17
+ };
18
+ /** Classify a repository-relative Skill entrypoint only at an explicit root. */
19
+ export declare function classifyRepositorySkillEntrypointPath(relativePath: string): SkillEntrypointPath | undefined;
20
+ /** Classify an absolute Skill path only when it contains one unambiguous root. */
21
+ export declare function classifyAbsoluteSkillEntrypointPath(absolutePath: string): SkillEntrypointPath | undefined;
22
+ /** Normalize a repository-relative Skill path without allowing root escape. */
23
+ export declare function normalizeRepositoryRelativePath(filePath: string): string | undefined;
2
24
  /** Discover and read scan artifacts according to the provided scan configuration. */
3
25
  export declare function discoverArtifacts(root: string, config: ScanConfig): Promise<{
4
26
  artifacts: Artifact[];
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EAER,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AA4BpB,qFAAqF;AACrF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC;IAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CA4E/D"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EAER,UAAU,EACV,UAAU,EACX,MAAM,YAAY,CAAC;AA6BpB,MAAM,MAAM,mBAAmB,GAC3B;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,wBAAwB,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEN,gFAAgF;AAChF,wBAAgB,qCAAqC,CACnD,YAAY,EAAE,MAAM,GACnB,mBAAmB,GAAG,SAAS,CAOjC;AAED,kFAAkF;AAClF,wBAAgB,mCAAmC,CACjD,YAAY,EAAE,MAAM,GACnB,mBAAmB,GAAG,SAAS,CAUjC;AAED,+EAA+E;AAC/E,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAyBpB;AA2CD,qFAAqF;AACrF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC;IAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CA4E/D"}