@vertesia/build-tools 1.6.0-dev.20261019.172735Z → 1.6.0-dev.20261022.120426Z

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.
@@ -44,7 +44,13 @@ export declare const SkillDefinitionSchema: z.ZodObject<{
44
44
  }, z.core.$strip>>;
45
45
  tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
46
46
  scripts: z.ZodOptional<z.ZodArray<z.ZodString>>;
47
+ files: z.ZodOptional<z.ZodArray<z.ZodString>>;
48
+ files_namespace: z.ZodOptional<z.ZodString>;
47
49
  widgets: z.ZodOptional<z.ZodArray<z.ZodString>>;
50
+ license: z.ZodOptional<z.ZodString>;
51
+ compatibility: z.ZodOptional<z.ZodString>;
52
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
53
+ allowed_tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
48
54
  }, z.core.$loose>;
49
55
  /**
50
56
  * Schema for validating properties exported from properties.ts
@@ -81,7 +87,13 @@ export declare const SkillPropertiesSchema: z.ZodObject<{
81
87
  }, z.core.$strip>>>;
82
88
  tools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
83
89
  scripts: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
90
+ files: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
91
+ files_namespace: z.ZodOptional<z.ZodOptional<z.ZodString>>;
84
92
  widgets: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
93
+ license: z.ZodOptional<z.ZodOptional<z.ZodString>>;
94
+ compatibility: z.ZodOptional<z.ZodOptional<z.ZodString>>;
95
+ metadata: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
96
+ allowed_tools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
85
97
  }, z.core.$loose>;
86
98
  /**
87
99
  * TypeScript type inferred from the Zod schema
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/core/transformers/skill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEH,KAAK,8BAA8B,EAEtC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAmB,MAAM,aAAa,CAAC;AAGvF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAAC;AAyF5C;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoBhB,CAAC;AAEnB;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgD,CAAC;AAEnF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAyGpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CAC7C;AA+BD,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAEjE;AAED,oGAAoG;AACpG,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,sBAA2B,GAAG,iBAAiB,CAO7F;AAED,eAAO,MAAM,gBAAgB,EAAE,iBAA4C,CAAC"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/core/transformers/skill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEH,KAAK,8BAA8B,EAEtC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAmB,MAAM,aAAa,CAAC;AAGvF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAAC;AA+F5C;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BhB,CAAC;AAEnB;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgD,CAAC;AAEnF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAuHpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CAC7C;AA+BD,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAEjE;AAED,oGAAoG;AACpG,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,sBAA2B,GAAG,iBAAiB,CAO7F;AAED,eAAO,MAAM,gBAAgB,EAAE,iBAA4C,CAAC"}
@@ -83,6 +83,11 @@ const SkillFrontmatterSchema = z
83
83
  // Asset fields (auto-discovered but can be overridden)
84
84
  scripts: z.array(z.string()).optional(),
85
85
  widgets: z.array(z.string()).optional(),
86
+ // Agent Skills specification fields (https://agentskills.io/specification)
87
+ license: z.string().optional(),
88
+ compatibility: z.string().max(500).optional(),
89
+ metadata: z.record(z.string(), z.string()).optional(),
90
+ 'allowed-tools': z.string().optional(),
86
91
  })
87
92
  .strict();
88
93
  /**
@@ -112,7 +117,13 @@ export const SkillDefinitionSchema = z
112
117
  execution: SkillExecutionSchema,
113
118
  tools: z.array(z.string()).optional(),
114
119
  scripts: z.array(z.string()).optional(),
120
+ files: z.array(z.string()).optional(),
121
+ files_namespace: z.string().optional(),
115
122
  widgets: z.array(z.string()).optional(),
123
+ license: z.string().optional(),
124
+ compatibility: z.string().optional(),
125
+ metadata: z.record(z.string(), z.string()).optional(),
126
+ allowed_tools: z.array(z.string()).optional(),
116
127
  })
117
128
  .passthrough();
118
129
  /**
@@ -126,7 +137,7 @@ export const SkillDefinitionSchema = z
126
137
  export const SkillPropertiesSchema = SkillDefinitionSchema.partial().passthrough();
127
138
  /**
128
139
  * Build a SkillDefinition from frontmatter and markdown content.
129
- * This mirrors the logic in @vertesia/tools-sdk parseSkillFile function.
140
+ * Includes Agent Skills frontmatter and resources discovered at build time.
130
141
  *
131
142
  * Supports two frontmatter structures:
132
143
  *
@@ -150,9 +161,10 @@ export const SkillPropertiesSchema = SkillDefinitionSchema.partial().passthrough
150
161
  * @param contentType - Content type ('md' or 'jst')
151
162
  * @param widgets - Discovered widget names
152
163
  * @param scripts - Discovered script names
164
+ * @param files - Discovered Agent Skills resource files (relative paths)
153
165
  * @returns Skill definition object
154
166
  */
