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,288 @@
1
+ # SkillMarket 开发与发布指南
2
+
3
+ ## 目录
4
+
5
+ 1. [SkillMarket 概述](#skillmarket-概述)
6
+ 2. [创建自定义 Skill](#创建自定义-skill)
7
+ 3. [发布 Skill 到 npm](#发布-skill-到-npm)
8
+ 4. [通过 GitHub Actions 发布](#通过-github-actions-发布)
9
+ 5. [用户安装使用](#用户安装使用)
10
+ 6. [常见问题](#常见问题)
11
+
12
+ ---
13
+
14
+ ## SkillMarket 概述
15
+
16
+ SkillMarket 是一个跨平台的 skill 管理工具,用于管理 AI 编程工具(OpenCode、Cursor、VSCode、Claude Code 等)的技能插件。
17
+
18
+ ### 核心概念
19
+
20
+ - **Skill**: 一个可安装的功能包,包含插件代码和元数据
21
+ - **Scope**: npm 作用域,用于组织相关包(如 `@wanxuchen/`)
22
+ - **平台支持**: 每个 skill 可以声明支持的平台
23
+
24
+ ---
25
+
26
+ ## 创建自定义 Skill
27
+
28
+ ### 1. 创建 Skill 目录结构
29
+
30
+ 在项目的 `skills/` 目录下创建新 skill:
31
+
32
+ ```bash
33
+ skills/<skill-name>/
34
+ ├── package.json # 包配置(必须)
35
+ ├── SKILL.md # 文档(必须)
36
+ ├── metadata.json # 元数据(可选)
37
+ └── index.js # 主入口(OpenCode 插件)
38
+ ```
39
+
40
+ ### 2. package.json 配置
41
+
42
+ ```json
43
+ {
44
+ "name": "@wanxuchen/<skill-name>",
45
+ "version": "1.0.0",
46
+ "description": "Skill 描述",
47
+ "type": "module",
48
+ "main": "index.js",
49
+ "keywords": ["skillmarket"],
50
+ "author": "Your Name",
51
+ "license": "MIT",
52
+ "dependencies": {
53
+ "@opencode-ai/plugin": "^1.1.31"
54
+ },
55
+ "skillmarket": {
56
+ "id": "<skill-name>",
57
+ "displayName": "显示名称",
58
+ "description": "详细描述",
59
+ "platforms": ["opencode", "cursor", "vscode", "claude"]
60
+ }
61
+ }
62
+ ```
63
+
64
+ **关键字段说明:**
65
+
66
+ | 字段 | 说明 |
67
+ |------|------|
68
+ | `name` | 包名,格式为 `@wanxuchen/<skill-name>` |
69
+ | `skillmarket.id` | Skill 唯一标识符 |
70
+ | `skillmarket.displayName` | 显示名称 |
71
+ | `skillmarket.platforms` | 支持的平台列表 |
72
+
73
+ ### 3. SKILL.md 文档
74
+
75
+ ```markdown
76
+ # Skill 名称
77
+
78
+ ## 功能描述
79
+
80
+ 描述这个 skill 能做什么。
81
+
82
+ ## 使用方法
83
+
84
+ ```bash
85
+ skm install <skill-name>
86
+ skm info <skill-name>
87
+ ```
88
+
89
+ ## 平台支持
90
+
91
+ - OpenCode
92
+ - Cursor
93
+ - VSCode
94
+ ```
95
+
96
+ ### 4. index.js 插件代码
97
+
98
+ ```javascript
99
+ import { tool } from "@opencode-ai/plugin";
100
+
101
+ export default async function MySkill() {
102
+ console.log("✅ MySkill 加载成功!");
103
+
104
+ return {
105
+ tool: {
106
+ // 定义工具
107
+ myTool: tool({
108
+ description: "工具描述",
109
+ args: {
110
+ param: tool.schema.string().describe("参数描述")
111
+ },
112
+ async execute({ param }, context) {
113
+ return `执行结果: ${param}`;
114
+ }
115
+ })
116
+ },
117
+
118
+ // 可选:钩子
119
+ "tool.execute.before": async (input) => {
120
+ console.log(`即将执行: ${input.tool}`);
121
+ }
122
+ };
123
+ }
124
+ ```
125
+
126
+ ---
127
+
128
+ ## 发布 Skill 到 npm
129
+
130
+ ### 方式一:GitHub Actions(推荐)
131
+
132
+ 1. **配置 NPM_TOKEN**
133
+ - 在 https://www.npmjs.com/settings/tokens 创建 token
134
+ - 或创建 Granular Access Token 并启用 "bypass 2fa for publish"
135
+ - 在 GitHub 仓库 Settings → Secrets 添加 `NPM_TOKEN`
136
+
137
+ 2. **运行 Publish Skill 工作流**
138
+ - 进入仓库 **Actions** → **Publish Skill**
139
+ - 点击 **Run workflow**
140
+ - 输入 `skill_name`(如 `test-skill`)
141
+ - 可选:输入 `version`(如 `1.0.0`)
142
+
143
+ ### 方式二:本地发布
144
+
145
+ ```bash
146
+ # 进入 skill 目录
147
+ cd skills/<skill-name>
148
+
149
+ # 安装依赖
150
+ npm install
151
+
152
+ # 发布
153
+ npm publish --access=public
154
+ ```
155
+
156
+ **注意**:需要先登录 npm:
157
+ ```bash
158
+ npm login
159
+ ```
160
+
161
+ ---
162
+
163
+ ## 通过 GitHub Actions 发布
164
+
165
+ ### 工作流配置
166
+
167
+ 项目已包含 `.github/workflows/publish-skill.yml`:
168
+
169
+ ```yaml
170
+ name: Publish Skill
171
+
172
+ on:
173
+ workflow_dispatch:
174
+ inputs:
175
+ skill_name:
176
+ description: 'Skill name (from skills/ directory)'
177
+ required: true
178
+ type: string
179
+ version:
180
+ description: 'Version (optional, defaults to patch)'
181
+ required: false
182
+ type: string
183
+ default: ''
184
+
185
+ jobs:
186
+ publish:
187
+ runs-on: ubuntu-latest
188
+ steps:
189
+ - uses: actions/checkout@v4
190
+ - uses: actions/setup-node@v4
191
+ with:
192
+ node-version: '20'
193
+ registry-url: 'https://registry.npmjs.org'
194
+ - run: cd "skills/${{ github.event.inputs.skill_name }}" && npm install
195
+ - run: |
196
+ cd "skills/${{ github.event.inputs.skill_name }}"
197
+ npm version patch --no-git-tag-version
198
+ - run: cd "skills/${{ github.event.inputs.skill_name }}" && npm publish --access=public
199
+ env:
200
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
201
+ ```
202
+
203
+ ---
204
+
205
+ ## 用户安装使用
206
+
207
+ ### 安装 SkillMarket CLI
208
+
209
+ ```bash
210
+ npm install -g itismyskillmarket
211
+ ```
212
+
213
+ 或使用 npx(无需安装):
214
+
215
+ ```bash
216
+ npx itismyskillmarket --help
217
+ ```
218
+
219
+ ### 基本命令
220
+
221
+ ```bash
222
+ # 列出可用 skills(支持分页)
223
+ skm ls
224
+
225
+ # 分页浏览
226
+ skm ls --page 2 # 第 2 页
227
+ skm ls --limit 10 # 每页 10 个
228
+
229
+ # 查看 skill 详情
230
+ skm info <skill-name>
231
+
232
+ # 安装 skill
233
+ skm install <skill-name>
234
+
235
+ # 查看已安装(支持分页)
236
+ skm ls --installed
237
+ skm ls --installed --page 2
238
+
239
+ # 更新 skill
240
+ skm update <skill-name>
241
+ skm update --all # 更新所有
242
+
243
+ # 卸载 skill
244
+ skm uninstall <skill-name>
245
+ ```
246
+
247
+ ---
248
+
249
+ ## 常见问题
250
+
251
+ ### Q: 包名必须以 @wanxuchen/ 开头吗?
252
+
253
+ 是的,这是当前配置的默认作用域。你可以在 `src/commands/install.ts` 中修改默认作用域。
254
+
255
+ ### Q: 如何发布到 @skillmarket/ 组织?
256
+
257
+ 需要先加入 npm "skillmarket" 组织,然后修改包名为 `@skillmarket/<skill-name>`。
258
+
259
+ ### Q: 发布时遇到 403 错误?
260
+
261
+ 需要启用 2FA 或创建带有 "bypass 2fa for publish" 权限的 Granular Access Token。
262
+
263
+ ### Q: 如何本地测试?
264
+
265
+ ```bash
266
+ # 在 skillmarket 目录
267
+ npm run build
268
+ npm install -g . --force
269
+
270
+ # 测试
271
+ skm ls
272
+ ```
273
+
274
+ ---
275
+
276
+ ## 版本历史
277
+
278
+ | 版本 | 日期 | 描述 |
279
+ |------|------|------|
280
+ | 1.0.0 | 2026-04-01 | 初始版本 |
281
+ | 1.2.0 | 2026-04-15 | 添加跨平台支持 |
282
+ | 1.2.4 | 2026-04-16 | 添加 `skm ls` 分页功能 |
283
+
284
+ ---
285
+
286
+ ## 许可证
287
+
288
+ MIT