itismyskillmarket 1.2.2 → 1.2.4
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 +54 -0
- package/.github/workflows/publish-skill.yml +72 -0
- package/5e51cb7aa8b8e60d49d86f4689f5d4d1.png +0 -0
- package/CHANGELOG.md +143 -0
- package/DEVELOPMENT.md +376 -0
- package/README.md +70 -4
- package/SKILLMARKET-GUIDE.md +277 -0
- package/dist/index.js +478 -177
- 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/package.json +1 -6
- package/skills/README.md +52 -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 +113 -49
- package/src/commands/info.ts +4 -15
- package/src/commands/install.ts +93 -54
- package/src/commands/ls.ts +69 -13
- package/src/commands/npm.ts +87 -12
- package/src/commands/sync.ts +6 -27
- package/src/commands/uninstall.ts +60 -7
- 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
package/README.md
CHANGED
|
@@ -5,13 +5,13 @@ Cross-platform skill manager for AI coding tools (Cursor, VSCode, Codex, OpenCod
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install -g
|
|
8
|
+
npm install -g itismyskillmarket
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
Or use directly:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npx
|
|
14
|
+
npx itismyskillmarket --help
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## Usage
|
|
@@ -26,20 +26,81 @@ skm ls --installed
|
|
|
26
26
|
# View skill information
|
|
27
27
|
skm info brainstorming
|
|
28
28
|
|
|
29
|
-
# Install a skill
|
|
29
|
+
# Install a skill (to all detected platforms)
|
|
30
30
|
skm install brainstorming
|
|
31
31
|
|
|
32
|
+
# Install to specific platform
|
|
33
|
+
skm install brainstorming --platform opencode
|
|
34
|
+
|
|
35
|
+
# Install to multiple platforms
|
|
36
|
+
skm install brainstorming --platform opencode,claude,vscode
|
|
37
|
+
|
|
38
|
+
# Install specific version
|
|
39
|
+
skm install brainstorming@1.0.0
|
|
40
|
+
|
|
41
|
+
# Force overwrite if already installed
|
|
42
|
+
skm install brainstorming --force
|
|
43
|
+
|
|
32
44
|
# Update a specific skill
|
|
33
45
|
skm update brainstorming
|
|
34
46
|
|
|
35
47
|
# Update all skills
|
|
36
48
|
skm update --all
|
|
37
49
|
|
|
50
|
+
# Show available platforms
|
|
51
|
+
skm platforms
|
|
52
|
+
|
|
38
53
|
# Sync platform links
|
|
39
54
|
skm sync
|
|
40
55
|
|
|
41
|
-
# Uninstall a skill
|
|
56
|
+
# Uninstall a skill (from all platforms)
|
|
42
57
|
skm uninstall brainstorming
|
|
58
|
+
|
|
59
|
+
# Uninstall from specific platform
|
|
60
|
+
skm uninstall brainstorming --platform opencode
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Cross-Platform Installation
|
|
64
|
+
|
|
65
|
+
SkillMarket can install skills directly to your AI coding tool's skill directory:
|
|
66
|
+
|
|
67
|
+
### Supported Platforms
|
|
68
|
+
|
|
69
|
+
| Platform | Skill Directory | Status |
|
|
70
|
+
|----------|---------------|--------|
|
|
71
|
+
| OpenCode | `~/.config/opencode/skills/` | ✅ Detected |
|
|
72
|
+
| Claude Code | `~/.claude/skills/` | ✅ Available |
|
|
73
|
+
| VSCode | `~/.copilot/skills/` | ✅ Available |
|
|
74
|
+
|
|
75
|
+
### Installation Behavior
|
|
76
|
+
|
|
77
|
+
By default, `skm install` installs to all detected platforms:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Install to all platforms
|
|
81
|
+
skm install my-skill
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Use `--platform` to target specific platforms:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# OpenCode only
|
|
88
|
+
skm install my-skill --platform opencode
|
|
89
|
+
|
|
90
|
+
# Multiple platforms
|
|
91
|
+
skm install my-skill --platform opencode,claude,vscode
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Use `skm platforms` to see which platforms are available on your system:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
$ skm platforms
|
|
98
|
+
|
|
99
|
+
📍 Available Platforms:
|
|
100
|
+
|
|
101
|
+
OpenCode ✅ Available (2 skills installed)
|
|
102
|
+
Claude Code ✅ Available (1 skills installed)
|
|
103
|
+
VSCode ✅ Available (0 skills installed)
|
|
43
104
|
```
|
|
44
105
|
|
|
45
106
|
## Development
|
|
@@ -71,6 +132,11 @@ Skills are installed to `~/.skillmarket/` with the following structure:
|
|
|
71
132
|
├── cursor/
|
|
72
133
|
├── vscode/
|
|
73
134
|
└── ...
|
|
135
|
+
|
|
136
|
+
# Platform-specific skill directories
|
|
137
|
+
~/.config/opencode/skills/<skill-name>/SKILL.md
|
|
138
|
+
~/.claude/skills/<skill-name>/SKILL.md
|
|
139
|
+
~/.copilot/skills/<skill-name>/SKILL.md
|
|
74
140
|
```
|
|
75
141
|
|
|
76
142
|
## Supported Platforms
|
|
@@ -0,0 +1,277 @@
|
|
|
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 @wanxuchen/skillmarket
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### 基本命令
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# 列出可用 skills
|
|
217
|
+
skm ls
|
|
218
|
+
|
|
219
|
+
# 查看 skill 详情
|
|
220
|
+
skm info <skill-name>
|
|
221
|
+
|
|
222
|
+
# 安装 skill
|
|
223
|
+
skm install <skill-name>
|
|
224
|
+
|
|
225
|
+
# 查看已安装
|
|
226
|
+
skm ls --installed
|
|
227
|
+
|
|
228
|
+
# 更新 skill
|
|
229
|
+
skm update <skill-name>
|
|
230
|
+
|
|
231
|
+
# 卸载 skill
|
|
232
|
+
skm uninstall <skill-name>
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## 常见问题
|
|
238
|
+
|
|
239
|
+
### Q: 包名必须以 @wanxuchen/ 开头吗?
|
|
240
|
+
|
|
241
|
+
是的,这是当前配置的默认作用域。你可以在 `src/commands/install.ts` 中修改默认作用域。
|
|
242
|
+
|
|
243
|
+
### Q: 如何发布到 @skillmarket/ 组织?
|
|
244
|
+
|
|
245
|
+
需要先加入 npm "skillmarket" 组织,然后修改包名为 `@skillmarket/<skill-name>`。
|
|
246
|
+
|
|
247
|
+
### Q: 发布时遇到 403 错误?
|
|
248
|
+
|
|
249
|
+
需要启用 2FA 或创建带有 "bypass 2fa for publish" 权限的 Granular Access Token。
|
|
250
|
+
|
|
251
|
+
### Q: 如何本地测试?
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# 在 skillmarket 目录
|
|
255
|
+
npm run build
|
|
256
|
+
npm install -g . --force
|
|
257
|
+
|
|
258
|
+
# 测试
|
|
259
|
+
skm ls
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 版本历史
|
|
265
|
+
|
|
266
|
+
| 版本 | 日期 | 描述 |
|
|
267
|
+
|------|------|------|
|
|
268
|
+
| 1.0.0 | 2026-04-01 | 初始版本 |
|
|
269
|
+
| 1.0.1 | 2026-04-08 | 修复 GitHub Actions |
|
|
270
|
+
| 1.0.2 | 2026-04-08 | 添加发布工作流 |
|
|
271
|
+
| 1.0.3 | 2026-04-08 | 改进 ls 显示 |
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## 许可证
|
|
276
|
+
|
|
277
|
+
MIT
|