155
- function buildSkillDefinition(frontmatter, instructions, contentType, widgets, scripts) {
167
+ function buildSkillDefinition(frontmatter, instructions, contentType, widgets, scripts, files) {
156
168
  const skill = {
157
169
  name: frontmatter.name,
158
170
  title: frontmatter.title,
@@ -161,7 +173,22 @@ function buildSkillDefinition(frontmatter, instructions, contentType, widgets, s
161
173
  content_type: contentType,
162
174
  widgets: widgets.length > 0 ? widgets : undefined,
163
175
  scripts: scripts.length > 0 ? scripts : undefined,
176
+ files: files.length > 0 ? files : undefined,
177
+ // Keep copied asset URLs stable when properties.ts overrides the runtime skill name.
178
+ files_namespace: files.length > 0 ? frontmatter.name : undefined,
164
179
  };
180
+ // Agent Skills specification fields. `allowed-tools` is experimental in the spec and Vertesia does not
181
+ // support it: it pre-approves tools in the authoring harness's vocabulary, Vertesia has no approval step
182
+ // for it to skip, and it never unlocks a tool here (`tools` does). It is recorded for reference only.
183
+ if (frontmatter.license)
184
+ skill.license = frontmatter.license;
185
+ if (frontmatter.compatibility)
186
+ skill.compatibility = frontmatter.compatibility;
187
+ if (frontmatter.metadata)
188
+ skill.metadata = frontmatter.metadata;
189
+ const allowedTools = frontmatter['allowed-tools']?.split(/\s+/).filter(Boolean);
190
+ if (allowedTools && allowedTools.length > 0)
191
+ skill.allowed_tools = allowedTools;
165
192
  // Build context triggers - support both flat and nested structure
166
193
  // Nested: context_triggers: { keywords: [...], tool_names: [...] }
167
194
  // Flat: keywords: [...], tools: [...]
@@ -267,10 +294,10 @@ function transformSkill(content, filePath, config) {
267
294
  const validatedFrontmatter = frontmatterValidation.data;
268
295
  // Determine content type from frontmatter or file extension
269
296
  const content_type = validatedFrontmatter.content_type || 'md';
270
- // Discover assets (scripts and widgets) in the skill directory
271
- const assets = discoverSkillAssets(filePath);
297
+ // Discover assets (scripts, widgets and Agent Skills resource files) in the skill directory
298
+ const assets = discoverSkillAssets(filePath, { skillName: validatedFrontmatter.name });
272
299
  // Build skill definition using the same logic as parseSkillFile in tools-sdk
273
- const skillData = buildSkillDefinition(validatedFrontmatter, markdown, content_type, assets.widgets, assets.scripts);
300
+ const skillData = buildSkillDefinition(validatedFrontmatter, markdown, content_type, assets.widgets, assets.scripts, assets.files);
274
301
  // Check if properties.ts exists in the skill directory
275
302
  const skillDir = path.dirname(filePath);
276
303
  const propertiesPath = path.join(skillDir, 'properties.ts');
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/core/transformers/skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/core/transformers/skill.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export interface AssetFile {
12
12
  /** Relative destination path within assets directory */
13
13
  destPath: string;
14
14
  /** Asset type for categorization */
15
- type: 'script' | 'template';
15
+ type: 'script' | 'skill-file' | 'template';
16
16
  }
17
17
  /**
18
18
  * Result of a transform function
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IAEjB,oCAAoC;IACpC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,sDAAsD;IACtD,IAAI,EAAE,OAAO,CAAC;IAEd,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAErB,gDAAgD;IAChD,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAElH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAEhB,iDAAiD;IACjD,SAAS,EAAE,iBAAiB,CAAC;IAE7B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IAEjB,oCAAoC;IACpC,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,sDAAsD;IACtD,IAAI,EAAE,OAAO,CAAC;IAEd,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAErB,gDAAgD;IAChD,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAElH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAEhB,iDAAiD;IACjD,SAAS,EAAE,iBAAiB,CAAC;IAE7B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC"}
@@ -21,9 +21,21 @@ export interface DiscoveredAssets {
21
21
  widgets: string[];
22
22
  /** Widget metadata for compilation */
23
23
  widgetMetadata: WidgetMetadata[];
24
+ /**
25
+ * Agent Skills resource files, as POSIX paths relative to the skill directory
26
+ * (e.g. `scripts/extract.py`, `references/REFERENCE.md`).
27
+ */
28
+ files: string[];
24
29
  /** Asset files to be copied */
25
30
  assetFiles: AssetFile[];
26
31
  }
32
+ /**
33
+ * The Agent Skills resource directories (https://agentskills.io/specification), relative to the skill
34
+ * directory. Unlike the flat scripts beside SKILL.md, their contents keep their relative paths.
35
+ */
36
+ export declare const SKILL_RESOURCE_DIRS: readonly ['scripts', 'references', 'assets'];
37
+ /** Where a skill's resource files are copied, relative to the assets root. */
38
+ export declare const SKILL_FILES_DIR = "skill-files";
27
39
  /**
28
40
  * Discover assets (scripts and widgets) in a skill directory
29
41
  *
@@ -34,5 +46,7 @@ export interface DiscoveredAssets {
34
46
  export declare function discoverSkillAssets(skillFilePath: string, options?: {
35
47
  scriptsDir?: string;
36
48
  widgetsDir?: string;
49
+ /** Skill name used to namespace resource files; defaults to the skill directory name. */
50
+ skillName?: string;
37
51
  }): DiscoveredAssets;
38
52
  //# sourceMappingURL=asset-discovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"asset-discovery.d.ts","sourceRoot":"","sources":["../../../src/core/utils/asset-discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IAEb,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,oDAAoD;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,sCAAsC;IACtC,cAAc,EAAE,cAAc,EAAE,CAAC;IAEjC,+BAA+B;IAC/B,UAAU,EAAE,SAAS,EAAE,CAAC;CAC3B;AAgDD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IACL,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CAClB,GACP,gBAAgB,CA0ClB"}
1
+ {"version":3,"file":"asset-discovery.d.ts","sourceRoot":"","sources":["../../../src/core/utils/asset-discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IAEb,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,oDAAoD;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,sCAAsC;IACtC,cAAc,EAAE,cAAc,EAAE,CAAC;IAEjC;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,+BAA+B;IAC/B,UAAU,EAAE,SAAS,EAAE,CAAC;CAC3B;AA2BD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,YAAI,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAC;AAEhF,8EAA8E;AAC9E,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAwD7C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IACL,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;CACjB,GACP,gBAAgB,CA8DlB"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Utilities for discovering asset files (scripts, widgets) in skill directories
3
3
  */
4
- import { readdirSync, statSync } from 'node:fs';
4
+ import { lstatSync, readdirSync, statSync } from 'node:fs';
5
5
  import path from 'node:path';
6
6
  /**
7
7
  * Check if a file exists and is a regular file
@@ -28,6 +28,50 @@ function getFilesInDirectory(dirPath) {
28
28
  return [];
29
29
  }
30
30
  }
31
+ /**
32
+ * The Agent Skills resource directories (https://agentskills.io/specification), relative to the skill
33
+ * directory. Unlike the flat scripts beside SKILL.md, their contents keep their relative paths.
34
+ */
35
+ export const SKILL_RESOURCE_DIRS = ['scripts', 'references', 'assets'];
36
+ /** Where a skill's resource files are copied, relative to the assets root. */
37
+ export const SKILL_FILES_DIR = 'skill-files';
38
+ /**
39
+ * List the files under a directory recursively, as POSIX paths relative to `rootDir`.
40
+ * Hidden entries and symlinks are skipped so resources cannot escape the skill directory or form cycles.
41
+ */
42
+ function listFilesRecursive(rootDir, relDir) {
43
+ const absDir = path.join(rootDir, relDir);
44
+ let entries;
45
+ try {
46
+ // Reject linked resource roots as well as symlinks encountered below.
47
+ if (!lstatSync(absDir).isDirectory())
48
+ return [];
49
+ entries = readdirSync(absDir);
50
+ }
51
+ catch {
52
+ return [];
53
+ }
54
+ const out = [];
55
+ for (const entry of entries.sort()) {
56
+ if (entry.startsWith('.'))
57
+ continue;
58
+ const rel = path.posix.join(relDir, entry);
59
+ const abs = path.join(rootDir, rel);
60
+ try {
61
+ const stat = lstatSync(abs);
62
+ if (stat.isDirectory()) {
63
+ out.push(...listFilesRecursive(rootDir, rel));
64
+ }
65
+ else if (stat.isFile()) {
66
+ out.push(rel);
67
+ }
68
+ }
69
+ catch {
70
+ // Unreadable entry: skip it like the flat scan does
71
+ }
72
+ }
73
+ return out;
74
+ }
31
75
  /**
32
76
  * Check if a file is a script file (.js or .py)
33
77
  */
@@ -84,10 +128,28 @@ export function discoverSkillAssets(skillFilePath, options = {}) {
84
128
  // Widgets are compiled by the plugin if widgetConfig is provided
85
129
  }
86
130
  }
131
+ // Agent Skills resource directories keep their relative paths and are namespaced per skill, so two
132
+ // skills can ship files with the same name. The flat scripts above are left as they were. Only a
133
+ // SKILL.md owns its directory; a `*.md?skill` file may share one with other skills.
134
+ const resourceFiles = path.basename(skillFilePath) === 'SKILL.md'
135
+ ? SKILL_RESOURCE_DIRS.flatMap((dir) => listFilesRecursive(skillDir, dir))
136
+ : [];
137
+ const skillName = options.skillName || path.basename(skillDir);
138
+ if (resourceFiles.length > 0 && (skillName === '.' || skillName === '..' || /[\\/]/.test(skillName))) {
139
+ throw new Error(`Invalid skill name for resource files: ${skillName}`);
140
+ }
141
+ for (const file of resourceFiles) {
142
+ assetFiles.push({
143
+ sourcePath: path.join(skillDir, file),
144
+ destPath: path.join(SKILL_FILES_DIR, skillName, file),
145
+ type: 'skill-file',
146
+ });
147
+ }
87
148
  return {
88
149
  scripts,
89
150
  widgets,
90
151
  widgetMetadata,
152
+ files: resourceFiles,
91
153
  assetFiles,
92
154
  };
93
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"asset-discovery.js","sourceRoot":"","sources":["../../../src/core/utils/asset-discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,IAAI,MAAM,WAAW,CAAC;AA+B7B;;GAEG;AACH,SAAS,MAAM,CAAC,QAAgB;IAC5B,IAAI,CAAC;QACD,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe;IACxC,IAAI,CAAC;QACD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,QAAgB;IAClC,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,QAAgB;IAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,QAAgB;IACnC,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAC/B,aAAqB,EACrB,OAAO,GAGH,EAAE;IAEN,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,cAAc,GAAqB,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE3C,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,2BAA2B;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC;gBACZ,UAAU,EAAE,QAAQ;gBACpB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;gBACrC,IAAI,EAAE,QAAQ;aACjB,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,qBAAqB;YACrB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,cAAc,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;aACjB,CAAC,CAAC;YAEH,qDAAqD;YACrD,iEAAiE;QACrE,CAAC;IACL,CAAC;IAED,OAAO;QACH,OAAO;QACP,OAAO;QACP,cAAc;QACd,UAAU;KACb,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"asset-discovery.js","sourceRoot":"","sources":["../../../src/core/utils/asset-discovery.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertesia/build-tools",
3
- "version": "1.6.0-dev.20261019.172735Z",
3
+ "version": "1.6.0-dev.20261022.120426Z",
4
4
  "description": "Build tools for Vertesia projects - import transformers (skill / template / prompt / raw), esbuild widget bundler, vertesia-build CLI, and a Vite dev plugin",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -25,27 +25,27 @@
25
25
  }
26
26
  },
27
27
  "devDependencies": {
28
- "@hono/node-server": "^2.1.3",
28
+ "@hono/node-server": "^2.1.5",
29
29
  "@types/js-yaml": "^4.0.9",
30
- "@types/node": "^24.19.1",
30
+ "@types/node": "^24.19.2",
31
31
  "@vertesia/tsconfig": "0.1.0",
32
32
  "typescript": "7.0.2",
33
- "vite": "8.3.3",
34
- "vitest": "5.0.3"
33
+ "vite": "8.3.4",
34
+ "vitest": "5.0.4"
35
35
  },
36
36
  "dependencies": {
37
- "@llumiverse/common": "1.6.0-dev.20261019.165531Z",
38
- "@vertesia/common": "1.6.0-dev.20261019.172735Z",
39
- "@vertesia/studio-utils": "1.6.0-dev.20261019.172735Z",
37
+ "@llumiverse/common": "1.6.0-dev.20261022.120426Z",
38
+ "@vertesia/common": "1.6.0-dev.20261022.120426Z",
39
+ "@vertesia/studio-utils": "1.6.0-dev.20261022.120426Z",
40
40
  "ajv": "^8.20.0",
41
41
  "es-module-lexer": "^3.0.3",
42
42
  "esbuild": "^0.28.2",
43
43
  "js-yaml": "^5.4.3",
44
- "zod": "4.6.5"
44
+ "zod": "4.6.7"
45
45
  },
46
46
  "peerDependencies": {
47
- "@hono/node-server": "^2.1.3",
48
- "vite": "^8.3.3"
47
+ "@hono/node-server": "^2.1.5",
48
+ "vite": "^8.3.4"
49
49
  },
50
50
  "peerDependenciesMeta": {
51
51
  "@hono/node-server": {
@@ -76,7 +76,12 @@
76
76
  "zod",
77
77
  "validation"
78
78
  ],
79
- "gitHead": "85a3010750ab97192d236928b1fca55015a18000",
79
+ "gitHead": "bcaa7879b601ce9ccc394bcd3257822da13869cd",
80
+ "releaseIdentity": {
81
+ "source_sha": "bcaa7879b601ce9ccc394bcd3257822da13869cd",
82
+ "dependency_sha": "93466e47b06db23ac3c800e248d170afe65e5006",
83
+ "lock_sha256": "117e1c8068aa07d59117323a51ceccfc96cab543e50c03eb7efc19709d6f5e6b"
84
+ },
80
85
  "scripts": {
81
86
  "lint": "biome lint src",
82
87
  "test": "vitest run",
@@ -103,6 +103,12 @@ const SkillFrontmatterSchema = z
103
103
  // Asset fields (auto-discovered but can be overridden)
104
104
  scripts: z.array(z.string()).optional(),
105
105
  widgets: z.array(z.string()).optional(),
106
+
107
+ // Agent Skills specification fields (https://agentskills.io/specification)
108
+ license: z.string().optional(),
109
+ compatibility: z.string().max(500).optional(),
110
+ metadata: z.record(z.string(), z.string()).optional(),
111
+ 'allowed-tools': z.string().optional(),
106
112
  })
107
113
  .strict();
108
114
 
@@ -133,7 +139,13 @@ export const SkillDefinitionSchema = z
133
139
  execution: SkillExecutionSchema,
134
140
  tools: z.array(z.string()).optional(),
135
141
  scripts: z.array(z.string()).optional(),
142
+ files: z.array(z.string()).optional(),
143
+ files_namespace: z.string().optional(),
136
144
  widgets: z.array(z.string()).optional(),
145
+ license: z.string().optional(),
146
+ compatibility: z.string().optional(),
147
+ metadata: z.record(z.string(), z.string()).optional(),
148
+ allowed_tools: z.array(z.string()).optional(),
137
149
  })
