skillscat 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/commands/add.d.ts +11 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/config.d.ts +11 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/info.d.ts +2 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/list.d.ts +8 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/login.d.ts +6 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/logout.d.ts +2 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/publish.d.ts +10 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/remove.d.ts +7 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/search.d.ts +7 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/self-upgrade.d.ts +6 -0
- package/dist/commands/self-upgrade.d.ts.map +1 -0
- package/dist/commands/submit.d.ts +5 -0
- package/dist/commands/submit.d.ts.map +1 -0
- package/dist/commands/unpublish.d.ts +6 -0
- package/dist/commands/unpublish.d.ts.map +1 -0
- package/dist/commands/update.d.ts +7 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3595 -0
- package/dist/utils/agents/agents.d.ts +24 -0
- package/dist/utils/agents/agents.d.ts.map +1 -0
- package/dist/utils/api/registry.d.ts +22 -0
- package/dist/utils/api/registry.d.ts.map +1 -0
- package/dist/utils/api/tracking.d.ts +6 -0
- package/dist/utils/api/tracking.d.ts.map +1 -0
- package/dist/utils/auth/auth.d.ts +105 -0
- package/dist/utils/auth/auth.d.ts.map +1 -0
- package/dist/utils/auth/callback-server.d.ts +21 -0
- package/dist/utils/auth/callback-server.d.ts.map +1 -0
- package/dist/utils/config/config.d.ts +55 -0
- package/dist/utils/config/config.d.ts.map +1 -0
- package/dist/utils/core/errors.d.ts +26 -0
- package/dist/utils/core/errors.d.ts.map +1 -0
- package/dist/utils/core/slug.d.ts +17 -0
- package/dist/utils/core/slug.d.ts.map +1 -0
- package/dist/utils/core/ui.d.ts +11 -0
- package/dist/utils/core/ui.d.ts.map +1 -0
- package/dist/utils/core/verbose.d.ts +29 -0
- package/dist/utils/core/verbose.d.ts.map +1 -0
- package/dist/utils/source/git.d.ts +17 -0
- package/dist/utils/source/git.d.ts.map +1 -0
- package/dist/utils/source/source.d.ts +39 -0
- package/dist/utils/source/source.d.ts.map +1 -0
- package/dist/utils/storage/cache.d.ts +49 -0
- package/dist/utils/storage/cache.d.ts.map +1 -0
- package/dist/utils/storage/db.d.ts +48 -0
- package/dist/utils/storage/db.d.ts.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface Agent {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
projectPath: string;
|
|
5
|
+
globalPath: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const AGENTS: Agent[];
|
|
8
|
+
/**
|
|
9
|
+
* Detect which agents are installed by checking for their config directories
|
|
10
|
+
*/
|
|
11
|
+
export declare function detectInstalledAgents(): Agent[];
|
|
12
|
+
/**
|
|
13
|
+
* Get agent by ID
|
|
14
|
+
*/
|
|
15
|
+
export declare function getAgentById(id: string): Agent | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Get agents by IDs
|
|
18
|
+
*/
|
|
19
|
+
export declare function getAgentsByIds(ids: string[]): Agent[];
|
|
20
|
+
/**
|
|
21
|
+
* Get skill installation path for an agent
|
|
22
|
+
*/
|
|
23
|
+
export declare function getSkillPath(agent: Agent, skillName: string, global: boolean): string;
|
|
24
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/utils/agents/agents.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAmBD,eAAO,MAAM,MAAM,EAAE,KAAK,EAmHzB,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,KAAK,EAAE,CAM/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAErD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAGrF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface SkillRegistryItem {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
owner: string;
|
|
5
|
+
repo?: string;
|
|
6
|
+
stars: number;
|
|
7
|
+
updatedAt: number;
|
|
8
|
+
categories: string[];
|
|
9
|
+
content: string;
|
|
10
|
+
githubUrl: string;
|
|
11
|
+
visibility?: 'public' | 'private' | 'unlisted';
|
|
12
|
+
slug?: string;
|
|
13
|
+
contentHash?: string;
|
|
14
|
+
skillPath?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface RegistrySearchResult {
|
|
17
|
+
skills: SkillRegistryItem[];
|
|
18
|
+
total: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function fetchSkill(skillIdentifier: string): Promise<SkillRegistryItem | null>;
|
|
21
|
+
export declare function searchSkills(query?: string, category?: string, limit?: number, includePrivate?: boolean): Promise<RegistrySearchResult>;
|
|
22
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/utils/api/registry.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AA4DD,wBAAsB,UAAU,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAkF3F;AAED,wBAAsB,YAAY,CAChC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,SAAK,EACV,cAAc,UAAQ,GACrB,OAAO,CAAC,oBAAoB,CAAC,CA+B/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../../../src/utils/api/tracking.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnE"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export interface AuthConfig {
|
|
2
|
+
accessToken?: string;
|
|
3
|
+
accessTokenExpiresAt?: number;
|
|
4
|
+
refreshToken?: string;
|
|
5
|
+
refreshTokenExpiresAt?: number;
|
|
6
|
+
user?: {
|
|
7
|
+
id: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
email?: string;
|
|
10
|
+
image?: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare function loadConfig(): AuthConfig;
|
|
14
|
+
export declare function saveConfig(config: AuthConfig): void;
|
|
15
|
+
export declare function clearConfig(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Get the base URL for the API (derived from registry URL)
|
|
18
|
+
*/
|
|
19
|
+
export declare function getBaseUrl(): string;
|
|
20
|
+
/**
|
|
21
|
+
* Get client info for device authorization
|
|
22
|
+
*/
|
|
23
|
+
export declare function getClientInfo(): {
|
|
24
|
+
os: string;
|
|
25
|
+
hostname: string;
|
|
26
|
+
version: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Refresh the access token using the refresh token
|
|
30
|
+
*/
|
|
31
|
+
export declare function refreshAccessToken(refreshToken: string): Promise<{
|
|
32
|
+
accessToken: string;
|
|
33
|
+
accessTokenExpiresAt: number;
|
|
34
|
+
refreshToken?: string;
|
|
35
|
+
refreshTokenExpiresAt?: number;
|
|
36
|
+
} | null>;
|
|
37
|
+
/**
|
|
38
|
+
* Get a valid access token, refreshing if necessary
|
|
39
|
+
*/
|
|
40
|
+
export declare function getValidToken(): Promise<string | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Validate an access token by calling token auth endpoint.
|
|
43
|
+
*/
|
|
44
|
+
export declare function validateAccessToken(token: string): Promise<AuthConfig['user'] | null>;
|
|
45
|
+
/**
|
|
46
|
+
* Set token directly (for --token flag)
|
|
47
|
+
*/
|
|
48
|
+
export declare function setToken(token: string, user?: AuthConfig['user']): void;
|
|
49
|
+
/**
|
|
50
|
+
* Set tokens from device authorization flow
|
|
51
|
+
*/
|
|
52
|
+
export declare function setTokens(tokens: {
|
|
53
|
+
accessToken: string;
|
|
54
|
+
accessTokenExpiresAt: number;
|
|
55
|
+
refreshToken: string;
|
|
56
|
+
refreshTokenExpiresAt: number;
|
|
57
|
+
user: AuthConfig['user'];
|
|
58
|
+
}): void;
|
|
59
|
+
export declare function isAuthenticated(): boolean;
|
|
60
|
+
export declare function getUser(): AuthConfig['user'] | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Generate a random state parameter for CSRF protection
|
|
63
|
+
*/
|
|
64
|
+
export declare function generateRandomState(): string;
|
|
65
|
+
/**
|
|
66
|
+
* Generate a PKCE code verifier (43-128 chars, cryptographically random)
|
|
67
|
+
* Using 64 bytes = 86 chars base64url (within 43-128 range)
|
|
68
|
+
*/
|
|
69
|
+
export declare function generateCodeVerifier(): string;
|
|
70
|
+
/**
|
|
71
|
+
* Compute PKCE code challenge from verifier using SHA-256
|
|
72
|
+
* Returns base64url encoded hash (no padding)
|
|
73
|
+
*/
|
|
74
|
+
export declare function computeCodeChallenge(verifier: string): string;
|
|
75
|
+
/**
|
|
76
|
+
* Initialize a CLI auth session
|
|
77
|
+
*/
|
|
78
|
+
export declare function initAuthSession(baseUrl: string, callbackUrl: string, state: string, clientInfo?: {
|
|
79
|
+
os: string;
|
|
80
|
+
hostname: string;
|
|
81
|
+
version: string;
|
|
82
|
+
}, pkce?: {
|
|
83
|
+
codeChallenge: string;
|
|
84
|
+
codeChallengeMethod: 'S256' | 'plain';
|
|
85
|
+
}): Promise<{
|
|
86
|
+
session_id: string;
|
|
87
|
+
expires_in: number;
|
|
88
|
+
}>;
|
|
89
|
+
/**
|
|
90
|
+
* Exchange auth code for tokens
|
|
91
|
+
*/
|
|
92
|
+
export declare function exchangeCodeForTokens(baseUrl: string, code: string, sessionId: string, codeVerifier?: string): Promise<{
|
|
93
|
+
access_token: string;
|
|
94
|
+
token_type: string;
|
|
95
|
+
expires_in: number;
|
|
96
|
+
refresh_token: string;
|
|
97
|
+
refresh_expires_in: number;
|
|
98
|
+
user: {
|
|
99
|
+
id: string;
|
|
100
|
+
name?: string;
|
|
101
|
+
email?: string;
|
|
102
|
+
image?: string;
|
|
103
|
+
};
|
|
104
|
+
}>;
|
|
105
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/utils/auth/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local HTTP server to receive OAuth callback from browser
|
|
3
|
+
*/
|
|
4
|
+
export interface CallbackResult {
|
|
5
|
+
code: string;
|
|
6
|
+
state: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CallbackError {
|
|
9
|
+
error: string;
|
|
10
|
+
state?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CallbackServer {
|
|
13
|
+
port: number;
|
|
14
|
+
waitForCallback: () => Promise<CallbackResult>;
|
|
15
|
+
close: () => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Start a local callback server on an available port
|
|
19
|
+
*/
|
|
20
|
+
export declare function startCallbackServer(expectedState: string): Promise<CallbackServer>;
|
|
21
|
+
//# sourceMappingURL=callback-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callback-server.d.ts","sourceRoot":"","sources":["../../../src/utils/auth/callback-server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AA0BD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA+FxF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface Settings {
|
|
2
|
+
registry?: string;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Get the platform-specific config directory
|
|
6
|
+
* - macOS: ~/Library/Application Support/skillscat/
|
|
7
|
+
* - Linux: ~/.config/skillscat/
|
|
8
|
+
* - Windows: %APPDATA%/skillscat/
|
|
9
|
+
*/
|
|
10
|
+
export declare function getConfigDir(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Get the path to auth.json
|
|
13
|
+
*/
|
|
14
|
+
export declare function getAuthPath(): string;
|
|
15
|
+
/**
|
|
16
|
+
* Get the path to settings.json
|
|
17
|
+
*/
|
|
18
|
+
export declare function getSettingsPath(): string;
|
|
19
|
+
/**
|
|
20
|
+
* Get the path to installed.json
|
|
21
|
+
*/
|
|
22
|
+
export declare function getInstalledDbPath(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Get the cache directory path
|
|
25
|
+
*/
|
|
26
|
+
export declare function getCacheDir(): string;
|
|
27
|
+
/**
|
|
28
|
+
* Ensure the config directory exists
|
|
29
|
+
*/
|
|
30
|
+
export declare function ensureConfigDir(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Load settings from settings.json
|
|
33
|
+
*/
|
|
34
|
+
export declare function loadSettings(): Settings;
|
|
35
|
+
/**
|
|
36
|
+
* Save settings to settings.json
|
|
37
|
+
*/
|
|
38
|
+
export declare function saveSettings(settings: Settings): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get a specific setting value
|
|
41
|
+
*/
|
|
42
|
+
export declare function getSetting<K extends keyof Settings>(key: K): Settings[K];
|
|
43
|
+
/**
|
|
44
|
+
* Set a specific setting value
|
|
45
|
+
*/
|
|
46
|
+
export declare function setSetting<K extends keyof Settings>(key: K, value: Settings[K]): void;
|
|
47
|
+
/**
|
|
48
|
+
* Delete a specific setting
|
|
49
|
+
*/
|
|
50
|
+
export declare function deleteSetting<K extends keyof Settings>(key: K): void;
|
|
51
|
+
/**
|
|
52
|
+
* Get the registry URL (from settings or default)
|
|
53
|
+
*/
|
|
54
|
+
export declare function getRegistryUrl(): string;
|
|
55
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/utils/config/config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAYrC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAYtC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,QAAQ,CAWvC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAIrD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAGxE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAIrF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAIpE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface FriendlyError {
|
|
2
|
+
message: string;
|
|
3
|
+
suggestion?: string;
|
|
4
|
+
isRetryable: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Parse a network error and return a friendly message
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseNetworkError(error: unknown): FriendlyError;
|
|
10
|
+
/**
|
|
11
|
+
* Parse an HTTP error and return a friendly message
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseHttpError(status: number, statusText?: string): FriendlyError;
|
|
14
|
+
/**
|
|
15
|
+
* Format a friendly error for display
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatError(error: FriendlyError): string;
|
|
18
|
+
/**
|
|
19
|
+
* Handle and display a fetch error
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleFetchError(error: unknown): FriendlyError;
|
|
22
|
+
/**
|
|
23
|
+
* Handle and display an HTTP response error
|
|
24
|
+
*/
|
|
25
|
+
export declare function handleHttpError(response: Response): FriendlyError;
|
|
26
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/utils/core/errors.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAqC/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAcjF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAMxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAEjE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse a skill slug into owner and name components
|
|
3
|
+
* @param slug - Skill slug in format "owner/name"
|
|
4
|
+
* @returns Object with owner and name
|
|
5
|
+
* @throws Error if slug format is invalid
|
|
6
|
+
*/
|
|
7
|
+
export declare function parseSlug(slug: string): {
|
|
8
|
+
owner: string;
|
|
9
|
+
name: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Build a two-segment API path from a slug
|
|
13
|
+
* @param slug - Skill slug in format "owner/name"
|
|
14
|
+
* @returns Path segment like "owner/name" (without leading slash)
|
|
15
|
+
*/
|
|
16
|
+
export declare function slugToPath(slug: string): string;
|
|
17
|
+
//# sourceMappingURL=slug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../../src/utils/core/slug.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAMvE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function success(message: string): void;
|
|
2
|
+
export declare function error(message: string): void;
|
|
3
|
+
export declare function warn(message: string): void;
|
|
4
|
+
export declare function info(message: string): void;
|
|
5
|
+
export declare function spinner(message: string): {
|
|
6
|
+
stop: (success?: boolean) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare function prompt(question: string): Promise<string>;
|
|
9
|
+
export declare function table(headers: string[], rows: string[][]): void;
|
|
10
|
+
export declare function box(content: string, title?: string): void;
|
|
11
|
+
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/utils/core/ui.ts"],"names":[],"mappings":"AAGA,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,CAsB9E;AAED,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYxD;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAsB/D;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAiBzD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enable or disable verbose mode
|
|
3
|
+
*/
|
|
4
|
+
export declare function setVerbose(enabled: boolean): void;
|
|
5
|
+
/**
|
|
6
|
+
* Check if verbose mode is enabled
|
|
7
|
+
*/
|
|
8
|
+
export declare function isVerbose(): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Log a message only if verbose mode is enabled
|
|
11
|
+
*/
|
|
12
|
+
export declare function verboseLog(message: string, ...args: unknown[]): void;
|
|
13
|
+
/**
|
|
14
|
+
* Log request details
|
|
15
|
+
*/
|
|
16
|
+
export declare function verboseRequest(method: string, url: string, headers?: Record<string, string>): void;
|
|
17
|
+
/**
|
|
18
|
+
* Log response details
|
|
19
|
+
*/
|
|
20
|
+
export declare function verboseResponse(status: number, statusText: string, timing?: number): void;
|
|
21
|
+
/**
|
|
22
|
+
* Log config file locations
|
|
23
|
+
*/
|
|
24
|
+
export declare function verboseConfig(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Log timing information
|
|
27
|
+
*/
|
|
28
|
+
export declare function verboseTiming(label: string, startTime: number): void;
|
|
29
|
+
//# sourceMappingURL=verbose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verbose.d.ts","sourceRoot":"","sources":["../../../src/utils/core/verbose.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAGpE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAUlG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAQzF;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAQpC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIpE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { RepoSource, SkillInfo } from './source';
|
|
2
|
+
/**
|
|
3
|
+
* Discover skills in a repository
|
|
4
|
+
*/
|
|
5
|
+
export declare function discoverSkills(source: RepoSource): Promise<SkillInfo[]>;
|
|
6
|
+
/**
|
|
7
|
+
* Fetch a single skill by name from a repository
|
|
8
|
+
*/
|
|
9
|
+
export declare function fetchSkill(source: RepoSource, skillName: string): Promise<SkillInfo | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Check if a skill has updates available
|
|
12
|
+
*/
|
|
13
|
+
export declare function checkSkillUpdate(source: RepoSource, skillName: string, currentSha?: string): Promise<{
|
|
14
|
+
hasUpdate: boolean;
|
|
15
|
+
latestSha?: string;
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/utils/source/git.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAmNtD;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA8F7E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAGjG;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAYrD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type Platform = 'github' | 'gitlab';
|
|
2
|
+
export interface RepoSource {
|
|
3
|
+
platform: Platform;
|
|
4
|
+
owner: string;
|
|
5
|
+
repo: string;
|
|
6
|
+
branch?: string;
|
|
7
|
+
path?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SkillInfo {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
path: string;
|
|
13
|
+
content: string;
|
|
14
|
+
sha?: string;
|
|
15
|
+
contentHash?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface SkillMetadata {
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
'allowed-tools'?: string[];
|
|
21
|
+
model?: string;
|
|
22
|
+
context?: 'fork';
|
|
23
|
+
agent?: string;
|
|
24
|
+
hooks?: Record<string, unknown>;
|
|
25
|
+
'user-invocable'?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Parse repository source from various formats
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseSource(source: string): RepoSource | null;
|
|
31
|
+
/**
|
|
32
|
+
* Skill discovery directories (in order of priority)
|
|
33
|
+
*/
|
|
34
|
+
export declare const SKILL_DISCOVERY_PATHS: string[];
|
|
35
|
+
/**
|
|
36
|
+
* Parse SKILL.md frontmatter
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseSkillFrontmatter(content: string): SkillMetadata | null;
|
|
39
|
+
//# sourceMappingURL=source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/utils/source/source.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAwD7D;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,UAoBjC,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAgC3E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface CachedSkill {
|
|
2
|
+
content: string;
|
|
3
|
+
contentHash: string;
|
|
4
|
+
commitSha?: string;
|
|
5
|
+
cachedAt: number;
|
|
6
|
+
lastAccessedAt: number;
|
|
7
|
+
source: 'github' | 'registry';
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Get the skills cache directory
|
|
11
|
+
*/
|
|
12
|
+
export declare function getSkillsCacheDir(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Generate a cache key from skill identifier
|
|
15
|
+
*/
|
|
16
|
+
export declare function getCacheKey(owner: string, repo: string, skillPath?: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Calculate SHA256 content hash
|
|
19
|
+
*/
|
|
20
|
+
export declare function calculateContentHash(content: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Get cached skill if valid
|
|
23
|
+
*/
|
|
24
|
+
export declare function getCachedSkill(owner: string, repo: string, skillPath?: string): CachedSkill | null;
|
|
25
|
+
/**
|
|
26
|
+
* Cache a skill
|
|
27
|
+
*/
|
|
28
|
+
export declare function cacheSkill(owner: string, repo: string, content: string, source: 'github' | 'registry', skillPath?: string, commitSha?: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* Check if cached skill is valid by comparing hashes
|
|
31
|
+
*/
|
|
32
|
+
export declare function isSkillCacheValid(owner: string, repo: string, remoteHash: string, skillPath?: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Clear all cached skills
|
|
35
|
+
*/
|
|
36
|
+
export declare function clearCache(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Prune cache to stay under MAX_CACHE_ITEMS
|
|
39
|
+
* Removes oldest 20% when limit is exceeded
|
|
40
|
+
*/
|
|
41
|
+
export declare function pruneCache(maxItems?: number): void;
|
|
42
|
+
/**
|
|
43
|
+
* Get cache statistics
|
|
44
|
+
*/
|
|
45
|
+
export declare function getCacheStats(): {
|
|
46
|
+
count: number;
|
|
47
|
+
size: number;
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/utils/storage/cache.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC/B;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAmBD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAGnF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAyBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAwBlG;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,GAAG,UAAU,EAC7B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CA6BN;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAIT;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAkBjC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,GAAE,MAAwB,GAAG,IAAI,CAmCnE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAuB/D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { RepoSource } from '../source/source';
|
|
2
|
+
export type UpdateStrategy = 'git' | 'registry';
|
|
3
|
+
export interface InstalledSkill {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
source?: RepoSource;
|
|
7
|
+
registrySlug?: string;
|
|
8
|
+
updateStrategy?: UpdateStrategy;
|
|
9
|
+
agents: string[];
|
|
10
|
+
global: boolean;
|
|
11
|
+
installedAt: number;
|
|
12
|
+
sha?: string;
|
|
13
|
+
path: string;
|
|
14
|
+
contentHash?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface InstalledSkillsDb {
|
|
17
|
+
version: number;
|
|
18
|
+
skills: InstalledSkill[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Record a skill installation
|
|
22
|
+
*/
|
|
23
|
+
export declare function recordInstallation(skill: InstalledSkill): void;
|
|
24
|
+
/**
|
|
25
|
+
* Remove a skill record
|
|
26
|
+
*/
|
|
27
|
+
export declare function removeInstallation(skillName: string, options?: {
|
|
28
|
+
source?: RepoSource;
|
|
29
|
+
agents?: string[];
|
|
30
|
+
global?: boolean;
|
|
31
|
+
}): void;
|
|
32
|
+
/**
|
|
33
|
+
* Get all installed skills
|
|
34
|
+
*/
|
|
35
|
+
export declare function getInstalledSkills(): InstalledSkill[];
|
|
36
|
+
/**
|
|
37
|
+
* Get installed skill by name
|
|
38
|
+
*/
|
|
39
|
+
export declare function getInstalledSkill(skillName: string): InstalledSkill | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Check if a skill is installed
|
|
42
|
+
*/
|
|
43
|
+
export declare function isSkillInstalled(skillName: string, source?: RepoSource): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Get skills that need updates
|
|
46
|
+
*/
|
|
47
|
+
export declare function getSkillsNeedingUpdate(skills: InstalledSkill[], updates: Map<string, string>): InstalledSkill[];
|
|
48
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/utils/storage/db.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,UAAU,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AA8HD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAY9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,IAAI,CA+BN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,EAAE,CAGrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAG/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAUhF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,EAAE,CAK/G"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "skillscat",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI for installing Claude Code skills from SkillsCat registry",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"skillscat": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "rollup -c",
|
|
14
|
+
"dev": "rollup -c -w",
|
|
15
|
+
"typecheck": "tsc --noEmit",
|
|
16
|
+
"prepublishOnly": "npm run build",
|
|
17
|
+
"test": "vitest run"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"commander": "^12.1.0",
|
|
21
|
+
"picocolors": "^1.1.1"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
25
|
+
"@rollup/plugin-typescript": "^12.3.0",
|
|
26
|
+
"@types/node": "^22.19.11",
|
|
27
|
+
"rollup": "^4.57.1",
|
|
28
|
+
"rollup-plugin-preserve-shebang": "^1.0.1",
|
|
29
|
+
"typescript": "^5.9.3",
|
|
30
|
+
"vitest": "^3.2.4"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"claude",
|
|
34
|
+
"claude-code",
|
|
35
|
+
"skills",
|
|
36
|
+
"cli",
|
|
37
|
+
"ai"
|
|
38
|
+
],
|
|
39
|
+
"author": "",
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "https://github.com/skillscat/skillscat"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://skillscat.com"
|
|
46
|
+
}
|