reskill 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/LICENSE +21 -0
- package/README.md +199 -0
- package/dist/cli/commands/index.d.ts +9 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/info.d.ts +7 -0
- package/dist/cli/commands/info.d.ts.map +1 -0
- package/dist/cli/commands/init.d.ts +7 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/install.d.ts +11 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/link.d.ts +5 -0
- package/dist/cli/commands/link.d.ts.map +1 -0
- package/dist/cli/commands/list.d.ts +7 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/outdated.d.ts +7 -0
- package/dist/cli/commands/outdated.d.ts.map +1 -0
- package/dist/cli/commands/uninstall.d.ts +7 -0
- package/dist/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/cli/commands/update.d.ts +7 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +1293 -0
- package/dist/core/cache-manager.d.ts +80 -0
- package/dist/core/cache-manager.d.ts.map +1 -0
- package/dist/core/config-loader.d.ts +76 -0
- package/dist/core/config-loader.d.ts.map +1 -0
- package/dist/core/git-resolver.d.ts +73 -0
- package/dist/core/git-resolver.d.ts.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/lock-manager.d.ts +75 -0
- package/dist/core/lock-manager.d.ts.map +1 -0
- package/dist/core/skill-manager.d.ts +98 -0
- package/dist/core/skill-manager.d.ts.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1033 -0
- package/dist/types/index.d.ts +213 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/fs.d.ts +86 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/git.d.ts +112 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +43 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills Package Manager Type Definitions
|
|
3
|
+
* Based on: docs/skills-management-design.md
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 版本规范格式
|
|
7
|
+
* - 精确版本: @v1.0.0
|
|
8
|
+
* - 最新版本: @latest
|
|
9
|
+
* - 范围版本: @^2.0.0 (semver)
|
|
10
|
+
* - 分支: @branch:develop
|
|
11
|
+
* - Commit: @commit:abc1234
|
|
12
|
+
* - 无版本: 默认使用 main/master
|
|
13
|
+
*/
|
|
14
|
+
export type VersionSpec = string;
|
|
15
|
+
/**
|
|
16
|
+
* Skill 引用格式
|
|
17
|
+
* 完整格式: <registry>:<owner>/<repo>@<version>
|
|
18
|
+
* 简写格式: <owner>/<repo>@<version>
|
|
19
|
+
*/
|
|
20
|
+
export type SkillRef = string;
|
|
21
|
+
/**
|
|
22
|
+
* Registry 配置
|
|
23
|
+
*/
|
|
24
|
+
export interface RegistryConfig {
|
|
25
|
+
[name: string]: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 默认配置
|
|
29
|
+
*/
|
|
30
|
+
export interface SkillsDefaults {
|
|
31
|
+
/** 默认 registry */
|
|
32
|
+
registry?: string;
|
|
33
|
+
/** 安装目录,默认 .skills */
|
|
34
|
+
installDir?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Skill 覆盖配置
|
|
38
|
+
*/
|
|
39
|
+
export interface SkillOverride {
|
|
40
|
+
/** 是否启用 */
|
|
41
|
+
enabled?: boolean;
|
|
42
|
+
/** 自定义配置 */
|
|
43
|
+
config?: Record<string, unknown>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* skills.json 完整 Schema
|
|
47
|
+
*/
|
|
48
|
+
export interface SkillsJson {
|
|
49
|
+
/** JSON Schema 引用 */
|
|
50
|
+
$schema?: string;
|
|
51
|
+
/** 项目名称 */
|
|
52
|
+
name?: string;
|
|
53
|
+
/** 项目版本 */
|
|
54
|
+
version?: string;
|
|
55
|
+
/** 项目描述 */
|
|
56
|
+
description?: string;
|
|
57
|
+
/** Skill 依赖映射 */
|
|
58
|
+
skills: Record<string, SkillRef>;
|
|
59
|
+
/** Registry 配置 */
|
|
60
|
+
registries?: RegistryConfig;
|
|
61
|
+
/** 默认配置 */
|
|
62
|
+
defaults?: SkillsDefaults;
|
|
63
|
+
/** Skill 覆盖配置 */
|
|
64
|
+
overrides?: Record<string, SkillOverride>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 锁定的 Skill 信息
|
|
68
|
+
*/
|
|
69
|
+
export interface LockedSkill {
|
|
70
|
+
/** 来源,如 github:user/repo */
|
|
71
|
+
source: string;
|
|
72
|
+
/** 版本号 */
|
|
73
|
+
version: string;
|
|
74
|
+
/** 解析后的完整 URL */
|
|
75
|
+
resolved: string;
|
|
76
|
+
/** 精确的 commit hash */
|
|
77
|
+
commit: string;
|
|
78
|
+
/** 安装时间 */
|
|
79
|
+
installedAt: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* skills.lock 完整 Schema
|
|
83
|
+
*/
|
|
84
|
+
export interface SkillsLock {
|
|
85
|
+
/** Lock 文件版本 */
|
|
86
|
+
lockfileVersion: number;
|
|
87
|
+
/** 锁定的 skills */
|
|
88
|
+
skills: Record<string, LockedSkill>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Skill 配置项定义
|
|
92
|
+
*/
|
|
93
|
+
export interface SkillConfigDef {
|
|
94
|
+
type: 'string' | 'number' | 'boolean' | 'array' | 'object';
|
|
95
|
+
default?: unknown;
|
|
96
|
+
description?: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 仓库信息
|
|
100
|
+
*/
|
|
101
|
+
export interface SkillRepository {
|
|
102
|
+
type: 'git';
|
|
103
|
+
url: string;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 兼容性配置
|
|
107
|
+
*/
|
|
108
|
+
export interface SkillCompatibility {
|
|
109
|
+
claude?: string;
|
|
110
|
+
cursor?: string;
|
|
111
|
+
[platform: string]: string | undefined;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* skill.json 完整 Schema(Skill 仓库的元数据)
|
|
115
|
+
*/
|
|
116
|
+
export interface SkillJson {
|
|
117
|
+
/** Skill 名称 */
|
|
118
|
+
name: string;
|
|
119
|
+
/** 版本号 */
|
|
120
|
+
version: string;
|
|
121
|
+
/** 描述 */
|
|
122
|
+
description?: string;
|
|
123
|
+
/** 作者 */
|
|
124
|
+
author?: string;
|
|
125
|
+
/** 许可证 */
|
|
126
|
+
license?: string;
|
|
127
|
+
/** 入口文件,默认 SKILL.md */
|
|
128
|
+
entry?: string;
|
|
129
|
+
/** 包含的文件列表 */
|
|
130
|
+
files?: string[];
|
|
131
|
+
/** 关键词 */
|
|
132
|
+
keywords?: string[];
|
|
133
|
+
/** 仓库信息 */
|
|
134
|
+
repository?: SkillRepository;
|
|
135
|
+
/** 可配置项 */
|
|
136
|
+
config?: Record<string, SkillConfigDef>;
|
|
137
|
+
/** 平台兼容性 */
|
|
138
|
+
compatibility?: SkillCompatibility;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* 解析后的 Skill 引用
|
|
142
|
+
*/
|
|
143
|
+
export interface ParsedSkillRef {
|
|
144
|
+
/** Registry 名称,如 github, gitlab */
|
|
145
|
+
registry: string;
|
|
146
|
+
/** 所有者/组织 */
|
|
147
|
+
owner: string;
|
|
148
|
+
/** 仓库名 */
|
|
149
|
+
repo: string;
|
|
150
|
+
/** 子路径(如果是 monorepo) */
|
|
151
|
+
subPath?: string;
|
|
152
|
+
/** 版本规范 */
|
|
153
|
+
version?: VersionSpec;
|
|
154
|
+
/** 原始引用字符串 */
|
|
155
|
+
raw: string;
|
|
156
|
+
/** 完整的 Git URL (SSH/HTTPS),如果提供的话 */
|
|
157
|
+
gitUrl?: string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* 版本类型
|
|
161
|
+
*/
|
|
162
|
+
export type VersionType = 'exact' | 'latest' | 'range' | 'branch' | 'commit';
|
|
163
|
+
/**
|
|
164
|
+
* 解析后的版本信息
|
|
165
|
+
*/
|
|
166
|
+
export interface ParsedVersion {
|
|
167
|
+
type: VersionType;
|
|
168
|
+
value: string;
|
|
169
|
+
raw: string;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* 已安装的 Skill 信息
|
|
173
|
+
*/
|
|
174
|
+
export interface InstalledSkill {
|
|
175
|
+
/** Skill 名称 */
|
|
176
|
+
name: string;
|
|
177
|
+
/** 安装路径 */
|
|
178
|
+
path: string;
|
|
179
|
+
/** 版本号 */
|
|
180
|
+
version: string;
|
|
181
|
+
/** 来源 */
|
|
182
|
+
source: string;
|
|
183
|
+
/** Skill 元数据 */
|
|
184
|
+
metadata?: SkillJson;
|
|
185
|
+
/** 是否为链接 */
|
|
186
|
+
isLinked?: boolean;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* 安装选项
|
|
190
|
+
*/
|
|
191
|
+
export interface InstallOptions {
|
|
192
|
+
/** 强制重新安装 */
|
|
193
|
+
force?: boolean;
|
|
194
|
+
/** 保存到 skills.json */
|
|
195
|
+
save?: boolean;
|
|
196
|
+
/** 全局安装到 ~/.claude/skills */
|
|
197
|
+
global?: boolean;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* 更新选项
|
|
201
|
+
*/
|
|
202
|
+
export interface UpdateOptions {
|
|
203
|
+
/** 更新所有 */
|
|
204
|
+
all?: boolean;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* 列表选项
|
|
208
|
+
*/
|
|
209
|
+
export interface ListOptions {
|
|
210
|
+
/** JSON 格式输出 */
|
|
211
|
+
json?: boolean;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File system utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Check if a file or directory exists
|
|
6
|
+
*/
|
|
7
|
+
export declare function exists(filePath: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Read JSON file
|
|
10
|
+
*/
|
|
11
|
+
export declare function readJson<T>(filePath: string): T;
|
|
12
|
+
/**
|
|
13
|
+
* Write JSON file
|
|
14
|
+
*/
|
|
15
|
+
export declare function writeJson<T>(filePath: string, data: T, indent?: number): void;
|
|
16
|
+
/**
|
|
17
|
+
* Read text file
|
|
18
|
+
*/
|
|
19
|
+
export declare function readText(filePath: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Write text file
|
|
22
|
+
*/
|
|
23
|
+
export declare function writeText(filePath: string, content: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Create directory recursively
|
|
26
|
+
*/
|
|
27
|
+
export declare function ensureDir(dirPath: string): void;
|
|
28
|
+
/**
|
|
29
|
+
* Remove file or directory
|
|
30
|
+
*/
|
|
31
|
+
export declare function remove(targetPath: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* Copy directory recursively
|
|
34
|
+
*/
|
|
35
|
+
export declare function copyDir(src: string, dest: string, options?: {
|
|
36
|
+
exclude?: string[];
|
|
37
|
+
}): void;
|
|
38
|
+
/**
|
|
39
|
+
* List directory contents
|
|
40
|
+
*/
|
|
41
|
+
export declare function listDir(dirPath: string): string[];
|
|
42
|
+
/**
|
|
43
|
+
* Check if path is a directory
|
|
44
|
+
*/
|
|
45
|
+
export declare function isDirectory(targetPath: string): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Check if path is a symbolic link
|
|
48
|
+
*/
|
|
49
|
+
export declare function isSymlink(targetPath: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Create symbolic link
|
|
52
|
+
*/
|
|
53
|
+
export declare function createSymlink(target: string, linkPath: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Get real path of symbolic link
|
|
56
|
+
*/
|
|
57
|
+
export declare function getRealPath(linkPath: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Find project root by looking for skills.json
|
|
60
|
+
*/
|
|
61
|
+
export declare function findProjectRoot(startDir?: string): string | null;
|
|
62
|
+
/**
|
|
63
|
+
* Get skills.json path for current project
|
|
64
|
+
*/
|
|
65
|
+
export declare function getSkillsJsonPath(projectRoot?: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Get skills.lock path for current project
|
|
68
|
+
*/
|
|
69
|
+
export declare function getSkillsLockPath(projectRoot?: string): string;
|
|
70
|
+
/**
|
|
71
|
+
* Get default skills installation directory
|
|
72
|
+
*/
|
|
73
|
+
export declare function getSkillsDir(projectRoot?: string, installDir?: string): string;
|
|
74
|
+
/**
|
|
75
|
+
* Get global cache directory
|
|
76
|
+
*/
|
|
77
|
+
export declare function getCacheDir(): string;
|
|
78
|
+
/**
|
|
79
|
+
* Get home directory
|
|
80
|
+
*/
|
|
81
|
+
export declare function getHomeDir(): string;
|
|
82
|
+
/**
|
|
83
|
+
* Get global skills installation directory (~/.claude/skills)
|
|
84
|
+
*/
|
|
85
|
+
export declare function getGlobalSkillsDir(): string;
|
|
86
|
+
//# sourceMappingURL=fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAGA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAG/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,SAAI,GAAG,IAAI,CAMxE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAMjE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAqBzF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAKjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAKvD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAKrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAUpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAY/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,SAAY,GAAG,MAAM,CAGjF;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git utilities
|
|
3
|
+
*/
|
|
4
|
+
export interface GitTag {
|
|
5
|
+
name: string;
|
|
6
|
+
commit: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Custom error class for Git clone failures
|
|
10
|
+
* Provides helpful tips for private repository authentication
|
|
11
|
+
*/
|
|
12
|
+
export declare class GitCloneError extends Error {
|
|
13
|
+
readonly repoUrl: string;
|
|
14
|
+
readonly originalError: Error;
|
|
15
|
+
readonly isAuthError: boolean;
|
|
16
|
+
constructor(repoUrl: string, originalError: Error);
|
|
17
|
+
/**
|
|
18
|
+
* Check if an error message indicates an authentication problem
|
|
19
|
+
*/
|
|
20
|
+
static isAuthenticationError(message: string): boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Execute git command synchronously
|
|
24
|
+
*/
|
|
25
|
+
export declare function gitSync(args: string[], cwd?: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Execute git command asynchronously
|
|
28
|
+
*/
|
|
29
|
+
export declare function git(args: string[], cwd?: string): Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Get remote tags for a repository
|
|
32
|
+
*/
|
|
33
|
+
export declare function getRemoteTags(repoUrl: string): Promise<GitTag[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Get latest tag from repository
|
|
36
|
+
*/
|
|
37
|
+
export declare function getLatestTag(repoUrl: string): Promise<GitTag | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Clone a repository with shallow clone
|
|
40
|
+
*
|
|
41
|
+
* @throws {GitCloneError} When clone fails, with helpful tips for authentication issues
|
|
42
|
+
*/
|
|
43
|
+
export declare function clone(repoUrl: string, destPath: string, options?: {
|
|
44
|
+
branch?: string;
|
|
45
|
+
depth?: number;
|
|
46
|
+
}): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Checkout a specific ref (tag, branch, commit)
|
|
49
|
+
*/
|
|
50
|
+
export declare function checkout(ref: string, cwd: string): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Fetch tags from remote
|
|
53
|
+
*/
|
|
54
|
+
export declare function fetchTags(cwd: string): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Get current commit hash
|
|
57
|
+
*/
|
|
58
|
+
export declare function getCurrentCommit(cwd: string): Promise<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Get default branch name
|
|
61
|
+
*/
|
|
62
|
+
export declare function getDefaultBranch(repoUrl: string): Promise<string>;
|
|
63
|
+
/**
|
|
64
|
+
* Check if a ref exists in remote
|
|
65
|
+
*/
|
|
66
|
+
export declare function refExists(repoUrl: string, ref: string): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Build repository URL from registry and path
|
|
69
|
+
*/
|
|
70
|
+
export declare function buildRepoUrl(registry: string, ownerRepo: string): string;
|
|
71
|
+
/**
|
|
72
|
+
* Parsed Git URL information
|
|
73
|
+
*/
|
|
74
|
+
export interface ParsedGitUrl {
|
|
75
|
+
/** Host name (e.g., github.com, gitlab.company.com) */
|
|
76
|
+
host: string;
|
|
77
|
+
/** Repository owner/organization */
|
|
78
|
+
owner: string;
|
|
79
|
+
/** Repository name (without .git suffix) */
|
|
80
|
+
repo: string;
|
|
81
|
+
/** Original URL */
|
|
82
|
+
url: string;
|
|
83
|
+
/** URL type: ssh, https, or git */
|
|
84
|
+
type: 'ssh' | 'https' | 'git';
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if a source string is a complete Git URL (SSH, HTTPS, or git://)
|
|
88
|
+
*
|
|
89
|
+
* Supported formats:
|
|
90
|
+
* - SSH: git@github.com:user/repo.git
|
|
91
|
+
* - HTTPS: https://github.com/user/repo.git
|
|
92
|
+
* - Git protocol: git://github.com/user/repo.git
|
|
93
|
+
* - URLs ending with .git
|
|
94
|
+
*/
|
|
95
|
+
export declare function isGitUrl(source: string): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Parse a Git URL and extract host, owner, and repo information
|
|
98
|
+
*
|
|
99
|
+
* Supports:
|
|
100
|
+
* - SSH: git@github.com:user/repo.git
|
|
101
|
+
* - HTTPS: https://github.com/user/repo.git
|
|
102
|
+
* - Git protocol: git://github.com/user/repo.git
|
|
103
|
+
*
|
|
104
|
+
* @param url The Git URL to parse
|
|
105
|
+
* @returns Parsed URL information or null if parsing fails
|
|
106
|
+
*/
|
|
107
|
+
export declare function parseGitUrl(url: string): ParsedGitUrl | null;
|
|
108
|
+
/**
|
|
109
|
+
* Get the repository name from a Git URL
|
|
110
|
+
*/
|
|
111
|
+
export declare function getRepoNameFromUrl(url: string): string | null;
|
|
112
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,aAAa,EAAE,KAAK,CAAC;IACrC,SAAgB,WAAW,EAAE,OAAO,CAAC;gBAEzB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK;IAkBjD;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAevD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMvE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwBtE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAe1E;AAED;;;;GAIG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQvE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO9E;AAsBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CASxE;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQhD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA0C5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger utility for CLI output
|
|
3
|
+
*/
|
|
4
|
+
export declare const logger: {
|
|
5
|
+
/**
|
|
6
|
+
* Info message (blue)
|
|
7
|
+
*/
|
|
8
|
+
info(message: string): void;
|
|
9
|
+
/**
|
|
10
|
+
* Success message (green)
|
|
11
|
+
*/
|
|
12
|
+
success(message: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Warning message (yellow)
|
|
15
|
+
*/
|
|
16
|
+
warn(message: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* Error message (red)
|
|
19
|
+
*/
|
|
20
|
+
error(message: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* Debug message (gray, only in verbose mode)
|
|
23
|
+
*/
|
|
24
|
+
debug(message: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Package/skill message (package emoji)
|
|
27
|
+
*/
|
|
28
|
+
package(message: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* Plain message without icon
|
|
31
|
+
*/
|
|
32
|
+
log(message: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Newline
|
|
35
|
+
*/
|
|
36
|
+
newline(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Table-like output
|
|
39
|
+
*/
|
|
40
|
+
table(headers: string[], rows: string[][]): void;
|
|
41
|
+
};
|
|
42
|
+
export default logger;
|
|
43
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;kBACW,MAAM,GAAG,IAAI;IAI3B;;OAEG;qBACc,MAAM,GAAG,IAAI;IAI9B;;OAEG;kBACW,MAAM,GAAG,IAAI;IAI3B;;OAEG;mBACY,MAAM,GAAG,IAAI;IAI5B;;OAEG;mBACY,MAAM,GAAG,IAAI;IAM5B;;OAEG;qBACc,MAAM,GAAG,IAAI;IAI9B;;OAEG;iBACU,MAAM,GAAG,IAAI;IAI1B;;OAEG;eACQ,IAAI;IAIf;;OAEG;mBACY,MAAM,EAAE,QAAQ,MAAM,EAAE,EAAE,GAAG,IAAI;CAoBjD,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "reskill",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AI Skills Package Manager - Git-based skills management for AI agents",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"reskill": "./dist/cli/index.js"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts"
|
|
16
|
+
},
|
|
17
|
+
"./cli": {
|
|
18
|
+
"import": "./dist/cli/index.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"dev": "rslib build --watch",
|
|
26
|
+
"build": "rslib build",
|
|
27
|
+
"test": "vitest",
|
|
28
|
+
"test:run": "vitest run",
|
|
29
|
+
"test:coverage": "vitest run --coverage",
|
|
30
|
+
"lint": "eslint src --ext .ts",
|
|
31
|
+
"typecheck": "tsc --noEmit",
|
|
32
|
+
"prepublishOnly": "npm run build"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"skills",
|
|
36
|
+
"ai",
|
|
37
|
+
"agent",
|
|
38
|
+
"package-manager",
|
|
39
|
+
"cli"
|
|
40
|
+
],
|
|
41
|
+
"author": "",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "https://github.com/kanyun-ai-infra/reskill.git"
|
|
46
|
+
},
|
|
47
|
+
"homepage": "https://github.com/kanyun-ai-infra/reskill#readme",
|
|
48
|
+
"bugs": {
|
|
49
|
+
"url": "https://github.com/kanyun-ai-infra/reskill/issues"
|
|
50
|
+
},
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"chalk": "^5.3.0",
|
|
53
|
+
"commander": "^12.1.0",
|
|
54
|
+
"degit": "^2.8.4",
|
|
55
|
+
"ora": "^8.0.1",
|
|
56
|
+
"semver": "^7.6.3"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@rslib/core": "^0.1.1",
|
|
60
|
+
"@types/degit": "^2.8.6",
|
|
61
|
+
"@types/node": "^22.10.0",
|
|
62
|
+
"@types/semver": "^7.5.8",
|
|
63
|
+
"typescript": "^5.7.2",
|
|
64
|
+
"vitest": "^2.1.8"
|
|
65
|
+
},
|
|
66
|
+
"engines": {
|
|
67
|
+
"node": ">=18.0.0"
|
|
68
|
+
}
|
|
69
|
+
}
|