138
150
  .passthrough();
139
151
 
@@ -157,7 +169,7 @@ type SkillFrontmatter = z.infer<typeof SkillFrontmatterSchema>;
157
169
 
158
170
  /**
159
171
  * Build a SkillDefinition from frontmatter and markdown content.
160
- * This mirrors the logic in @vertesia/tools-sdk parseSkillFile function.
172
+ * Includes Agent Skills frontmatter and resources discovered at build time.
161
173
  *
162
174
  * Supports two frontmatter structures:
163
175
  *
@@ -181,6 +193,7 @@ type SkillFrontmatter = z.infer<typeof SkillFrontmatterSchema>;
181
193
  * @param contentType - Content type ('md' or 'jst')
182
194
  * @param widgets - Discovered widget names
183
195
  * @param scripts - Discovered script names
196
+ * @param files - Discovered Agent Skills resource files (relative paths)
184
197
  * @returns Skill definition object
185
198
  */
186
199
  function buildSkillDefinition(
@@ -189,6 +202,7 @@ function buildSkillDefinition(
189
202
  contentType: SkillContentType,
190
203
  widgets: string[],
191
204
  scripts: string[],
205
+ files: string[],
192
206
  ): SkillDefinition {
193
207
  const skill: SkillDefinition = {
194
208
  name: frontmatter.name,
@@ -198,8 +212,20 @@ function buildSkillDefinition(
198
212
  content_type: contentType,
199
213
  widgets: widgets.length > 0 ? widgets : undefined,
200
214
  scripts: scripts.length > 0 ? scripts : undefined,
215
+ files: files.length > 0 ? files : undefined,
216
+ // Keep copied asset URLs stable when properties.ts overrides the runtime skill name.
217
+ files_namespace: files.length > 0 ? frontmatter.name : undefined,
201
218
  };
202
219
 
220
+ // Agent Skills specification fields. `allowed-tools` is experimental in the spec and Vertesia does not
221
+ // support it: it pre-approves tools in the authoring harness's vocabulary, Vertesia has no approval step
222
+ // for it to skip, and it never unlocks a tool here (`tools` does). It is recorded for reference only.
223
+ if (frontmatter.license) skill.license = frontmatter.license;
224
+ if (frontmatter.compatibility) skill.compatibility = frontmatter.compatibility;
225
+ if (frontmatter.metadata) skill.metadata = frontmatter.metadata;
226
+ const allowedTools = frontmatter['allowed-tools']?.split(/\s+/).filter(Boolean);
227
+ if (allowedTools && allowedTools.length > 0) skill.allowed_tools = allowedTools;
228
+
203
229
  // Build context triggers - support both flat and nested structure
204
230
  // Nested: context_triggers: { keywords: [...], tool_names: [...] }
205
231
  // Flat: keywords: [...], tools: [...]
@@ -353,8 +379,8 @@ function transformSkill(content: string, filePath: string, config: SkillTransfor
353
379
  // Determine content type from frontmatter or file extension
354
380
  const content_type: SkillContentType = validatedFrontmatter.content_type || 'md';
355
381
 
356
- // Discover assets (scripts and widgets) in the skill directory
357
- const assets = discoverSkillAssets(filePath);
382
+ // Discover assets (scripts, widgets and Agent Skills resource files) in the skill directory
383
+ const assets = discoverSkillAssets(filePath, { skillName: validatedFrontmatter.name });
358
384
 
359
385
  // Build skill definition using the same logic as parseSkillFile in tools-sdk
360
386
  const skillData = buildSkillDefinition(
@@ -363,6 +389,7 @@ function transformSkill(content: string, filePath: string, config: SkillTransfor
363
389
  content_type,
364
390
  assets.widgets,
365
391
  assets.scripts,
392
+ assets.files,
366
393
  );
367
394
 
368
395
  // Check if properties.ts exists in the skill directory
package/src/core/types.ts CHANGED
@@ -16,7 +16,7 @@ export interface AssetFile {
16
16
  destPath: string;
17
17
 
18
18
  /** Asset type for categorization */
19
- type: 'script' | 'template';
19
+ type: 'script' | 'skill-file' | 'template';
20
20
  }
21
21
 
22
22
  /**
@@ -2,7 +2,7 @@
2
2
  * Utilities for discovering asset files (scripts, widgets) in skill directories
3
3
  */
4
4
 
5
- import { readdirSync, statSync } from 'node:fs';
5
+ import { lstatSync, readdirSync, statSync } from 'node:fs';
6
6
  import path from 'node:path';
7
7
  import type { AssetFile } from '../types.js';
8
8
 
@@ -30,6 +30,12 @@ export interface DiscoveredAssets {
30
30
  /** Widget metadata for compilation */
31
31
  widgetMetadata: WidgetMetadata[];
32
32
 
33
+ /**
34
+ * Agent Skills resource files, as POSIX paths relative to the skill directory
35
+ * (e.g. `scripts/extract.py`, `references/REFERENCE.md`).
36
+ */
37
+ files: string[];
38
+
33
39
  /** Asset files to be copied */
34
40
  assetFiles: AssetFile[];
35
41
  }
@@ -59,6 +65,48 @@ function getFilesInDirectory(dirPath: string): string[] {
59
65
  }
60
66
  }
61
67
 
68
+ /**
69
+ * The Agent Skills resource directories (https://agentskills.io/specification), relative to the skill
70
+ * directory. Unlike the flat scripts beside SKILL.md, their contents keep their relative paths.
71
+ */
72
+ export const SKILL_RESOURCE_DIRS = ['scripts', 'references', 'assets'] as const;
73
+
74
+ /** Where a skill's resource files are copied, relative to the assets root. */
75
+ export const SKILL_FILES_DIR = 'skill-files';
76
+
77
+ /**
78
+ * List the files under a directory recursively, as POSIX paths relative to `rootDir`.
79
+ * Hidden entries and symlinks are skipped so resources cannot escape the skill directory or form cycles.
80
+ */
81
+ function listFilesRecursive(rootDir: string, relDir: string): string[] {
82
+ const absDir = path.join(rootDir, relDir);
83
+ let entries: string[];
84
+ try {
85
+ // Reject linked resource roots as well as symlinks encountered below.
86
+ if (!lstatSync(absDir).isDirectory()) return [];
87
+ entries = readdirSync(absDir);
88
+ } catch {
89
+ return [];
90
+ }
91
+ const out: string[] = [];
92
+ for (const entry of entries.sort()) {
93
+ if (entry.startsWith('.')) continue;
94
+ const rel = path.posix.join(relDir, entry);
95
+ const abs = path.join(rootDir, rel);
96
+ try {
97
+ const stat = lstatSync(abs);
98
+ if (stat.isDirectory()) {
99
+ out.push(...listFilesRecursive(rootDir, rel));
100
+ } else if (stat.isFile()) {
101
+ out.push(rel);
102
+ }
103
+ } catch {
104
+ // Unreadable entry: skip it like the flat scan does
105
+ }
106
+ }
107
+ return out;
108
+ }
109
+
62
110
  /**
63
111
  * Check if a file is a script file (.js or .py)
64
112
  */
@@ -92,6 +140,8 @@ export function discoverSkillAssets(
92
140
  options: {
93
141
  scriptsDir?: string;
94
142
  widgetsDir?: string;
143
+ /** Skill name used to namespace resource files; defaults to the skill directory name. */
144
+ skillName?: string;
95
145
  } = {},
96
146
  ): DiscoveredAssets {
97
147
  const skillDir = path.dirname(skillFilePath);
@@ -129,10 +179,30 @@ export function discoverSkillAssets(
129
179
  }
130
180
  }
131
181
 
182
+ // Agent Skills resource directories keep their relative paths and are namespaced per skill, so two
183
+ // skills can ship files with the same name. The flat scripts above are left as they were. Only a
184
+ // SKILL.md owns its directory; a `*.md?skill` file may share one with other skills.
185
+ const resourceFiles =
186
+ path.basename(skillFilePath) === 'SKILL.md'
187
+ ? SKILL_RESOURCE_DIRS.flatMap((dir) => listFilesRecursive(skillDir, dir))
188
+ : [];
189
+ const skillName = options.skillName || path.basename(skillDir);
190
+ if (resourceFiles.length > 0 && (skillName === '.' || skillName === '..' || /[\\/]/.test(skillName))) {
191
+ throw new Error(`Invalid skill name for resource files: ${skillName}`);
192
+ }
193
+ for (const file of resourceFiles) {
194
+ assetFiles.push({
195
+ sourcePath: path.join(skillDir, file),
196
+ destPath: path.join(SKILL_FILES_DIR, skillName, file),
197
+ type: 'skill-file',
198
+ });
199
+ }
200
+
132
201
  return {
133
202
  scripts,
134
203
  widgets,
135
204
  widgetMetadata,
205
+ files: resourceFiles,
136
206
  assetFiles,
137
207
  };
138
208
  }