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
package/DEVELOPMENT.md ADDED
@@ -0,0 +1,376 @@
1
+ # SkillMarket 开发记录
2
+
3
+ **开发日期**: 2026-04-01
4
+ **开发者**: Sisyphus (Sisyphus Agent)
5
+ **项目状态**: v1.0.0 完成
6
+
7
+ ---
8
+
9
+ ## 1. 项目概述
10
+
11
+ ### 1.1 项目目标
12
+ 创建一个跨平台 npm CLI 工具 `skillmarket`,用于管理 AI 编程工具(Cursor / VSCode / Codex / OpenCode / Claude Code / Antigravity)的 skills。
13
+
14
+ ### 1.2 核心功能
15
+ - 查看 npm registry 上可用的 skills 列表
16
+ - 查看 skill 的详细介绍
17
+ - 安装 / 更新 / 卸载 skills
18
+ - 多平台适配(软链接机制)
19
+
20
+ ### 1.3 技术栈
21
+ | 组件 | 选型 | 理由 |
22
+ |------|------|------|
23
+ | 语言 | TypeScript | 类型安全,便于维护 |
24
+ | 构建 | tsup | 快速,输出 CJS/ESM |
25
+ | CLI 解析 | commander | 轻量,成熟 |
26
+ | 文件操作 | fs-extra | Promise 化的文件系统操作 |
27
+ | 兼容性 | Node.js 18+ | 软链接、crypto 等特性 |
28
+
29
+ ---
30
+
31
+ ## 2. 目录结构
32
+
33
+ ```
34
+ skillmarket/
35
+ ├── package.json # npm 包配置
36
+ ├── tsconfig.json # TypeScript 配置
37
+ ├── tsup.config.ts # 构建配置
38
+ ├── README.md # 使用文档
39
+ ├── .gitignore
40
+ ├── dist/ # 编译输出
41
+ └── src/
42
+ ├── index.ts # CLI 入口 (shebang)
43
+ ├── cli.ts # 命令解析入口
44
+ ├── constants.ts # 常量定义 (平台、目录名)
45
+ ├── types.ts # 类型定义
46
+ ├── commands/
47
+ │ ├── ls.ts # skm ls - 列出 skills
48
+ │ ├── info.ts # skm info - 查看详情
49
+ │ ├── install.ts # skm install - 安装
50
+ │ ├── update.ts # skm update - 更新
51
+ │ ├── uninstall.ts # skm uninstall - 卸载
52
+ │ ├── sync.ts # skm sync - 同步软链接
53
+ │ ├── registry.ts # 本地注册表管理
54
+ │ └── npm.ts # npm registry HTTP 查询
55
+ └── utils/
56
+ ├── dirs.ts # 目录路径工具
57
+ └── platform.ts # 平台检测
58
+ ```
59
+
60
+ ---
61
+
62
+ ## 3. Git 提交历史
63
+
64
+ | Commit | 描述 |
65
+ |--------|------|
66
+ | `f6bcd20` | docs: add design and implementation plan |
67
+ | `8e94de5` | chore: project initialization with TypeScript and tsup |
68
+ | `4aec3ea` | feat: add directory structure and types |
69
+ | `b02f886` | feat: add help command with usage examples |
70
+ | `db403be` | feat: add --ls command with registry support |
71
+ | `b8332fd` | feat: add npm registry query support |
72
+ | `628e3a7` | feat: add --info command for skill details |
73
+ | `64beb65` | feat: add --install command with npm download |
74
+ | `cf8fbc0` | feat: add --sync for platform link management |
75
+ | `db66526` | feat: add --update and --uninstall commands |
76
+ | `bafb3e8` | docs: add README and finalize package.json |
77
+
78
+ **Release Tag**: `v1.0.0`
79
+
80
+ ---
81
+
82
+ ## 4. 各模块详细说明
83
+
84
+ ### 4.1 入口和常量 (index.ts, constants.ts)
85
+
86
+ ```typescript
87
+ // src/index.ts
88
+ #!/usr/bin/env node
89
+ import './cli.js';
90
+ ```
91
+
92
+ ```typescript
93
+ // src/constants.ts
94
+ export const PLATFORMS = [
95
+ 'cursor', 'vscode', 'codex', 'opencode', 'claude', 'antigravity'
96
+ ] as const;
97
+
98
+ export const SUBDIRS = {
99
+ CACHE: 'cache',
100
+ SKILLS: 'skills',
101
+ PLATFORM_LINKS: 'platform-links'
102
+ } as const;
103
+
104
+ export const LATEST_LINK = 'latest';
105
+ export const REGISTRY_FILE = 'registry.json';
106
+ ```
107
+
108
+ ### 4.2 目录工具 (utils/dirs.ts)
109
+
110
+ 技能安装位置:`~/.skillmarket/`
111
+
112
+ ```typescript
113
+ getMarketHome() // ~/.skillmarket
114
+ getCacheDir() // ~/.skillmarket/cache
115
+ getSkillsDir() // ~/.skillmarket/skills
116
+ getPlatformLinksDir() // ~/.skillmarket/platform-links
117
+ getRegistryPath() // ~/.skillmarket/registry.json
118
+ ensureMarketDirs() // 创建所有必要目录
119
+ ```
120
+
121
+ ### 4.3 注册表管理 (commands/registry.ts)
122
+
123
+ 本地注册表存储已安装的 skills 信息:
124
+
125
+ ```typescript
126
+ interface RegistryData {
127
+ skills: Record<string, InstalledSkill>;
128
+ lastUpdated: string;
129
+ }
130
+
131
+ interface InstalledSkill {
132
+ id: string;
133
+ version: string;
134
+ installedAt: string;
135
+ platforms: string[];
136
+ }
137
+ ```
138
+
139
+ ### 4.4 npm 查询 (commands/npm.ts)
140
+
141
+ 使用原生 `https` 模块查询 npm registry:
142
+
143
+ ```typescript
144
+ fetchNpmPackage(packageName) // 获取包信息
145
+ searchSkillmarketPackages() // 搜索 @skillmarket/* 包
146
+ ```
147
+
148
+ ### 4.5 平台检测 (utils/platform.ts)
149
+
150
+ 通过环境变量检测当前平台:
151
+
152
+ ```typescript
153
+ detectPlatform() // OPENCODE, CURSOR, VSCODE, CLAUDE_CODE, ANTIGRAVITY
154
+ ```
155
+
156
+ ### 4.6 安装逻辑 (commands/install.ts)
157
+
158
+ 1. 查询 npm 获取最新版本
159
+ 2. `npm pack` 下载到 cache
160
+ 3. 解压并复制到 skills 目录
161
+ 4. 创建 `latest` 软链接
162
+ 5. 更新 registry.json
163
+
164
+ ### 4.7 软链接同步 (commands/sync.ts)
165
+
166
+ 为各平台创建适配层软链接:
167
+ ```
168
+ ~/.skillmarket/platform-links/
169
+ ├── cursor/skills/<skill-name> -> skills/<skill-name>/latest/cursor
170
+ ├── vscode/skills/<skill-name> -> skills/<skill-name>/latest/vscode
171
+ └── ...
172
+ ```
173
+
174
+ ---
175
+
176
+ ## 5. 命令设计
177
+
178
+ | 命令 | 说明 | 参数 |
179
+ |------|------|------|
180
+ | `skm ls` | 列出 npm 上可用的 skills | `--installed` `--updates` |
181
+ | `skm info <skill>` | 查看 skill 详情 | - |
182
+ | `skm install <skill>` | 安装 skill | `@version` `--all` |
183
+ | `skm update [skill]` | 更新 skill | `--all` |
184
+ | `skm uninstall <skill>` | 卸载 skill | - |
185
+ | `skm sync` | 同步平台软链接 | - |
186
+
187
+ ---
188
+
189
+ ## 6. 安装后目录结构
190
+
191
+ ```
192
+ ~/.skillmarket/
193
+ ├── registry.json # 安装记录
194
+ ├── cache/ # npm 包缓存
195
+ │ └── @skillmarket/
196
+ │ └── <skill>@<version>/
197
+ ├── skills/ # 安装的 skills
198
+ │ └── <skill>/
199
+ │ ├── latest -> <version>/ # 软链接
200
+ │ └── <version>/
201
+ │ ├── SKILL.md
202
+ │ ├── metadata.json
203
+ │ ├── cursor/
204
+ │ ├── vscode/
205
+ │ └── ...
206
+ └── platform-links/ # 平台适配层
207
+ ├── cursor/
208
+ │ └── skills/
209
+ │ └── <skill> -> ../../../skills/<skill>/latest/cursor
210
+ ├── vscode/
211
+ └── ...
212
+ ```
213
+
214
+ ---
215
+
216
+ ## 7. 遇到的问题和解决方案
217
+
218
+ ### 7.1 npm registry 查询问题
219
+ **问题**: npm API 返回数据格式不一致,404 时也返回 JSON
220
+ **解决**: 检查 `parsed.error` 字段,处理空数据情况
221
+
222
+ ### 7.2 Windows 软链接权限
223
+ **问题**: Windows 上创建 junction 可能失败
224
+ **解决**: 添加 try-catch 降级到目录复制
225
+
226
+ ### 7.3 Commander 选项处理
227
+ **问题**: `--info <skill-id>` 选项无法正确传递参数
228
+ **解决**: 改用 `program.command('info').argument('<skill-id>')` 子命令方式
229
+
230
+ ### 7.4 TypeScript 类型
231
+ **问题**: npm 返回的 `versions` 对象索引签名不完整
232
+ **解决**: 扩展 `NpmPackage` 接口包含 `skillmarket` 元数据
233
+
234
+ ---
235
+
236
+ ## 8. 开发过程
237
+
238
+ ### Phase 1: 需求澄清
239
+ 1. 包名确定为 `skillmarket`
240
+ 2. 使用统一目录 + 软链接方案
241
+ 3. 采用主动检测更新模式
242
+ 4. 统一结构 + 平台适配层
243
+
244
+ ### Phase 2: 设计文档
245
+ - 创建 `docs/plans/2026-04-01-skillmarket-design.md`
246
+ - 创建 `docs/plans/2026-04-01-skillmarket-implementation.md`
247
+
248
+ ### Phase 3: 编码实现
249
+ 按照 implementation plan 执行了 10 个 task:
250
+ 1. 项目初始化 (package.json, tsconfig, tsup)
251
+ 2. 目录结构和常量定义
252
+ 3. --help 命令实现
253
+ 4. --ls 命令基础实现
254
+ 5. npm registry 查询
255
+ 6. --info 命令实现
256
+ 7. --install 命令实现
257
+ 8. 软链接策略实现
258
+ 9. --update 和 --uninstall 实现
259
+ 10. README 和发布准备
260
+
261
+ ---
262
+
263
+ ## 9. 预留扩展
264
+
265
+ 以下功能在设计文档中预留接口,后续版本实现:
266
+
267
+ - [ ] `--search` - 搜索 skills
268
+ - [ ] `--publish` - 发布自己的 skill
269
+ - [ ] `--verify` - 验证 skill 完整性
270
+ - [ ] `--config` - 配置管理
271
+ - [ ] `--backup` / `--restore` - 备份与恢复
272
+ - [ ] `--proxy` - 代理/镜像支持
273
+ - [ ] `--theme` - 主题定制
274
+ - [ ] `--sync-server` - 远程同步
275
+
276
+ ---
277
+
278
+ ## 10. 使用示例
279
+
280
+ ```bash
281
+ # 全局安装
282
+ npm install -g skillmarket
283
+
284
+ # 或者直接使用
285
+ npx skillmarket --help
286
+
287
+ # 列出可用 skills
288
+ skm ls
289
+
290
+ # 查看 skill 详情
291
+ skm info brainstorming
292
+
293
+ # 安装 skill
294
+ skm install brainstorming
295
+
296
+ # 查看已安装
297
+ skm ls --installed
298
+
299
+ # 更新
300
+ skm update --all
301
+
302
+ # 同步平台链接
303
+ skm sync
304
+
305
+ # 卸载
306
+ skm uninstall brainstorming
307
+ ```
308
+
309
+ ---
310
+
311
+ ## 11. 下一步
312
+
313
+ 1. **发布到 npm**
314
+ ```bash
315
+ npm login
316
+ npm publish
317
+ ```
318
+
319
+ 2. **创建第一个 skill 包**
320
+ - 创建 `@skillmarket/brainstorming` 包
321
+ - 包含各平台适配文件
322
+
323
+ 3. **完善 npm search**
324
+ - 目前搜索基于 `keywords:skillmarket`
325
+ - 可考虑建立官方 skill 列表
326
+
327
+ 4. **Windows 兼容性测试**
328
+ - junction 链接测试
329
+ - 路径处理测试
330
+
331
+ ---
332
+
333
+ ## 12. 相关文档
334
+
335
+ - [设计文档](./docs/plans/2026-04-01-skillmarket-design.md)
336
+ - [实现计划](./docs/plans/2026-04-01-skillmarket-implementation.md)
337
+ - [用户文档](./README.md)
338
+
339
+ ---
340
+
341
+ ## 13. Skill 发布流程 (v1.0.1+)
342
+
343
+ ### 13.1 创建新 Skill
344
+
345
+ 在 `skills/` 目录下创建新 skill:
346
+
347
+ ```
348
+ skills/<skill-name>/
349
+ ├── package.json # 包含 skillmarket 元数据
350
+ ├── SKILL.md # 文档
351
+ ├── metadata.json # 额外元数据
352
+ └── index.js # 主入口(OpenCode 插件)
353
+ ```
354
+
355
+ ### 13.2 发布 Skill
356
+
357
+ **方式一:GitHub Actions(推荐)**
358
+ 1. 进入仓库 Actions 页面
359
+ 2. 选择 "Publish Skill" 工作流
360
+ 3. 点击 "Run workflow"
361
+ 4. 输入 skill 名称(如 `test-skill`)
362
+ 5. 可选:指定版本号
363
+
364
+ **方式二:本地发布**
365
+ ```bash
366
+ cd skills/<skill-name>
367
+ npm install
368
+ npm publish --access=public
369
+ ```
370
+
371
+ ### 13.3 用户安装
372
+
373
+ ```bash
374
+ skm install <skill-name>
375
+ skm info <skill-name>
376
+ ```
package/README.md CHANGED
@@ -5,41 +5,105 @@ Cross-platform skill manager for AI coding tools (Cursor, VSCode, Codex, OpenCod
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- npm install -g skillmarket
8
+ npm install -g itismyskillmarket
9
9
  ```
10
10
 
11
11
  Or use directly:
12
12
 
13
13
  ```bash
14
- npx skillmarket --help
14
+ npx itismyskillmarket --help
15
15
  ```
16
16
 
17
17
  ## Usage
18
18
 
19
19
  ```bash
20
- # List available skills
20
+ # List available skills (with pagination)
21
21
  skm ls
22
+ skm ls --page 2 # Go to page 2
23
+ skm ls --limit 10 # Show 10 items per page
22
24
 
23
- # Show installed skills
25
+ # Show installed skills (with pagination)
24
26
  skm ls --installed
27
+ skm ls --installed --page 2
25
28
 
26
29
  # View skill information
27
30
  skm info brainstorming
28
31
 
29
- # Install a skill
32
+ # Install a skill (to all detected platforms)
30
33
  skm install brainstorming
31
34
 
35
+ # Install to specific platform
36
+ skm install brainstorming --platform opencode
37
+
38
+ # Install to multiple platforms
39
+ skm install brainstorming --platform opencode,claude,vscode
40
+
41
+ # Install specific version
42
+ skm install brainstorming@1.0.0
43
+
44
+ # Force overwrite if already installed
45
+ skm install brainstorming --force
46
+
32
47
  # Update a specific skill
33
48
  skm update brainstorming
34
49
 
35
50
  # Update all skills
36
51
  skm update --all
37
52
 
53
+ # Show available platforms
54
+ skm platforms
55
+
38
56
  # Sync platform links
39
57
  skm sync
40
58
 
41
- # Uninstall a skill
59
+ # Uninstall a skill (from all platforms)
42
60
  skm uninstall brainstorming
61
+
62
+ # Uninstall from specific platform
63
+ skm uninstall brainstorming --platform opencode
64
+ ```
65
+
66
+ ## Cross-Platform Installation
67
+
68
+ SkillMarket can install skills directly to your AI coding tool's skill directory:
69
+
70
+ ### Supported Platforms
71
+
72
+ | Platform | Skill Directory | Status |
73
+ |----------|---------------|--------|
74
+ | OpenCode | `~/.config/opencode/skills/` | ✅ Detected |
75
+ | Claude Code | `~/.claude/skills/` | ✅ Available |
76
+ | VSCode | `~/.copilot/skills/` | ✅ Available |
77
+
78
+ ### Installation Behavior
79
+
80
+ By default, `skm install` installs to all detected platforms:
81
+
82
+ ```bash
83
+ # Install to all platforms
84
+ skm install my-skill
85
+ ```
86
+
87
+ Use `--platform` to target specific platforms:
88
+
89
+ ```bash
90
+ # OpenCode only
91
+ skm install my-skill --platform opencode
92
+
93
+ # Multiple platforms
94
+ skm install my-skill --platform opencode,claude,vscode
95
+ ```
96
+
97
+ Use `skm platforms` to see which platforms are available on your system:
98
+
99
+ ```bash
100
+ $ skm platforms
101
+
102
+ 📍 Available Platforms:
103
+
104
+ OpenCode ✅ Available (2 skills installed)
105
+ Claude Code ✅ Available (1 skills installed)
106
+ VSCode ✅ Available (0 skills installed)
43
107
  ```
44
108
 
45
109
  ## Development
@@ -71,6 +135,11 @@ Skills are installed to `~/.skillmarket/` with the following structure:
71
135
  ├── cursor/
72
136
  ├── vscode/
73
137
  └── ...
138
+
139
+ # Platform-specific skill directories
140
+ ~/.config/opencode/skills/<skill-name>/SKILL.md
141
+ ~/.claude/skills/<skill-name>/SKILL.md
142
+ ~/.copilot/skills/<skill-name>/SKILL.md
74
143
  ```
75
144
 
76
145
  ## Supported Platforms