@dayinxisheng/skillctl 1.0.0 → 1.0.2

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/CHANGELOG.md ADDED
@@ -0,0 +1,37 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.2] - 2026-03-05
9
+
10
+ ### Fixed
11
+ - 修复 Windows 平台上 `list` 命令显示错误的 Unix 风格路径(`~/.claude/skills`)
12
+ - 现在 `list` 命令会根据平台自动显示正确的路径格式:
13
+ - Windows: `C:\Users\用户名\.claude\skills`
14
+ - Linux: `/home/用户名/.claude/skills`
15
+ - macOS: `/Users/用户名/.claude/skills`
16
+
17
+ ## [1.0.1] - 2026-03-05
18
+
19
+ ### Added
20
+ - `CHANGELOG.md` - 项目变更日志
21
+
22
+ ### Changed
23
+ - 改进 `README.md` 使用说明,添加更多示例和场景
24
+ - 更新包名为 `@dayinxisheng/skillctl`(使用命名空间)
25
+ - 添加 `publishConfig.access: public` 支持公开发布
26
+
27
+ ## [1.0.0] - 2026-03-05
28
+
29
+ ### Added
30
+ - 初始发布
31
+ - 激活/停用 skills(支持 user/project 级别)
32
+ - 导入外部 skill 到项目
33
+ - 定位 skill 实际位置
34
+ - 查看激活状态和列表
35
+ - 仓库路径配置管理
36
+ - 跨平台支持(Windows/macOS/Linux)
37
+ - TypeScript 类型定义
package/README.md CHANGED
@@ -1,103 +1,246 @@
1
- # skillctl
1
+ # @dayinxisheng/skillctl
2
2
 
3
- Claude Skills 管理工具 - TypeScript/JavaScript 版本
3
+ > Claude Skills 管理工具 - 轻松管理你的 Claude Skills
4
4
 
5
5
  管理 Claude Skills 的激活状态和项目归档,通过软链接实现 skills 的灵活切换。
6
6
 
7
- ## 安装
7
+ ## 📦 安装
8
8
 
9
9
  ```bash
10
- npm install -g skillctl
10
+ npm install -g @dayinxisheng/skillctl
11
11
  ```
12
12
 
13
- 或从源码安装:
13
+ 安装完成后,可以在任何目录使用 `skillctl` 命令。
14
+
15
+ ## 🚀 快速开始
16
+
17
+ ### 第一步:设置仓库路径
18
+
19
+ 告诉 skillctl 你的 skills 仓库在哪里(存储所有 skill 文件的目录):
14
20
 
15
21
  ```bash
16
- git clone <repo-url>
17
- cd skillctl
18
- npm install
19
- npm run build
20
- npm link
22
+ skillctl set-repo ~/my-skills
23
+ ```
24
+
25
+ ### 第二步:查看可用的 skills
26
+
27
+ ```bash
28
+ skillctl all-list
29
+ ```
30
+
31
+ 输出示例:
21
32
  ```
33
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
34
+ 项目中所有可用的 Skills
35
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
22
36
 
23
- ## 使用
37
+ brainstorming
38
+ frontend-design
39
+ pdf-tools
24
40
 
25
- ### 设置仓库路径
41
+ 共找到 3 个 skills
42
+ 位置: ~/my-skills
43
+ ```
26
44
 
27
- 首先设置 skills 仓库路径:
45
+ ### 第三步:激活 skill
28
46
 
29
47
  ```bash
30
- skillctl set-repo /path/to/your/skills/repository
48
+ skillctl activate brainstorming
49
+ ```
50
+
51
+ 输出:
31
52
  ```
53
+ ✓ 已激活: brainstorming (user)
54
+ ```
55
+
56
+ ## 📚 核心概念
32
57
 
33
- ### 激活 Skill
58
+ ### User vs Project 两级作用域
34
59
 
