renma 0.15.2 → 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 (63) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/README.md +134 -34
  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 +7 -7
  11. package/dist/cli-help.d.ts.map +1 -1
  12. package/dist/cli-help.js +13 -2
  13. package/dist/cli-help.js.map +1 -1
  14. package/dist/commands/scaffold.d.ts.map +1 -1
  15. package/dist/commands/scaffold.js +45 -14
  16. package/dist/commands/scaffold.js.map +1 -1
  17. package/dist/commands/suggest-metadata.d.ts +3 -1
  18. package/dist/commands/suggest-metadata.d.ts.map +1 -1
  19. package/dist/commands/suggest-metadata.js +179 -6
  20. package/dist/commands/suggest-metadata.js.map +1 -1
  21. package/dist/diagnostic-ids.d.ts +29 -0
  22. package/dist/diagnostic-ids.d.ts.map +1 -1
  23. package/dist/diagnostic-ids.js +28 -0
  24. package/dist/diagnostic-ids.js.map +1 -1
  25. package/dist/discovery.d.ts +22 -0
  26. package/dist/discovery.d.ts.map +1 -1
  27. package/dist/discovery.js +124 -21
  28. package/dist/discovery.js.map +1 -1
  29. package/dist/metadata.d.ts +3 -1
  30. package/dist/metadata.d.ts.map +1 -1
  31. package/dist/metadata.js +166 -29
  32. package/dist/metadata.js.map +1 -1
  33. package/dist/model.d.ts +1 -0
  34. package/dist/model.d.ts.map +1 -1
  35. package/dist/report.d.ts.map +1 -1
  36. package/dist/report.js +16 -1
  37. package/dist/report.js.map +1 -1
  38. package/dist/rules.d.ts.map +1 -1
  39. package/dist/rules.js +33 -22
  40. package/dist/rules.js.map +1 -1
  41. package/dist/scanner.d.ts.map +1 -1
  42. package/dist/scanner.js +3 -1
  43. package/dist/scanner.js.map +1 -1
  44. package/dist/security-diagnostics.d.ts.map +1 -1
  45. package/dist/security-diagnostics.js +98 -35
  46. package/dist/security-diagnostics.js.map +1 -1
  47. package/dist/security-policy-inventory.js +11 -4
  48. package/dist/security-policy-inventory.js.map +1 -1
  49. package/dist/security-policy.d.ts +27 -1
  50. package/dist/security-policy.d.ts.map +1 -1
  51. package/dist/security-policy.js +247 -34
  52. package/dist/security-policy.js.map +1 -1
  53. package/dist/skill-migration.d.ts +30 -0
  54. package/dist/skill-migration.d.ts.map +1 -0
  55. package/dist/skill-migration.js +566 -0
  56. package/dist/skill-migration.js.map +1 -0
  57. package/dist/types.d.ts +2 -0
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/yaml-frontmatter.d.ts +26 -0
  60. package/dist/yaml-frontmatter.d.ts.map +1 -0
  61. package/dist/yaml-frontmatter.js +114 -0
  62. package/dist/yaml-frontmatter.js.map +1 -0
  63. package/package.json +4 -1
package/dist/metadata.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { inspectAgentSkill } from "./agent-skills.js";
1
2
  import { isIsoDate, parseDayDuration } from "./freshness.js";
