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.
Files changed (45) hide show
  1. package/.github/workflows/publish-npm.yml +54 -0
  2. package/.github/workflows/publish-skill.yml +72 -0
  3. package/5e51cb7aa8b8e60d49d86f4689f5d4d1.png +0 -0
  4. package/CHANGELOG.md +143 -0
  5. package/DEVELOPMENT.md +376 -0
  6. package/README.md +70 -4
  7. package/SKILLMARKET-GUIDE.md +277 -0
  8. package/dist/index.js +478 -177
  9. package/docs/plans/2026-04-01-skillmarket-design.md +267 -0
  10. package/docs/plans/2026-04-01-skillmarket-implementation.md +1031 -0
  11. package/docs/plans/2026-04-15-cross-platform-adapter-design.md +416 -0
  12. package/docs/plans/2026-04-15-cross-platform-adapter-plan.md +833 -0
  13. package/package.json +1 -6
  14. package/skills/README.md +52 -0
  15. package/skills/test-skill/SKILL.md +25 -0
  16. package/skills/test-skill/index.js +66 -0
  17. package/skills/test-skill/metadata.json +9 -0
  18. package/skills/test-skill/package.json +19 -0
  19. package/skills/test-skill-1/SKILL.md +24 -0
  20. package/skills/test-skill-1/index.js +13 -0
  21. package/skills/test-skill-1/metadata.json +9 -0
  22. package/skills/test-skill-1/package.json +16 -0
  23. package/skills/test-skill-2/SKILL.md +25 -0
  24. package/skills/test-skill-2/index.js +13 -0
  25. package/skills/test-skill-2/metadata.json +9 -0
  26. package/skills/test-skill-2/package.json +16 -0
  27. package/src/adapters/base.ts +87 -0
  28. package/src/adapters/claude.ts +31 -0
  29. package/src/adapters/index.ts +9 -0
  30. package/src/adapters/opencode.ts +40 -0
  31. package/src/adapters/registry.ts +77 -0
  32. package/src/adapters/vscode.ts +62 -0
  33. package/src/cli.ts +113 -49
  34. package/src/commands/info.ts +4 -15
  35. package/src/commands/install.ts +93 -54
  36. package/src/commands/ls.ts +69 -13
  37. package/src/commands/npm.ts +87 -12
  38. package/src/commands/sync.ts +6 -27
  39. package/src/commands/uninstall.ts +60 -7
  40. package/src/commands/update.ts +2 -2
  41. package/src/index.ts +27 -0
  42. package/src/types.ts +35 -0
  43. package/tsconfig.json +10 -0
  44. package/tsup.config.ts +22 -0
  45. package/wanxuchen-skillmarket-1.0.1.tgz +0 -0
