agent-skills-cli 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 +226 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +1181 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/executor.d.ts +22 -0
- package/dist/core/executor.d.ts.map +1 -0
- package/dist/core/executor.js +147 -0
- package/dist/core/executor.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +17 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/injector.d.ts +24 -0
- package/dist/core/injector.d.ts.map +1 -0
- package/dist/core/injector.js +99 -0
- package/dist/core/injector.js.map +1 -0
- package/dist/core/loader.d.ts +39 -0
- package/dist/core/loader.d.ts.map +1 -0
- package/dist/core/loader.js +161 -0
- package/dist/core/loader.js.map +1 -0
- package/dist/core/marketplace.d.ts +55 -0
- package/dist/core/marketplace.d.ts.map +1 -0
- package/dist/core/marketplace.js +399 -0
- package/dist/core/marketplace.js.map +1 -0
- package/dist/core/skillsmp.d.ts +38 -0
- package/dist/core/skillsmp.d.ts.map +1 -0
- package/dist/core/skillsmp.js +142 -0
- package/dist/core/skillsmp.js.map +1 -0
- package/dist/core/validator.d.ts +18 -0
- package/dist/core/validator.d.ts.map +1 -0
- package/dist/core/validator.js +177 -0
- package/dist/core/validator.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +108 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/marketplace.d.ts +81 -0
- package/dist/types/marketplace.d.ts.map +1 -0
- package/dist/types/marketplace.js +20 -0
- package/dist/types/marketplace.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillsMP API Client
|
|
3
|
+
* Integrates with skillsmp.com for scalable skill discovery (40k+ skills)
|
|
4
|
+
*/
|
|
5
|
+
import type { MarketplaceSkill, MarketplaceSource } from '../types/marketplace.js';
|
|
6
|
+
/**
|
|
7
|
+
* Create SkillsMP as a marketplace source
|
|
8
|
+
*/
|
|
9
|
+
export declare const SKILLSMP_SOURCE: MarketplaceSource;
|
|
10
|
+
/**
|
|
11
|
+
* Fetch skills from SkillsMP API
|
|
12
|
+
*/
|
|
13
|
+
export declare function fetchSkillsMP(options?: {
|
|
14
|
+
search?: string;
|
|
15
|
+
page?: number;
|
|
16
|
+
limit?: number;
|
|
17
|
+
sortBy?: 'recent' | 'stars';
|
|
18
|
+
}): Promise<{
|
|
19
|
+
skills: MarketplaceSkill[];
|
|
20
|
+
total: number;
|
|
21
|
+
hasNext: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Search skills on SkillsMP
|
|
25
|
+
*/
|
|
26
|
+
export declare function searchSkillsMP(query: string, limit?: number): Promise<MarketplaceSkill[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Get top skills by stars
|
|
29
|
+
*/
|
|
30
|
+
export declare function getTopSkills(limit?: number): Promise<MarketplaceSkill[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Install a skill directly from a GitHub URL
|
|
33
|
+
*/
|
|
34
|
+
export declare function installFromGitHubUrl(githubUrl: string, installDir: string): Promise<{
|
|
35
|
+
name: string;
|
|
36
|
+
path: string;
|
|
37
|
+
}>;
|
|
38
|
+
//# sourceMappingURL=skillsmp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillsmp.d.ts","sourceRoot":"","sources":["../../src/core/skillsmp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AA2CnF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,iBAO7B,CAAC;AAEF;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA0DhF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAG3F;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAG1E;AAmCD;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA8BzC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillsMP API Client
|
|
3
|
+
* Integrates with skillsmp.com for scalable skill discovery (40k+ skills)
|
|
4
|
+
*/
|
|
5
|
+
const SKILLSMP_API = 'https://skillsmp.com/api/skills';
|
|
6
|
+
// Cache for SkillsMP results
|
|
7
|
+
const cache = new Map();
|
|
8
|
+
const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
9
|
+
/**
|
|
10
|
+
* Create SkillsMP as a marketplace source
|
|
11
|
+
*/
|
|
12
|
+
export const SKILLSMP_SOURCE = {
|
|
13
|
+
id: 'skillsmp',
|
|
14
|
+
name: 'SkillsMP Marketplace',
|
|
15
|
+
owner: 'skillsmp',
|
|
16
|
+
repo: 'skillsmp.com',
|
|
17
|
+
description: 'Browse 40,000+ agent skills from the community',
|
|
18
|
+
verified: true
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Fetch skills from SkillsMP API
|
|
22
|
+
*/
|
|
23
|
+
export async function fetchSkillsMP(options = {}) {
|
|
24
|
+
const { search = '', page = 1, limit = 50, sortBy = 'stars' } = options;
|
|
25
|
+
const cacheKey = `skillsmp:${search}:${page}:${limit}:${sortBy}`;
|
|
26
|
+
const cached = cache.get(cacheKey);
|
|
27
|
+
if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
|
|
28
|
+
return { skills: cached.data, total: 0, hasNext: false };
|
|
29
|
+
}
|
|
30
|
+
const params = new URLSearchParams({
|
|
31
|
+
page: page.toString(),
|
|
32
|
+
limit: limit.toString(),
|
|
33
|
+
sortBy
|
|
34
|
+
});
|
|
35
|
+
if (search) {
|
|
36
|
+
params.set('search', search);
|
|
37
|
+
}
|
|
38
|
+
const response = await fetch(`${SKILLSMP_API}?${params}`, {
|
|
39
|
+
headers: {
|
|
40
|
+
'User-Agent': 'agent-skills-cli'
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
if (!response.ok) {
|
|
44
|
+
throw new Error(`SkillsMP API error: ${response.status}`);
|
|
45
|
+
}
|
|
46
|
+
const data = await response.json();
|
|
47
|
+
// Convert to MarketplaceSkill format
|
|
48
|
+
const skills = data.skills.map(s => ({
|
|
49
|
+
name: s.name,
|
|
50
|
+
description: s.description,
|
|
51
|
+
path: extractGitHubPath(s.githubUrl),
|
|
52
|
+
source: {
|
|
53
|
+
...SKILLSMP_SOURCE,
|
|
54
|
+
owner: s.author,
|
|
55
|
+
repo: extractRepoName(s.githubUrl)
|
|
56
|
+
},
|
|
57
|
+
author: s.author,
|
|
58
|
+
version: undefined,
|
|
59
|
+
license: undefined,
|
|
60
|
+
// Extra metadata
|
|
61
|
+
skillId: s.id, // SkillsMP unique ID
|
|
62
|
+
stars: s.stars,
|
|
63
|
+
githubUrl: s.githubUrl
|
|
64
|
+
}));
|
|
65
|
+
cache.set(cacheKey, { data: skills, timestamp: Date.now() });
|
|
66
|
+
return {
|
|
67
|
+
skills,
|
|
68
|
+
total: data.pagination.total,
|
|
69
|
+
hasNext: data.pagination.hasNext
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Search skills on SkillsMP
|
|
74
|
+
*/
|
|
75
|
+
export async function searchSkillsMP(query, limit = 20) {
|
|
76
|
+
const result = await fetchSkillsMP({ search: query, limit, sortBy: 'stars' });
|
|
77
|
+
return result.skills;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get top skills by stars
|
|
81
|
+
*/
|
|
82
|
+
export async function getTopSkills(limit = 50) {
|
|
83
|
+
const result = await fetchSkillsMP({ limit, sortBy: 'stars' });
|
|
84
|
+
return result.skills;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Extract GitHub path from URL
|
|
88
|
+
*/
|
|
89
|
+
function extractGitHubPath(url) {
|
|
90
|
+
// https://github.com/owner/repo/tree/branch/path -> path
|
|
91
|
+
const match = url.match(/github\.com\/[^/]+\/[^/]+\/tree\/[^/]+\/(.+)/);
|
|
92
|
+
return match ? match[1] : '';
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Extract repo name from GitHub URL
|
|
96
|
+
*/
|
|
97
|
+
function extractRepoName(url) {
|
|
98
|
+
const match = url.match(/github\.com\/[^/]+\/([^/]+)/);
|
|
99
|
+
return match ? match[1] : '';
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Extract owner from GitHub URL
|
|
103
|
+
*/
|
|
104
|
+
function extractOwner(url) {
|
|
105
|
+
const match = url.match(/github\.com\/([^/]+)/);
|
|
106
|
+
return match ? match[1] : '';
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Extract branch from GitHub URL
|
|
110
|
+
*/
|
|
111
|
+
function extractBranch(url) {
|
|
112
|
+
const match = url.match(/github\.com\/[^/]+\/[^/]+\/tree\/([^/]+)/);
|
|
113
|
+
return match ? match[1] : 'main';
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Install a skill directly from a GitHub URL
|
|
117
|
+
*/
|
|
118
|
+
export async function installFromGitHubUrl(githubUrl, installDir) {
|
|
119
|
+
const owner = extractOwner(githubUrl);
|
|
120
|
+
const repo = extractRepoName(githubUrl);
|
|
121
|
+
const branch = extractBranch(githubUrl);
|
|
122
|
+
const skillPath = extractGitHubPath(githubUrl);
|
|
123
|
+
if (!owner || !repo || !skillPath) {
|
|
124
|
+
throw new Error(`Invalid GitHub URL: ${githubUrl}`);
|
|
125
|
+
}
|
|
126
|
+
// Get skill name from path (last segment)
|
|
127
|
+
const skillName = skillPath.split('/').pop() || 'skill';
|
|
128
|
+
const destPath = `${installDir}/${skillName}`;
|
|
129
|
+
// Fetch SKILL.md content
|
|
130
|
+
const skillMdUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${skillPath}/SKILL.md`;
|
|
131
|
+
const response = await fetch(skillMdUrl);
|
|
132
|
+
if (!response.ok) {
|
|
133
|
+
throw new Error(`Could not fetch SKILL.md from ${skillMdUrl}`);
|
|
134
|
+
}
|
|
135
|
+
const skillContent = await response.text();
|
|
136
|
+
// Create directory and save SKILL.md
|
|
137
|
+
const { mkdir, writeFile } = await import('fs/promises');
|
|
138
|
+
await mkdir(destPath, { recursive: true });
|
|
139
|
+
await writeFile(`${destPath}/SKILL.md`, skillContent);
|
|
140
|
+
return { name: skillName, path: destPath };
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=skillsmp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillsmp.js","sourceRoot":"","sources":["../../src/core/skillsmp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Validator Module
|
|
3
|
+
* Validates skills against the Agent Skills specification
|
|
4
|
+
*/
|
|
5
|
+
import type { SkillMetadata, ValidationResult } from '../types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Validate skill metadata against the Agent Skills specification
|
|
8
|
+
*/
|
|
9
|
+
export declare function validateMetadata(metadata: Partial<SkillMetadata>): ValidationResult;
|
|
10
|
+
/**
|
|
11
|
+
* Validate the body content of a skill
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateBody(body: string): ValidationResult;
|
|
14
|
+
/**
|
|
15
|
+
* Format validation result for display
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatValidationResult(result: ValidationResult, skillName?: string): string;
|
|
18
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/core/validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACR,aAAa,EACb,gBAAgB,EAGnB,MAAM,mBAAmB,CAAC;AAe3B;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAkGnF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAqC3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,gBAAgB,EACxB,SAAS,CAAC,EAAE,MAAM,GACnB,MAAM,CA6BR"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Validator Module
|
|
3
|
+
* Validates skills against the Agent Skills specification
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Reserved words that cannot be used in skill names
|
|
7
|
+
*/
|
|
8
|
+
const RESERVED_WORDS = ['anthropic', 'claude', 'google', 'openai'];
|
|
9
|
+
/**
|
|
10
|
+
* Regex pattern for valid skill names
|
|
11
|
+
* - Lowercase letters, numbers, and hyphens only
|
|
12
|
+
* - Cannot start or end with hyphen
|
|
13
|
+
* - No consecutive hyphens
|
|
14
|
+
*/
|
|
15
|
+
const NAME_PATTERN = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
|
|
16
|
+
/**
|
|
17
|
+
* Validate skill metadata against the Agent Skills specification
|
|
18
|
+
*/
|
|
19
|
+
export function validateMetadata(metadata) {
|
|
20
|
+
const errors = [];
|
|
21
|
+
const warnings = [];
|
|
22
|
+
// Validate name (required)
|
|
23
|
+
if (!metadata.name) {
|
|
24
|
+
errors.push({
|
|
25
|
+
field: 'name',
|
|
26
|
+
message: 'Name is required'
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Check length
|
|
31
|
+
if (metadata.name.length > 64) {
|
|
32
|
+
errors.push({
|
|
33
|
+
field: 'name',
|
|
34
|
+
message: 'Name must be 64 characters or less',
|
|
35
|
+
value: metadata.name.length
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
// Check pattern
|
|
39
|
+
if (!NAME_PATTERN.test(metadata.name)) {
|
|
40
|
+
errors.push({
|
|
41
|
+
field: 'name',
|
|
42
|
+
message: 'Name must contain only lowercase letters, numbers, and hyphens. Cannot start/end with hyphen or have consecutive hyphens.',
|
|
43
|
+
value: metadata.name
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
// Check reserved words
|
|
47
|
+
for (const word of RESERVED_WORDS) {
|
|
48
|
+
if (metadata.name.toLowerCase().includes(word)) {
|
|
49
|
+
errors.push({
|
|
50
|
+
field: 'name',
|
|
51
|
+
message: `Name cannot contain reserved word: ${word}`,
|
|
52
|
+
value: metadata.name
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Check for XML tags
|
|
57
|
+
if (/<[^>]+>/.test(metadata.name)) {
|
|
58
|
+
errors.push({
|
|
59
|
+
field: 'name',
|
|
60
|
+
message: 'Name cannot contain XML tags',
|
|
61
|
+
value: metadata.name
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Validate description (required)
|
|
66
|
+
if (!metadata.description) {
|
|
67
|
+
errors.push({
|
|
68
|
+
field: 'description',
|
|
69
|
+
message: 'Description is required'
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Check length
|
|
74
|
+
if (metadata.description.length > 1024) {
|
|
75
|
+
errors.push({
|
|
76
|
+
field: 'description',
|
|
77
|
+
message: 'Description must be 1024 characters or less',
|
|
78
|
+
value: metadata.description.length
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// Check for XML tags
|
|
82
|
+
if (/<[^>]+>/.test(metadata.description)) {
|
|
83
|
+
errors.push({
|
|
84
|
+
field: 'description',
|
|
85
|
+
message: 'Description cannot contain XML tags'
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
// Warn if description is too short
|
|
89
|
+
if (metadata.description.length < 50) {
|
|
90
|
+
warnings.push({
|
|
91
|
+
field: 'description',
|
|
92
|
+
message: 'Description is short. Consider adding more detail about when to use this skill.',
|
|
93
|
+
value: metadata.description.length
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Validate optional compatibility field
|
|
98
|
+
if (metadata.compatibility && metadata.compatibility.length > 500) {
|
|
99
|
+
errors.push({
|
|
100
|
+
field: 'compatibility',
|
|
101
|
+
message: 'Compatibility must be 500 characters or less',
|
|
102
|
+
value: metadata.compatibility.length
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
valid: errors.length === 0,
|
|
107
|
+
errors,
|
|
108
|
+
warnings
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Validate the body content of a skill
|
|
113
|
+
*/
|
|
114
|
+
export function validateBody(body) {
|
|
115
|
+
const errors = [];
|
|
116
|
+
const warnings = [];
|
|
117
|
+
// Check if body is empty
|
|
118
|
+
if (!body || body.trim().length === 0) {
|
|
119
|
+
warnings.push({
|
|
120
|
+
field: 'body',
|
|
121
|
+
message: 'Skill body is empty. Consider adding instructions.'
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// Count lines
|
|
125
|
+
const lineCount = body.split('\n').length;
|
|
126
|
+
if (lineCount > 500) {
|
|
127
|
+
warnings.push({
|
|
128
|
+
field: 'body',
|
|
129
|
+
message: `Skill body has ${lineCount} lines. Consider using progressive disclosure (splitting into separate files) for optimal performance.`,
|
|
130
|
+
value: lineCount
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
// Estimate tokens (rough: ~4 chars per token)
|
|
134
|
+
const estimatedTokens = Math.ceil(body.length / 4);
|
|
135
|
+
if (estimatedTokens > 5000) {
|
|
136
|
+
warnings.push({
|
|
137
|
+
field: 'body',
|
|
138
|
+
message: `Skill body is large (~${estimatedTokens} tokens). This may consume significant context when activated.`,
|
|
139
|
+
value: estimatedTokens
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
valid: errors.length === 0,
|
|
144
|
+
errors,
|
|
145
|
+
warnings
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Format validation result for display
|
|
150
|
+
*/
|
|
151
|
+
export function formatValidationResult(result, skillName) {
|
|
152
|
+
const lines = [];
|
|
153
|
+
if (skillName) {
|
|
154
|
+
lines.push(`Validation result for: ${skillName}`);
|
|
155
|
+
lines.push('─'.repeat(40));
|
|
156
|
+
}
|
|
157
|
+
if (result.valid) {
|
|
158
|
+
lines.push('✓ Valid');
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
lines.push('✗ Invalid');
|
|
162
|
+
}
|
|
163
|
+
if (result.errors.length > 0) {
|
|
164
|
+
lines.push('\nErrors:');
|
|
165
|
+
for (const error of result.errors) {
|
|
166
|
+
lines.push(` ✗ ${error.field}: ${error.message}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (result.warnings.length > 0) {
|
|
170
|
+
lines.push('\nWarnings:');
|
|
171
|
+
for (const warning of result.warnings) {
|
|
172
|
+
lines.push(` ⚠ ${warning.field}: ${warning.message}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return lines.join('\n');
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/core/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Skills Type Definitions
|
|
3
|
+
* Based on the open Agent Skills specification (agentskills.io)
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Skill metadata extracted from YAML frontmatter
|
|
7
|
+
*/
|
|
8
|
+
export interface SkillMetadata {
|
|
9
|
+
/** Unique skill identifier (lowercase, hyphens only, 1-64 chars) */
|
|
10
|
+
name: string;
|
|
11
|
+
/** Description of what the skill does and when to use it (1-1024 chars) */
|
|
12
|
+
description: string;
|
|
13
|
+
/** Optional license information */
|
|
14
|
+
license?: string;
|
|
15
|
+
/** Optional compatibility requirements */
|
|
16
|
+
compatibility?: string;
|
|
17
|
+
/** Optional custom key-value metadata */
|
|
18
|
+
metadata?: Record<string, string>;
|
|
19
|
+
/** Optional space-delimited list of allowed tools */
|
|
20
|
+
allowedTools?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Full skill representation including content and path
|
|
24
|
+
*/
|
|
25
|
+
export interface Skill {
|
|
26
|
+
/** Skill metadata from frontmatter */
|
|
27
|
+
metadata: SkillMetadata;
|
|
28
|
+
/** Full markdown body content (instructions) */
|
|
29
|
+
body: string;
|
|
30
|
+
/** Absolute path to the skill directory */
|
|
31
|
+
path: string;
|
|
32
|
+
/** Path to SKILL.md file */
|
|
33
|
+
skillMdPath: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Lightweight skill reference for discovery/indexing
|
|
37
|
+
*/
|
|
38
|
+
export interface SkillRef {
|
|
39
|
+
name: string;
|
|
40
|
+
description: string;
|
|
41
|
+
path: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Validation result for a skill
|
|
45
|
+
*/
|
|
46
|
+
export interface ValidationResult {
|
|
47
|
+
valid: boolean;
|
|
48
|
+
errors: ValidationError[];
|
|
49
|
+
warnings: ValidationWarning[];
|
|
50
|
+
}
|
|
51
|
+
export interface ValidationError {
|
|
52
|
+
field: string;
|
|
53
|
+
message: string;
|
|
54
|
+
value?: unknown;
|
|
55
|
+
}
|
|
56
|
+
export interface ValidationWarning {
|
|
57
|
+
field: string;
|
|
58
|
+
message: string;
|
|
59
|
+
value?: unknown;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Configuration for skill discovery
|
|
63
|
+
*/
|
|
64
|
+
export interface SkillDiscoveryConfig {
|
|
65
|
+
/** Directories to search for skills */
|
|
66
|
+
searchPaths: string[];
|
|
67
|
+
/** Whether to search recursively (default: true) */
|
|
68
|
+
recursive?: boolean;
|
|
69
|
+
/** Maximum depth for recursive search (default: 3) */
|
|
70
|
+
maxDepth?: number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* XML prompt format for system prompt injection
|
|
74
|
+
*/
|
|
75
|
+
export interface SkillPromptXML {
|
|
76
|
+
/** The XML string to inject into system prompt */
|
|
77
|
+
xml: string;
|
|
78
|
+
/** Number of skills included */
|
|
79
|
+
skillCount: number;
|
|
80
|
+
/** Estimated token count */
|
|
81
|
+
estimatedTokens: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Script execution options
|
|
85
|
+
*/
|
|
86
|
+
export interface ScriptExecutionOptions {
|
|
87
|
+
/** Working directory for script execution */
|
|
88
|
+
cwd?: string;
|
|
89
|
+
/** Environment variables */
|
|
90
|
+
env?: Record<string, string>;
|
|
91
|
+
/** Timeout in milliseconds */
|
|
92
|
+
timeout?: number;
|
|
93
|
+
/** Whether to capture output */
|
|
94
|
+
captureOutput?: boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Script execution result
|
|
98
|
+
*/
|
|
99
|
+
export interface ScriptResult {
|
|
100
|
+
success: boolean;
|
|
101
|
+
exitCode: number;
|
|
102
|
+
stdout: string;
|
|
103
|
+
stderr: string;
|
|
104
|
+
executionTime: number;
|
|
105
|
+
}
|
|
106
|
+
export type { MarketplaceSource, MarketplaceSkill, InstalledSkill, MarketplaceConfig } from './marketplace.js';
|
|
107
|
+
export { DEFAULT_MARKETPLACES } from './marketplace.js';
|
|
108
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IAEb,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IAEpB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IAClB,sCAAsC;IACtC,QAAQ,EAAE,aAAa,CAAC;IAExB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IAEb,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IAEb,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,uCAAuC;IACvC,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IAEZ,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACzB;AAGD,YAAY,EACR,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace Types
|
|
3
|
+
* Types for skill marketplace integration
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* A marketplace source (GitHub repository)
|
|
7
|
+
*/
|
|
8
|
+
export interface MarketplaceSource {
|
|
9
|
+
/** Unique identifier for the marketplace */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Display name */
|
|
12
|
+
name: string;
|
|
13
|
+
/** GitHub owner (user or org) */
|
|
14
|
+
owner: string;
|
|
15
|
+
/** GitHub repository name */
|
|
16
|
+
repo: string;
|
|
17
|
+
/** Branch to use (default: main) */
|
|
18
|
+
branch?: string;
|
|
19
|
+
/** Path to skills directory within repo */
|
|
20
|
+
skillsPath?: string;
|
|
21
|
+
/** Optional description */
|
|
22
|
+
description?: string;
|
|
23
|
+
/** Whether this is an official/verified source */
|
|
24
|
+
verified?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A skill available in a marketplace
|
|
28
|
+
*/
|
|
29
|
+
export interface MarketplaceSkill {
|
|
30
|
+
/** Skill name */
|
|
31
|
+
name: string;
|
|
32
|
+
/** Skill description */
|
|
33
|
+
description: string;
|
|
34
|
+
/** Path within the marketplace repo */
|
|
35
|
+
path: string;
|
|
36
|
+
/** Source marketplace */
|
|
37
|
+
source: MarketplaceSource;
|
|
38
|
+
/** License if known */
|
|
39
|
+
license?: string;
|
|
40
|
+
/** Author if known */
|
|
41
|
+
author?: string;
|
|
42
|
+
/** Version if known */
|
|
43
|
+
version?: string;
|
|
44
|
+
/** Tags/categories */
|
|
45
|
+
tags?: string[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Installed skill metadata (tracks source)
|
|
49
|
+
*/
|
|
50
|
+
export interface InstalledSkill {
|
|
51
|
+
/** Skill name */
|
|
52
|
+
name: string;
|
|
53
|
+
/** Local installation path */
|
|
54
|
+
localPath: string;
|
|
55
|
+
/** Source marketplace (if installed from marketplace) */
|
|
56
|
+
source?: MarketplaceSource;
|
|
57
|
+
/** Remote path in marketplace */
|
|
58
|
+
remotePath?: string;
|
|
59
|
+
/** Installed version */
|
|
60
|
+
version?: string;
|
|
61
|
+
/** Installation timestamp */
|
|
62
|
+
installedAt: string;
|
|
63
|
+
/** Last update check */
|
|
64
|
+
lastChecked?: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Marketplace configuration
|
|
68
|
+
*/
|
|
69
|
+
export interface MarketplaceConfig {
|
|
70
|
+
/** Registered marketplace sources */
|
|
71
|
+
sources: MarketplaceSource[];
|
|
72
|
+
/** Installed skills tracking */
|
|
73
|
+
installed: InstalledSkill[];
|
|
74
|
+
/** Default installation directory */
|
|
75
|
+
installDir: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Default marketplace sources
|
|
79
|
+
*/
|
|
80
|
+
export declare const DEFAULT_MARKETPLACES: MarketplaceSource[];
|
|
81
|
+
//# sourceMappingURL=marketplace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/types/marketplace.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IAEX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IAEd,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IAEb,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IAEb,yBAAyB;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAE1B,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAElB,yDAAyD;IACzD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAE3B,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEpB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,qCAAqC;IACrC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAE7B,gCAAgC;IAChC,SAAS,EAAE,cAAc,EAAE,CAAC;IAE5B,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAWnD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace Types
|
|
3
|
+
* Types for skill marketplace integration
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Default marketplace sources
|
|
7
|
+
*/
|
|
8
|
+
export const DEFAULT_MARKETPLACES = [
|
|
9
|
+
{
|
|
10
|
+
id: 'anthropic-skills',
|
|
11
|
+
name: 'Anthropic Official Skills',
|
|
12
|
+
owner: 'anthropics',
|
|
13
|
+
repo: 'skills',
|
|
14
|
+
branch: 'main',
|
|
15
|
+
skillsPath: 'skills',
|
|
16
|
+
description: 'Official Agent Skills from Anthropic',
|
|
17
|
+
verified: true
|
|
18
|
+
}
|
|
19
|
+
];
|
|
20
|
+
//# sourceMappingURL=marketplace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/types/marketplace.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoGH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB;IACrD;QACI,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,IAAI;KACjB;CACJ,CAAC"}
|