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.
- package/.github/workflows/publish-npm.yml +59 -0
- package/.github/workflows/publish-skill.yml +72 -0
- package/5e51cb7aa8b8e60d49d86f4689f5d4d1.png +0 -0
- package/CHANGELOG.md +410 -0
- package/DEVELOPMENT.md +376 -0
- package/README.md +75 -6
- package/SKILLMARKET-GUIDE.md +288 -0
- package/dist/index.js +733 -212
- package/docs/WEEKLY-UPDATE-2026-04-23.md +43 -0
- package/docs/plans/2026-04-01-skillmarket-design.md +267 -0
- package/docs/plans/2026-04-01-skillmarket-implementation.md +1031 -0
- package/docs/plans/2026-04-15-cross-platform-adapter-design.md +416 -0
- package/docs/plans/2026-04-15-cross-platform-adapter-plan.md +833 -0
- package/docs/plans/2026-04-16-keyword-search-design.md +143 -0
- package/docs/plans/2026-04-29-weekly-update.md +57 -0
- package/package.json +1 -6
- package/skills/README.md +54 -0
- package/skills/test-skill/SKILL.md +25 -0
- package/skills/test-skill/index.js +66 -0
- package/skills/test-skill/metadata.json +9 -0
- package/skills/test-skill/package.json +19 -0
- package/skills/test-skill-1/SKILL.md +24 -0
- package/skills/test-skill-1/index.js +13 -0
- package/skills/test-skill-1/metadata.json +9 -0
- package/skills/test-skill-1/package.json +16 -0
- package/skills/test-skill-2/SKILL.md +25 -0
- package/skills/test-skill-2/index.js +13 -0
- package/skills/test-skill-2/metadata.json +9 -0
- package/skills/test-skill-2/package.json +16 -0
- package/src/adapters/base.ts +87 -0
- package/src/adapters/claude.ts +31 -0
- package/src/adapters/index.ts +9 -0
- package/src/adapters/opencode.ts +40 -0
- package/src/adapters/registry.ts +77 -0
- package/src/adapters/vscode.ts +62 -0
- package/src/cli.ts +189 -75
- package/src/commands/info.ts +4 -15
- package/src/commands/install.ts +93 -54
- package/src/commands/ls.ts +182 -17
- package/src/commands/npm.ts +118 -16
- package/src/commands/search.ts +12 -7
- package/src/commands/sync.ts +6 -27
- package/src/commands/uninstall.ts +313 -15
- package/src/commands/update.ts +2 -2
- package/src/index.ts +27 -0
- package/src/types.ts +35 -0
- package/tsconfig.json +10 -0
- package/tsup.config.ts +22 -0
- 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
|