@birdie_moblie/plugin-marketplace-cli 1.0.0 → 1.1.0
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/CHANGELOG.md +28 -0
- package/README.md +78 -22
- package/dist/adapters/claude.d.ts +17 -1
- package/dist/adapters/claude.js +37 -1
- package/dist/adapters/claude.js.map +1 -1
- package/dist/adapters/openspec.d.ts +66 -0
- package/dist/adapters/openspec.js +232 -0
- package/dist/adapters/openspec.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +49 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.js +2 -0
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/index-gen.js +34 -3
- package/dist/commands/index-gen.js.map +1 -1
- package/dist/commands/init-repo.d.ts +1 -0
- package/dist/commands/init-repo.js +64 -28
- package/dist/commands/init-repo.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.js +44 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/release-local.js +25 -0
- package/dist/commands/release-local.js.map +1 -1
- package/dist/commands/validate.js +232 -3
- package/dist/commands/validate.js.map +1 -1
- package/dist/generated/skill-content.d.ts +1 -0
- package/dist/generated/skill-content.js +4 -0
- package/dist/generated/skill-content.js.map +1 -0
- package/dist/schema/plugin-yaml.d.ts +14 -0
- package/dist/schema/plugin-yaml.js +38 -0
- package/dist/schema/plugin-yaml.js.map +1 -1
- package/package.json +13 -5
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 用法:mp validate [name] 或 mp validate --all
|
|
5
5
|
*/
|
|
6
|
-
import { accessSync, constants, existsSync, statSync } from 'node:fs';
|
|
6
|
+
import { accessSync, constants, existsSync, readFileSync, statSync } from 'node:fs';
|
|
7
7
|
import { isAbsolute, join, relative, resolve } from 'node:path';
|
|
8
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
8
9
|
import chalk from 'chalk';
|
|
9
|
-
import { loadPluginYaml, listPluginNames, resolveRepoContext, } from '../utils/helpers.js';
|
|
10
|
+
import { loadAllPlugins, loadMarketplaceMetadata, loadPluginYaml, listPluginNames, resolveRepoContext, } from '../utils/helpers.js';
|
|
11
|
+
import { buildLspConfig } from '../adapters/claude.js';
|
|
12
|
+
import { buildOpenSpecManifest, buildOpenSpecSourceAdapterIndexEntry, findDuplicateOpenSpecAdapterOperations, isOpenSpecAdapterKind, } from '../adapters/openspec.js';
|
|
10
13
|
function isInsidePlugin(pluginDir, targetPath) {
|
|
11
14
|
const rel = relative(pluginDir, targetPath);
|
|
12
15
|
return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
|
|
@@ -44,6 +47,216 @@ function validateExecutable(filePath, displayPath, errors) {
|
|
|
44
47
|
errors.push(`Hook 脚本不可执行: ${displayPath}`);
|
|
45
48
|
}
|
|
46
49
|
}
|
|
50
|
+
function readGeneratedJson(filePath, errors) {
|
|
51
|
+
if (!existsSync(filePath))
|
|
52
|
+
return undefined;
|
|
53
|
+
try {
|
|
54
|
+
return JSON.parse(readFileSync(filePath, 'utf-8'));
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
errors.push(`生成文件不是有效 JSON: ${filePath}: ${err.message}`);
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function isRecord(value) {
|
|
62
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
63
|
+
}
|
|
64
|
+
function validateNoOpenSpecField(filePath, label, errors) {
|
|
65
|
+
const json = readGeneratedJson(filePath, errors);
|
|
66
|
+
if (!isRecord(json))
|
|
67
|
+
return;
|
|
68
|
+
if (Object.prototype.hasOwnProperty.call(json, 'openspec')) {
|
|
69
|
+
errors.push(`${label} 不应包含 top-level openspec 字段: ${filePath}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function validateOpenSpecSidecar(pluginDir, config, errors) {
|
|
73
|
+
validateNoOpenSpecField(join(pluginDir, '.claude-plugin/plugin.json'), 'Claude manifest', errors);
|
|
74
|
+
validateNoOpenSpecField(join(pluginDir, '.codex-plugin/plugin.json'), 'Codex manifest', errors);
|
|
75
|
+
const expectedManifest = buildOpenSpecManifest(config, pluginDir);
|
|
76
|
+
const sidecarPath = join(pluginDir, '.openspec-plugin/plugin.json');
|
|
77
|
+
if (!existsSync(sidecarPath)) {
|
|
78
|
+
if (expectedManifest) {
|
|
79
|
+
errors.push(`OpenSpec sidecar 缺失,请重新运行 build: .openspec-plugin/plugin.json`);
|
|
80
|
+
}
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (!expectedManifest) {
|
|
84
|
+
errors.push(`OpenSpec sidecar 已过期,请重新运行 build: .openspec-plugin/plugin.json`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const sidecar = readGeneratedJson(sidecarPath, errors);
|
|
88
|
+
if (sidecar === undefined)
|
|
89
|
+
return;
|
|
90
|
+
if (!isDeepStrictEqual(sidecar, expectedManifest)) {
|
|
91
|
+
errors.push(`OpenSpec sidecar 与 openspec-source-adapters.yaml 派生 manifest 不一致,请重新运行 build: .openspec-plugin/plugin.json`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function validateLspComponents(pluginDir, config, errors) {
|
|
95
|
+
const lsps = config.components.lsp;
|
|
96
|
+
if (!lsps || lsps.length === 0)
|
|
97
|
+
return;
|
|
98
|
+
const seenNames = new Set();
|
|
99
|
+
for (const lsp of lsps) {
|
|
100
|
+
if (seenNames.has(lsp.name)) {
|
|
101
|
+
errors.push(`LSP server name 重复: ${lsp.name}`);
|
|
102
|
+
}
|
|
103
|
+
seenNames.add(lsp.name);
|
|
104
|
+
if (lsp.transport != null && lsp.transport !== 'stdio' && lsp.transport !== 'socket') {
|
|
105
|
+
errors.push(`LSP transport 仅支持 stdio 或 socket: ${lsp.name}`);
|
|
106
|
+
}
|
|
107
|
+
if (lsp.startupTimeout != null && lsp.startupTimeout < 0) {
|
|
108
|
+
errors.push(`LSP startupTimeout 不能为负数: ${lsp.name}`);
|
|
109
|
+
}
|
|
110
|
+
if (lsp.maxRestarts != null && lsp.maxRestarts < 0) {
|
|
111
|
+
errors.push(`LSP maxRestarts 不能为负数: ${lsp.name}`);
|
|
112
|
+
}
|
|
113
|
+
for (const [extension, languageId] of Object.entries(lsp.extensionToLanguage)) {
|
|
114
|
+
if (!extension.startsWith('.')) {
|
|
115
|
+
errors.push(`LSP extensionToLanguage 扩展名必须以 \\. 开头: ${extension}`);
|
|
116
|
+
}
|
|
117
|
+
if (languageId.trim().length === 0) {
|
|
118
|
+
errors.push(`LSP extensionToLanguage language id 不能为空: ${extension}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (looksLikePluginLocalPath(lsp.command)) {
|
|
122
|
+
const commandPath = resolvePluginPath(pluginDir, lsp.command, 'LSP command 路径', errors);
|
|
123
|
+
if (commandPath && !existsSync(commandPath)) {
|
|
124
|
+
errors.push(`LSP command 文件不存在: ${lsp.command}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
for (const arg of lsp.args || []) {
|
|
128
|
+
if (!looksLikePluginLocalPath(arg))
|
|
129
|
+
continue;
|
|
130
|
+
const argPath = resolvePluginPath(pluginDir, arg, 'LSP args 路径', errors);
|
|
131
|
+
if (argPath && !existsSync(argPath)) {
|
|
132
|
+
errors.push(`LSP args 引用的文件不存在: ${arg}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function validateLspGeneratedFile(pluginDir, config, errors) {
|
|
138
|
+
const lspPath = join(pluginDir, '.lsp.json');
|
|
139
|
+
const expectedConfig = buildLspConfig(config);
|
|
140
|
+
const hasGeneratedFile = existsSync(lspPath);
|
|
141
|
+
if (!hasGeneratedFile) {
|
|
142
|
+
if (expectedConfig) {
|
|
143
|
+
errors.push(`LSP 配置缺失,请重新运行 build: .lsp.json`);
|
|
144
|
+
}
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (!expectedConfig) {
|
|
148
|
+
errors.push(`LSP 配置已过期,请删除或重新运行 build: .lsp.json`);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const actualConfig = readGeneratedJson(lspPath, errors);
|
|
152
|
+
if (actualConfig === undefined)
|
|
153
|
+
return;
|
|
154
|
+
if (!isDeepStrictEqual(actualConfig, expectedConfig)) {
|
|
155
|
+
errors.push(`LSP 配置与 plugin.yaml 派生结果不一致,请重新运行 build: .lsp.json`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function buildExpectedRootOpenSpecIndex(context) {
|
|
159
|
+
const plugins = loadAllPlugins(context);
|
|
160
|
+
const marketplace = loadMarketplaceMetadata(context);
|
|
161
|
+
const openSpecEntries = plugins
|
|
162
|
+
.map(({ name, dir, config }) => buildOpenSpecSourceAdapterIndexEntry(config, dir, `./plugins/${name}`))
|
|
163
|
+
.filter((entry) => entry !== null);
|
|
164
|
+
return {
|
|
165
|
+
schemaVersion: 'openspec.source-adapters.v1',
|
|
166
|
+
name: marketplace.name,
|
|
167
|
+
description: marketplace.description || '',
|
|
168
|
+
plugins: openSpecEntries,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
function validateAllowedKeys(value, allowedKeys, label, indexPath, errors) {
|
|
172
|
+
const allowed = new Set(allowedKeys);
|
|
173
|
+
for (const key of Object.keys(value)) {
|
|
174
|
+
if (!allowed.has(key)) {
|
|
175
|
+
errors.push(`OpenSpec source adapter index ${label} contains unexpected field '${key}': ${indexPath}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function validateRootOpenSpecIndexShape(indexPath, index, errors) {
|
|
180
|
+
validateAllowedKeys(index, ['schemaVersion', 'name', 'description', 'plugins'], 'root', indexPath, errors);
|
|
181
|
+
if (index.schemaVersion !== 'openspec.source-adapters.v1') {
|
|
182
|
+
errors.push(`OpenSpec source adapter index schemaVersion 错误: ${indexPath}`);
|
|
183
|
+
}
|
|
184
|
+
if (typeof index.name !== 'string') {
|
|
185
|
+
errors.push(`OpenSpec source adapter index name 必须是 string: ${indexPath}`);
|
|
186
|
+
}
|
|
187
|
+
if (typeof index.description !== 'string') {
|
|
188
|
+
errors.push(`OpenSpec source adapter index description 必须是 string: ${indexPath}`);
|
|
189
|
+
}
|
|
190
|
+
if (!Array.isArray(index.plugins)) {
|
|
191
|
+
errors.push(`OpenSpec source adapter index plugins 必须是 array: ${indexPath}`);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const plugins = index.plugins;
|
|
195
|
+
for (const plugin of plugins) {
|
|
196
|
+
if (!isRecord(plugin)) {
|
|
197
|
+
errors.push(`OpenSpec source adapter index plugin entry 不是对象: ${indexPath}`);
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
validateAllowedKeys(plugin, ['name', 'source', 'manifest', 'adapters'], 'plugin entry', indexPath, errors);
|
|
201
|
+
if (typeof plugin.name !== 'string' ||
|
|
202
|
+
typeof plugin.source !== 'string' ||
|
|
203
|
+
typeof plugin.manifest !== 'string') {
|
|
204
|
+
errors.push(`OpenSpec source adapter index plugin entry 缺少 name/source/manifest: ${indexPath}`);
|
|
205
|
+
}
|
|
206
|
+
if (!Array.isArray(plugin.adapters)) {
|
|
207
|
+
errors.push(`OpenSpec source adapter index plugin adapters 必须是 array: ${indexPath}`);
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
const adapters = plugin.adapters;
|
|
211
|
+
for (const adapter of adapters) {
|
|
212
|
+
if (!isRecord(adapter)) {
|
|
213
|
+
errors.push(`OpenSpec source adapter index adapter entry 不是对象: ${indexPath}`);
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
validateAllowedKeys(adapter, ['id', 'capability', 'kind', 'operations'], 'adapter entry', indexPath, errors);
|
|
217
|
+
if (typeof adapter.id !== 'string' || typeof adapter.capability !== 'string') {
|
|
218
|
+
errors.push(`OpenSpec source adapter index adapter entry 缺少 id/capability: ${indexPath}`);
|
|
219
|
+
}
|
|
220
|
+
if (!isOpenSpecAdapterKind(adapter.kind)) {
|
|
221
|
+
errors.push(`OpenSpec source adapter index adapter kind 非法: ${indexPath}`);
|
|
222
|
+
}
|
|
223
|
+
if (!Array.isArray(adapter.operations) ||
|
|
224
|
+
adapter.operations.some((operation) => typeof operation !== 'string')) {
|
|
225
|
+
errors.push(`OpenSpec source adapter index adapter operations 必须是 string array: ${indexPath}`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
function validateRootOpenSpecIndex(context, errors) {
|
|
231
|
+
validateNoOpenSpecField(join(context.rootDir, '.claude-plugin/marketplace.json'), 'Claude marketplace', errors);
|
|
232
|
+
validateNoOpenSpecField(join(context.rootDir, '.agents/plugins/marketplace.json'), 'Codex marketplace', errors);
|
|
233
|
+
validateNoOpenSpecField(join(context.rootDir, 'marketplace.json'), 'Codex marketplace mirror', errors);
|
|
234
|
+
const indexPath = join(context.rootDir, '.openspec-plugin/source-adapters.json');
|
|
235
|
+
const index = readGeneratedJson(indexPath, errors);
|
|
236
|
+
if (!isRecord(index)) {
|
|
237
|
+
errors.push(`OpenSpec source adapter index 缺失或格式错误: ${indexPath}`);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const shapeErrorCountBefore = errors.length;
|
|
241
|
+
validateRootOpenSpecIndexShape(indexPath, index, errors);
|
|
242
|
+
let parsedDuplicateErrors = [];
|
|
243
|
+
if (errors.length === shapeErrorCountBefore && Array.isArray(index.plugins)) {
|
|
244
|
+
parsedDuplicateErrors = findDuplicateOpenSpecAdapterOperations(index.plugins);
|
|
245
|
+
}
|
|
246
|
+
let expectedIndex;
|
|
247
|
+
try {
|
|
248
|
+
expectedIndex = buildExpectedRootOpenSpecIndex(context);
|
|
249
|
+
}
|
|
250
|
+
catch (err) {
|
|
251
|
+
errors.push(err.message);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
const expectedDuplicateErrors = findDuplicateOpenSpecAdapterOperations(expectedIndex.plugins);
|
|
255
|
+
errors.push(...(expectedDuplicateErrors.length > 0 ? expectedDuplicateErrors : parsedDuplicateErrors));
|
|
256
|
+
if (!isDeepStrictEqual(index, expectedIndex)) {
|
|
257
|
+
errors.push(`OpenSpec source adapter index 与 marketplace / plugin overlay 派生结果不一致,请重新运行 build:index: ${indexPath}`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
47
260
|
function validateOne(context, name) {
|
|
48
261
|
const pluginDir = join(context.pluginsDir, name);
|
|
49
262
|
const errors = [];
|
|
@@ -106,10 +319,15 @@ function validateOne(context, name) {
|
|
|
106
319
|
}
|
|
107
320
|
}
|
|
108
321
|
}
|
|
109
|
-
// 6.
|
|
322
|
+
// 6. 验证 LSP 契约与 Claude 生成文件
|
|
323
|
+
validateLspComponents(pluginDir, config, errors);
|
|
324
|
+
validateLspGeneratedFile(pluginDir, config, errors);
|
|
325
|
+
// 7. 名称一致性检查
|
|
110
326
|
if (config.name !== name) {
|
|
111
327
|
errors.push(`plugin.yaml 中的 name (${config.name}) 与目录名 (${name}) 不一致`);
|
|
112
328
|
}
|
|
329
|
+
// 8. 验证 OpenSpec sidecar 与平台 manifest 隔离
|
|
330
|
+
validateOpenSpecSidecar(pluginDir, config, errors);
|
|
113
331
|
}
|
|
114
332
|
catch (err) {
|
|
115
333
|
errors.push(err.message);
|
|
@@ -138,6 +356,17 @@ export function runValidate(name, options) {
|
|
|
138
356
|
}
|
|
139
357
|
}
|
|
140
358
|
}
|
|
359
|
+
if (options.all) {
|
|
360
|
+
const rootErrors = [];
|
|
361
|
+
validateRootOpenSpecIndex(context, rootErrors);
|
|
362
|
+
if (rootErrors.length > 0) {
|
|
363
|
+
allValid = false;
|
|
364
|
+
console.log(chalk.red(` ✗ .openspec-plugin/source-adapters.json`));
|
|
365
|
+
for (const err of rootErrors) {
|
|
366
|
+
console.log(chalk.red(` └─ ${err}`));
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
141
370
|
console.log();
|
|
142
371
|
if (allValid) {
|
|
143
372
|
console.log(chalk.green(`✓ 所有插件验证通过`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const MARKETPLACE_MAINTAINER_SKILL: string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// 此文件由 scripts/generate-skill.ts 自动生成,请勿手动编辑
|
|
2
|
+
// 源头: plugins/marketplace-maintainer/skills/marketplace-maintainer/SKILL.md
|
|
3
|
+
export const MARKETPLACE_MAINTAINER_SKILL = "---\nname: marketplace-maintainer\ndescription: \"帮助团队在 plugin marketplace 插件目录中创建、验证和发布插件\"\nargument-hint: \"<plugin-name>\"\n---\n\n# Marketplace 维护助手\n\n此 skill 指导你在 plugin marketplace 插件目录仓库中创建、验证和发布插件。\n\n## 触发条件\n\n当用户需要以下操作时激活此 skill:\n- 创建一个新的 marketplace 插件\n- 验证现有插件的格式\n- 构建插件的平台兼容层\n- 更新 marketplace 索引\n\n## 前置准备\n\n1. 确认当前工作目录位于包含 `marketplace.yaml` 的 plugin marketplace 仓库内,或命令显式传入 `--root <dir>`\n2. 使用远程 marketplace / 插件时不需要 `npm install`\n3. 普通插件目录维护优先使用 `npx @birdie_moblie/plugin-marketplace-cli ...`\n4. 只有需要本地固定 CLI 版本或维护 CLI 源码时,才运行对应目录的 `npm install`\n\n## 创建新插件流程\n\n### 步骤 1:使用 CLI 创建骨架\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli init <plugin-name> --type <skill|mcp|lsp|hook>\n```\n\n如果仓库已经配置了本地 `mp` script,也可以使用:\n\n```bash\nnpm run mp -- init <plugin-name> --type <skill|mcp|lsp|hook>\n```\n\n- `skill`:纯提示指令型插件(默认)\n- `mcp`:包含 MCP Server 配置的插件\n- `lsp`:包含 Claude Code LSP 配置的插件,通常也配一个 skill 说明语义检索边界\n- `hook`:包含事件驱动脚本的插件\n\n### 步骤 2:编辑 plugin.yaml\n\n打开 `plugins/<plugin-name>/plugin.yaml`,完善以下必填字段:\n\n```yaml\nname: <plugin-name> # kebab-case,与目录名一致\nversion: \"0.1.0\" # semver 格式\ndescription: \"描述这个插件的功能\" # 支持中文\nauthor:\n name: \"团队名\"\n\ncategory: <类别> # tooling / integration / workflow / quality\ntags: [标签1, 标签2]\n\ncomponents:\n skills: # 至少一种组件类型\n - name: <skill-name>\n path: skills/<skill-name>\n description: \"skill 描述\"\n```\n\n### 步骤 3:编写 SKILL.md(如果是 skill 类型)\n\n编辑 `plugins/<plugin-name>/skills/<skill-name>/SKILL.md`:\n\n- 使用 YAML frontmatter 定义 `name` 和 `description`\n- 在 markdown 正文中编写 agent 执行指令\n- 指令应清晰、步骤化、可执行\n\n### 步骤 4:验证\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli validate <plugin-name>\n```\n\n确保没有错误。常见检查项:\n- plugin.yaml schema 合法\n- 引用的 skill/hook 文件存在\n- name 与目录名一致\n\n### 步骤 5:构建双平台 manifest\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli build <plugin-name>\n```\n\n这会自动生成:\n- `.claude-plugin/plugin.json` — Claude Code 兼容\n- `.codex-plugin/plugin.json` — Codex 兼容\n- `.mcp.json`(如有 MCP 组件)\n- `hooks/hooks.json`(如有 Hook 组件)\n\n### 步骤 6:更新索引\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli index\n```\n\n这会更新:\n- `.claude-plugin/marketplace.json` — Claude Code 官方 marketplace manifest\n- `.agents/plugins/marketplace.json` — Codex 官方 repo marketplace manifest\n- `marketplace.json` — 根目录兼容镜像\n- `plugins/CATALOG.md` — 人类可读的插件目录\n\n### 步骤 7:提交\n\n将所有变更提交并发起 Merge Request。CI 会自动验证格式。\n\n需要创建一个全新的 plugin marketplace 仓库时,使用:\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli init-repo <marketplace-name> --organization \"<团队名>\"\n```\n\n`init-repo` 会创建 `marketplace.yaml`、`plugins/`、最小 README,并为 `package.json` 补齐推荐 scripts。默认还会把本 SKILL 写入 `.agents/skills/` 和 `.claude/skills/`,让新仓库开箱即用地具备插件维护指引;如需跳过可传 `--no-skill`。生成的 scripts 默认使用 `npx @birdie_moblie/plugin-marketplace-cli`,新仓库不需要先 `npm install` 才能继续创建或验证插件。\n\n## plugin.yaml 完整字段参考\n\n```yaml\nname: string # 必填,kebab-case\nversion: string # 必填,semver\ndescription: string # 必填,支持中文\nauthor:\n name: string # 必填\n email: string # 可选\n url: string # 可选\n\ncategory: string # 可选,用于分类\ntags: string[] # 可选,用于搜索\n\ncomponents:\n skills: # Skill 组件列表\n - name: string\n path: string # 相对于插件根目录\n description: string\n argument-hint: string # 可选,slash command 参数提示\n\n mcp: # MCP Server 组件列表\n - name: string\n command: string # 启动命令\n args: string[] # 命令参数\n env: object # 环境变量\n description: string\n\n hooks: # Hook 组件列表\n - event: string # 事件名(PreToolUse, PostToolUse 等)\n pattern: string # 工具名匹配模式\n command: string # 脚本路径\n timeout: number # 超时(毫秒)\n\nplatform: # 可选的平台特有覆盖\n codex:\n interface:\n displayName: string\n shortDescription: string\n longDescription: string\n category: string\n developerName: string\n```\n";
|
|
4
|
+
//# sourceMappingURL=skill-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-content.js","sourceRoot":"","sources":["../../src/generated/skill-content.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,4EAA4E;AAE5E,MAAM,CAAC,MAAM,4BAA4B,GAAW,87HAA87H,CAAC"}
|
|
@@ -18,6 +18,19 @@ export interface PluginMcp {
|
|
|
18
18
|
env?: Record<string, string>;
|
|
19
19
|
description?: string;
|
|
20
20
|
}
|
|
21
|
+
export type PluginLspTransport = 'stdio' | 'socket';
|
|
22
|
+
export interface PluginLsp {
|
|
23
|
+
name: string;
|
|
24
|
+
command: string;
|
|
25
|
+
args?: string[] | null;
|
|
26
|
+
env?: Record<string, string> | null;
|
|
27
|
+
transport?: PluginLspTransport | null;
|
|
28
|
+
extensionToLanguage: Record<string, string>;
|
|
29
|
+
workspaceFolder?: string | null;
|
|
30
|
+
startupTimeout?: number | null;
|
|
31
|
+
maxRestarts?: number | null;
|
|
32
|
+
diagnostics?: boolean | null;
|
|
33
|
+
}
|
|
21
34
|
export interface PluginHook {
|
|
22
35
|
event: string;
|
|
23
36
|
pattern?: string;
|
|
@@ -44,6 +57,7 @@ export interface PlatformOverrides {
|
|
|
44
57
|
export interface PluginComponents {
|
|
45
58
|
skills?: PluginSkill[];
|
|
46
59
|
mcp?: PluginMcp[];
|
|
60
|
+
lsp?: PluginLsp[];
|
|
47
61
|
hooks?: PluginHook[];
|
|
48
62
|
}
|
|
49
63
|
export interface PluginYaml {
|
|
@@ -89,6 +89,44 @@ export const pluginYamlSchema = {
|
|
|
89
89
|
},
|
|
90
90
|
},
|
|
91
91
|
},
|
|
92
|
+
lsp: {
|
|
93
|
+
type: 'array',
|
|
94
|
+
nullable: true,
|
|
95
|
+
items: {
|
|
96
|
+
type: 'object',
|
|
97
|
+
required: ['name', 'command', 'extensionToLanguage'],
|
|
98
|
+
additionalProperties: false,
|
|
99
|
+
properties: {
|
|
100
|
+
name: { type: 'string' },
|
|
101
|
+
command: { type: 'string' },
|
|
102
|
+
args: {
|
|
103
|
+
type: 'array',
|
|
104
|
+
items: { type: 'string' },
|
|
105
|
+
nullable: true,
|
|
106
|
+
},
|
|
107
|
+
env: {
|
|
108
|
+
type: 'object',
|
|
109
|
+
nullable: true,
|
|
110
|
+
required: [],
|
|
111
|
+
additionalProperties: { type: 'string' },
|
|
112
|
+
},
|
|
113
|
+
transport: {
|
|
114
|
+
type: 'string',
|
|
115
|
+
enum: ['stdio', 'socket', null],
|
|
116
|
+
nullable: true,
|
|
117
|
+
},
|
|
118
|
+
extensionToLanguage: {
|
|
119
|
+
type: 'object',
|
|
120
|
+
required: [],
|
|
121
|
+
additionalProperties: { type: 'string' },
|
|
122
|
+
},
|
|
123
|
+
workspaceFolder: { type: 'string', nullable: true },
|
|
124
|
+
startupTimeout: { type: 'number', nullable: true },
|
|
125
|
+
maxRestarts: { type: 'number', nullable: true },
|
|
126
|
+
diagnostics: { type: 'boolean', nullable: true },
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
},
|
|
92
130
|
hooks: {
|
|
93
131
|
type: 'array',
|
|
94
132
|
nullable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-yaml.js","sourceRoot":"","sources":["../../src/schema/plugin-yaml.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"plugin-yaml.js","sourceRoot":"","sources":["../../src/schema/plugin-yaml.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@birdie_moblie/plugin-marketplace-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"private": false,
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "维护 Claude Code 和 Codex plugin marketplace 仓库的 CLI",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"bin": {
|
|
@@ -10,12 +10,20 @@
|
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
|
-
"README.md"
|
|
13
|
+
"README.md",
|
|
14
|
+
"CHANGELOG.md"
|
|
14
15
|
],
|
|
15
16
|
"scripts": {
|
|
16
|
-
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
17
|
-
"
|
|
17
|
+
"clean": "rm -rf dist src/generated tsconfig.tsbuildinfo",
|
|
18
|
+
"generate:skill": "tsx scripts/generate-skill.ts",
|
|
19
|
+
"build": "npm run clean && npm run generate:skill && tsc && chmod +x dist/cli.js",
|
|
20
|
+
"test:openspec-contracts": "tsx scripts/check-openspec-contracts.ts",
|
|
21
|
+
"test:lsp-contracts": "tsx scripts/check-lsp-contracts.ts",
|
|
22
|
+
"test": "npm run test:openspec-contracts && npm run test:lsp-contracts",
|
|
23
|
+
"prepublishOnly": "npm run build && npm test",
|
|
24
|
+
"premp": "npm run generate:skill",
|
|
18
25
|
"mp": "tsx src/cli.ts",
|
|
26
|
+
"predev": "npm run generate:skill",
|
|
19
27
|
"dev": "tsx watch src/cli.ts"
|
|
20
28
|
},
|
|
21
29
|
"dependencies": {
|