itismyskillmarket 1.3.0 → 1.3.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.
Files changed (49) hide show
  1. package/.github/workflows/publish-npm.yml +59 -0
  2. package/.github/workflows/publish-skill.yml +72 -0
  3. package/5e51cb7aa8b8e60d49d86f4689f5d4d1.png +0 -0
  4. package/CHANGELOG.md +410 -0
  5. package/DEVELOPMENT.md +376 -0
  6. package/README.md +75 -6
  7. package/SKILLMARKET-GUIDE.md +288 -0
  8. package/dist/index.js +733 -212
  9. package/docs/WEEKLY-UPDATE-2026-04-23.md +43 -0
  10. package/docs/plans/2026-04-01-skillmarket-design.md +267 -0
  11. package/docs/plans/2026-04-01-skillmarket-implementation.md +1031 -0
  12. package/docs/plans/2026-04-15-cross-platform-adapter-design.md +416 -0
  13. package/docs/plans/2026-04-15-cross-platform-adapter-plan.md +833 -0
  14. package/docs/plans/2026-04-16-keyword-search-design.md +143 -0
  15. package/docs/plans/2026-04-29-weekly-update.md +57 -0
  16. package/package.json +1 -6
  17. package/skills/README.md +54 -0
  18. package/skills/test-skill/SKILL.md +25 -0
  19. package/skills/test-skill/index.js +66 -0
  20. package/skills/test-skill/metadata.json +9 -0
  21. package/skills/test-skill/package.json +19 -0
  22. package/skills/test-skill-1/SKILL.md +24 -0
  23. package/skills/test-skill-1/index.js +13 -0
  24. package/skills/test-skill-1/metadata.json +9 -0
  25. package/skills/test-skill-1/package.json +16 -0
  26. package/skills/test-skill-2/SKILL.md +25 -0
  27. package/skills/test-skill-2/index.js +13 -0
  28. package/skills/test-skill-2/metadata.json +9 -0
  29. package/skills/test-skill-2/package.json +16 -0
  30. package/src/adapters/base.ts +87 -0
  31. package/src/adapters/claude.ts +31 -0
  32. package/src/adapters/index.ts +9 -0
  33. package/src/adapters/opencode.ts +40 -0
  34. package/src/adapters/registry.ts +77 -0
  35. package/src/adapters/vscode.ts +62 -0
  36. package/src/cli.ts +189 -75
  37. package/src/commands/info.ts +4 -15
  38. package/src/commands/install.ts +93 -54
  39. package/src/commands/ls.ts +182 -17
  40. package/src/commands/npm.ts +118 -16
  41. package/src/commands/search.ts +12 -7
  42. package/src/commands/sync.ts +6 -27
  43. package/src/commands/uninstall.ts +313 -15
  44. package/src/commands/update.ts +2 -2
  45. package/src/index.ts +27 -0
  46. package/src/types.ts +35 -0
  47. package/tsconfig.json +10 -0
  48. package/tsup.config.ts +22 -0
  49. package/wanxuchen-skillmarket-1.0.1.tgz +0 -0
