skillstore 0.0.1 → 0.1.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/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +21 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/install.d.ts +35 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +272 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/plugin/index.d.ts +3 -0
- package/dist/commands/plugin/index.d.ts.map +1 -0
- package/dist/commands/plugin/index.js +13 -0
- package/dist/commands/plugin/index.js.map +1 -0
- package/dist/commands/plugin/info.d.ts +9 -0
- package/dist/commands/plugin/info.d.ts.map +1 -0
- package/dist/commands/plugin/info.js +75 -0
- package/dist/commands/plugin/info.js.map +1 -0
- package/dist/commands/plugin/install.d.ts +29 -0
- package/dist/commands/plugin/install.d.ts.map +1 -0
- package/dist/commands/plugin/install.js +140 -0
- package/dist/commands/plugin/install.js.map +1 -0
- package/dist/commands/plugin/list.d.ts +22 -0
- package/dist/commands/plugin/list.d.ts.map +1 -0
- package/dist/commands/plugin/list.js +76 -0
- package/dist/commands/plugin/list.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/plugin-api.d.ts +155 -0
- package/dist/lib/plugin-api.d.ts.map +1 -0
- package/dist/lib/plugin-api.js +173 -0
- package/dist/lib/plugin-api.js.map +1 -0
- package/dist/lib/plugin-config.d.ts +56 -0
- package/dist/lib/plugin-config.d.ts.map +1 -0
- package/dist/lib/plugin-config.js +64 -0
- package/dist/lib/plugin-config.js.map +1 -0
- package/dist/lib/plugin-download.d.ts +36 -0
- package/dist/lib/plugin-download.d.ts.map +1 -0
- package/dist/lib/plugin-download.js +134 -0
- package/dist/lib/plugin-download.js.map +1 -0
- package/dist/lib/plugin-logger.d.ts +79 -0
- package/dist/lib/plugin-logger.d.ts.map +1 -0
- package/dist/lib/plugin-logger.js +173 -0
- package/dist/lib/plugin-logger.js.map +1 -0
- package/dist/lib/plugin-verify.d.ts +36 -0
- package/dist/lib/plugin-verify.d.ts.map +1 -0
- package/dist/lib/plugin-verify.js +103 -0
- package/dist/lib/plugin-verify.js.map +1 -0
- package/dist/lib/skill-api.d.ts +33 -0
- package/dist/lib/skill-api.d.ts.map +1 -0
- package/dist/lib/skill-api.js +64 -0
- package/dist/lib/skill-api.js.map +1 -0
- package/package.json +56 -17
- package/src/index.js +0 -16
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/plugin/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
declare const _default: import("citty").CommandDef<{
|
|
2
|
+
type: {
|
|
3
|
+
type: "string";
|
|
4
|
+
description: string;
|
|
5
|
+
};
|
|
6
|
+
pricing: {
|
|
7
|
+
type: "string";
|
|
8
|
+
description: string;
|
|
9
|
+
};
|
|
10
|
+
limit: {
|
|
11
|
+
type: "string";
|
|
12
|
+
description: string;
|
|
13
|
+
default: string;
|
|
14
|
+
};
|
|
15
|
+
page: {
|
|
16
|
+
type: "string";
|
|
17
|
+
description: string;
|
|
18
|
+
default: string;
|
|
19
|
+
};
|
|
20
|
+
}>;
|
|
21
|
+
export default _default;
|
|
22
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/list.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAKA,wBA8EG"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { defineCommand } from 'citty';
|
|
2
|
+
import { getPluginConfig } from '../../lib/plugin-config.js';
|
|
3
|
+
import { fetchPluginList, PluginApiError } from '../../lib/plugin-api.js';
|
|
4
|
+
import { logger } from '../../lib/plugin-logger.js';
|
|
5
|
+
export default defineCommand({
|
|
6
|
+
meta: {
|
|
7
|
+
name: 'list',
|
|
8
|
+
description: 'List available plugins from skillstore.io',
|
|
9
|
+
},
|
|
10
|
+
args: {
|
|
11
|
+
type: {
|
|
12
|
+
type: 'string',
|
|
13
|
+
description: 'Filter by type: curated, scenario, or user',
|
|
14
|
+
},
|
|
15
|
+
pricing: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
description: 'Filter by pricing: free or paid',
|
|
18
|
+
},
|
|
19
|
+
limit: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Number of plugins to show',
|
|
22
|
+
default: '10',
|
|
23
|
+
},
|
|
24
|
+
page: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Page number for pagination',
|
|
27
|
+
default: '1',
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
async run({ args }) {
|
|
31
|
+
const { type, pricing, limit, page } = args;
|
|
32
|
+
const config = getPluginConfig();
|
|
33
|
+
logger.startSpinner('Fetching plugins...');
|
|
34
|
+
try {
|
|
35
|
+
const response = await fetchPluginList(config, {
|
|
36
|
+
type: type,
|
|
37
|
+
pricing: pricing,
|
|
38
|
+
limit: parseInt(limit, 10),
|
|
39
|
+
page: parseInt(page, 10),
|
|
40
|
+
});
|
|
41
|
+
logger.stopSpinner();
|
|
42
|
+
if (response.data.length === 0) {
|
|
43
|
+
logger.warn('No plugins found');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
console.log('');
|
|
47
|
+
console.log(`Showing ${response.data.length} of ${response.pagination.total} plugins (page ${response.pagination.page}/${response.pagination.totalPages})`);
|
|
48
|
+
console.log('');
|
|
49
|
+
for (const plugin of response.data) {
|
|
50
|
+
const pricingBadge = plugin.pricing === 'paid' ? ' [PAID]' : '';
|
|
51
|
+
const typeBadge = `[${plugin.pluginType.toUpperCase()}]`;
|
|
52
|
+
console.log(` ${plugin.name} ${typeBadge}${pricingBadge}`);
|
|
53
|
+
console.log(` Slug: ${plugin.slug}`);
|
|
54
|
+
console.log(` Skills: ${plugin.skillCount} | Installs: ${plugin.installCount}`);
|
|
55
|
+
if (plugin.description) {
|
|
56
|
+
console.log(` ${plugin.description.substring(0, 80)}${plugin.description.length > 80 ? '...' : ''}`);
|
|
57
|
+
}
|
|
58
|
+
console.log('');
|
|
59
|
+
}
|
|
60
|
+
if (response.pagination.page < response.pagination.totalPages) {
|
|
61
|
+
console.log(`Use --page ${response.pagination.page + 1} to see more`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
logger.stopSpinner();
|
|
66
|
+
if (err instanceof PluginApiError) {
|
|
67
|
+
logger.error(`API error: ${err.message}`);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
logger.error('Failed to fetch plugin list', err instanceof Error ? err : undefined);
|
|
71
|
+
}
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/plugin/list.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skillstore SDK
|
|
3
|
+
*
|
|
4
|
+
* AI Skills marketplace for Claude Code
|
|
5
|
+
*/
|
|
6
|
+
export { fetchManifest, fetchPluginInfo, fetchPluginList, downloadSkill, reportInstallation, PluginApiError, type PluginManifest, type ManifestSkill, type PluginInfo, type PluginListItem, type PluginListResponse, type InstallReportResponse, } from './lib/plugin-api.js';
|
|
7
|
+
export { fetchSkillInfo, downloadSkillZip, SkillApiError, type SkillInfo, } from './lib/skill-api.js';
|
|
8
|
+
export { getPluginConfig, type PluginConfig, DEFAULT_INSTALL_DIR, API_BASE_URL, } from './lib/plugin-config.js';
|
|
9
|
+
export { verifyManifest, verifyContentHash, type VerifyResult, } from './lib/plugin-verify.js';
|
|
10
|
+
export { downloadAllSkills, printDownloadSummary, type SkillDownloadResult, type DownloadSummary, } from './lib/plugin-download.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC1B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,KAAK,SAAS,GACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,eAAe,EACf,KAAK,YAAY,EACjB,mBAAmB,EACnB,YAAY,GACZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,cAAc,EACd,iBAAiB,EACjB,KAAK,YAAY,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACpB,MAAM,0BAA0B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skillstore SDK
|
|
3
|
+
*
|
|
4
|
+
* AI Skills marketplace for Claude Code
|
|
5
|
+
*/
|
|
6
|
+
// Re-export plugin API for programmatic usage
|
|
7
|
+
export { fetchManifest, fetchPluginInfo, fetchPluginList, downloadSkill, reportInstallation, PluginApiError, } from './lib/plugin-api.js';
|
|
8
|
+
// Re-export skill API for programmatic usage
|
|
9
|
+
export { fetchSkillInfo, downloadSkillZip, SkillApiError, } from './lib/skill-api.js';
|
|
10
|
+
export { getPluginConfig, DEFAULT_INSTALL_DIR, API_BASE_URL, } from './lib/plugin-config.js';
|
|
11
|
+
export { verifyManifest, verifyContentHash, } from './lib/plugin-verify.js';
|
|
12
|
+
export { downloadAllSkills, printDownloadSummary, } from './lib/plugin-download.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8CAA8C;AAC9C,OAAO,EACN,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,cAAc,GAOd,MAAM,qBAAqB,CAAC;AAE7B,6CAA6C;AAC7C,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,aAAa,GAEb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,eAAe,EAEf,mBAAmB,EACnB,YAAY,GACZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,cAAc,EACd,iBAAiB,GAEjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,iBAAiB,EACjB,oBAAoB,GAGpB,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import type { PluginConfig } from './plugin-config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Plugin API Client
|
|
4
|
+
*
|
|
5
|
+
* Handles all HTTP requests to the Skillstore API for plugin operations.
|
|
6
|
+
*/
|
|
7
|
+
/** Manifest skill entry */
|
|
8
|
+
export interface ManifestSkill {
|
|
9
|
+
slug: string;
|
|
10
|
+
name: string;
|
|
11
|
+
contentHash: string;
|
|
12
|
+
downloadUrl: string;
|
|
13
|
+
}
|
|
14
|
+
/** Plugin manifest response */
|
|
15
|
+
export interface PluginManifest {
|
|
16
|
+
version: '1.0';
|
|
17
|
+
plugin: {
|
|
18
|
+
slug: string;
|
|
19
|
+
name: string;
|
|
20
|
+
version: string;
|
|
21
|
+
};
|
|
22
|
+
skills: ManifestSkill[];
|
|
23
|
+
signature: string;
|
|
24
|
+
generatedAt: string;
|
|
25
|
+
}
|
|
26
|
+
/** Plugin info response */
|
|
27
|
+
export interface PluginInfo {
|
|
28
|
+
id: string;
|
|
29
|
+
slug: string;
|
|
30
|
+
name: string;
|
|
31
|
+
description: string | null;
|
|
32
|
+
pluginType: 'curated' | 'scenario' | 'user';
|
|
33
|
+
visibility: 'public' | 'private';
|
|
34
|
+
pricing: 'free' | 'paid';
|
|
35
|
+
skillCount: number;
|
|
36
|
+
installCount: number;
|
|
37
|
+
priceCents: number;
|
|
38
|
+
currency: string;
|
|
39
|
+
scenarioTags: string[] | null;
|
|
40
|
+
skills: Array<{
|
|
41
|
+
slug: string;
|
|
42
|
+
name: string;
|
|
43
|
+
description: string | null;
|
|
44
|
+
category: string | null;
|
|
45
|
+
riskLevel: string | null;
|
|
46
|
+
qualityScore: number | null;
|
|
47
|
+
}>;
|
|
48
|
+
}
|
|
49
|
+
/** Plugin list item */
|
|
50
|
+
export interface PluginListItem {
|
|
51
|
+
id: string;
|
|
52
|
+
slug: string;
|
|
53
|
+
name: string;
|
|
54
|
+
description: string | null;
|
|
55
|
+
pluginType: 'curated' | 'scenario' | 'user';
|
|
56
|
+
visibility: 'public' | 'private';
|
|
57
|
+
pricing: 'free' | 'paid';
|
|
58
|
+
skillCount: number;
|
|
59
|
+
installCount: number;
|
|
60
|
+
score: number | null;
|
|
61
|
+
}
|
|
62
|
+
/** Plugin list response */
|
|
63
|
+
export interface PluginListResponse {
|
|
64
|
+
data: PluginListItem[];
|
|
65
|
+
pagination: {
|
|
66
|
+
page: number;
|
|
67
|
+
limit: number;
|
|
68
|
+
total: number;
|
|
69
|
+
totalPages: number;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/** Install response */
|
|
73
|
+
export interface InstallReportResponse {
|
|
74
|
+
success: boolean;
|
|
75
|
+
installationId?: string;
|
|
76
|
+
message?: string;
|
|
77
|
+
duplicate?: boolean;
|
|
78
|
+
error?: string;
|
|
79
|
+
}
|
|
80
|
+
/** API Error */
|
|
81
|
+
export declare class PluginApiError extends Error {
|
|
82
|
+
statusCode: number;
|
|
83
|
+
code?: string | undefined;
|
|
84
|
+
constructor(message: string, statusCode: number, code?: string | undefined);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Fetch plugin manifest for installation
|
|
88
|
+
*/
|
|
89
|
+
export declare function fetchManifest(config: PluginConfig, pluginSlug: string): Promise<PluginManifest>;
|
|
90
|
+
/**
|
|
91
|
+
* Fetch plugin info/details
|
|
92
|
+
*/
|
|
93
|
+
export declare function fetchPluginInfo(config: PluginConfig, pluginSlug: string): Promise<PluginInfo>;
|
|
94
|
+
/**
|
|
95
|
+
* Fetch plugin list
|
|
96
|
+
*/
|
|
97
|
+
export declare function fetchPluginList(config: PluginConfig, options?: {
|
|
98
|
+
type?: 'curated' | 'scenario' | 'user';
|
|
99
|
+
pricing?: 'free' | 'paid';
|
|
100
|
+
limit?: number;
|
|
101
|
+
page?: number;
|
|
102
|
+
}): Promise<PluginListResponse>;
|
|
103
|
+
/**
|
|
104
|
+
* Report installation to the API
|
|
105
|
+
*/
|
|
106
|
+
export declare function reportInstallation(config: PluginConfig, pluginSlug: string, method?: 'npm' | 'manual' | 'cli'): Promise<InstallReportResponse>;
|
|
107
|
+
/**
|
|
108
|
+
* Download skill content from the API
|
|
109
|
+
*/
|
|
110
|
+
export declare function downloadSkill(config: PluginConfig, downloadUrl: string): Promise<string>;
|
|
111
|
+
/**
|
|
112
|
+
* Telemetry event types for effectiveness tracking
|
|
113
|
+
*/
|
|
114
|
+
export type TelemetryEventType = 'invocation' | 'completion' | 'error' | 'feedback';
|
|
115
|
+
/**
|
|
116
|
+
* Telemetry event payload
|
|
117
|
+
*/
|
|
118
|
+
export interface TelemetryEvent {
|
|
119
|
+
skill_slug: string;
|
|
120
|
+
event_type: TelemetryEventType;
|
|
121
|
+
session_id?: string;
|
|
122
|
+
client_id?: string;
|
|
123
|
+
success?: boolean;
|
|
124
|
+
iteration_count?: number;
|
|
125
|
+
duration_ms?: number;
|
|
126
|
+
error_type?: string;
|
|
127
|
+
error_message?: string;
|
|
128
|
+
user_rating?: number;
|
|
129
|
+
feedback_type?: 'thumbs_up' | 'thumbs_down' | 'star_rating';
|
|
130
|
+
tool_name?: 'claude_code' | 'codex' | 'claude' | 'other';
|
|
131
|
+
tool_version?: string;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Telemetry response
|
|
135
|
+
*/
|
|
136
|
+
export interface TelemetryResponse {
|
|
137
|
+
success: boolean;
|
|
138
|
+
event_id?: string;
|
|
139
|
+
message?: string;
|
|
140
|
+
error?: string;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Report skill telemetry event (effectiveness tracking)
|
|
144
|
+
*
|
|
145
|
+
* Used to track skill usage for quality scoring.
|
|
146
|
+
* Non-blocking - failures don't interrupt normal operation.
|
|
147
|
+
*/
|
|
148
|
+
export declare function reportSkillTelemetry(config: PluginConfig, event: TelemetryEvent): Promise<TelemetryResponse>;
|
|
149
|
+
/**
|
|
150
|
+
* Report skill installation event
|
|
151
|
+
*
|
|
152
|
+
* Tracks when a skill is installed via CLI.
|
|
153
|
+
*/
|
|
154
|
+
export declare function reportSkillInstall(config: PluginConfig, skillSlug: string, toolName?: 'claude_code' | 'codex' | 'claude' | 'other'): Promise<TelemetryResponse>;
|
|
155
|
+
//# sourceMappingURL=plugin-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-api.d.ts","sourceRoot":"","sources":["../../src/lib/plugin-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { getManifestUrl, getInstallUrl, getPluginInfoUrl, getPluginListUrl, getTelemetryUrl, } from './plugin-config.js';
|
|
2
|
+
/** API Error */
|
|
3
|
+
export class PluginApiError extends Error {
|
|
4
|
+
statusCode;
|
|
5
|
+
code;
|
|
6
|
+
constructor(message, statusCode, code) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.statusCode = statusCode;
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.name = 'PluginApiError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Fetch plugin manifest for installation
|
|
15
|
+
*/
|
|
16
|
+
export async function fetchManifest(config, pluginSlug) {
|
|
17
|
+
const url = getManifestUrl(config, pluginSlug);
|
|
18
|
+
const response = await fetch(url, {
|
|
19
|
+
method: 'GET',
|
|
20
|
+
headers: {
|
|
21
|
+
Accept: 'application/json',
|
|
22
|
+
},
|
|
23
|
+
signal: AbortSignal.timeout(config.timeout),
|
|
24
|
+
});
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
const errorText = await response.text().catch(() => 'Unknown error');
|
|
27
|
+
let errorData = {};
|
|
28
|
+
try {
|
|
29
|
+
errorData = JSON.parse(errorText);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// Not JSON
|
|
33
|
+
}
|
|
34
|
+
throw new PluginApiError(errorData.error || `Failed to fetch manifest: ${response.statusText}`, response.status, errorData.code);
|
|
35
|
+
}
|
|
36
|
+
const manifest = (await response.json());
|
|
37
|
+
return manifest;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Fetch plugin info/details
|
|
41
|
+
*/
|
|
42
|
+
export async function fetchPluginInfo(config, pluginSlug) {
|
|
43
|
+
const url = getPluginInfoUrl(config, pluginSlug);
|
|
44
|
+
const response = await fetch(url, {
|
|
45
|
+
method: 'GET',
|
|
46
|
+
headers: {
|
|
47
|
+
Accept: 'application/json',
|
|
48
|
+
},
|
|
49
|
+
signal: AbortSignal.timeout(config.timeout),
|
|
50
|
+
});
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
const errorText = await response.text().catch(() => 'Unknown error');
|
|
53
|
+
let errorData = {};
|
|
54
|
+
try {
|
|
55
|
+
errorData = JSON.parse(errorText);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Not JSON
|
|
59
|
+
}
|
|
60
|
+
throw new PluginApiError(errorData.error || `Failed to fetch plugin info: ${response.statusText}`, response.status, errorData.code);
|
|
61
|
+
}
|
|
62
|
+
const result = (await response.json());
|
|
63
|
+
return result.data;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Fetch plugin list
|
|
67
|
+
*/
|
|
68
|
+
export async function fetchPluginList(config, options = {}) {
|
|
69
|
+
const url = new URL(getPluginListUrl(config));
|
|
70
|
+
if (options.type)
|
|
71
|
+
url.searchParams.set('type', options.type);
|
|
72
|
+
if (options.pricing)
|
|
73
|
+
url.searchParams.set('pricing', options.pricing);
|
|
74
|
+
if (options.limit)
|
|
75
|
+
url.searchParams.set('limit', String(options.limit));
|
|
76
|
+
if (options.page)
|
|
77
|
+
url.searchParams.set('page', String(options.page));
|
|
78
|
+
const response = await fetch(url.toString(), {
|
|
79
|
+
method: 'GET',
|
|
80
|
+
headers: {
|
|
81
|
+
Accept: 'application/json',
|
|
82
|
+
},
|
|
83
|
+
signal: AbortSignal.timeout(config.timeout),
|
|
84
|
+
});
|
|
85
|
+
if (!response.ok) {
|
|
86
|
+
throw new PluginApiError(`Failed to fetch plugin list: ${response.statusText}`, response.status);
|
|
87
|
+
}
|
|
88
|
+
return (await response.json());
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Report installation to the API
|
|
92
|
+
*/
|
|
93
|
+
export async function reportInstallation(config, pluginSlug, method = 'cli') {
|
|
94
|
+
const url = getInstallUrl(config, pluginSlug);
|
|
95
|
+
const response = await fetch(url, {
|
|
96
|
+
method: 'POST',
|
|
97
|
+
headers: {
|
|
98
|
+
'Content-Type': 'application/json',
|
|
99
|
+
Accept: 'application/json',
|
|
100
|
+
},
|
|
101
|
+
body: JSON.stringify({ method }),
|
|
102
|
+
signal: AbortSignal.timeout(config.timeout),
|
|
103
|
+
});
|
|
104
|
+
// Accept both success and rate-limited responses
|
|
105
|
+
const result = (await response.json());
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Download skill content from the API
|
|
110
|
+
*/
|
|
111
|
+
export async function downloadSkill(config, downloadUrl) {
|
|
112
|
+
// downloadUrl is relative, construct full URL
|
|
113
|
+
const fullUrl = downloadUrl.startsWith('http')
|
|
114
|
+
? downloadUrl
|
|
115
|
+
: `${config.apiBaseUrl.replace('/api', '')}${downloadUrl}`;
|
|
116
|
+
const response = await fetch(fullUrl, {
|
|
117
|
+
method: 'GET',
|
|
118
|
+
signal: AbortSignal.timeout(config.timeout),
|
|
119
|
+
});
|
|
120
|
+
if (!response.ok) {
|
|
121
|
+
throw new PluginApiError(`Failed to download skill: ${response.statusText}`, response.status);
|
|
122
|
+
}
|
|
123
|
+
return await response.text();
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Report skill telemetry event (effectiveness tracking)
|
|
127
|
+
*
|
|
128
|
+
* Used to track skill usage for quality scoring.
|
|
129
|
+
* Non-blocking - failures don't interrupt normal operation.
|
|
130
|
+
*/
|
|
131
|
+
export async function reportSkillTelemetry(config, event) {
|
|
132
|
+
const url = getTelemetryUrl(config);
|
|
133
|
+
try {
|
|
134
|
+
const response = await fetch(url, {
|
|
135
|
+
method: 'POST',
|
|
136
|
+
headers: {
|
|
137
|
+
'Content-Type': 'application/json',
|
|
138
|
+
Accept: 'application/json',
|
|
139
|
+
},
|
|
140
|
+
body: JSON.stringify(event),
|
|
141
|
+
signal: AbortSignal.timeout(5000), // Short timeout for non-critical telemetry
|
|
142
|
+
});
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
// Non-critical - return error but don't throw
|
|
145
|
+
return {
|
|
146
|
+
success: false,
|
|
147
|
+
error: `HTTP ${response.status}: ${response.statusText}`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return (await response.json());
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
// Non-critical - return error but don't throw
|
|
154
|
+
return {
|
|
155
|
+
success: false,
|
|
156
|
+
error: err instanceof Error ? err.message : 'Unknown error',
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Report skill installation event
|
|
162
|
+
*
|
|
163
|
+
* Tracks when a skill is installed via CLI.
|
|
164
|
+
*/
|
|
165
|
+
export async function reportSkillInstall(config, skillSlug, toolName = 'claude_code') {
|
|
166
|
+
return reportSkillTelemetry(config, {
|
|
167
|
+
skill_slug: skillSlug,
|
|
168
|
+
event_type: 'invocation',
|
|
169
|
+
tool_name: toolName,
|
|
170
|
+
tool_version: '1.0.0', // CLI version
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=plugin-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-api.js","sourceRoot":"","sources":["../../src/lib/plugin-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin CLI Configuration
|
|
3
|
+
*
|
|
4
|
+
* Manages default settings for plugin installation and API access.
|
|
5
|
+
*/
|
|
6
|
+
/** Default installation directory for skills */
|
|
7
|
+
export declare const DEFAULT_INSTALL_DIR = ".claude/skills";
|
|
8
|
+
/** Skillstore API base URL */
|
|
9
|
+
export declare const API_BASE_URL: string;
|
|
10
|
+
/** Request timeout in milliseconds */
|
|
11
|
+
export declare const REQUEST_TIMEOUT = 30000;
|
|
12
|
+
/** Maximum concurrent skill downloads */
|
|
13
|
+
export declare const MAX_CONCURRENT_DOWNLOADS = 5;
|
|
14
|
+
export interface PluginConfig {
|
|
15
|
+
/** Base URL for the Skillstore API */
|
|
16
|
+
apiBaseUrl: string;
|
|
17
|
+
/** Directory to install skills into */
|
|
18
|
+
installDir: string;
|
|
19
|
+
/** Request timeout in milliseconds */
|
|
20
|
+
timeout: number;
|
|
21
|
+
/** Maximum concurrent downloads */
|
|
22
|
+
maxConcurrent: number;
|
|
23
|
+
/** Skip manifest signature verification */
|
|
24
|
+
skipVerify: boolean;
|
|
25
|
+
/** Dry run mode - don't write files */
|
|
26
|
+
dryRun: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get plugin configuration from environment and CLI args
|
|
30
|
+
*/
|
|
31
|
+
export declare function getPluginConfig(options?: Partial<PluginConfig>): PluginConfig;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the full path for a skill within the install directory
|
|
34
|
+
*/
|
|
35
|
+
export declare function getSkillPath(config: PluginConfig, skillSlug: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get the API endpoint for a specific plugin manifest
|
|
38
|
+
*/
|
|
39
|
+
export declare function getManifestUrl(config: PluginConfig, pluginSlug: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Get the API endpoint for recording an installation
|
|
42
|
+
*/
|
|
43
|
+
export declare function getInstallUrl(config: PluginConfig, pluginSlug: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Get the API endpoint for plugin info
|
|
46
|
+
*/
|
|
47
|
+
export declare function getPluginInfoUrl(config: PluginConfig, pluginSlug: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Get the API endpoint for plugin listing
|
|
50
|
+
*/
|
|
51
|
+
export declare function getPluginListUrl(config: PluginConfig): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get the API endpoint for telemetry/effectiveness tracking
|
|
54
|
+
*/
|
|
55
|
+
export declare function getTelemetryUrl(config: PluginConfig): string;
|
|
56
|
+
//# sourceMappingURL=plugin-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-config.d.ts","sourceRoot":"","sources":["../../src/lib/plugin-config.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,gDAAgD;AAChD,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,8BAA8B;AAC9B,eAAO,MAAM,YAAY,QACqC,CAAC;AAE/D,sCAAsC;AACtC,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC,yCAAyC;AACzC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC5B,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,UAAU,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CASjF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE5D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
/**
|
|
3
|
+
* Plugin CLI Configuration
|
|
4
|
+
*
|
|
5
|
+
* Manages default settings for plugin installation and API access.
|
|
6
|
+
*/
|
|
7
|
+
/** Default installation directory for skills */
|
|
8
|
+
export const DEFAULT_INSTALL_DIR = '.claude/skills';
|
|
9
|
+
/** Skillstore API base URL */
|
|
10
|
+
export const API_BASE_URL = process.env.SKILLSTORE_API_URL || 'https://skillstore.io/api';
|
|
11
|
+
/** Request timeout in milliseconds */
|
|
12
|
+
export const REQUEST_TIMEOUT = 30_000;
|
|
13
|
+
/** Maximum concurrent skill downloads */
|
|
14
|
+
export const MAX_CONCURRENT_DOWNLOADS = 5;
|
|
15
|
+
/**
|
|
16
|
+
* Get plugin configuration from environment and CLI args
|
|
17
|
+
*/
|
|
18
|
+
export function getPluginConfig(options = {}) {
|
|
19
|
+
return {
|
|
20
|
+
apiBaseUrl: options.apiBaseUrl || API_BASE_URL,
|
|
21
|
+
installDir: resolve(process.cwd(), options.installDir || DEFAULT_INSTALL_DIR),
|
|
22
|
+
timeout: options.timeout || REQUEST_TIMEOUT,
|
|
23
|
+
maxConcurrent: options.maxConcurrent || MAX_CONCURRENT_DOWNLOADS,
|
|
24
|
+
skipVerify: options.skipVerify || false,
|
|
25
|
+
dryRun: options.dryRun || false,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the full path for a skill within the install directory
|
|
30
|
+
*/
|
|
31
|
+
export function getSkillPath(config, skillSlug) {
|
|
32
|
+
return resolve(config.installDir, skillSlug);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get the API endpoint for a specific plugin manifest
|
|
36
|
+
*/
|
|
37
|
+
export function getManifestUrl(config, pluginSlug) {
|
|
38
|
+
return `${config.apiBaseUrl}/plugins/${pluginSlug}/manifest`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get the API endpoint for recording an installation
|
|
42
|
+
*/
|
|
43
|
+
export function getInstallUrl(config, pluginSlug) {
|
|
44
|
+
return `${config.apiBaseUrl}/plugins/${pluginSlug}/install`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get the API endpoint for plugin info
|
|
48
|
+
*/
|
|
49
|
+
export function getPluginInfoUrl(config, pluginSlug) {
|
|
50
|
+
return `${config.apiBaseUrl}/plugins/${pluginSlug}`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get the API endpoint for plugin listing
|
|
54
|
+
*/
|
|
55
|
+
export function getPluginListUrl(config) {
|
|
56
|
+
return `${config.apiBaseUrl}/plugins`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get the API endpoint for telemetry/effectiveness tracking
|
|
60
|
+
*/
|
|
61
|
+
export function getTelemetryUrl(config) {
|
|
62
|
+
return `${config.apiBaseUrl}/telemetry/effectiveness`;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=plugin-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-config.js","sourceRoot":"","sources":["../../src/lib/plugin-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;GAIG;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAEpD,8BAA8B;AAC9B,MAAM,CAAC,MAAM,YAAY,GACxB,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,2BAA2B,CAAC;AAE/D,sCAAsC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAEtC,yCAAyC;AACzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAiB1C;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAiC,EAAE;IAClE,OAAO;QACN,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,YAAY;QAC9C,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAC;QAC7E,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,eAAe;QAC3C,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,wBAAwB;QAChE,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;QACvC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;KAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAoB,EAAE,SAAiB;IACnE,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB,EAAE,UAAkB;IACtE,OAAO,GAAG,MAAM,CAAC,UAAU,YAAY,UAAU,WAAW,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,UAAkB;IACrE,OAAO,GAAG,MAAM,CAAC,UAAU,YAAY,UAAU,UAAU,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAoB,EAAE,UAAkB;IACxE,OAAO,GAAG,MAAM,CAAC,UAAU,YAAY,UAAU,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACpD,OAAO,GAAG,MAAM,CAAC,UAAU,UAAU,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IACnD,OAAO,GAAG,MAAM,CAAC,UAAU,0BAA0B,CAAC;AACvD,CAAC"}
|