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,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 }}
|
|
Binary file
|
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)
|