35
- 将项目中的 skill 创建软链接到激活目录。
60
+ skillctl 支持两个作用域:
61
+
62
+ | 作用域 | 路径 | 说明 |
63
+ |--------|------|------|
64
+ | **User** | `~/.claude/skills/` | 全局可用,所有项目共享 |
65
+ | **Project** | `./.claude/skills/` | 仅当前项目可用 |
66
+
67
+ **示例场景:**
68
+ - 团队共享的技能 → 用 Project 级别
69
+ - 个人常用技能 → 用 User 级别
70
+
71
+ ## 🎯 常用命令
72
+
73
+ ### 1. 激活 Skill
36
74
 
37
75
  ```bash
38
- # 激活单个 skill user 级别(默认)
39
- skillctl activate my-skill
76
+ # 激活到 user 级别(默认)- 全局可用
77
+ skillctl activate brainstorming
40
78
 
41
- # 激活到 project 级别
42
- skillctl activate -p my-skill
79
+ # 激活到 project 级别 - 仅当前项目
80
+ skillctl activate -p brainstorming
43
81
 
44
82
  # 批量激活所有 skills
45
83
  skillctl activate --all
84
+ skillctl activate -u --all # 明确指定 user 级别
85
+ skillctl activate -p --all # 明确指定 project 级别
46
86
  ```
47
87
 
48
- ### 停用 Skill
49
-
50
- 删除软链接,停用已激活的 skill。
88
+ ### 2. 停用 Skill
51
89
 
52
90
  ```bash
53
- # 停用单个 skill
54
- skillctl deactivate my-skill
91
+ # 停用 user 级别的 skill
92
+ skillctl deactivate brainstorming
55
93
 
56
- # 批量停用所有 skills
94
+ # 停用 project 级别的 skill
95
+ skillctl deactivate -p brainstorming
96
+
97
+ # 批量停用所有
57
98
  skillctl deactivate --all
58
99
  ```
59
100
 
60
- ### 导入 Skill
101
+ ### 3. 查看状态
102
+
103
+ ```bash
104
+ # 查看所有 skills 的激活状态(表格形式)
105
+ skillctl status
106
+ ```
61
107
 
62
- 将外部的 skill 导入到项目的 `skills/` 目录。
108
+ 输出示例:
109
+ ```
110
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
111
+ Skills 激活状态
112
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
113
+
114
+ Skill User Project
115
+ ──────────────────────────── ────────── ───────────
116
+ brainstorming ✓ ✗
117
+ frontend-design ✗ ✓
118
+ pdf-tools ✓ ✓
119
+
120
+ ℹ 共 3 个 skills
121
+ ✓ = 已激活 ✗ = 未激活
122
+ ```
63
123
 
64
124
  ```bash
65
- # user 级别导入
66
- skillctl import my-skill
125
+ # 只看已激活的 skills
126
+ skillctl list
127
+ ```
67
128
 
68
- # 从 project 级别导入
69
- skillctl import -p my-skill
129
+ 输出示例:
130
+ ```
131
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
132
+ 当前激活的 Skills
133
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
134
+
135
+ 全局 (~/.claude/skills):
136
+ brainstorming → ~/my-skills/brainstorming
137
+ pdf-tools → ~/my-skills/pdf-tools
138
+ ℹ 共 2 个
139
+
140
+ 本地 (./.claude/skills):
141
+ frontend-design → ~/my-skills/frontend-design
142
+ ℹ 共 1 个
70
143
  ```
71
144
 
72
- ### 查看状态
145
+ ### 4. 导入 Skill
146
+
147
+ 将外部开发的 skill 导入到你的项目仓库:
73
148
 
74
149
  ```bash
75
- # 查看激活状态表
76
- skillctl status
150
+ # 假设你有一个 skill 在 ~/.claude/skills/my-new-skill
151
+ # 将其导入到项目仓库
152
+ skillctl import my-new-skill
153
+ ```
77
154
 
