joyskills-cli 0.2.6 → 0.2.7

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
@@ -1,54 +1,29 @@
1
- # joySkills - OpenSkills 的增强替代品
1
+ # joySkills - 新一代团队 Skill 治理平台
2
2
 
3
- > 100% 兼容 OpenSkills + 团队协作增强(版本锁定、团队 Registry、安全审计)
3
+ > 在协议层兼容 open skill / Claude Skills,在能力层扩展企业级治理能力
4
4
 
5
5
  [![npm version](https://badge.fury.io/js/joyskills-cli.svg)](https://www.npmjs.com/package/joyskills-cli)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
7
 
8
- **🔗 Links:** [npm Package](https://www.npmjs.com/package/joyskills-cli) | [Git Repository](https://github.com/your-org/joyskills-cli)
8
+ **🔗 Links:** [npm Package](https://www.npmjs.com/package/joyskills-cli) | [Git Repository](https://coding.jd.com/rc-ai/joyskill)
9
9
 
10
- ## 💡 为什么选择 joySkills?
10
+ ## 💡 为什么需要 joySkills?
11
11
 
12
- **joySkills OpenSkills 的超集**,提供:
12
+ AI 原生开发时代,**Skill**(技能)成为了比 function 更友好的能力抽象单元。然而当团队规模扩大,单纯的本地 skill 管理会遇到:
13
13
 
14
- ### 🎯 OpenSkills 的全部能力
15
- - 安装公开 skill(调用 `openskills install`)
16
- - 生成 AGENTS.md(`joySkills sync` = `openskills sync` + 增强)
17
- - 读取 skill 内容(`joySkills read` = `openskills read`)
18
- - ✅ 100% 兼容 Claude Code / Cursor / Windsurf
14
+ - **版本混乱**:不同项目使用不同版本的 skill,难以统一升级
15
+ - **安全风险**:无法及时发现和处理已废弃或有风险的 skill 版本
16
+ - **缺乏治理**:谁在用什么 skill?如何审批新版本?
17
+ - **协作困难**:团队成员各自维护 skill,无法共享和复用
19
18
 
20
- ### 🚀 团队协作增强(OpenSkills 缺失的)
21
- - ✅ **版本锁定**:joySkills.lock 确保团队版本统一
22
- - ✅ **团队 Registry**:从 Git 仓库安装内部 skill
23
- - ✅ **安全审计**:自动检测废弃和有风险的 skill
24
- - ✅ **状态管理**:draft → review → approved → deprecated
19
+ joySkills 提供了一套**完整的团队级 Skill 治理方案**,同时保持与现有生态的 100% 兼容。
25
20
 
26
21
  ## ✨ 核心特性
27
22
 
28
- ### 📦 公开 + 内部 Skill 统一管理
29
- ```bash
30
- # 安装公开 skill
31
- joySkills install anthropics/skills/pdf
32
-
33
- # 安装内部 skill(需配置 Registry)
34
- joySkills install team://your-team/rc-onboarding
35
-
36
- # 统一同步
37
- joySkills sync # 生成 AGENTS.md + joySkills.lock
38
- ```
39
-
40
- **核心价值**:
41
- - ✅ 公开 + 内部 skill 统一管理,一个命令搞定
42
- - ✅ 版本锁定(joySkills.lock),团队环境一致
43
- - ✅ 100% 兼容 OpenSkills,随时可回退
44
-
45
- **路径设计**:
46
- | 安装方式 | joySkills | OpenSkills |
47
- |---------|-----------|------------|
48
- | 项目级 | `.agent/skills` | `.agent/skills` (--universal) |
49
- | 全局 | `~/.agent/skills` | `~/.claude/skills` (--global) |
50
-
51
- **优先级**:项目级 > 全局,不同项目可用不同版本
23
+ ### 📦 统一 Skill 源(Registry)
24
+ - 团队/组织级 Skill 仓库
25
+ - 基于 Git 的版本管理
26
+ - 支持私有部署和权限控制
52
27
 
53
28
  ### 🔒 版本锁定(joySkills.lock)
54
29
  - 项目级版本锁定,确保环境一致
@@ -70,220 +45,131 @@ joySkills sync # 生成 AGENTS.md + joySkills.lock
70
45
  - 安全风险预警
71
46
  - 自动生成升级建议
72
47
 
73
- ### 📋 OpenSkills 兼容命令
74
- ```bash
75
- # sync 命令(扫描所有路径 + 生成 AGENTS.md)
76
- joySkills sync
77
- # 扫描路径:.agent/skills, ~/.agent/skills, .claude/skills, ~/.claude/skills
78
- # ✅ 生成 AGENTS.md(与 openskills sync 格式相同)
79
- # ✅ 额外生成 joySkills.lock(版本锁定)
80
-
81
- # read 命令(按优先级读取 skill)
82
- joySkills read rc-onboarding
83
- # ✅ 路径查找优先级与 openskills read 一致
84
- # ✅ 输出格式完全相同
85
- ```
48
+ ### 🤝 100% 兼容现有生态
49
+ - 兼容 Claude Code / Cursor / Windsurf / Aider
50
+ - 不改变 `skills/` 目录结构
51
+ - 不改变 `SKILL.md` 文件格式
86
52
 
87
53
  ## 🚀 快速开始
88
54
 
89
- ### 场景 1:个人开发者(替代 OpenSkills)
55
+ ### 安装
56
+
57
+ joySkills 支持**全局安装**和**项目级安装**两种方式:
90
58
 
91
59
  ```bash
92
- # 1. 安装
60
+ # 全局安装
93
61
  npm install -g joyskills-cli
62
+ joySkills --version
94
63
 
95
- # 2. 安装公开 skill
96
- joySkills install anthropics/skills/pdf
97
- joySkills install @skillforge/code-review
98
-
99
- # 3. 生成 AGENTS.md
100
- joySkills sync
101
-
102
- # 4. 查看已安装
103
- joySkills list
64
+ # 或:项目级安装
65
+ npm install joyskills-cli
66
+ npx joySkills --version
104
67
  ```
105
68
 
106
- ### 场景 2:团队协作(内部 skill)
107
-
108
- **痛点**:
109
- - 😓 内部 skill 群里发 zip,手动下载 + 解压
110
- - 😓 新人 onboarding,问“哪些 skill 必须装”
111
- - 😓 skill 更新后,通知所有人重新下载
69
+ ### 5 分钟上手
112
70
 
113
- **解决方案**:
114
71
  ```bash
115
- # 1. Tech Lead 搭建团队 Registry(Git 仓库)
116
- mkdir team-skills && cd team-skills
117
- mkdir rc-onboarding rc-commit-lint
118
- # 将 SKILL.md 放入对应目录
119
- git init && git add . && git commit -m "init"
120
- git remote add origin https://git.yourcompany.com/team-skills.git
121
- git push
122
-
123
- # 2. 团队成员配置(一次)
124
- cat > .joyskillrc << 'EOF'
125
- {
126
- "registries": [{
127
- "id": "team://your-team",
128
- "url": "https://git.yourcompany.com/team-skills.git",
129
- "type": "git"
130
- }]
131
- }
132
- EOF
133
-
134
- # 3. 安装 skill(像 npm 一样)
135
- joySkills install team://your-team/rc-onboarding
136
- joySkills install team://your-team/rc-commit-lint
137
- joySkills sync
138
-
139
- # 4. 团队同步(自动化)
140
- git add AGENTS.md joySkills.lock .joyskillrc
141
- git commit -m "setup team skills"
142
- git push
143
-
144
- # 5. 新成员加入(1 分钟)
145
- git clone <project-repo>
146
- joySkills install # 自动安装所有锁定版本
147
- ```
148
-
149
- **效果对比**:
150
- | 场景 | 之前 | 现在 |
151
- |------|------|------|
152
- | 新人 onboarding | 群里找 8 个 zip,手动装(30分钟) | `joySkills install`(1分钟) |
153
- | skill 更新 | 群发通知 + 手动更新(15分钟) | `git pull && joySkills install`(1分钟) |
154
- | 版本不一致 | 频繁出现,难排查 | joySkills.lock 锁定,不会出现 |
155
-
156
- ### 场景 3:从 OpenSkills 迁移
157
-
158
- ```bash
159
- # 已经用 openskills 安装了很多 skills
160
- openskills install skill-a
161
- openskills install skill-b
162
-
163
- # 切换到 joySkills(无需重装)
164
- joySkills sync
165
- # ✅ 自动识别已有 skills
166
- # ✅ 生成 joySkills.lock
167
- # ✅ 后续用 joySkills install 安装新 skill
168
- ```
169
-
170
- ## 📋 完整命令参考
72
+ # 1. 进入你的项目目录
73
+ cd your-project
171
74
 
172
- ### OpenSkills 兼容命令
75
+ # 2. 安装一个 skill
76
+ joySkills install web-search
77
+ # 或使用 npx(如果是项目级安装)
78
+ npx joySkills install web-search
173
79
 
174
- #### `joySkills sync`
175
- 生成 AGENTS.md(100% 兼容 `openskills sync` + 增强)
176
-
177
- ```bash
178
- joySkills sync
179
- # ✅ 扫描 .agent/skills, ~/.agent/skills, .claude/skills, ~/.claude/skills
180
- # ✅ 生成 AGENTS.md(OpenSkills 兼容格式)
181
- # ✅ 生成 joySkills.lock(版本锁定)
182
- # ✅ 版本一致性检查
183
- ```
80
+ # 3. 查看已安装的 skills
81
+ joySkills list
184
82
 
185
- #### `joySkills read <skill-name>`
186
- 读取 skill 内容(100% 兼容 `openskills read`)
83
+ # 4. 检查状态
84
+ joySkills status
187
85
 
188
- ```bash
189
- joySkills read rc-onboarding
190
- # ✅ 路径查找优先级与 openskills 一致
191
- # ✅ 输出格式完全相同
86
+ # 5. 审计安全性
87
+ joySkills audit
192
88
  ```
193
89
 
194
- ### joySkills 增强命令
90
+ 完成!你的 Claude Code / Cursor 等编辑器会自动识别 `skills/` 目录中的技能。
195
91
 
196
- #### `joySkills install <skill>`
197
- 安装 skill(公开 + 团队 + 本地)
92
+ ## 📋 完整命令参考
198
93
 
199
- ```bash
200
- # 公开 skill(自动调用 openskills)
201
- joySkills install anthropics/skills/pdf
94
+ ### `joySkills list`
95
+ 列出可用的 skills
202
96
 
203
- # 团队 skill
204
- joySkills install team://your-team/rc-onboarding
97
+ **选项:**
98
+ - `-a, --all-versions` - 显示所有版本
99
+ - `-c, --category <category>` - 按分类过滤
100
+ - `-s, --search <query>` - 搜索 skill 名称或描述
101
+ - `-i, --installed` - 只显示已安装的 skills
102
+ - `-l, --local` - 只显示本地 skills
103
+ - `-r, --registry <name>` - 显示指定 registry 的 skills
205
104
 
206
- # 本地 skill
207
- joySkills install ./my-local-skill
105
+ ### `joySkills install <skill>`
106
+ 安装一个 skill
208
107
 
209
- # 指定版本
210
- joySkills install team://your-team/rc-onboarding@1.2.0
211
- ```
108
+ ```bash
109
+ # 安装最新版本
110
+ joySkills install web-search
212
111
 
213
- #### `joySkills list`
214
- 列出可用的 skills
112
+ # 安装指定版本
113
+ joySkills install web-search@1.0.0
215
114
 
216
- ```bash
217
- joySkills list
218
- joySkills list --installed # 只显示已安装
219
- joySkills list --search "web" # 搜索
115
+ # 从指定 registry 安装
116
+ joySkills install web-search --registry my-team
220
117
  ```
221
118
 
222
- #### `joySkills remove <skill>`
119
+ ### `joySkills remove <skill>`
223
120
  删除已安装的 skill
224
121
 
225
122
  ```bash
226
- joySkills remove rc-onboarding
123
+ joySkills remove web-search
227
124
  ```
228
125
 
229
- #### `joySkills team`
126
+ ### `joySkills team <subcommand>`
230
127
  管理团队 registry
231
128
 
232
129
  ```bash
130
+ # 添加团队 registry
233
131
  joySkills team add my-team /path/to/registry
132
+
133
+ # 列出所有 registries
234
134
  joySkills team list
135
+
136
+ # 删除 registry
235
137
  joySkills team remove my-team
236
138
  ```
237
139
 
238
- #### `joySkills status`
140
+ ### `joySkills status`
239
141
  显示当前项目的 skills 状态
240
142
 
241
143
  ```bash
242
144
  joySkills status
243
145
  ```
244
146
 
245
- #### `joySkills audit`
147
+ ### `joySkills audit`
246
148
  审计已安装 skills 的安全性和弃用状态
247
149
 
248
- ## 📖 核心概念
150
+ ```bash
151
+ joySkills audit
152
+ ```
249
153
 
250
- ### Skill Registry(团队 skill 仓库)
154
+ ## 📖 核心概念
251
155
 
252
- Registry 是团队统一管理 skill 的 Git 仓库,像 npm 私有源一样。
156
+ ### Skill Registry(技能注册表)
253
157
 
254
- **目录结构**:
255
- ```
256
- team-skills/ # Git 仓库
257
- ├── registry.yaml # 版本配置(可选)
258
- ├── rc-onboarding/
259
- │ ├── SKILL.md # 必须
260
- │ ├── scripts/ # 可选:脚本
261
- │ └── templates/ # 可选:模板
262
- └── rc-commit-lint/
263
- └── SKILL.md
264
- ```
158
+ Registry 是团队统一管理的 Skill 仓库,通常是一个 Git 仓库 + `registry.yaml` 索引文件:
265
159
 
266
- **registry.yaml 示例**(可选,用于版本管理):
267
160
  ```yaml
268
161
  registryVersion: 1
269
162
  registryId: team://your-team
270
163
  skills:
271
- - id: rc-onboarding
272
- name: "搜推团队 Onboarding"
273
- visibility: internal # internal / public / restricted
164
+ - id: web-search
165
+ name: "Web 搜索"
166
+ visibility: public
274
167
  versions:
275
168
  - version: 1.2.0
276
- state: approved # draft / pending_review / approved / deprecated
169
+ state: approved
277
170
  recommended: true
278
- - version: 1.1.0
279
- state: deprecated
280
171
  ```
281
172
 
282
- **使用场景**:
283
- - ✅ 内部业务 skill(如 rc-onboarding、rc-commit-lint)
284
- - ✅ 公司级通用 skill(如 code-review、test-helper)
285
- - ✅ 项目级定制 skill(如 project-specific-tools)
286
-
287
173
  ### joySkills.lock(锁文件)
288
174
 
289
175
  项目级锁文件,记录实际使用的 skill 版本:
@@ -340,8 +226,8 @@ joySkills/
340
226
 
341
227
  ```bash
342
228
  # 克隆仓库
343
- git clone https://github.com/your-org/joyskills-cli.git
344
- cd joyskills-cli
229
+ git clone https://coding.jd.com/rc-ai/joyskill.git
230
+ cd joyskill
345
231
 
346
232
  # 安装依赖
347
233
  npm install
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "joyskills-cli",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "Team-level skill governance compatible with open skill / Claude Skills",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -10,9 +10,7 @@
10
10
  "build": "echo 'No build needed for JavaScript version'",
11
11
  "start": "node src/index.js",
12
12
  "test": "jest",
13
- "dev": "node src/index.js",
14
- "prepublishOnly": "npm run check-secrets",
15
- "check-secrets": "! grep -rE 'jd\\.com|@jd\\.com|coding\\.jd' src/ README.md package.json spec/ || (echo '❌ 发现敏感信息,禁止发布!' && exit 1)"
13
+ "dev": "node src/index.js"
16
14
  },
17
15
  "keywords": [
18
16
  "claude",
@@ -28,24 +26,35 @@
28
26
  ],
29
27
  "author": "joySkills Team",
30
28
  "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/joyskills/joySkills.git"
32
+ },
33
+ "homepage": "https://github.com/joyskills/joySkills#readme",
34
+ "bugs": {
35
+ "url": "https://github.com/joyskills/joySkills/issues"
36
+ },
31
37
  "dependencies": {
38
+ "@inquirer/prompts": "^8.3.0",
39
+ "chalk": "^5.6.2",
32
40
  "commander": "^11.1.0",
41
+ "simple-git": "^3.32.3",
33
42
  "yaml": "^2.3.4",
34
43
  "zod": "^3.22.4"
35
44
  },
36
45
  "devDependencies": {
37
- "@types/node": "^20.10.5",
38
46
  "@types/jest": "^29.5.11",
39
- "typescript": "^5.3.3",
47
+ "@types/node": "^20.10.5",
40
48
  "jest": "^29.7.0",
41
49
  "ts-jest": "^29.1.1",
42
- "ts-node": "^10.9.2"
50
+ "ts-node": "^10.9.2",
51
+ "typescript": "^5.3.3"
43
52
  },
53
+ "type": "module",
44
54
  "files": [
45
- "src/",
46
- "spec/",
47
- "README.md",
48
- "LICENSE"
55
+ "src/"
49
56
  ],
50
- "type": "module"
57
+ "engines": {
58
+ "node": ">=18.0.0"
59
+ }
51
60
  }