@@ -0,0 +1,54 @@
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
+ npm version ${{ github.event.inputs.version }} --no-git-tag-version
24
+
25
+ - name: Setup Node
26
+ uses: actions/setup-node@v4
27
+ with:
28
+ node-version: '20'
29
+ registry-url: 'https://registry.npmjs.org'
30
+
31
+ - name: Install dependencies
32
+ run: npm install
33
+
34
+ - name: Build
35
+ run: npm run build
36
+
37
+ - name: Publish to npm
38
+ run: npm publish --access=public
39
+ env:
40
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
41
+
42
+ release:
43
+ needs: publish
44
+ if: github.event_name == 'workflow_dispatch'
45
+ runs-on: ubuntu-latest
46
+ permissions:
47
+ contents: write
48
+ steps:
49
+ - name: Create GitHub Release
50
+ uses: softprops/action-gh-release@v2
51
+ with:
52
+ tag_name: v${{ github.event.inputs.version }}
53
+ name: Release v${{ github.event.inputs.version }}
54
+ 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 }}
package/CHANGELOG.md ADDED
@@ -0,0 +1,143 @@
1
+ # SkillMarket v1.2.3 发布总结
2
+
3
+ **日期**: 2026-04-15
4
+ **版本**: 1.2.3
5
+
6
+ ---
7
+
8
+ ## 🎉 新功能:跨平台 Skill 安装
9
+
10
+ ### 支持的平台
11
+
12
+ | 平台 | Skill 目录 | 状态 |
13
+ |------|-----------|------|
14
+ | OpenCode | `~/.config/opencode/skills/` | ✅ |
15
+ | Claude Code | `~/.claude/skills/` | ✅ |
16
+ | VSCode | `~/.copilot/skills/` | ✅ |
17
+
18
+ ### 新增命令
19
+
20
+ ```bash
21
+ # 查看可用平台
22
+ skm platforms
23
+
24
+ # 安装到所有检测到的平台
25
+ skm install <skill>
26
+
27
+ # 安装到指定平台
28
+ skm install <skill> --platform opencode
29
+ skm install <skill> --platform opencode,claude,vscode
30
+
31
+ # 卸载
32
+ skm uninstall <skill>
33
+ skm uninstall <skill> --platform claude
34
+ ```
35
+
36
+ ### 安装输出示例
37
+
38
+ ```
39
+ skm install test-skill-1
40
+
41
+ Installing test-skill-1...
42
+ Downloading package...
43
+ Setting up skill...
44
+
45
+ Installing to 3 platform(s)...
46
+
47
+ OpenCode ✅ Installed successfully
48
+ Claude Code ✅ Installed successfully
49
+ VSCode ✅ Installed successfully
50
+
51
+ 📊 Summary: 3 installed, 0 skipped, 0 failed
52
+
53
+ ✅ test-skill-1@1.1.0 installed successfully!
54
+ ```
55
+
56
+ ### 平台状态查看
57
+
58
+ ```
59
+ skm platforms
60
+
61
+ 📍 Available Platforms:
62
+
63
+ OpenCode ✅ Available (3 skills installed)
64
+ Claude Code ✅ Available (2 skills installed)
65
+ VSCode ✅ Available (3 skills installed)
66
+ ```
67
+
68
+ ---
69
+
70
+ ## 🐛 Bug 修复
71
+
72
+ 1. **npm scope 兼容问题**
73
+ - 修复了 `@wanxuchen/`、`@itismyskillmarket/` 等多个 scope 的自动检测
74
+ - 现在安装 `test-skill-1` 会自动查找正确的 npm 包
75
+
76
+ 2. **tarball 文件名匹配**
77
+ - 修复了 scoped 包文件名匹配逻辑
78
+ - 之前 `@scope/package` 被错误匹配为 `@scope-package`
79
+
80
+ ---
81
+
82
+ ## 📦 Skill 包列表
83
+
84
+ | Skill | npm 包名 | 用途 |
85
+ |-------|---------|------|
86
+ | test-skill | @wanxuchen/test-skill | 通用测试 |
87
+ | test-skill-1 | @wanxuchen/test-skill-1 | 测试安装和 info 功能 |
88
+ | test-skill-2 | @wanxuchen/test-skill-2 | 测试卸载和更新功能 |
89
+
90
+ ---
91
+
92
+ ## 🔧 技术实现
93
+
94
+ ### 架构
95
+
96
+ ```
97
+ src/adapters/
98
+ ├── base.ts # 平台适配器基类
99
+ ├── opencode.ts # OpenCode 适配器
100
+ ├── claude.ts # Claude Code 适配器
101
+ ├── vscode.ts # VSCode 适配器
102
+ ├── registry.ts # 平台注册和检测
103
+ └── index.ts # 导出
104
+ ```
105
+
106
+ ### 平台适配器接口
107
+
108
+ ```typescript
109
+ interface PlatformAdapter {
110
+ readonly id: string;
111
+ readonly name: string;
112
+ readonly skillDir: string;
113
+
114
+ isAvailable(): Promise<boolean>;
115
+ isInstalled(skillId: string): Promise<boolean>;
116
+ install(skillId: string, sourceDir: string): Promise<void>;
117
+ uninstall(skillId: string): Promise<void>;
118
+ listInstalled(): Promise<string[]>;
119
+ }
120
+ ```
121
+
122
+ ---
123
+
124
+ ## 📚 文档更新
125
+
126
+ - `README.md` - 更新使用说明
127
+ - `docs/plans/2026-04-15-cross-platform-adapter-design.md` - 设计文档
128
+ - `docs/plans/2026-04-15-cross-platform-adapter-plan.md` - 实现计划
129
+
130
+ ---
131
+
132
+ ## 🚀 下一步
133
+
134
+ - [ ] 发布到 VSCode Marketplace
135
+ - [ ] 发布 Claude Code 插件市场
136
+ - [ ] 创建 skill 市场网站
137
+ - [ ] 添加 skill 搜索功能
138
+
139
+ ---
140
+
141
+ ## 贡献者
142
+
143
+ - wxc2004 (wanxuchen)
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
+ ```