78
- # 列出当前激活的 skills
79
- skillctl list
155
+ 这会:
156
+ 1. 将 skill 移动到你的项目仓库
157
+ 2. 在原位置创建软链接
80
158
 
81
- # 列出所有可用的 skills
82
- skillctl all-list
159
+ ### 5. 定位 Skill
83
160
 
84
- # 定位 skill 的实际位置
85
- skillctl locate my-skill
161
+ 查找 skill 的实际存储位置:
162
+
163
+ ```bash
164
+ skillctl locate brainstorming
165
+ ```
166
+
167
+ 输出示例:
168
+ ```
169
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
170
+ Skill 定位: brainstorming
171
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
172
+
173
+ 全局: ~/.claude/skills/brainstorming → ~/my-skills/brainstorming (软链接)
86
174
  ```
87
175
 
88
- ### 配置管理
176
+ ## ⚙️ 配置管理
89
177
 
90
178
  ```bash
91
- # 查看配置信息
179
+ # 查看当前配置
92
180
  skillctl config
181
+ ```
182
+
183
+ 输出示例:
184
+ ```
185
+ ℹ 配置文件: ~/.config/skillctl/config.json
186
+ ℹ 仓库路径: ~/my-skills
187
+ ```
188
+
189
+ ```bash
190
+ # 更新仓库路径
191
+ skillctl set-repo /new/path/to/skills
93
192
 
94
193
  # 查看当前仓库路径
95
194
  skillctl get-repo
96
195
  ```
97
196
 
98
- ## 开发
197
+ ## 💡 实用场景
198
+
199
+ ### 场景 1:新项目设置
200
+
201
+ ```bash
202
+ # 1. 进入项目目录
203
+ cd ~/my-project
204
+
205
+ # 2. 激活项目需要的 skills
206
+ skillctl activate -p frontend-design
207
+ skillctl activate -p brainstorming
208
+
209
+ # 3. 验证
210
+ skillctl list
211
+ ```
212
+
213
+ ### 场景 2:切换技能集
99
214
 
100
215
  ```bash
216
+ # 停用当前所有 skills
217
+ skillctl deactivate --all
218
+
219
+ # 激活新的技能集
220
+ skillctl activate pdf-tools
221
+ skillctl activate docx-tools
222
+ ```
223
+
224
+ ### 场景 3:分享你的 skill
225
+
226
+ ```bash
227
+ # 1. 导入你的 skill 到项目仓库
228
+ skillctl import my-awesome-skill
229
+
230
+ # 2. 提交到 git
231
+ cd ~/my-skills
232
+ git add skills/my-awesome-skill
233
+ git commit -m "Add my-awesome-skill"
234
+ git push
235
+ ```
236
+
237
+ ## 🛠️ 开发
238
+
239
+ ```bash
240
+ # 克隆项目
241
+ git clone <repo-url>
242
+ cd skillctl
243
+
101
244
  # 安装依赖
102
245
  npm install
103
246
 
@@ -107,6 +250,9 @@ npm run dev
107
250
  # 构建
108
251
  npm run build
109
252
 
253
+ # 本地测试
254
+ npm link
255
+
110
256
  # 运行测试
111
257
  npm test
112
258
 
@@ -115,33 +261,42 @@ npm run lint
115
261
  npm run lint:fix
116
262
  ```
117
263
 
118
- ## 项目结构
264
+ ## 📁 项目结构
119
265
 
