itismyskillmarket 1.0.10
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 +70 -0
- package/5e51cb7aa8b8e60d49d86f4689f5d4d1.png +0 -0
- package/DEVELOPMENT.md +376 -0
- package/README.md +87 -0
- package/SKILLMARKET-GUIDE.md +277 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +561 -0
- package/docs/plans/2026-04-01-skillmarket-design.md +267 -0
- package/docs/plans/2026-04-01-skillmarket-implementation.md +1031 -0
- package/package.json +24 -0
- 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/src/cli.ts +300 -0
- package/src/commands/info.ts +154 -0
- package/src/commands/install.ts +237 -0
- package/src/commands/ls.ts +169 -0
- package/src/commands/npm.ts +261 -0
- package/src/commands/registry.ts +159 -0
- package/src/commands/sync.ts +137 -0
- package/src/commands/uninstall.ts +102 -0
- package/src/commands/update.ts +113 -0
- package/src/constants.ts +126 -0
- package/src/index.ts +62 -0
- package/src/types.ts +137 -0
- package/src/utils/dirs.ts +166 -0
- package/src/utils/platform.ts +139 -0
- package/tsconfig.json +10 -0
- package/tsup.config.ts +22 -0
- 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,70 @@
|
|
|
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
|
+
|
|
23
|
+
- name: Debug inputs
|
|
24
|
+
run: |
|
|
25
|
+
echo "skill_name input: '${{ github.event.inputs.skill_name }}'"
|
|
26
|
+
echo "version input: '${{ github.event.inputs.version }}'"
|
|
27
|
+
ls -la skills/
|
|
28
|
+
|
|
29
|
+
- name: Validate skill exists
|
|
30
|
+
run: |
|
|
31
|
+
SKILL_NAME="${{ github.event.inputs.skill_name }}"
|
|
32
|
+
echo "Skill name: $SKILL_NAME"
|
|
33
|
+
if [ -z "$SKILL_NAME" ]; then
|
|
34
|
+
echo "Error: skill_name is empty!"
|
|
35
|
+
exit 1
|
|
36
|
+
fi
|
|
37
|
+
if [ ! -d "skills/$SKILL_NAME" ]; then
|
|
38
|
+
echo "Error: Skill '$SKILL_NAME' not found in skills/ directory"
|
|
39
|
+
ls -la skills/
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
echo "Skill directory contents:"
|
|
43
|
+
ls -la "skills/$SKILL_NAME/"
|
|
44
|
+
|
|
45
|
+
- name: Setup Node
|
|
46
|
+
uses: actions/setup-node@v4
|
|
47
|
+
with:
|
|
48
|
+
node-version: '20'
|
|
49
|
+
registry-url: 'https://registry.npmjs.org'
|
|
50
|
+
|
|
51
|
+
- name: Install dependencies
|
|
52
|
+
run: |
|
|
53
|
+
cd "skills/${{ github.event.inputs.skill_name }}"
|
|
54
|
+
npm install
|
|
55
|
+
|
|
56
|
+
- name: Update version
|
|
57
|
+
run: |
|
|
58
|
+
cd "skills/${{ github.event.inputs.skill_name }}"
|
|
59
|
+
if [ -n "${{ github.event.inputs.version }}" ]; then
|
|
60
|
+
npm version ${{ github.event.inputs.version }} --no-git-tag-version
|
|
61
|
+
else
|
|
62
|
+
npm version minor --no-git-tag-version
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
- name: Publish to npm
|
|
66
|
+
run: |
|
|
67
|
+
cd "skills/${{ github.event.inputs.skill_name }}"
|
|
68
|
+
npm publish --access=public
|
|
69
|
+
env:
|
|
70
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
Binary file
|
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
|
+
```
|
package/README.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# SkillMarket
|
|
2
|
+
|
|
3
|
+
Cross-platform skill manager for AI coding tools (Cursor, VSCode, Codex, OpenCode, Claude Code, Antigravity).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g itismyskillmarket
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or use directly:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx itismyskillmarket --help
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# List available skills
|
|
21
|
+
skm ls
|
|
22
|
+
|
|
23
|
+
# Show installed skills
|
|
24
|
+
skm ls --installed
|
|
25
|
+
|
|
26
|
+
# View skill information
|
|
27
|
+
skm info brainstorming
|
|
28
|
+
|
|
29
|
+
# Install a skill
|
|
30
|
+
skm install brainstorming
|
|
31
|
+
|
|
32
|
+
# Update a specific skill
|
|
33
|
+
skm update brainstorming
|
|
34
|
+
|
|
35
|
+
# Update all skills
|
|
36
|
+
skm update --all
|
|
37
|
+
|
|
38
|
+
# Sync platform links
|
|
39
|
+
skm sync
|
|
40
|
+
|
|
41
|
+
# Uninstall a skill
|
|
42
|
+
skm uninstall brainstorming
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Development
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Install dependencies
|
|
49
|
+
npm install
|
|
50
|
+
|
|
51
|
+
# Build project
|
|
52
|
+
npm run build
|
|
53
|
+
|
|
54
|
+
# Link for local testing
|
|
55
|
+
npm link
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Architecture
|
|
59
|
+
|
|
60
|
+
Skills are installed to `~/.skillmarket/` with the following structure:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
~/.skillmarket/
|
|
64
|
+
├── registry.json # Installed skills registry
|
|
65
|
+
├── cache/ # npm package cache
|
|
66
|
+
├── skills/ # Installed skills
|
|
67
|
+
│ └── <skill-name>/
|
|
68
|
+
│ ├── latest/ # Symlink to latest version
|
|
69
|
+
│ └── <version>/
|
|
70
|
+
└── platform-links/ # Platform-specific symlinks
|
|
71
|
+
├── cursor/
|
|
72
|
+
├── vscode/
|
|
73
|
+
└── ...
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Supported Platforms
|
|
77
|
+
|
|
78
|
+
- Cursor
|
|
79
|
+
- VSCode
|
|
80
|
+
- Codex
|
|
81
|
+
- OpenCode
|
|
82
|
+
- Claude Code
|
|
83
|
+
- Antigravity
|
|
84
|
+
|
|
85
|
+
## License
|
|
86
|
+
|
|
87
|
+
MIT
|