skillshield 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +400 -0
- package/dist/channels/discord.d.ts +18 -0
- package/dist/channels/discord.d.ts.map +1 -0
- package/dist/channels/discord.js +275 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/index.d.ts +67 -0
- package/dist/channels/index.d.ts.map +1 -0
- package/dist/channels/index.js +127 -0
- package/dist/channels/index.js.map +1 -0
- package/dist/channels/slack.d.ts +20 -0
- package/dist/channels/slack.d.ts.map +1 -0
- package/dist/channels/slack.js +296 -0
- package/dist/channels/slack.js.map +1 -0
- package/dist/channels/telegram.d.ts +20 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +223 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/whatsapp.d.ts +25 -0
- package/dist/channels/whatsapp.d.ts.map +1 -0
- package/dist/channels/whatsapp.js +187 -0
- package/dist/channels/whatsapp.js.map +1 -0
- package/dist/cli/commands/badge.d.ts +11 -0
- package/dist/cli/commands/badge.d.ts.map +1 -0
- package/dist/cli/commands/badge.js +98 -0
- package/dist/cli/commands/badge.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +140 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +3 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +56 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +99 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +3 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +90 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/list.d.ts +3 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +76 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/run.d.ts +3 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +160 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +3 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +133 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +56 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +70 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/config.d.ts +167 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +398 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/parser.d.ts +34 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +462 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/runtime.d.ts +68 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +560 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/types.d.ts +525 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +44 -0
- package/dist/core/types.js.map +1 -0
- package/dist/guard/index.d.ts +57 -0
- package/dist/guard/index.d.ts.map +1 -0
- package/dist/guard/index.js +238 -0
- package/dist/guard/index.js.map +1 -0
- package/dist/guard/patterns.d.ts +21 -0
- package/dist/guard/patterns.d.ts.map +1 -0
- package/dist/guard/patterns.js +797 -0
- package/dist/guard/patterns.js.map +1 -0
- package/dist/hub/index.d.ts +44 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +144 -0
- package/dist/hub/index.js.map +1 -0
- package/dist/hub/registry.d.ts +52 -0
- package/dist/hub/registry.d.ts.map +1 -0
- package/dist/hub/registry.js +192 -0
- package/dist/hub/registry.js.map +1 -0
- package/dist/i18n/index.d.ts +19 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +92 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/locales/en.d.ts +110 -0
- package/dist/i18n/locales/en.d.ts.map +1 -0
- package/dist/i18n/locales/en.js +123 -0
- package/dist/i18n/locales/en.js.map +1 -0
- package/dist/i18n/locales/es.d.ts +110 -0
- package/dist/i18n/locales/es.d.ts.map +1 -0
- package/dist/i18n/locales/es.js +123 -0
- package/dist/i18n/locales/es.js.map +1 -0
- package/dist/i18n/locales/pt.d.ts +110 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -0
- package/dist/i18n/locales/pt.js +123 -0
- package/dist/i18n/locales/pt.js.map +1 -0
- package/dist/i18n/locales/zh.d.ts +110 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -0
- package/dist/i18n/locales/zh.js +123 -0
- package/dist/i18n/locales/zh.js.map +1 -0
- package/dist/index.d.ts +168 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +275 -0
- package/dist/index.js.map +1 -0
- package/dist/router/index.d.ts +89 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +292 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/providers.d.ts +48 -0
- package/dist/router/providers.d.ts.map +1 -0
- package/dist/router/providers.js +733 -0
- package/dist/router/providers.js.map +1 -0
- package/dist/runtime/executor.d.ts +96 -0
- package/dist/runtime/executor.d.ts.map +1 -0
- package/dist/runtime/executor.js +389 -0
- package/dist/runtime/executor.js.map +1 -0
- package/dist/sandbox/index.d.ts +52 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +248 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/security/skillguard.d.ts +25 -0
- package/dist/security/skillguard.d.ts.map +1 -0
- package/dist/security/skillguard.js +137 -0
- package/dist/security/skillguard.js.map +1 -0
- package/dist/tools/index.d.ts +55 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +276 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/web-engine.d.ts +158 -0
- package/dist/tools/web-engine.d.ts.map +1 -0
- package/dist/tools/web-engine.js +802 -0
- package/dist/tools/web-engine.js.map +1 -0
- package/dist/tools/web-tools.d.ts +173 -0
- package/dist/tools/web-tools.d.ts.map +1 -0
- package/dist/tools/web-tools.js +251 -0
- package/dist/tools/web-tools.js.map +1 -0
- package/dist/utils/errors.d.ts +44 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +130 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +28 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +121 -0
- package/dist/utils/logger.js.map +1 -0
- package/examples/basic-usage.ts +276 -0
- package/examples/code-reviewer.skill.md +83 -0
- package/examples/creative-writer.skill.md +80 -0
- package/examples/data-analyzer.skill.md +61 -0
- package/examples/hello-world.skill.md +36 -0
- package/examples/sample-skill.md +156 -0
- package/examples/summarizer.skill.md +62 -0
- package/examples/translator.skill.md +45 -0
- package/package.json +110 -0
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillKit SKILL.md Parser
|
|
3
|
+
* Parses and validates SKILL.md files in both OpenClaw and ArtefactForge formats.
|
|
4
|
+
* This is the heart of SkillKit - it transforms markdown skill definitions into executable structures.
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync } from 'fs';
|
|
7
|
+
import { resolve } from 'path';
|
|
8
|
+
import matter from 'gray-matter';
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { ChannelType, } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Zod schemas for validation
|
|
13
|
+
*/
|
|
14
|
+
const ModelRequirementsSchema = z.object({
|
|
15
|
+
minContextWindow: z.number().optional(),
|
|
16
|
+
requiresTools: z.boolean().optional(),
|
|
17
|
+
capabilities: z.array(z.string()).optional(),
|
|
18
|
+
recommended: z.string().optional(),
|
|
19
|
+
minSize: z.enum(['tiny', 'small', 'medium', 'large', 'xlarge']).optional(),
|
|
20
|
+
}).strict();
|
|
21
|
+
const SkillToolSchema = z.object({
|
|
22
|
+
name: z.string().min(1),
|
|
23
|
+
description: z.string(),
|
|
24
|
+
inputSchema: z.record(z.unknown()),
|
|
25
|
+
example: z.string().optional(),
|
|
26
|
+
securityLevel: z.enum(['public', 'restricted', 'admin']).optional(),
|
|
27
|
+
}).strict();
|
|
28
|
+
const SkillInputSchema = z.object({
|
|
29
|
+
name: z.string().min(1),
|
|
30
|
+
type: z.enum(['string', 'number', 'boolean', 'array', 'object']),
|
|
31
|
+
description: z.string(),
|
|
32
|
+
required: z.boolean(),
|
|
33
|
+
default: z.unknown().optional(),
|
|
34
|
+
schema: z.record(z.unknown()).optional(),
|
|
35
|
+
example: z.unknown().optional(),
|
|
36
|
+
}).strict();
|
|
37
|
+
const SkillOutputSchema = z.object({
|
|
38
|
+
name: z.string().min(1),
|
|
39
|
+
type: z.enum(['string', 'number', 'boolean', 'array', 'object', 'stream']),
|
|
40
|
+
description: z.string(),
|
|
41
|
+
schema: z.record(z.unknown()).optional(),
|
|
42
|
+
example: z.unknown().optional(),
|
|
43
|
+
}).strict();
|
|
44
|
+
const SkillExampleSchema = z.object({
|
|
45
|
+
title: z.string(),
|
|
46
|
+
input: z.record(z.unknown()),
|
|
47
|
+
expectedOutput: z.record(z.unknown()),
|
|
48
|
+
explanation: z.string().optional(),
|
|
49
|
+
}).strict();
|
|
50
|
+
const FrontmatterSchema = z.object({
|
|
51
|
+
name: z.string().min(1, 'Skill name is required'),
|
|
52
|
+
title: z.string().optional(),
|
|
53
|
+
description: z.string().min(1, 'Description is required'),
|
|
54
|
+
version: z.string().regex(/^\d+\.\d+\.\d+/, 'Version must follow semver format'),
|
|
55
|
+
author: z.string().min(1, 'Author is required'),
|
|
56
|
+
tags: z.array(z.string()).default([]),
|
|
57
|
+
license: z.string().optional(),
|
|
58
|
+
homepage: z.string().url().optional(),
|
|
59
|
+
modelRequirements: ModelRequirementsSchema.optional(),
|
|
60
|
+
estimatedRuntime: z.number().optional(),
|
|
61
|
+
channels: z.array(z.nativeEnum(ChannelType)).optional(),
|
|
62
|
+
requiresAuth: z.boolean().optional(),
|
|
63
|
+
costPerExecution: z.number().optional(),
|
|
64
|
+
custom: z.record(z.unknown()).optional(),
|
|
65
|
+
}).strict();
|
|
66
|
+
/**
|
|
67
|
+
* Parse frontmatter YAML
|
|
68
|
+
*/
|
|
69
|
+
function parseFrontmatter(rawYaml) {
|
|
70
|
+
try {
|
|
71
|
+
// Simple YAML parser for our use case
|
|
72
|
+
const lines = rawYaml.split('\n');
|
|
73
|
+
const result = {};
|
|
74
|
+
let i = 0;
|
|
75
|
+
while (i < lines.length) {
|
|
76
|
+
const line = lines[i];
|
|
77
|
+
if (!line.trim() || line.startsWith('#')) {
|
|
78
|
+
i++;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const colonIndex = line.indexOf(':');
|
|
82
|
+
if (colonIndex === -1) {
|
|
83
|
+
i++;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const key = line.substring(0, colonIndex).trim();
|
|
87
|
+
let value = line.substring(colonIndex + 1).trim();
|
|
88
|
+
// Handle multiline values and arrays
|
|
89
|
+
if (value === '' && i + 1 < lines.length && lines[i + 1].startsWith(' ')) {
|
|
90
|
+
// Multiline value
|
|
91
|
+
const valueLines = [value];
|
|
92
|
+
i++;
|
|
93
|
+
while (i < lines.length && lines[i].startsWith(' ')) {
|
|
94
|
+
valueLines.push(lines[i].trim());
|
|
95
|
+
i++;
|
|
96
|
+
}
|
|
97
|
+
value = valueLines.join('\n').trim();
|
|
98
|
+
i--; // Back up one since we'll increment at loop end
|
|
99
|
+
}
|
|
100
|
+
else if (value.startsWith('[')) {
|
|
101
|
+
// Array parsing
|
|
102
|
+
let arrayStr = value;
|
|
103
|
+
while (!arrayStr.includes(']') && i + 1 < lines.length) {
|
|
104
|
+
i++;
|
|
105
|
+
arrayStr += ' ' + lines[i].trim();
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
result[key] = JSON.parse(arrayStr);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
result[key] = arrayStr;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// Try to parse as JSON first
|
|
116
|
+
if (value === 'true') {
|
|
117
|
+
result[key] = true;
|
|
118
|
+
}
|
|
119
|
+
else if (value === 'false') {
|
|
120
|
+
result[key] = false;
|
|
121
|
+
}
|
|
122
|
+
else if (value === 'null') {
|
|
123
|
+
result[key] = null;
|
|
124
|
+
}
|
|
125
|
+
else if (/^\d+(\.\d+)?$/.test(value)) {
|
|
126
|
+
result[key] = parseFloat(value);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
result[key] = value;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
i++;
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
throw new Error(`Failed to parse YAML frontmatter: ${error instanceof Error ? error.message : String(error)}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Extract section from markdown body
|
|
142
|
+
*/
|
|
143
|
+
function extractSection(body, sectionName) {
|
|
144
|
+
const regex = new RegExp(`## ${sectionName}\\s*\\n([\\s\\S]*?)(?=##|$)`, 'i');
|
|
145
|
+
const match = body.match(regex);
|
|
146
|
+
return match ? match[1].trim() : '';
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Parse JSON array from markdown code block
|
|
150
|
+
*/
|
|
151
|
+
function parseJsonCodeBlock(content) {
|
|
152
|
+
const jsonMatch = content.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
153
|
+
if (jsonMatch) {
|
|
154
|
+
try {
|
|
155
|
+
return JSON.parse(jsonMatch[1].trim());
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
throw new Error(`Invalid JSON in code block: ${error instanceof Error ? error.message : String(error)}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Parse inputs section
|
|
165
|
+
*/
|
|
166
|
+
function parseInputs(body) {
|
|
167
|
+
const inputsSection = extractSection(body, 'Inputs');
|
|
168
|
+
if (!inputsSection)
|
|
169
|
+
return [];
|
|
170
|
+
const inputs = [];
|
|
171
|
+
// Try to parse from JSON code block first
|
|
172
|
+
const jsonInputs = parseJsonCodeBlock(inputsSection);
|
|
173
|
+
if (Array.isArray(jsonInputs)) {
|
|
174
|
+
return jsonInputs.map(input => SkillInputSchema.parse(input));
|
|
175
|
+
}
|
|
176
|
+
// Fallback: parse from markdown table format
|
|
177
|
+
const tableLines = inputsSection.split('\n').filter(line => line.includes('|'));
|
|
178
|
+
for (const line of tableLines) {
|
|
179
|
+
const parts = line.split('|').map(p => p.trim()).filter(p => p);
|
|
180
|
+
if (parts.length >= 5 && !parts[0].includes('---')) {
|
|
181
|
+
inputs.push({
|
|
182
|
+
name: parts[0],
|
|
183
|
+
type: parts[1],
|
|
184
|
+
description: parts[2],
|
|
185
|
+
required: parts[3] === 'Yes' || parts[3] === 'true',
|
|
186
|
+
example: parts[4],
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return inputs.map(input => SkillInputSchema.parse(input));
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Parse outputs section
|
|
194
|
+
*/
|
|
195
|
+
function parseOutputs(body) {
|
|
196
|
+
const outputsSection = extractSection(body, 'Outputs');
|
|
197
|
+
if (!outputsSection)
|
|
198
|
+
return [];
|
|
199
|
+
const outputs = [];
|
|
200
|
+
// Try to parse from JSON code block first
|
|
201
|
+
const jsonOutputs = parseJsonCodeBlock(outputsSection);
|
|
202
|
+
if (Array.isArray(jsonOutputs)) {
|
|
203
|
+
return jsonOutputs.map(output => SkillOutputSchema.parse(output));
|
|
204
|
+
}
|
|
205
|
+
// Fallback: parse from markdown table format
|
|
206
|
+
const tableLines = outputsSection.split('\n').filter(line => line.includes('|'));
|
|
207
|
+
for (const line of tableLines) {
|
|
208
|
+
const parts = line.split('|').map(p => p.trim()).filter(p => p);
|
|
209
|
+
if (parts.length >= 3 && !parts[0].includes('---')) {
|
|
210
|
+
outputs.push({
|
|
211
|
+
name: parts[0],
|
|
212
|
+
type: parts[1],
|
|
213
|
+
description: parts[2],
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return outputs.map(output => SkillOutputSchema.parse(output));
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Parse tools section
|
|
221
|
+
*/
|
|
222
|
+
function parseTools(body) {
|
|
223
|
+
const toolsSection = extractSection(body, 'Tools');
|
|
224
|
+
if (!toolsSection)
|
|
225
|
+
return [];
|
|
226
|
+
const tools = [];
|
|
227
|
+
// Try to parse from JSON code block
|
|
228
|
+
const jsonTools = parseJsonCodeBlock(toolsSection);
|
|
229
|
+
if (Array.isArray(jsonTools)) {
|
|
230
|
+
return jsonTools.map(tool => SkillToolSchema.parse(tool));
|
|
231
|
+
}
|
|
232
|
+
// Parse tool definitions with schema blocks
|
|
233
|
+
const toolBlocks = toolsSection.match(/### \w+[\s\S]*?(?=###|$)/g) || [];
|
|
234
|
+
for (const block of toolBlocks) {
|
|
235
|
+
const lines = block.split('\n');
|
|
236
|
+
const title = lines[0].replace('###', '').trim();
|
|
237
|
+
const description = lines.slice(1).find(l => l.trim() && !l.includes('```'))?.trim() || '';
|
|
238
|
+
const schemaMatch = block.match(/```json\s*([\s\S]*?)```/);
|
|
239
|
+
let inputSchema = {};
|
|
240
|
+
if (schemaMatch) {
|
|
241
|
+
try {
|
|
242
|
+
inputSchema = JSON.parse(schemaMatch[1]);
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
// Keep empty schema
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
tools.push({
|
|
249
|
+
name: title,
|
|
250
|
+
description,
|
|
251
|
+
inputSchema,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
return tools.map(tool => SkillToolSchema.parse(tool));
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Parse examples section
|
|
258
|
+
*/
|
|
259
|
+
function parseExamples(body) {
|
|
260
|
+
const examplesSection = extractSection(body, 'Examples');
|
|
261
|
+
if (!examplesSection)
|
|
262
|
+
return [];
|
|
263
|
+
const examples = [];
|
|
264
|
+
// Try to parse from JSON code block first
|
|
265
|
+
const jsonExamples = parseJsonCodeBlock(examplesSection);
|
|
266
|
+
if (Array.isArray(jsonExamples)) {
|
|
267
|
+
return jsonExamples.map(ex => SkillExampleSchema.parse(ex));
|
|
268
|
+
}
|
|
269
|
+
// Parse example blocks
|
|
270
|
+
const exampleBlocks = examplesSection.match(/### .+?[\s\S]*?(?=###|$)/g) || [];
|
|
271
|
+
for (const block of exampleBlocks) {
|
|
272
|
+
const lines = block.split('\n');
|
|
273
|
+
const title = lines[0].replace('###', '').trim();
|
|
274
|
+
const inputMatch = block.match(/#### Input[\s\S]*?```json\s*([\s\S]*?)```/);
|
|
275
|
+
const outputMatch = block.match(/#### Output[\s\S]*?```json\s*([\s\S]*?)```/);
|
|
276
|
+
try {
|
|
277
|
+
const input = inputMatch ? JSON.parse(inputMatch[1]) : {};
|
|
278
|
+
const expectedOutput = outputMatch ? JSON.parse(outputMatch[1]) : {};
|
|
279
|
+
examples.push({
|
|
280
|
+
title,
|
|
281
|
+
input,
|
|
282
|
+
expectedOutput,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
// Skip malformed examples
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return examples.map(ex => SkillExampleSchema.parse(ex));
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Parse system prompt section (# System Prompt or ## System Prompt)
|
|
294
|
+
*/
|
|
295
|
+
function parseSystemPrompt(body) {
|
|
296
|
+
const match = body.match(/^#+ System Prompt\s*\n([\s\S]*?)(?=^#+[^#]|$)/m);
|
|
297
|
+
return match ? match[1].trim() : '';
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Parse instructions section (# Instructions or ## Instructions)
|
|
301
|
+
*/
|
|
302
|
+
function parseInstructions(body) {
|
|
303
|
+
const match = body.match(/^#+ Instructions\s*\n([\s\S]*?)(?=^#+[^#]|$)/m);
|
|
304
|
+
return match ? match[1].trim() : '';
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Validate parsed skill definition
|
|
308
|
+
*/
|
|
309
|
+
export function validateSkill(skill) {
|
|
310
|
+
const errors = [];
|
|
311
|
+
// Check required fields
|
|
312
|
+
if (!skill.metadata.name || skill.metadata.name.length === 0) {
|
|
313
|
+
errors.push('Skill name is required');
|
|
314
|
+
}
|
|
315
|
+
if (!skill.metadata.description || skill.metadata.description.length === 0) {
|
|
316
|
+
errors.push('Skill description is required');
|
|
317
|
+
}
|
|
318
|
+
if (!skill.metadata.author || skill.metadata.author.length === 0) {
|
|
319
|
+
errors.push('Skill author is required');
|
|
320
|
+
}
|
|
321
|
+
if (!skill.metadata.version) {
|
|
322
|
+
errors.push('Skill version is required');
|
|
323
|
+
}
|
|
324
|
+
else if (!/^\d+\.\d+\.\d+/.test(skill.metadata.version)) {
|
|
325
|
+
errors.push('Version must follow semver format (x.y.z)');
|
|
326
|
+
}
|
|
327
|
+
// Validate system prompt and instructions
|
|
328
|
+
if (!skill.systemPrompt || skill.systemPrompt.length === 0) {
|
|
329
|
+
errors.push('System prompt is required');
|
|
330
|
+
}
|
|
331
|
+
if (!skill.instructions || skill.instructions.length === 0) {
|
|
332
|
+
errors.push('Instructions are required');
|
|
333
|
+
}
|
|
334
|
+
// Validate inputs/outputs
|
|
335
|
+
const inputNames = new Set();
|
|
336
|
+
for (const input of skill.inputs) {
|
|
337
|
+
if (inputNames.has(input.name)) {
|
|
338
|
+
errors.push(`Duplicate input name: ${input.name}`);
|
|
339
|
+
}
|
|
340
|
+
inputNames.add(input.name);
|
|
341
|
+
}
|
|
342
|
+
const outputNames = new Set();
|
|
343
|
+
for (const output of skill.outputs) {
|
|
344
|
+
if (outputNames.has(output.name)) {
|
|
345
|
+
errors.push(`Duplicate output name: ${output.name}`);
|
|
346
|
+
}
|
|
347
|
+
outputNames.add(output.name);
|
|
348
|
+
}
|
|
349
|
+
// Validate tools
|
|
350
|
+
const toolNames = new Set();
|
|
351
|
+
for (const tool of skill.tools || []) {
|
|
352
|
+
if (toolNames.has(tool.name)) {
|
|
353
|
+
errors.push(`Duplicate tool name: ${tool.name}`);
|
|
354
|
+
}
|
|
355
|
+
toolNames.add(tool.name);
|
|
356
|
+
}
|
|
357
|
+
return {
|
|
358
|
+
valid: errors.length === 0,
|
|
359
|
+
errors,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Main parser function - parse SKILL.md file
|
|
364
|
+
*/
|
|
365
|
+
export function parseSkillFile(filePath) {
|
|
366
|
+
const absolutePath = resolve(filePath);
|
|
367
|
+
const content = readFileSync(absolutePath, 'utf-8');
|
|
368
|
+
return parseSkillContent(content, absolutePath);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Parse SKILL.md content from string
|
|
372
|
+
*/
|
|
373
|
+
export function parseSkillContent(content, filePath) {
|
|
374
|
+
// Use gray-matter to split frontmatter and body
|
|
375
|
+
const { data: rawFrontmatter, content: body } = matter(content);
|
|
376
|
+
// Validate and transform frontmatter
|
|
377
|
+
let frontmatter;
|
|
378
|
+
try {
|
|
379
|
+
frontmatter = FrontmatterSchema.parse(rawFrontmatter);
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
if (error instanceof z.ZodError) {
|
|
383
|
+
const messages = error.errors.map(e => `${e.path.join('.')}: ${e.message}`);
|
|
384
|
+
throw new Error(`Invalid frontmatter: ${messages.join('; ')}`);
|
|
385
|
+
}
|
|
386
|
+
throw error;
|
|
387
|
+
}
|
|
388
|
+
// Extract sections
|
|
389
|
+
const systemPrompt = parseSystemPrompt(body);
|
|
390
|
+
const instructions = parseInstructions(body);
|
|
391
|
+
const inputs = parseInputs(body);
|
|
392
|
+
const outputs = parseOutputs(body);
|
|
393
|
+
const tools = parseTools(body);
|
|
394
|
+
const examples = parseExamples(body);
|
|
395
|
+
// Build skill definition
|
|
396
|
+
const skill = {
|
|
397
|
+
metadata: {
|
|
398
|
+
name: frontmatter.name,
|
|
399
|
+
title: frontmatter.title || frontmatter.name,
|
|
400
|
+
description: frontmatter.description,
|
|
401
|
+
version: frontmatter.version,
|
|
402
|
+
author: frontmatter.author,
|
|
403
|
+
tags: frontmatter.tags || [],
|
|
404
|
+
license: frontmatter.license,
|
|
405
|
+
homepage: frontmatter.homepage,
|
|
406
|
+
modelRequirements: frontmatter.modelRequirements,
|
|
407
|
+
estimatedRuntime: frontmatter.estimatedRuntime,
|
|
408
|
+
channels: frontmatter.channels,
|
|
409
|
+
requiresAuth: frontmatter.requiresAuth,
|
|
410
|
+
costPerExecution: frontmatter.costPerExecution,
|
|
411
|
+
custom: frontmatter.custom,
|
|
412
|
+
},
|
|
413
|
+
systemPrompt,
|
|
414
|
+
instructions,
|
|
415
|
+
inputs,
|
|
416
|
+
outputs,
|
|
417
|
+
tools: tools.length > 0 ? tools : undefined,
|
|
418
|
+
examples,
|
|
419
|
+
body,
|
|
420
|
+
filepath: filePath,
|
|
421
|
+
rawFrontmatter: JSON.stringify(rawFrontmatter),
|
|
422
|
+
parsedAt: new Date(),
|
|
423
|
+
};
|
|
424
|
+
// Validate the skill
|
|
425
|
+
const validation = validateSkill(skill);
|
|
426
|
+
if (!validation.valid) {
|
|
427
|
+
throw new Error(`Skill validation failed:\n${validation.errors.join('\n')}`);
|
|
428
|
+
}
|
|
429
|
+
return skill;
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Get skill name from file path
|
|
433
|
+
*/
|
|
434
|
+
export function getSkillNameFromPath(filePath) {
|
|
435
|
+
return filePath.split('/').pop()?.replace(/\.md$/i, '') || 'unknown';
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Extract metadata from SKILL.md without full parsing (lightweight)
|
|
439
|
+
*/
|
|
440
|
+
export function extractMetadata(content) {
|
|
441
|
+
const { data } = matter(content);
|
|
442
|
+
return {
|
|
443
|
+
name: data.name || undefined,
|
|
444
|
+
description: data.description || undefined,
|
|
445
|
+
version: data.version || undefined,
|
|
446
|
+
author: data.author || undefined,
|
|
447
|
+
tags: data.tags || [],
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Check if content looks like valid SKILL.md
|
|
452
|
+
*/
|
|
453
|
+
export function isValidSkillFormat(content) {
|
|
454
|
+
const { data, content: body } = matter(content);
|
|
455
|
+
// Must have required frontmatter
|
|
456
|
+
if (!data.name || !data.description || !data.author || !data.version) {
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
// Must have some instruction content
|
|
460
|
+
return body.includes('## Instructions') || body.includes('# Instructions');
|
|
461
|
+
}
|
|
462
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillKit Runtime Engine
|
|
3
|
+
* Execution engine that ties together parsing, configuration, and model interaction.
|
|
4
|
+
* Handles skill loading, model selection, execution, and tool calling.
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from 'events';
|
|
7
|
+
import { SkillDefinition, SkillExecutionResult, ExecutionOptions, BatchExecutionRequest, BatchExecutionResult, SkillRunnerOptions } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Main skill runner class
|
|
10
|
+
*/
|
|
11
|
+
export declare class SkillRunner extends EventEmitter {
|
|
12
|
+
private config;
|
|
13
|
+
private options;
|
|
14
|
+
private executionCache;
|
|
15
|
+
constructor(options?: SkillRunnerOptions);
|
|
16
|
+
/**
|
|
17
|
+
* Load a skill from file or registry
|
|
18
|
+
*/
|
|
19
|
+
loadSkill(skillPath: string): Promise<SkillDefinition>;
|
|
20
|
+
/**
|
|
21
|
+
* Download skill from ClawHub registry
|
|
22
|
+
*/
|
|
23
|
+
private downloadSkill;
|
|
24
|
+
/**
|
|
25
|
+
* Execute a skill
|
|
26
|
+
*/
|
|
27
|
+
executeSkill(skillPath: string, input: Record<string, unknown>, options?: ExecutionOptions): Promise<SkillExecutionResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Execute skill with timeout protection
|
|
30
|
+
*/
|
|
31
|
+
private executeWithTimeout;
|
|
32
|
+
/**
|
|
33
|
+
* Internal execution logic
|
|
34
|
+
*/
|
|
35
|
+
private executeInternal;
|
|
36
|
+
/**
|
|
37
|
+
* Validate input against skill definition
|
|
38
|
+
*/
|
|
39
|
+
private validateInput;
|
|
40
|
+
/**
|
|
41
|
+
* Build model configuration
|
|
42
|
+
*/
|
|
43
|
+
private buildModelConfig;
|
|
44
|
+
/**
|
|
45
|
+
* Execute batch of skills
|
|
46
|
+
*/
|
|
47
|
+
executeBatch(request: BatchExecutionRequest): Promise<BatchExecutionResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Clear execution cache
|
|
50
|
+
*/
|
|
51
|
+
clearCache(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Get cache statistics
|
|
54
|
+
*/
|
|
55
|
+
getCacheStats(): {
|
|
56
|
+
size: number;
|
|
57
|
+
entries: number;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Convenience function to execute a skill
|
|
62
|
+
*/
|
|
63
|
+
export declare function executeSkill(skillPath: string, input: Record<string, unknown>, options?: ExecutionOptions): Promise<SkillExecutionResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Convenience function for batch execution
|
|
66
|
+
*/
|
|
67
|
+
export declare function executeBatch(request: BatchExecutionRequest): Promise<BatchExecutionResult>;
|
|
68
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EACL,eAAe,EACf,oBAAoB,EAIpB,gBAAgB,EAIhB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAwXpB;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,cAAc,CAA2C;gBAErD,OAAO,GAAE,kBAAuB;IAM5C;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAiB5D;;OAEG;YACW,aAAa;IAmB3B;;OAEG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC;IA0DhC;;OAEG;YACW,kBAAkB;IAkBhC;;OAEG;YACW,eAAe;IA2D7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyCjF;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAMnD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAG/B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAGhG"}
|