2
3
  const STATUSES = [
3
4
  "experimental",
@@ -5,25 +6,61 @@ const STATUSES = [
5
6
  "deprecated",
6
7
  "archived",
7
8
  ];
9
+ const CANONICAL_SKILL_METADATA_KEYS = {
10
+ id: "renma.id",
11
+ title: "renma.title",
12
+ version: "renma.version",
13
+ owner: "renma.owner",
14
+ status: "renma.status",
15
+ purpose: "renma.purpose",
16
+ last_reviewed_at: "renma.last-reviewed-at",
17
+ review_cycle: "renma.review-cycle",
18
+ expires_at: "renma.expires-at",
19
+ tags: "renma.tags",
20
+ when_to_use: "renma.when-to-use",
21
+ when_not_to_use: "renma.when-not-to-use",
22
+ requires_context: "renma.requires-context",
23
+ optional_context: "renma.optional-context",
24
+ requires_lens: "renma.requires-lens",
25
+ optional_lens: "renma.optional-lens",
26
+ conflicts: "renma.conflicts",
27
+ superseded_by: "renma.superseded-by",
28
+ };
29
+ const CANONICAL_SKILL_KEY_TO_OPERATIONAL = new Map(Object.entries(CANONICAL_SKILL_METADATA_KEYS).map(([operationalKey, canonicalKey]) => [canonicalKey, operationalKey]));
30
+ const CANONICAL_LIST_KEYS = new Set([
31
+ "tags",
32
+ "when_to_use",
33
+ "when_not_to_use",
34
+ "requires_context",
35
+ "optional_context",
36
+ "requires_lens",
37
+ "optional_lens",
38
+ "conflicts",
39
+ "superseded_by",
40
+ ]);
8
41
  /** Normalize parsed frontmatter into asset metadata plus validation diagnostics. */
9
42
  export function parseAssetMetadata(document) {
10
43
  const diagnostics = [];
11
- const rawStatus = metadataText(document.metadata.status);
44
+ const source = operationalMetadataSource(document, diagnostics);
45
+ const rawStatusText = metadataText(source.values.status);
46
+ const rawStatus = source.canonicalSkill
47
+ ? rawStatusText?.trim()
48
+ : rawStatusText;
12
49
  const status = parseStatus(rawStatus);
13
- const lastReviewedAt = optionalText(metadataText(document.metadata.last_reviewed_at));
14
- const reviewCycle = optionalText(metadataText(document.metadata.review_cycle));
15
- const expiresAt = optionalText(metadataText(document.metadata.expires_at));
50
+ const lastReviewedAt = optionalText(metadataText(source.values.last_reviewed_at));
51
+ const reviewCycle = optionalText(metadataText(source.values.review_cycle));
52
+ const expiresAt = optionalText(metadataText(source.values.expires_at));
16
53
  const metadata = {
17
- tags: listValue(document.metadata.tags),
18
- whenToUse: listValue(document.metadata.when_to_use),
19
- whenNotToUse: listValue(document.metadata.when_not_to_use),
20
- requiresContext: listValue(document.metadata.requires_context),
21
- optionalContext: listValue(document.metadata.optional_context),
22
- conflicts: listValue(document.metadata.conflicts),
23
- supersededBy: listValue(document.metadata.superseded_by),
54
+ tags: operationalListValue(document, source, "tags", diagnostics),
55
+ whenToUse: operationalListValue(document, source, "when_to_use", diagnostics),
56
+ whenNotToUse: operationalListValue(document, source, "when_not_to_use", diagnostics),
57
+ requiresContext: operationalListValue(document, source, "requires_context", diagnostics),
58
+ optionalContext: operationalListValue(document, source, "optional_context", diagnostics),
59
+ conflicts: operationalListValue(document, source, "conflicts", diagnostics),
60
+ supersededBy: operationalListValue(document, source, "superseded_by", diagnostics),
24
61
  };
25
62
  if (rawStatus !== undefined && status === undefined) {
26
- const evidence = metadataFieldEvidence(document, "status");
63
+ const evidence = metadataFieldEvidence(source, "status");
27
64
  diagnostics.push({
28
65
  severity: "warning",
29
66
  path: document.artifact.path,
@@ -31,37 +68,42 @@ export function parseAssetMetadata(document) {
31
68
  ...(evidence ? { evidence } : {}),
32
69
  });
33
70
  }
34
- assignOptional(metadata, "id", optionalText(metadataText(document.metadata.id)));
35
- assignOptional(metadata, "type", optionalText(metadataText(document.metadata.type)));
36
- assignOptional(metadata, "version", optionalText(metadataText(document.metadata.version)));
37
- assignOptional(metadata, "owner", optionalText(metadataText(document.metadata.owner)));
71
+ assignOptional(metadata, "id", optionalText(metadataText(source.values.id)));
72
+ if (document.artifact.kind === "skill") {
73
+ assignOptional(metadata, "title", optionalText(metadataText(source.values.title)));
74
+ }
75
+ assignOptional(metadata, "type", optionalText(metadataText(source.values.type)));
76
+ assignOptional(metadata, "version", optionalText(metadataText(source.values.version)));
77
+ assignOptional(metadata, "owner", optionalText(metadataText(source.values.owner)));
38
78
  assignOptional(metadata, "status", status);
39
- assignOptional(metadata, "purpose", optionalText(metadataText(document.metadata.purpose)));
79
+ assignOptional(metadata, "purpose", optionalText(metadataText(source.values.purpose)));
40
80
  assignOptional(metadata, "lastReviewedAt", lastReviewedAt);
41
81
  assignOptional(metadata, "reviewCycle", reviewCycle);
42
82
  assignOptional(metadata, "expiresAt", expiresAt);
43
- assignOptionalList(metadata, "appliesTo", listValue(document.metadata.applies_to));
44
- assignOptionalList(metadata, "focus", listValue(document.metadata.focus));
45
- assignOptionalList(metadata, "expectedOutputs", listValue(document.metadata.expected_outputs));
46
- assignOptionalList(metadata, "requiresLens", listValue(document.metadata.requires_lens));
47
- assignOptionalList(metadata, "optionalLens", listValue(document.metadata.optional_lens));
83
+ assignOptionalList(metadata, "appliesTo", operationalListValue(document, source, "applies_to", diagnostics));
84
+ assignOptionalList(metadata, "focus", operationalListValue(document, source, "focus", diagnostics));
85
+ assignOptionalList(metadata, "expectedOutputs", operationalListValue(document, source, "expected_outputs", diagnostics));
86
+ assignOptionalList(metadata, "requiresLens", operationalListValue(document, source, "requires_lens", diagnostics));
87
+ assignOptionalList(metadata, "optionalLens", operationalListValue(document, source, "optional_lens", diagnostics));
48
88
  if (lastReviewedAt !== undefined && !isIsoDate(lastReviewedAt)) {
49
- diagnostics.push(invalidMetadataDiagnostic(document, "last_reviewed_at", `Invalid last_reviewed_at "${lastReviewedAt}". Expected ISO date YYYY-MM-DD.`));
89
+ diagnostics.push(invalidMetadataDiagnostic(document, source, "last_reviewed_at", `Invalid last_reviewed_at "${lastReviewedAt}". Expected ISO date YYYY-MM-DD.`));
50
90
  }
51
91
  if (expiresAt !== undefined && !isIsoDate(expiresAt)) {
52
- diagnostics.push(invalidMetadataDiagnostic(document, "expires_at", `Invalid expires_at "${expiresAt}". Expected ISO date YYYY-MM-DD.`));
92
+ diagnostics.push(invalidMetadataDiagnostic(document, source, "expires_at", `Invalid expires_at "${expiresAt}". Expected ISO date YYYY-MM-DD.`));
53
93
  }
54
94
  if (reviewCycle !== undefined &&
55
95
  parseDayDuration(reviewCycle) === undefined) {
56
- diagnostics.push(invalidMetadataDiagnostic(document, "review_cycle", `Invalid review_cycle "${reviewCycle}". Expected supported ISO 8601 day duration such as P90D.`));
96
+ diagnostics.push(invalidMetadataDiagnostic(document, source, "review_cycle", `Invalid review_cycle "${reviewCycle}". Expected supported ISO 8601 day duration such as P90D.`));
57
97
  }
58
98
  return {
59
99
  metadata,
100
+ metadataFields: source.fields,
101
+ metadataListItems: source.listItems,
60
102
  diagnostics,
61
103
  };
62
104
  }
63
- function invalidMetadataDiagnostic(document, field, message) {
64
- const evidence = metadataFieldEvidence(document, field);
105
+ function invalidMetadataDiagnostic(document, source, field, message) {
106
+ const evidence = metadataFieldEvidence(source, field);
65
107
  return {
66
108
  severity: "warning",
67
109
  path: document.artifact.path,
@@ -69,6 +111,101 @@ function invalidMetadataDiagnostic(document, field, message) {
69
111
  ...(evidence ? { evidence } : {}),
70
112
  };
71
113
  }
114
+ function operationalMetadataSource(document, diagnostics) {
115
+ if (document.artifact.kind !== "skill") {
116
+ return legacyMetadataSource(document);
117
+ }
118
+ const inspection = inspectAgentSkill(document);
119
+ return canonicalSkillMetadataSource(document, inspection.frontmatter, inspection.validation.valid, diagnostics);
120
+ }
121
+ function legacyMetadataSource(document) {
122
+ return {
123
+ values: document.metadata,
124
+ fields: document.metadataFields,
125
+ listItems: document.metadataListItems,
126
+ canonicalSkill: false,
127
+ };
128
+ }
129
+ function canonicalSkillMetadataSource(document, frontmatter, validAgentSkill, diagnostics) {
130
+ const values = {};
131
+ const fields = {};
132
+ const listItems = {};
133
+ const duplicateMetadataMapping = frontmatter.duplicateFields.find((field) => field.key === "metadata");
134
+ if (duplicateMetadataMapping) {
135
+ diagnostics.push({
136
+ severity: "warning",
137
+ path: document.artifact.path,
138
+ message: "Canonical Agent Skills metadata is ambiguous because the top-level metadata mapping is declared more than once. No metadata.renma.* values were selected.",
139
+ evidence: {
140
+ path: document.artifact.path,
141
+ startLine: duplicateMetadataMapping.startLine,
142
+ endLine: duplicateMetadataMapping.endLine,
143
+ snippet: document.lines
144
+ .slice(duplicateMetadataMapping.startLine - 1, duplicateMetadataMapping.endLine)
145
+ .join("\n"),
146
+ },
147
+ });
148
+ }
149
+ if (!validAgentSkill) {
150
+ return { values, fields, listItems, canonicalSkill: true };
151
+ }
152
+ const duplicateKeys = new Set(frontmatter.duplicateMetadataKeys.map((field) => field.key));
153
+ for (const field of frontmatter.metadataFields) {
154
+ // Agent Skills validation diagnoses duplicate canonical metadata keys. Do not guess which
155
+ // duplicate value should become operational, and never fall back to legacy.
156
+ if (duplicateKeys.has(field.key))
157
+ continue;
158
+ const operationalKey = CANONICAL_SKILL_KEY_TO_OPERATIONAL.get(field.key);
159
+ if (!operationalKey)
160
+ continue;
161
+ values[operationalKey] = field.value;
162
+ fields[operationalKey] = {
163
+ path: document.artifact.path,
164
+ key: field.key,
165
+ startLine: field.startLine,
166
+ endLine: field.endLine,
167
+ raw: document.lines.slice(field.startLine - 1, field.endLine).join("\n"),
168
+ };
169
+ listItems[operationalKey] = [];
170
+ }
171
+ return { values, fields, listItems, canonicalSkill: true };
172
+ }
173
+ function operationalListValue(document, source, key, diagnostics) {
174
+ const value = source.values[key];
175
+ if (!source.canonicalSkill) {
176
+ return listValue(value);
177
+ }
178
+ if (!CANONICAL_LIST_KEYS.has(key)) {
179
+ return [];
180
+ }
181
+ if (value === undefined)
182
+ return [];
183
+ const canonicalKey = CANONICAL_SKILL_METADATA_KEYS[key];
184
+ if (typeof value !== "string") {
185
+ diagnostics.push(invalidCanonicalListDiagnostic(document, source, key, canonicalKey, "must be a string containing a JSON array of strings"));
186
+ return [];
187
+ }
188
+ let parsed;
189
+ try {
190
+ parsed = JSON.parse(value);
191
+ }
192
+ catch {
193
+ diagnostics.push(invalidCanonicalListDiagnostic(document, source, key, canonicalKey, "must contain valid JSON for an array of strings"));
194
+ return [];
195
+ }
196
+ if (!Array.isArray(parsed)) {
197
+ diagnostics.push(invalidCanonicalListDiagnostic(document, source, key, canonicalKey, "must contain a JSON array"));
198
+ return [];
199
+ }
200
+ if (parsed.some((item) => typeof item !== "string")) {
201
+ diagnostics.push(invalidCanonicalListDiagnostic(document, source, key, canonicalKey, "must contain only string array members"));
202
+ return [];
203
+ }
204
+ return parsed.map((item) => item.trim()).filter(Boolean);
205
+ }
206
+ function invalidCanonicalListDiagnostic(document, source, operationalKey, canonicalKey, reason) {
207
+ return invalidMetadataDiagnostic(document, source, operationalKey, `Invalid metadata.${canonicalKey}: ${reason}.`);
208
+ }
72
209
  function parseStatus(value) {
73
210
  if (!value)
74
211
  return undefined;
@@ -94,8 +231,8 @@ function listValue(value) {
94
231
  function metadataText(value) {
95
232
  return typeof value === "string" ? value : undefined;
96
233
  }
97
- function metadataFieldEvidence(document, key) {
98
- const field = document.metadataFields[key];
234
+ function metadataFieldEvidence(source, key) {
235
+ const field = source.fields[key];
99
236
  if (!field)
100
237
  return undefined;
101
238
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
package/dist/model.d.ts CHANGED
@@ -8,6 +8,7 @@ export type DependencyKind = "requires" | "optional" | "conflicts" | "extends" |
8
8
  /** Normalized shared metadata for cataloged assets. */
9
9
  export interface AssetMetadata {
10
10
  id?: string;
11
+ title?: string;
11
12
  type?: string;
12
13
  version?: string;
13
14
  owner?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhF,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;AAEhF,0DAA0D;AAC1D,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAEzD,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,UAAU,GACV,WAAW,GACX,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;AAEjB,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,8EAA8E;AAC9E,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACtD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,KAAM,SAAQ,KAAK;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK;IACzC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;CACxD;AAED,wFAAwF;AACxF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,YAAY,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,sFAAsF;AACtF,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,EAAE,UAAU,EAAE,CAAC;CAC5B"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhF,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;AAEhF,0DAA0D;AAC1D,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAEzD,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,UAAU,GACV,WAAW,GACX,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;AAEjB,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,8EAA8E;AAC9E,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACtD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,KAAM,SAAQ,KAAK;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK;IACzC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;CACxD;AAED,wFAAwF;AACxF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,YAAY,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,sFAAsF;AACtF,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,EAAE,UAAU,EAAE,CAAC;CAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAErD;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA8CrD"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAErD;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA+DrD"}
package/dist/report.js CHANGED
@@ -9,6 +9,7 @@ export function formatText(result) {
9
9
  `Root: ${result.root}`,
10
10
  `Config: ${result.configPath ?? "(defaults)"}`,
11
11
  `Files scanned: ${result.scannedFileCount}`,
12
+ `Agent Skills: ${result.agentSkills.validSkillCount}/${result.agentSkills.totalSkillCount} valid (${result.agentSkills.invalidSkillCount} invalid, ${result.agentSkills.legacySkillCount} legacy, ${result.agentSkills.hybridSkillCount} hybrid)`,
12
13
  ...(result.contextLens
13
14
  ? [
14
15
  `Context lenses: ${result.contextLens.validLensCount}/${result.contextLens.totalLensCount} valid (${result.contextLens.invalidLensCount} invalid)`,
@@ -19,8 +20,22 @@ export function formatText(result) {
19
20
  `Exit threshold: ${result.exitThreshold}`,
20
21
  `Findings: ${result.findings.length}`,
21
22
  ];
23
+ for (const skill of result.agentSkills.results) {
24
+ if (skill.issues.length === 0)
25
+ continue;
26
+ lines.push("");
27
+ lines.push(`${skill.valid ? "VALID" : "INVALID"} ${skill.path}`);
28
+ for (const issue of skill.issues) {
29
+ lines.push(` ${issue.severity.toUpperCase()} ${issue.code} L${issue.startLine}: ${issue.message}`);
30
+ }
31
+ if (skill.migrationCommand) {
32
+ lines.push("");
33
+ lines.push(" Migration:");
34
+ lines.push(` ${skill.migrationCommand.display}`);
35
+ }
36
+ }
22
37
  if (result.findings.length === 0) {
23
- lines.push("No findings.");
38
+ lines.push("No rule findings.");
24
39
  }
25
40
  for (const diagnostic of result.diagnostics) {
26
41
  lines.push(`diagnostic ${diagnostic.severity}: ${diagnostic.path ? `${diagnostic.path}: ` : ""}${diagnostic.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,YAAY,CAAC;AAUpE,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;AAmmBD,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAQ3E"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,YAAY,CAAC;AAWpE,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;AAmmBD,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAQ3E"}
package/dist/rules.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import path from "node:path";
2
+ import { resolvedAgentSkillDescription } from "./agent-skills.js";
2
3
  import { addDaysIsoDate, isIsoDate, parseDayDuration, todayIsoDate, } from "./freshness.js";
3
4
  import { DIAGNOSTIC_IDS } from "./diagnostic-ids.js";
4
5
  import { helperScriptPath } from "./repository-paths.js";
6
+ import { parseAssetMetadata } from "./metadata.js";
5
7
  import { runRuleRegistry } from "./rule-engine.js";
6
8
  const SECRET_PATTERN = /\b(?:password|passwd|token|api[_-]?key|secret|credential|private[_-]?key)\b\s*[:=]\s*["']?([A-Za-z0-9_./+=-]{8,})/i;
7
9
  const PRIVATE_KEY_PATTERN = /-----BEGIN (?:RSA |OPENSSH |EC |DSA )?PRIVATE KEY-----/;
@@ -434,7 +436,7 @@ function orphanedContextLensFindings(entries, resolver) {
434
436
  confidence: "medium",
435
437
  evidence: metadataFindingEvidence(entry.sourcePath, "Active context lens has no incoming requires_lens or optional_lens references from skills."),
436
438
  whyItMatters: "Context lenses are easier to review when a skill declares how the purpose-oriented interpretation is used. An unreferenced active lens may be newly created, intentionally staged, or stale.",
437
- remediation: "If the lens should be used, reference it from a skill with requires_lens or optional_lens. If it is not ready or no longer needed, update its lifecycle status after review.",
439
+ remediation: "If the lens should be used, reference it from a canonical Skill with metadata.renma.requires-lens or metadata.renma.optional-lens JSON-array metadata. Pre-0.16-only Skills use requires_lens or optional_lens only during migration. If the lens is not ready or no longer needed, update its lifecycle status after review.",
438
440
  constraints: [
439
441
  "Do not make Renma select runtime lenses.",
440
442
  "Do not rank or retrieve lenses semantically.",
@@ -446,7 +448,7 @@ function orphanedContextLensFindings(entries, resolver) {
446
448
  "Run renma catalog.",
447
449
  "Run renma graph focused on the lens or owning skill.",
448
450
  ],
449
- llmHint: `Search for skills that should declare "${entry.id}" in requires_lens or optional_lens. Do not add runtime selection logic or prompt assembly.`,
451
+ llmHint: `Search for Skills that should declare "${entry.id}" as a required or optional lens. For canonical Skills, update metadata.renma.requires-lens or metadata.renma.optional-lens as a JSON-array string; use requires_lens or optional_lens only for pre-0.16 migration inputs. Do not add runtime selection logic or prompt assembly.`,
450
452
  details: {
451
453
  assetId: entry.id,
452
454
  sourcePath: entry.sourcePath,
@@ -640,7 +642,9 @@ function shapeFindings(document) {
640
642
  return [];
641
643
  const text = document.artifact.content.toLowerCase();
642
644
  const findings = [];
643
- const description = document.metadata.description ?? "";
645
+ const description = document.artifact.kind === "skill"
646
+ ? (resolvedAgentSkillDescription(document) ?? "")
647
+ : (document.metadata.description ?? "");
644
648
  const tokenCount = approximateTokenCount(document.artifact.content);
645
649
  if (!description) {
646
650
  findings.push(documentFinding(document, DIAGNOSTIC_IDS.QUAL_MISSING_DESCRIPTION, "Skill is missing an explicit description", "quality", "medium", "Add frontmatter description so agents can route to the skill intentionally."));
@@ -936,7 +940,8 @@ function contextPathNonSemanticFindings(document) {
936
940
  function skillContextReferenceNotDeclaredFindings(document) {
937
941
  if (document.artifact.kind !== "skill")
938
942
  return [];
939
- const declaredContexts = new Set(listMetadataValue(document.metadata.requires_context));
943
+ const operationalMetadata = parseAssetMetadata(document).metadata;
944
+ const declaredContexts = new Set(operationalMetadata.requiresContext);
940
945
  const bodyLineIndexes = markdownBodyLineIndexes(document);
941
946
  const matches = new Map();
942
947
  for (const index of bodyLineIndexes) {
@@ -961,7 +966,7 @@ function skillContextReferenceNotDeclaredFindings(document) {
961
966
  confidence: "high",
962
967
  evidence: evidence(document, match.line, match.text),
963
968
  whyItMatters: "Declared context references make skill/context relationships visible to catalog, graph, and validation reports. If a skill only mentions a context in prose, humans may see the dependency but repository tooling cannot validate it.",
964
- remediation: "Add the referenced shared context asset to the skill metadata using requires_context, or remove the prose reference if it is no longer needed.",
969
+ remediation: "Add the referenced shared context asset to metadata.renma.requires-context as a JSON-array string, or remove the prose reference if it is no longer needed. Pre-0.16 requires_context is migration input only and is not operational in Renma 0.16.0.",
965
970
  constraints: [
966
971
  "Do not select runtime context.",
967
972
  "Do not assemble prompt packages.",
@@ -973,9 +978,9 @@ function skillContextReferenceNotDeclaredFindings(document) {
973
978
  "Run renma catalog.",
974
979
  "Confirm the skill/context relationship appears in metadata and catalog output.",
975
980
  ],
976
- llmHint: `Find context paths mentioned in the skill body and add them to requires_context using the metadata syntax currently supported by Renma. Missing declaration: ${referencedPath}`,
981
+ llmHint: `Find context paths mentioned in the Skill body and add the missing declaration using metadata.renma.requires-context as a JSON-array string. Pre-0.16 requires_context is accepted only by suggest-metadata and is not operational. Missing declaration: ${referencedPath}`,
977
982
  details: {
978
- source: metadataText(document.metadata.id) ?? document.artifact.path,
983
+ source: operationalMetadata.id ?? document.artifact.path,
979
984
  target: referencedPath,
980
985
  referenceKind: "requires_context",
981
986
  sourcePath: document.artifact.path,
@@ -1002,6 +1007,7 @@ function skillReferencesSupersededAssetFindings(documents) {
1002
1007
  const skill = skillsByPath.get(skillPath);
1003
1008
  if (!skill)
1004
1009
  return [];
1010
+ const skillMetadata = parseAssetMetadata(skill).metadata;
1005
1011
  const referencedFrom = skillReferenceLine(skill, document.artifact.path);
1006
1012
  if (!referencedFrom)
1007
1013
  return [];
@@ -1042,7 +1048,7 @@ function skillReferencesSupersededAssetFindings(documents) {
1042
1048
  ],
1043
1049
  llmHint: "Inspect the deprecated local support file and its superseded_by or canonical_context metadata. If the shared context asset is now canonical, update skill guidance and metadata to reference the shared context directly. Keep the local reference only if it contains truly local notes or is intentionally preserved as a compatibility shim.",
1044
1050
  details: {
1045
- source: metadataText(skill.metadata.id) ?? skill.artifact.path,
1051
+ source: skillMetadata.id ?? skill.artifact.path,
1046
1052
  target: metadataText(document.metadata.id) ?? document.artifact.path,
1047
1053
  referenceKind: "body_reference",
1048
1054
  sourcePath: skill.artifact.path,
@@ -1059,8 +1065,9 @@ function isSkillLocalReference(document) {
1059
1065
  /^skills\/[^/]+\/references\/.+\.md$/u.test(document.artifact.path));
1060
1066
  }
1061
1067
  function sharedContextTargets(document) {
1068
+ const operationalMetadata = parseAssetMetadata(document).metadata;
1062
1069
  return [
1063
- ...listMetadataValue(document.metadata.superseded_by),
1070
+ ...operationalMetadata.supersededBy,
1064
1071
  ...listMetadataValue(document.metadata.canonical_context),
1065
1072
  ].filter((target, index, targets) => /^contexts?\//u.test(target) && targets.indexOf(target) === index);
1066
1073
  }
@@ -1084,18 +1091,23 @@ function skillReferenceLine(skill, referencePath) {
1084
1091
  }
1085
1092
  function assetReferencesSupersededAssetFindings(documents) {
1086
1093
  const supersededAssets = documents
1087
- .map((document) => ({
1088
- document,
1089
- canonicalTargets: sharedContextTargets(document),
1090
- }))
1091
- .filter(({ document, canonicalTargets }) => metadataText(document.metadata.status) === "deprecated" ||
1092
- metadataText(document.metadata.status) === "archived" ||
1094
+ .map((document) => {
1095
+ const metadata = parseAssetMetadata(document).metadata;
1096
+ return {
1097
+ document,
1098
+ metadata,
1099
+ canonicalTargets: sharedContextTargets(document),
1100
+ };
1101
+ })
1102
+ .filter(({ metadata, canonicalTargets }) => metadata.status === "deprecated" ||
1103
+ metadata.status === "archived" ||
1093
1104
  canonicalTargets.length > 0)
1094
1105
  .filter(({ canonicalTargets }) => canonicalTargets.length > 0);
1095
1106
  return documents.flatMap((referencingDocument) => {
1096
1107
  if (referencingDocument.artifact.kind === "skill")
1097
1108
  return [];
1098
- return supersededAssets.flatMap(({ document, canonicalTargets }) => {
1109
+ const referencingMetadata = parseAssetMetadata(referencingDocument).metadata;
1110
+ return supersededAssets.flatMap(({ document, metadata, canonicalTargets }) => {
1099
1111
  if (document.artifact.path === referencingDocument.artifact.path) {
1100
1112
  return [];
1101
1113
  }
@@ -1139,13 +1151,12 @@ function assetReferencesSupersededAssetFindings(documents) {
1139
1151
  ],
1140
1152
  llmHint: "Inspect the referenced deprecated asset and its superseded_by or canonical context metadata. If the canonical shared context is the intended source of truth, update this asset to reference that context directly. Keep the superseded file only when it serves a deliberate compatibility or migration role.",
1141
1153
  details: {
1142
- source: metadataText(referencingDocument.metadata.id) ??
1143
- referencingDocument.artifact.path,
1144
- target: metadataText(document.metadata.id) ?? document.artifact.path,
1154
+ source: referencingMetadata.id ?? referencingDocument.artifact.path,
1155
+ target: metadata.id ?? document.artifact.path,
1145
1156
  referenceKind: "body_reference",
1146
1157
  sourcePath: referencingDocument.artifact.path,
1147
1158
  targetPath: document.artifact.path,
1148
- targetStatus: metadataText(document.metadata.status),
1159
+ targetStatus: metadata.status,
1149
1160
  replacementTargets: canonicalTargets,
1150
1161
  },
1151
1162
  },
@@ -1396,7 +1407,7 @@ function thinSkillLayoutFindings(document) {
1396
1407
  "Confirm SKILL.md contains routing guidance and required context references only.",
1397
1408
  "Run renma readiness and check layout.skills_thin.",
1398
1409
  ],
1399
- llmHint: "Extract long procedure sections into contexts/**, add requires_context or optional_context references, and keep SKILL.md focused on when to use or not use the skill.",
1410
+ llmHint: "Extract long procedure sections into contexts/**, add metadata.renma.requires-context or metadata.renma.optional-context JSON-array strings, and keep SKILL.md focused on when to use or not use the Skill. Pre-0.16 top-level references are migration input only.",
1400
1411
  }));
1401
1412
  }
1402
1413
  const command = firstExecutableCommand(document);
@@ -1526,7 +1537,7 @@ function declaredDependencyLayoutFindings(catalog, paths) {
1526
1537
  confidence: "medium",
1527
1538
  evidence: metadataFindingEvidence(source.sourcePath, target),
1528
1539
  whyItMatters: "Declared context references should resolve through canonical contexts/**, skills/**, or tools/** repo paths.",
1529
- remediation: "Rewrite declared requires_context or optional_context values to canonical repo-root paths.",
1540
+ remediation: "Rewrite declared required or optional context dependency values to canonical repo-root paths without changing the Skill's operational metadata format.",
1530
1541
  verificationSteps: ["Run renma graph and confirm all edges resolve."],
1531
1542
  details: {
1532
1543
  source: dependency.from,