@@ -0,0 +1,59 @@
1
+ name: Publish to npm
2
+
3
+ on:
4
+ release:
5
+ types: [created]
6
+ workflow_dispatch:
7
+ inputs:
8
+ version:
9
+ description: 'Version to publish (e.g., 1.0.6)'
10
+ required: true
11
+ type: string
12
+
13
+ jobs:
14
+ publish:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - name: Checkout
18
+ uses: actions/checkout@v4
19
+
20
+ - name: Update version
21
+ if: github.event_name == 'workflow_dispatch'
22
+ run: |
23
+ CURRENT_VERSION=$(node -p "require('./package.json').version")
24
+ if [ "$CURRENT_VERSION" != "${{ github.event.inputs.version }}" ]; then
25
+ npm version ${{ github.event.inputs.version }} --no-git-tag-version
26
+ else
27
+ echo "Version already set to ${{ github.event.inputs.version }}, skipping version update"
28
+ fi
29
+
30
+ - name: Setup Node
31
+ uses: actions/setup-node@v4
32
+ with:
33
+ node-version: '20'
34
+ registry-url: 'https://registry.npmjs.org'
35
+
36
+ - name: Install dependencies
37
+ run: npm install
38
+
39
+ - name: Build
40
+ run: npm run build
41
+
42
+ - name: Publish to npm
43
+ run: npm publish --access=public
44
+ env:
45
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
46
+
47
+ release:
48
+ needs: publish
49
+ if: github.event_name == 'workflow_dispatch'
50
+ runs-on: ubuntu-latest
51
+ permissions:
52
+ contents: write
53
+ steps:
54
+ - name: Create GitHub Release
55
+ uses: softprops/action-gh-release@v2
56
+ with:
57
+ tag_name: v${{ github.event.inputs.version }}
58
+ name: Release v${{ github.event.inputs.version }}
59
+ generate_release_notes: true
@@ -0,0 +1,72 @@
1
+ name: Publish Skill
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ skill_name:
7
+ description: 'Skill name (from skills/ directory)'
8
+ required: true
9
+ type: string
10
+ version:
11
+ description: 'Version (optional, defaults to patch)'
12
+ required: false
13
+ type: string
14
+ default: ''
15
+
16
+ jobs:
17
+ publish:
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - name: Checkout
21
+ uses: actions/checkout@v4
22
+ with:
23
+ fetch-depth: 0
24
+
25
+ - name: Debug inputs
26
+ run: |
27
+ echo "skill_name input: '${{ github.event.inputs.skill_name }}'"
28
+ echo "version input: '${{ github.event.inputs.version }}'"
29
+ ls -la skills/
30
+
31
+ - name: Validate skill exists
32
+ run: |
33
+ SKILL_NAME="${{ github.event.inputs.skill_name }}"
34
+ echo "Skill name: $SKILL_NAME"
35
+ if [ -z "$SKILL_NAME" ]; then
36
+ echo "Error: skill_name is empty!"
37
+ exit 1
38
+ fi
39
+ if [ ! -d "skills/$SKILL_NAME" ]; then
40
+ echo "Error: Skill '$SKILL_NAME' not found in skills/ directory"
41
+ ls -la skills/
42
+ exit 1
43
+ fi
44
+ echo "Skill directory contents:"
45
+ ls -la "skills/$SKILL_NAME/"
46
+
47
+ - name: Setup Node
48
+ uses: actions/setup-node@v4
49
+ with:
50
+ node-version: '20'
51
+ registry-url: 'https://registry.npmjs.org'
52
+
53
+ - name: Install dependencies
54
+ run: |
55
+ cd "skills/${{ github.event.inputs.skill_name }}"
56
+ npm install
57
+
58
+ - name: Update version
59
+ run: |
60
+ cd "skills/${{ github.event.inputs.skill_name }}"
61
+ if [ -n "${{ github.event.inputs.version }}" ]; then
62
+ npm version ${{ github.event.inputs.version }} --no-git-tag-version
63
+ else
64
+ npm version minor --no-git-tag-version
65
+ fi
66
+
67
+ - name: Publish to npm
68
+ run: |
69
+ cd "skills/${{ github.event.inputs.skill_name }}"
70
+ npm publish --access=public
71
+ env:
72
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
package/CHANGELOG.md ADDED
@@ -0,0 +1,410 @@
1
+ # SkillMarket v1.3.2 更新日志
2
+
3
+ **日期**: 2026-04-30
4
+ **版本**: 1.3.2
5
+
6
+ ---
7
+
8
+ ## 🎉 新功能:增强卸载命令
9
+
10
+ ### 1. 卸载所有 Skills (`--all`)
11
+
12
+ 现在可以一键卸载所有已安装的 skills:
13
+
14
+ ```bash
15
+ # 卸载所有 skills(需要确认)
16
+ skm uninstall --all
17
+
18
+ # 强制卸载所有,跳过确认
19
+ skm uninstall --all --yes
20
+ ```
21
+
22
+ **确认提示示例**:
23
+ ```
24
+ Found 5 installed skill(s):
25
+ - brainstorming@1.2.0
26
+ - test-skill-1@1.1.0
27
+ - test-skill-2@1.0.0
28
+ - weather-time@1.0.0
29
+ - chinese-almanac@1.0.0
30
+
31
+ ⚠️ Are you sure you want to uninstall ALL 5 skill(s)? This action cannot be undone. (y/N): _
32
+ ```
33
+
34
+ ### 2. 预览模式 (`--dry-run`)
35
+
36
+ 新增 `--dry-run` 标志,可以预览将要删除的内容,而不实际执行删除:
37
+
38
+ ```bash
39
+ # 预览卸载单个 skill
40
+ skm uninstall brainstorming --dry-run
41
+
42
+ # 预览卸载所有 skills
43
+ skm uninstall --all --dry-run
44
+ ```
45
+
46
+ **预览输出示例**:
47
+ ```
48
+ 📋 Uninstall Preview for "brainstorming":
49
+
50
+ Version: 1.2.0
51
+ Installed: 2026-04-15T10:30:00Z
52
+ Platforms (from registry): OpenCode, Claude Code, VSCode
53
+
54
+ Local files to remove:
55
+ - ~/.skillmarket/skills/brainstorming
56
+
57
+ Platform links to remove:
58
+ - ~/.skillmarket/platform-links/opencode/skills/brainstorming
59
+ - ~/.skillmarket/platform-links/claude/skills/brainstorming
60
+ - ~/.skillmarket/platform-links/vscode/skills/brainstorming
61
+
62
+ ⚠️ This was a dry-run. No files were actually deleted.
63
+ ```
64
+
65
+ ### 3. 跳过确认 (`-y, --yes`)
66
+
67
+ 新增 `-y` 或 `--yes` 选项,跳过所有确认提示:
68
+
69
+ ```bash
70
+ # 强制卸载,不提示确认
71
+ skm uninstall brainstorming --yes
72
+
73
+ # 强制卸载所有,不提示确认
74
+ skm uninstall --all --yes
75
+ ```
76
+
77
+ ### 4. 改进错误处理
78
+
79
+ - 当平台卸载失败时,会询问用户是否继续清理本地文件
80
+ - 避免误删本地文件导致无法恢复
81
+
82
+ **错误处理示例**:
83
+ ```
84
+ Uninstalling from 3 platform(s)...
85
+
86
+ OpenCode ✅ Uninstalled
87
+ Claude Code ❌ Failed: EPERM: operation not permitted
88
+ VSCode ✅ Uninstalled
89
+
90
+ ⚠️ 1 platform(s) failed to uninstall. Continue with local cleanup? (y/N): _
91
+ ```
92
+
93
+ ### 5. 更新帮助文档
94
+
95
+ `skm --help` 现在包含卸载命令的完整说明:
96
+
97
+ ```bash
98
+ skm uninstall --help
99
+ ```
100
+
101
+ ---
102
+
103
+ ## 🔧 技术实现
104
+
105
+ ### 新增函数
106
+
107
+ | 函数名 | 功能 |
108
+ |--------|------|
109
+ | `uninstallAll()` | 卸载所有已安装的 skills |
110
+ | `askConfirmation()` | 请求用户确认(内部工具函数) |
111
+ | `getUninstallPreview()` | 收集卸载预览信息(内部工具函数) |
112
+
113
+ ### 更新接口
114
+
115
+ **UninstallOptions** 新增字段:
116
+ ```typescript
117
+ export interface UninstallOptions {
118
+ platforms?: string[]; // 目标平台列表
119
+ all?: boolean; // 卸载所有 skills
120
+ dryRun?: boolean; // 预览模式
121
+ yes?: boolean; // 跳过确认
122
+ }
123
+ ```
124
+
125
+ ### CLI 参数更新
126
+
127
+ | 参数 | 说明 |
128
+ |------|------|
129
+ | `-a, --all` | 卸载所有已安装的 skills |
130
+ | `-d, --dry-run` | 预览模式,不实际删除 |
131
+ | `-y, --yes` | 跳过确认提示 |
132
+
133
+ ---
134
+
135
+ ## 📦 完整版本历史
136
+
137
+ | 版本 | 日期 | 描述 |
138
+ |------|------|------|
139
+ | 1.3.2 | 2026-04-30 | 增强卸载命令:--all, --dry-run, --yes |
140
+ | 1.3.1 | 2026-04-29 | Bug 修复,workflow 改进 |
141
+ | 1.3.0 | 2026-04-23 | 独立搜索命令,改进分页逻辑 |
142
+ | 1.2.6 | 2026-04-22 | 添加搜索功能(--search) |
143
+ | 1.2.5 | 2026-04-16 | 文档更新 |
144
+ | 1.2.4 | 2026-04-16 | 修复版本号硬编码问题 |
145
+ | 1.2.3 | 2026-04-15 | 跨平台 Skill 安装支持 |
146
+
147
+ ---
148
+
149
+ ## 贡献者
150
+
151
+ - wxc2004 (wanxuchen)
152
+ - Sisyphus Agent
153
+
154
+ ---
155
+
156
+ # SkillMarket v1.2.6 更新日志
157
+
158
+ **日期**: 2026-04-22
159
+ **版本**: 1.2.6
160
+
161
+ ---
162
+
163
+ ## 🔍 新功能:skm ls 搜索支持
164
+
165
+ ### 功能说明
166
+
167
+ 新增搜索功能,可以通过关键字搜索 skills。
168
+
169
+ ### 新增选项
170
+
171
+ ```bash
172
+ # 搜索 npm 上的 skills
173
+ skm ls --search brain
174
+ skm ls -s brain
175
+
176
+ # 搜索已安装的 skills
177
+ skm ls --installed --search test
178
+
179
+ # 组合分页和搜索
180
+ skm ls --search brain --page 1 --limit 10
181
+ ```
182
+
183
+ ### 搜索字段
184
+
185
+ - skill ID
186
+ - displayName(显示名称)
187
+ - description(描述)
188
+
189
+ ---
190
+
191
+ ## 🎉 新功能:skm ls 分页支持
192
+
193
+ ### 功能说明
194
+
195
+ 当 skill 数量较多时,现在支持分页浏览。
196
+
197
+ ### 新增选项
198
+
199
+ ```bash
200
+ # 默认每页 20 个
201
+ skm ls
202
+
203
+ # 指定页码
204
+ skm ls --page 2
205
+
206
+ # 指定每页数量
207
+ skm ls --limit 10
208
+
209
+ # 组合使用
210
+ skm ls --page 2 --limit 10
211
+
212
+ # 已安装的 skills 也支持分页
213
+ skm ls --installed --page 2
214
+ ```
215
+
216
+ ### 输出示例
217
+
218
+ ```
219
+ Found 85 skill(s):
220
+
221
+ 📦 @skillmarket/brainstorming@1.2.0
222
+ 名称: Brainstorming
223
+ 描述: Feature brainstorming skill
224
+ 平台: opencode, cursor, vscode, claude
225
+ 链接: https://www.npmjs.com/package/@skillmarket/brainstorming
226
+
227
+ Page 1/5 (20 per page) | Use --page N to navigate
228
+ ```
229
+
230
+ ### 实现细节
231
+
232
+ - npm search API 使用 `from` 和 `size` 参数实现服务端分页
233
+ - 本地已安装 skills 使用数组 slice 实现客户端分页
234
+ - 默认每页 20 个,可自定义
235
+
236
+ ---
237
+
238
+ ## 🔧 改进
239
+
240
+ 1. **文档更新**
241
+ - 更新 README.md 添加分页使用示例
242
+ - 更新 SKILLMARKET-GUIDE.md 修复安装命令
243
+ - 更新 skills/README.md 添加 test-skill-1/2
244
+
245
+ 2. **版本管理优化**
246
+ - 版本号现在从 `package.json` 动态读取
247
+ - 不再需要手动同步版本号
248
+
249
+ ---
250
+
251
+ ## 📦 完整版本历史
252
+
253
+ | 版本 | 日期 | 描述 |
254
+ |------|------|------|
255
+ | 1.2.6 | 2026-04-16 | 修复版本号动态读取 |
256
+ | 1.2.5 | 2026-04-16 | 文档更新 |
257
+ | 1.2.4 | 2026-04-16 | 修复版本号硬编码问题 |
258
+ | 1.2.3 | 2026-04-15 | 跨平台 Skill 安装支持 |
259
+
260
+ ---
261
+
262
+ ## 贡献者
263
+
264
+ - wxc2004 (wanxuchen)
265
+
266
+ ---
267
+
268
+ # SkillMarket v1.2.3 发布总结
269
+
270
+ **日期**: 2026-04-15
271
+ **版本**: 1.2.3
272
+
273
+ ---
274
+
275
+ ## 🎉 新功能:跨平台 Skill 安装
276
+
277
+ ### 支持的平台
278
+
279
+ | 平台 | Skill 目录 | 状态 |
280
+ |------|-----------|------|
281
+ | OpenCode | `~/.config/opencode/skills/` | ✅ |
282
+ | Claude Code | `~/.claude/skills/` | ✅ |
283
+ | VSCode | `~/.copilot/skills/` | ✅ |
284
+
285
+ ### 新增命令
286
+
287
+ ```bash
288
+ # 查看可用平台
289
+ skm platforms
290
+
291
+ # 安装到所有检测到的平台
292
+ skm install <skill>
293
+
294
+ # 安装到指定平台
295
+ skm install <skill> --platform opencode
296
+ skm install <skill> --platform opencode,claude,vscode
297
+
298
+ # 卸载
299
+ skm uninstall <skill>
300
+ skm uninstall <skill> --platform claude
301
+ ```
302
+
303
+ ### 安装输出示例
304
+
305
+ ```
306
+ skm install test-skill-1
307
+
308
+ Installing test-skill-1...
309
+ Downloading package...
310
+ Setting up skill...
311
+
312
+ Installing to 3 platform(s)...
313
+
314
+ OpenCode ✅ Installed successfully
315
+ Claude Code ✅ Installed successfully
316
+ VSCode ✅ Installed successfully
317
+
318
+ 📊 Summary: 3 installed, 0 skipped, 0 failed
319
+
320
+ ✅ test-skill-1@1.1.0 installed successfully!
321
+ ```
322
+
323
+ ### 平台状态查看
324
+
325
+ ```
326
+ skm platforms
327
+
328
+ 📍 Available Platforms:
329
+
330
+ OpenCode ✅ Available (3 skills installed)
331
+ Claude Code ✅ Available (2 skills installed)
332
+ VSCode ✅ Available (3 skills installed)
333
+ ```
334
+
335
+ ---
336
+
337
+ ## 🐛 Bug 修复
338
+
339
+ 1. **npm scope 兼容问题**
340
+ - 修复了 `@wanxuchen/`、`@itismyskillmarket/` 等多个 scope 的自动检测
341
+ - 现在安装 `test-skill-1` 会自动查找正确的 npm 包
342
+
343
+ 2. **tarball 文件名匹配**
344
+ - 修复了 scoped 包文件名匹配逻辑
345
+ - 之前 `@scope/package` 被错误匹配为 `@scope-package`
346
+
347
+ ---
348
+
349
+ ## 📦 Skill 包列表
350
+
351
+ | Skill | npm 包名 | 用途 |
352
+ |-------|---------|------|
353
+ | test-skill | @wanxuchen/test-skill | 通用测试 |
354
+ | test-skill-1 | @wanxuchen/test-skill-1 | 测试安装和 info 功能 |
355
+ | test-skill-2 | @wanxuchen/test-skill-2 | 测试卸载和更新功能 |
356
+
357
+ ---
358
+
359
+ ## 🔧 技术实现
360
+
361
+ ### 架构
362
+
363
+ ```
364
+ src/adapters/
365
+ ├── base.ts # 平台适配器基类
366
+ ├── opencode.ts # OpenCode 适配器
367
+ ├── claude.ts # Claude Code 适配器
368
+ ├── vscode.ts # VSCode 适配器
369
+ ├── registry.ts # 平台注册和检测
370
+ └── index.ts # 导出
371
+ ```
372
+
373
+ ### 平台适配器接口
374
+
375
+ ```typescript
376
+ interface PlatformAdapter {
377
+ readonly id: string;
378
+ readonly name: string;
379
+ readonly skillDir: string;
380
+
381
+ isAvailable(): Promise<boolean>;
382
+ isInstalled(skillId: string): Promise<boolean>;
383
+ install(skillId: string, sourceDir: string): Promise<void>;
384
+ uninstall(skillId: string): Promise<void>;
385
+ listInstalled(): Promise<string[]>;
386
+ }
387
+ ```
388
+
389
+ ---
390
+
391
+ ## 📚 文档更新
392
+
393
+ - `README.md` - 更新使用说明
394
+ - `docs/plans/2026-04-15-cross-platform-adapter-design.md` - 设计文档
395
+ - `docs/plans/2026-04-15-cross-platform-adapter-plan.md` - 实现计划
396
+
397
+ ---
398
+
399
+ ## 🚀 下一步
400
+
401
+ - [ ] 发布到 VSCode Marketplace
402
+ - [ ] 发布 Claude Code 插件市场
403
+ - [ ] 创建 skill 市场网站
404
+ - [ ] 添加 skill 搜索功能
405
+
406
+ ---
407
+
408
+ ## 贡献者
409
+
410
+ - wxc2004 (wanxuchen)