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.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +199 -0
  3. package/dist/cli/commands/index.d.ts +9 -0
  4. package/dist/cli/commands/index.d.ts.map +1 -0
  5. package/dist/cli/commands/info.d.ts +7 -0
  6. package/dist/cli/commands/info.d.ts.map +1 -0
  7. package/dist/cli/commands/init.d.ts +7 -0
  8. package/dist/cli/commands/init.d.ts.map +1 -0
  9. package/dist/cli/commands/install.d.ts +11 -0
  10. package/dist/cli/commands/install.d.ts.map +1 -0
  11. package/dist/cli/commands/link.d.ts +5 -0
  12. package/dist/cli/commands/link.d.ts.map +1 -0
  13. package/dist/cli/commands/list.d.ts +7 -0
  14. package/dist/cli/commands/list.d.ts.map +1 -0
  15. package/dist/cli/commands/outdated.d.ts +7 -0
  16. package/dist/cli/commands/outdated.d.ts.map +1 -0
  17. package/dist/cli/commands/uninstall.d.ts +7 -0
  18. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  19. package/dist/cli/commands/update.d.ts +7 -0
  20. package/dist/cli/commands/update.d.ts.map +1 -0
  21. package/dist/cli/index.d.ts +3 -0
  22. package/dist/cli/index.d.ts.map +1 -0
  23. package/dist/cli/index.js +1293 -0
  24. package/dist/core/cache-manager.d.ts +80 -0
  25. package/dist/core/cache-manager.d.ts.map +1 -0
  26. package/dist/core/config-loader.d.ts +76 -0
  27. package/dist/core/config-loader.d.ts.map +1 -0
  28. package/dist/core/git-resolver.d.ts +73 -0
  29. package/dist/core/git-resolver.d.ts.map +1 -0
  30. package/dist/core/index.d.ts +7 -0
  31. package/dist/core/index.d.ts.map +1 -0
  32. package/dist/core/lock-manager.d.ts +75 -0
  33. package/dist/core/lock-manager.d.ts.map +1 -0
  34. package/dist/core/skill-manager.d.ts +98 -0
  35. package/dist/core/skill-manager.d.ts.map +1 -0
  36. package/dist/index.d.ts +9 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +1033 -0
  39. package/dist/types/index.d.ts +213 -0
  40. package/dist/types/index.d.ts.map +1 -0
  41. package/dist/utils/fs.d.ts +86 -0
  42. package/dist/utils/fs.d.ts.map +1 -0
  43. package/dist/utils/git.d.ts +112 -0
  44. package/dist/utils/git.d.ts.map +1 -0
  45. package/dist/utils/index.d.ts +4 -0
  46. package/dist/utils/index.d.ts.map +1 -0
  47. package/dist/utils/logger.d.ts +43 -0
  48. package/dist/utils/logger.d.ts.map +1 -0
  49. 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,4 @@
1
+ export * from './fs.js';
2
+ export * from './git.js';
3
+ export { logger } from './logger.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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
+ }