reskill 0.12.0 → 0.12.1

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/README.md CHANGED
@@ -19,13 +19,13 @@ English | [简体中文](./README.zh-CN.md)
19
19
 
20
20
  ```bash
21
21
  # 1. Initialize project
22
- reskill init
22
+ npx reskill init
23
23
 
24
24
  # 2. Install a skill
25
- reskill install github:anthropics/skills/frontend-design@latest
25
+ npx reskill install github:anthropics/skills/frontend-design@latest
26
26
 
27
27
  # 3. List installed skills
28
- reskill list
28
+ npx reskill list
29
29
  ```
30
30
 
31
31
  ## What is reskill?
@@ -89,19 +89,19 @@ npx reskill <command>
89
89
 
90
90
  ```bash
91
91
  # GitHub shorthand
92
- reskill install github:user/skill@v1.0.0
92
+ npx reskill install github:user/skill@v1.0.0
93
93
 
94
94
  # Full URL
95
- reskill install https://github.com/user/skill
95
+ npx reskill install https://github.com/user/skill
96
96
 
97
97
  # GitLab
98
- reskill install gitlab:group/skill@latest
98
+ npx reskill install gitlab:group/skill@latest
99
99
 
100
100
  # Private registry
101
- reskill install gitlab.company.com:team/skill@v1.0.0
101
+ npx reskill install gitlab.company.com:team/skill@v1.0.0
102
102
 
103
103
  # Default registry (from skills.json)
104
- reskill install user/skill@v1.0.0
104
+ npx reskill install user/skill@v1.0.0
105
105
  ```
106
106
 
107
107
  ### Version Specification
@@ -116,19 +116,105 @@ reskill install user/skill@v1.0.0
116
116
 
117
117
  ## Commands
118
118
 
119
+ You can use `npx reskill` directly without global installation:
120
+
121
+ ```bash
122
+ # Initialize project
123
+ npx reskill init
124
+
125
+ # Install a skill from GitHub
126
+ npx reskill install github:anthropics/skills/frontend-design@latest
127
+
128
+ # Install from private GitLab
129
+ npx reskill install gitlab.company.com:team/internal-skill@v1.0.0
130
+
131
+ # List installed skills
132
+ npx reskill list
133
+ ```
134
+
135
+ ### Command Reference
136
+
119
137
  | Command | Description |
120
138
  |---------|-------------|
121
- | `reskill init` | Initialize `skills.json` in current directory |
122
- | `reskill install [skill]` | Install skills from `skills.json` or a specific skill |
123
- | `reskill list` | List installed skills |
124
- | `reskill info <skill>` | Show skill details |
125
- | `reskill update [skill]` | Update all or specific skill |
126
- | `reskill outdated` | Check for outdated skills |
127
- | `reskill uninstall <skill>` | Remove a skill |
128
- | `reskill link <path>` | Link local skill for development |
129
- | `reskill unlink <skill>` | Unlink a local skill |
130
-
131
- Run `reskill <command> --help` for detailed options.
139
+ | `npx reskill init` | Initialize `skills.json` in current directory |
140
+ | `npx reskill install [skill]` | Install skills from `skills.json` or a specific skill |
141
+ | `npx reskill list` | List installed skills |
142
+ | `npx reskill info <skill>` | Show skill details |
143
+ | `npx reskill update [skill]` | Update all or specific skill |
144
+ | `npx reskill outdated` | Check for outdated skills |
145
+ | `npx reskill uninstall <skill>` | Remove a skill |
146
+ | `npx reskill link <path>` | Link local skill for development |
147
+ | `npx reskill unlink <skill>` | Unlink a local skill |
148
+
149
+ Run `npx reskill <command> --help` for detailed options.
150
+
151
+ ## Private GitLab Support
152
+
153
+ reskill fully supports private GitLab repositories, including self-hosted instances. Authentication is handled transparently through your system's git configuration.
154
+
155
+ ### Authentication Methods
156
+
157
+ **SSH (Recommended)**
158
+
159
+ reskill uses your existing SSH configuration automatically:
160
+
161
+ ```bash
162
+ # Uses your ~/.ssh/id_rsa or ~/.ssh/id_ed25519 automatically
163
+ npx reskill install gitlab.company.com:team/private-skill@v1.0.0
164
+
165
+ # Or with explicit SSH URL
166
+ npx reskill install git@gitlab.company.com:team/private-skill.git@v1.0.0
167
+ ```
168
+
169
+ Ensure your SSH key is added to GitLab and ssh-agent is running.
170
+
171
+ **HTTPS with Git Credential**
172
+
173
+ For CI/CD or environments without SSH, configure git credential helper:
174
+
175
+ ```bash
176
+ # Store credentials (will prompt once, then remember)
177
+ git config --global credential.helper store
178
+
179
+ # Or use environment variable in CI
180
+ git config --global credential.helper '!f() { echo "username=oauth2"; echo "password=${GITLAB_TOKEN}"; }; f'
181
+ ```
182
+
183
+ For GitLab CI/CD, use the built-in `CI_JOB_TOKEN`:
184
+
185
+ ```yaml
186
+ before_script:
187
+ - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.company.com/".insteadOf "https://gitlab.company.com/"
188
+ ```
189
+
190
+ ### Registry Configuration
191
+
192
+ Configure private registries in `skills.json`:
193
+
194
+ ```json
195
+ {
196
+ "registries": {
197
+ "internal": "https://gitlab.company.com",
198
+ "private": "git@gitlab.internal.io"
199
+ },
200
+ "skills": {
201
+ "company-standards": "internal:team/standards@latest",
202
+ "private-utils": "private:utils/helpers@v1.0.0"
203
+ }
204
+ }
205
+ ```
206
+
207
+ ### Self-Hosted GitLab
208
+
209
+ For self-hosted GitLab instances with custom domains:
210
+
211
+ ```bash
212
+ # Direct installation
213
+ npx reskill install git.mycompany.io:team/skill@v1.0.0
214
+
215
+ # With explicit SSH URL
216
+ npx reskill install git@git.mycompany.io:team/skill.git@v1.0.0
217
+ ```
132
218
 
