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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -0
  3. package/dist/cli/index.d.ts +7 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +1181 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/core/executor.d.ts +22 -0
  8. package/dist/core/executor.d.ts.map +1 -0
  9. package/dist/core/executor.js +147 -0
  10. package/dist/core/executor.js.map +1 -0
  11. package/dist/core/index.d.ts +12 -0
  12. package/dist/core/index.d.ts.map +1 -0
  13. package/dist/core/index.js +17 -0
  14. package/dist/core/index.js.map +1 -0
  15. package/dist/core/injector.d.ts +24 -0
  16. package/dist/core/injector.d.ts.map +1 -0
  17. package/dist/core/injector.js +99 -0
  18. package/dist/core/injector.js.map +1 -0
  19. package/dist/core/loader.d.ts +39 -0
  20. package/dist/core/loader.d.ts.map +1 -0
  21. package/dist/core/loader.js +161 -0
  22. package/dist/core/loader.js.map +1 -0
  23. package/dist/core/marketplace.d.ts +55 -0
  24. package/dist/core/marketplace.d.ts.map +1 -0
  25. package/dist/core/marketplace.js +399 -0
  26. package/dist/core/marketplace.js.map +1 -0
  27. package/dist/core/skillsmp.d.ts +38 -0
  28. package/dist/core/skillsmp.d.ts.map +1 -0
  29. package/dist/core/skillsmp.js +142 -0
  30. package/dist/core/skillsmp.js.map +1 -0
  31. package/dist/core/validator.d.ts +18 -0
  32. package/dist/core/validator.d.ts.map +1 -0
  33. package/dist/core/validator.js +177 -0
  34. package/dist/core/validator.js.map +1 -0
  35. package/dist/index.d.ts +5 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +5 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/types/index.d.ts +108 -0
  40. package/dist/types/index.d.ts.map +1 -0
  41. package/dist/types/index.js +6 -0
  42. package/dist/types/index.js.map +1 -0
  43. package/dist/types/marketplace.d.ts +81 -0
  44. package/dist/types/marketplace.d.ts.map +1 -0
  45. package/dist/types/marketplace.js +20 -0
  46. package/dist/types/marketplace.js.map +1 -0
  47. 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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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Antigravity Skills - Main Entry Point
3
+ */
4
+ export * from './core/index.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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,5 @@
1
+ /**
2
+ * Antigravity Skills - Main Entry Point
3
+ */
4
+ export * from './core/index.js';
5
+ //# sourceMappingURL=index.js.map
@@ -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,6 @@
1
+ /**
2
+ * Agent Skills Type Definitions
3
+ * Based on the open Agent Skills specification (agentskills.io)
4
+ */
5
+ export { DEFAULT_MARKETPLACES } from './marketplace.js';
6
+ //# sourceMappingURL=index.js.map
@@ -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"}