120
266
  ```
121
267
  src/
122
268
  ├── index.ts # CLI 入口
123
269
  ├── commands/ # 命令处理器
124
- │ ├── activate.ts
125
- │ ├── deactivate.ts
126
- │ ├── import.ts
127
- │ ├── locate.ts
128
- │ ├── status.ts
129
- │ ├── list.ts
130
- │ ├── all-list.ts
131
- │ ├── set-repo.ts
132
- │ └── config.ts
270
+ │ ├── activate.ts # 激活命令
271
+ │ ├── deactivate.ts # 停用命令
272
+ │ ├── import.ts # 导入命令
273
+ │ ├── locate.ts # 定位命令
274
+ │ ├── status.ts # 状态命令
275
+ │ ├── list.ts # 列表命令
276
+ │ ├── all-list.ts # 全部列表命令
277
+ │ ├── set-repo.ts # 设置仓库命令
278
+ │ └── config.ts # 配置命令
133
279
  ├── lib/ # 核心业务逻辑
134
- │ ├── config-manager.ts
135
- │ ├── link-handler.ts
136
- │ └── skill-manager.ts
280
+ │ ├── config-manager.ts # 配置管理
281
+ │ ├── link-handler.ts # 软链接处理
282
+ │ └── skill-manager.ts # Skill 管理
137
283
  ├── utils/ # 工具函数
138
- │ ├── output.ts
139
- │ ├── errors.ts
140
- │ └── platform.ts
141
- └── types/ # 类型定义
284
+ │ ├── output.ts # 彩色输出
285
+ │ ├── errors.ts # 错误类型
286
+ │ └── platform.ts # 平台检测
287
+ └── types/ # TypeScript 类型定义
142
288
  └── index.ts
143
289
  ```
144
290
 
145
- ## 许可证
291
+ ## 📄 许可证
292
+
293
+ MIT License © 2026 hrjlab
294
+
295
+ ## 📝 变更日志
296
+
297
+ 查看 [CHANGELOG.md](CHANGELOG.md) 了解版本更新历史。
298
+
299
+ ## 🔗 相关链接
146
300
 
147
- MIT
301
+ - [npm 包](https://www.npmjs.com/package/@dayinxisheng/skillctl)
302
+ - [问题反馈](<your-repo-issues>)
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuC1C"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAwC1C"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * List 命令 - 列出已激活的 skills
3
3
  */
4
- import { getActiveSkills } from '../lib/skill-manager.js';
4
+ import { getActiveSkills, getActiveDir } from '../lib/skill-manager.js';
5
5
  import { printHeader, printInfo, printLink } from '../utils/output.js';
6
6
  import chalk from 'chalk';
7
7
  import { getCwd } from '../utils/platform.js';
@@ -12,7 +12,8 @@ export async function list() {
12
12
  // 获取 project 级别的 skills
13
13
  const projectSkills = await getActiveSkills('project');
14
14
  // 显示全局 skills
15
- console.log(chalk.cyan(`全局 (${chalk.yellow('~/.claude/skills')})`));
15
+ const userDir = getActiveDir('user');
16
+ console.log(chalk.cyan(`全局 (${chalk.yellow(userDir)})`));
16
17
  if (userSkills.length === 0) {
17
18
  console.log(` ${chalk.yellow('(无)')}`);
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,WAAW,CAAC,cAAc,CAAC,CAAC;IAE5B,qBAAqB;IACrB,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;IACjD,wBAAwB;IACxB,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IAEvD,cAAc;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,SAAS,CAAC,KAAK,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,cAAc;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,SAAS,CAAC,KAAK,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,WAAW,CAAC,cAAc,CAAC,CAAC;IAE5B,qBAAqB;IACrB,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;IACjD,wBAAwB;IACxB,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IAEvD,cAAc;IACd,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,SAAS,CAAC,KAAK,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,cAAc;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,SAAS,CAAC,KAAK,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dayinxisheng/skillctl",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Claude Skills 管理工具 - 管理 Claude Skills 的激活状态和项目归档",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -46,7 +46,8 @@
46
46
  "files": [
47
47
  "dist",
48
48
  "README.md",
49
- "LICENSE"
49
+ "LICENSE",
50
+ "CHANGELOG.md"
50
51
  ],
51
52
  "publishConfig": {
52
53
  "access": "public"