133
219
  ## Configuration
134
220
 
@@ -215,7 +301,7 @@ my-project/
215
301
 
216
302
  | Variable | Description | Default |
217
303
  |----------|-------------|---------|
218
- | `SKPM_CACHE_DIR` | Global cache directory | `~/.reskill-cache` |
304
+ | `RESKILL_CACHE_DIR` | Global cache directory | `~/.reskill-cache` |
219
305
  | `DEBUG` | Enable debug logging | - |
220
306
 
221
307
  ## Development
package/README.zh-CN.md CHANGED
@@ -19,13 +19,13 @@
19
19
 
20
20
  ```bash
21
21
  # 1. 初始化项目
22
- reskill init
22
+ npx reskill init
23
23
 
24
24
  # 2. 安装 skill
25
- reskill install github:anthropics/skills/frontend-design@latest
25
+ npx reskill install github:anthropics/skills/frontend-design@latest
26
26
 
27
27
  # 3. 列出已安装的 skills
28
- reskill list
28
+ npx reskill list
29
29
  ```
30
30
 
31
31
  ## 什么是 reskill?
@@ -90,19 +90,19 @@ npx reskill <command>
90
90
 
91
91
  ```bash
92
92
  # GitHub 简写
93
- reskill install github:user/skill@v1.0.0
93
+ npx reskill install github:user/skill@v1.0.0
94
94
 
95
95
  # 完整 URL
96
- reskill install https://github.com/user/skill
96
+ npx reskill install https://github.com/user/skill
97
97
 
98
98
  # GitLab
99
- reskill install gitlab:group/skill@latest
99
+ npx reskill install gitlab:group/skill@latest
100
100
 
101
101
  # 私有 Registry
102
- reskill install gitlab.company.com:team/skill@v1.0.0
102
+ npx reskill install gitlab.company.com:team/skill@v1.0.0
103
103
 
104
104
  # 默认 Registry(来自 skills.json)
105
- reskill install user/skill@v1.0.0
105
+ npx reskill install user/skill@v1.0.0
106
106
  ```
107
107
 
108
108
  ### 版本规范
@@ -117,19 +117,105 @@ reskill install user/skill@v1.0.0
117
117
 
118
118
  ## 命令
119
119
 
120
+ 无需全局安装,直接使用 `npx reskill`:
121
+
122
+ ```bash
123
+ # 初始化项目
124
+ npx reskill init
125
+
126
+ # 从 GitHub 安装 skill
127
+ npx reskill install github:anthropics/skills/frontend-design@latest
128
+
129
+ # 从私有 GitLab 安装
130
+ npx reskill install gitlab.company.com:team/internal-skill@v1.0.0
131
+
132
+ # 列出已安装的 skills
133
+ npx reskill list
134
+ ```
135
+
136
+ ### 命令参考
137
+
120
138
  | 命令 | 说明 |
121
139
  |------|------|
122
- | `reskill init` | 在当前目录初始化 `skills.json` |
123
- | `reskill install [skill]` | 安装 `skills.json` 中的所有 skills 或指定 skill |
124
- | `reskill list` | 列出已安装的 skills |
125
- | `reskill info <skill>` | 查看 skill 详情 |
126
- | `reskill update [skill]` | 更新所有或指定 skill |
127
- | `reskill outdated` | 检查过期的 skills |
128
- | `reskill uninstall <skill>` | 卸载 skill |
129
- | `reskill link <path>` | 链接本地 skill(开发用) |
130
- | `reskill unlink <skill>` | 取消链接本地 skill |
131
-
132
- 运行 `reskill <command> --help` 查看详细选项。
140
+ | `npx reskill init` | 在当前目录初始化 `skills.json` |
141
+ | `npx reskill install [skill]` | 安装 `skills.json` 中的所有 skills 或指定 skill |
142
+ | `npx reskill list` | 列出已安装的 skills |
143
+ | `npx reskill info <skill>` | 查看 skill 详情 |
144
+ | `npx reskill update [skill]` | 更新所有或指定 skill |
145
+ | `npx reskill outdated` | 检查过期的 skills |
146
+ | `npx reskill uninstall <skill>` | 卸载 skill |
147
+ | `npx reskill link <path>` | 链接本地 skill(开发用) |
148
+ | `npx reskill unlink <skill>` | 取消链接本地 skill |
149
+
150
+ 运行 `npx reskill <command> --help` 查看详细选项。
151
+
152
+ ## 私有 GitLab 支持
153
+
154
+ reskill 完整支持私有 GitLab 仓库,包括自建实例。认证通过系统的 git 配置透明处理。
155
+
156
+ ### 认证方式
157
+
158
+ **SSH(推荐)**
159
+
160
+ reskill 自动使用你已有的 SSH 配置:
161
+
162
+ ```bash
163
+ # 自动使用 ~/.ssh/id_rsa 或 ~/.ssh/id_ed25519
164
+ npx reskill install gitlab.company.com:team/private-skill@v1.0.0
165
+
166
+ # 或使用显式的 SSH URL
167
+ npx reskill install git@gitlab.company.com:team/private-skill.git@v1.0.0
168
+ ```
169
+
170
+ 确保你的 SSH key 已添加到 GitLab,并且 ssh-agent 正在运行。
171
+
172
+ **HTTPS + Git Credential**
173
+
174
+ 适用于 CI/CD 或无 SSH 的环境,配置 git credential helper:
175
+
176
+ ```bash
177
+ # 存储凭证(首次会提示输入,之后自动记住)
178
+ git config --global credential.helper store
179
+
180
+ # 或在 CI 中使用环境变量
181
+ git config --global credential.helper '!f() { echo "username=oauth2"; echo "password=${GITLAB_TOKEN}"; }; f'
182
+ ```
183
+
184
+ GitLab CI/CD 可使用内置的 `CI_JOB_TOKEN`:
185
+
186
+ ```yaml
187
+ before_script:
188
+ - git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.company.com/".insteadOf "https://gitlab.company.com/"
189
+ ```
190
+
191
+ ### Registry 配置
192
+
193
+ 在 `skills.json` 中配置私有 registry:
194
+
195
+ ```json
196
+ {
197
+ "registries": {
198
+ "internal": "https://gitlab.company.com",
199
+ "private": "git@gitlab.internal.io"
200
+ },
201
+ "skills": {
202
+ "company-standards": "internal:team/standards@latest",
203
+ "private-utils": "private:utils/helpers@v1.0.0"
204
+ }
205
+ }
206
+ ```
207
+
208
+ ### 自建 GitLab
209
+
210
+ 对于使用自定义域名的自建 GitLab 实例:
211
+
212
+ ```bash
213
+ # 直接安装
214
+ npx reskill install git.mycompany.io:team/skill@v1.0.0
215
+
216
+ # 使用显式的 SSH URL
217
+ npx reskill install git@git.mycompany.io:team/skill.git@v1.0.0
218
+ ```
133
219
 
134
220
  ## 配置
135
221
 
@@ -216,7 +302,7 @@ my-project/
216
302
 
217
303
  | 变量 | 说明 | 默认值 |
218
304
  |------|------|--------|
219
- | `SKPM_CACHE_DIR` | 全局缓存目录 | `~/.reskill-cache` |
305
+ | `RESKILL_CACHE_DIR` | 全局缓存目录 | `~/.reskill-cache` |
220
306
  | `DEBUG` | 启用调试日志 | - |
221
307
 
222
308
  ## 开发
package/dist/cli/index.js CHANGED
@@ -290,20 +290,32 @@ class GitCloneError extends Error {
290
290
  repoUrl;
291
291
  originalError;
292
292
  isAuthError;
293
+ urlType;
293
294
  constructor(repoUrl, originalError){
294
295
  const isAuthError = GitCloneError.isAuthenticationError(originalError.message);
296
+ const urlType = GitCloneError.detectUrlType(repoUrl);
295
297
  let message = `Failed to clone repository: ${repoUrl}`;
296
298
  if (isAuthError) {
297
- message += '\n\nTip: For private repos, ensure git SSH keys or credentials are configured:';
298
- message += '\n - SSH: Check ~/.ssh/id_rsa or ~/.ssh/id_ed25519';
299
- message += "\n - HTTPS: Run 'git config --global credential.helper store'";
300
- message += '\n - Or use a personal access token in the URL';
299
+ message += '\n\nTip: For private repos, ensure git credentials are configured:';
300
+ if ('ssh' === urlType) {
301
+ message += '\n - Check ~/.ssh/id_rsa or ~/.ssh/id_ed25519';
302
+ message += '\n - Ensure SSH key is added to your Git hosting service';
303
+ } else {
304
+ message += "\n - Run 'git config --global credential.helper store'";
305
+ message += '\n - Or use a personal access token in the URL';
306
+ }
301
307
  }
302
308
  super(message);
303
309
  this.name = 'GitCloneError';
304
310
  this.repoUrl = repoUrl;
305
311
  this.originalError = originalError;
306
312
  this.isAuthError = isAuthError;
313
+ this.urlType = urlType;
314
+ }
315
+ static detectUrlType(url) {
316
+ if (url.startsWith('git@') || url.startsWith('ssh://')) return 'ssh';
317
+ if (url.startsWith('http://') || url.startsWith('https://')) return 'https';
318
+ return 'unknown';
307
319
  }
308
320
  static isAuthenticationError(message) {
309
321
  const authPatterns = [
@@ -614,6 +626,11 @@ class ConfigLoader {
614
626
  writeJson(this.configPath, toSave);
615
627
  this.config = toSave;
616
628
  }
629
+ ensureExists() {
630
+ if (this.exists()) return false;
631
+ this.create();
632
+ return true;
633
+ }
617
634
  create(options) {
618
635
  const config = {
619
636
  ...DEFAULT_SKILLS_JSON,
@@ -883,7 +900,8 @@ function installer_remove(targetPath) {
883
900
  function copyDirectory(src, dest, options) {
884
901
  const exclude = new Set(options?.exclude || [
885
902
  'README.md',
886
- 'metadata.json'
903
+ 'metadata.json',
904
+ '.reskill-commit'
887
905
  ]);
888
906
  installer_ensureDir(dest);
889
907
  const entries = external_node_fs_.readdirSync(src, {
@@ -1217,7 +1235,10 @@ class SkillManager {
1217
1235
  resolved: repoUrl,
1218
1236
  commit: cacheResult.commit
1219
1237
  });
1220
- if (!this.isGlobal && save && this.config.exists()) this.config.addSkill(skillName, ref);
1238
+ if (!this.isGlobal && save) {
1239
+ this.config.ensureExists();
1240
+ this.config.addSkill(skillName, ref);
1241
+ }
1221
1242
  const locationHint = this.isGlobal ? '(global)' : '';
1222
1243
  logger.success(`Installed ${skillName}@${version} to ${skillPath} ${locationHint}`.trim());
1223
1244
  const installed = this.getInstalledSkill(skillName);
@@ -1435,7 +1456,10 @@ class SkillManager {
1435
1456
  resolved: repoUrl,
1436
1457
  commit: cacheResult.commit
1437
1458
  });
1438
- if (!this.isGlobal && save && this.config.exists()) this.config.addSkill(skillName, ref);
1459
+ if (!this.isGlobal && save) {
1460
+ this.config.ensureExists();
1461
+ this.config.addSkill(skillName, ref);
1462
+ }
1439
1463
  const successCount = Array.from(results.values()).filter((r)=>r.success).length;
1440
1464
  const failCount = results.size - successCount;
1441
1465
  if (0 === failCount) logger.success(`Installed ${skillName}@${version} to ${successCount} agent(s)`);
@@ -1598,7 +1622,7 @@ const installCommand = new __WEBPACK_EXTERNAL_MODULE_commander__.Command('instal
1598
1622
  label: config.displayName
1599
1623
  }));
1600
1624
  const selected = await __WEBPACK_EXTERNAL_MODULE__clack_prompts__.multiselect({
1601
- message: 'Select agents to install skills to',
1625
+ message: `Select agents to install skills to ${__WEBPACK_EXTERNAL_MODULE_chalk__["default"].dim('(Space to toggle, Enter to confirm)')}`,
1602
1626
  options: allAgentChoices,
1603
1627
  required: true,
1604
1628
  initialValues: allAgentTypes
@@ -1620,7 +1644,7 @@ const installCommand = new __WEBPACK_EXTERNAL_MODULE_commander__.Command('instal
1620
1644
  hint: agents[a].skillsDir
1621
1645
  }));
1622
1646
  const selected = await __WEBPACK_EXTERNAL_MODULE__clack_prompts__.multiselect({
1623
- message: 'Select agents to install skills to',
1647
+ message: `Select agents to install skills to ${__WEBPACK_EXTERNAL_MODULE_chalk__["default"].dim('(Space to toggle, Enter to confirm)')}`,
1624
1648
  options: agentChoices,
1625
1649
  required: true,
1626
1650
  initialValues: installedAgents
@@ -35,6 +35,12 @@ export declare class ConfigLoader {
35
35
  * Save configuration
36
36
  */
37
37
  save(config?: SkillsJson): void;
38
+ /**
39
+ * Ensure skills.json exists, create with defaults if not
40
+ *
41
+ * @returns true if file was created, false if it already existed
42
+ */
43
+ ensureExists(): boolean;
38
44
  /**
39
45
  * Create default configuration
40
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/core/config-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAcpE;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA2B;gBAE7B,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,IAAI,IAAI,UAAU;IAiBlB;;OAEG;IACH,MAAM,IAAI,UAAU;IAKpB;;OAEG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;IAS/B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAejD;;OAEG;IACH,WAAW,IAAI,QAAQ,CAAC,cAAc,CAAC;IAUvC;;OAEG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAiB5C;;OAEG;IACH,aAAa,IAAI,MAAM;IAKvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAUzC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAYlC;;OAEG;IACH,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK/B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAI9C;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/core/config-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAcpE;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA2B;gBAE7B,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,IAAI,IAAI,UAAU;IAiBlB;;OAEG;IACH,MAAM,IAAI,UAAU;IAKpB;;OAEG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;IAS/B;;;;OAIG;IACH,YAAY,IAAI,OAAO;IAQvB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAejD;;OAEG;IACH,WAAW,IAAI,QAAQ,CAAC,cAAc,CAAC;IAUvC;;OAEG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAiB5C;;OAEG;IACH,aAAa,IAAI,MAAM;IAKvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAUzC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAYlC;;OAEG;IACH,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK/B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAI9C;AAED,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-manager.d.ts","sourceRoot":"","sources":["../../src/core/skill-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-manager.d.ts","sourceRoot":"","sources":["../../src/core/skill-manager.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -277,20 +277,32 @@ class GitCloneError extends Error {
277
277
  repoUrl;
278
278
  originalError;
279
279
  isAuthError;
280
+ urlType;
280
281
  constructor(repoUrl, originalError){
281
282
  const isAuthError = GitCloneError.isAuthenticationError(originalError.message);
283
+ const urlType = GitCloneError.detectUrlType(repoUrl);
282
284
  let message = `Failed to clone repository: ${repoUrl}`;
283
285
  if (isAuthError) {
284
- message += '\n\nTip: For private repos, ensure git SSH keys or credentials are configured:';
285
- message += '\n - SSH: Check ~/.ssh/id_rsa or ~/.ssh/id_ed25519';
286
- message += "\n - HTTPS: Run 'git config --global credential.helper store'";
287
- message += '\n - Or use a personal access token in the URL';
286
+ message += '\n\nTip: For private repos, ensure git credentials are configured:';
287
+ if ('ssh' === urlType) {
288
+ message += '\n - Check ~/.ssh/id_rsa or ~/.ssh/id_ed25519';
289
+ message += '\n - Ensure SSH key is added to your Git hosting service';
290
+ } else {
291
+ message += "\n - Run 'git config --global credential.helper store'";
292
+ message += '\n - Or use a personal access token in the URL';
293
+ }
288
294
  }
289
295
  super(message);
290
296
  this.name = 'GitCloneError';
291
297
  this.repoUrl = repoUrl;
292
298
  this.originalError = originalError;
293
299
  this.isAuthError = isAuthError;
300
+ this.urlType = urlType;
301
+ }
302
+ static detectUrlType(url) {
303
+ if (url.startsWith('git@') || url.startsWith('ssh://')) return 'ssh';
304
+ if (url.startsWith('http://') || url.startsWith('https://')) return 'https';
305
+ return 'unknown';
294
306
  }
295
307
  static isAuthenticationError(message) {
296
308
  const authPatterns = [
@@ -601,6 +613,11 @@ class ConfigLoader {
601
613
  writeJson(this.configPath, toSave);
602
614
  this.config = toSave;
603
615
  }
616
+ ensureExists() {
617
+ if (this.exists()) return false;
618
+ this.create();
619
+ return true;
620
+ }
604
621
  create(options) {
605
622
  const config = {
606
623
  ...DEFAULT_SKILLS_JSON,
@@ -870,7 +887,8 @@ function installer_remove(targetPath) {
870
887
  function copyDirectory(src, dest, options) {
871
888
  const exclude = new Set(options?.exclude || [
872
889
  'README.md',
873
- 'metadata.json'
890
+ 'metadata.json',
891
+ '.reskill-commit'
874
892
  ]);
875
893
  installer_ensureDir(dest);
876
894
  const entries = external_node_fs_.readdirSync(src, {
@@ -1245,7 +1263,10 @@ class SkillManager {
1245
1263
  resolved: repoUrl,
1246
1264
  commit: cacheResult.commit
1247
1265
  });
1248
- if (!this.isGlobal && save && this.config.exists()) this.config.addSkill(skillName, ref);
1266
+ if (!this.isGlobal && save) {
1267
+ this.config.ensureExists();
1268
+ this.config.addSkill(skillName, ref);
1269
+ }
1249
1270
  const locationHint = this.isGlobal ? '(global)' : '';
1250
1271
  logger.success(`Installed ${skillName}@${version} to ${skillPath} ${locationHint}`.trim());
1251
1272
  const installed = this.getInstalledSkill(skillName);
@@ -1463,7 +1484,10 @@ class SkillManager {
1463
1484
  resolved: repoUrl,
1464
1485
  commit: cacheResult.commit
1465
1486
  });
1466
- if (!this.isGlobal && save && this.config.exists()) this.config.addSkill(skillName, ref);
1487
+ if (!this.isGlobal && save) {
1488
+ this.config.ensureExists();
1489
+ this.config.addSkill(skillName, ref);
1490
+ }
1467
1491
  const successCount = Array.from(results.values()).filter((r)=>r.success).length;
1468
1492
  const failCount = results.size - successCount;
1469
1493
  if (0 === failCount) logger.success(`Installed ${skillName}@${version} to ${successCount} agent(s)`);
@@ -13,7 +13,12 @@ export declare class GitCloneError extends Error {
13
13
  readonly repoUrl: string;
14
14
  readonly originalError: Error;
15
15
  readonly isAuthError: boolean;
16
+ readonly urlType: 'ssh' | 'https' | 'unknown';
16
17
  constructor(repoUrl: string, originalError: Error);
18
+ /**
19
+ * Detect URL type from repository URL
20
+ */
21
+ static detectUrlType(url: string): 'ssh' | 'https' | 'unknown';
17
22
  /**
18
23
  * Check if an error message indicates an authentication problem
19
24
  */
@@ -1 +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"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reskill",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "AI Skills Package Manager - Git-based skills management for AI agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",