@vibe-agent-toolkit/cli 0.1.22-rc.3 → 0.1.23-rc.5
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/dist/commands/claude/index.d.ts.map +1 -1
- package/dist/commands/claude/index.js +5 -2
- package/dist/commands/claude/index.js.map +1 -1
- package/dist/commands/claude/marketplace/changelog-utils.d.ts +22 -0
- package/dist/commands/claude/marketplace/changelog-utils.d.ts.map +1 -0
- package/dist/commands/claude/marketplace/changelog-utils.js +47 -0
- package/dist/commands/claude/marketplace/changelog-utils.js.map +1 -0
- package/dist/commands/claude/marketplace/git-publish.d.ts +37 -0
- package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -0
- package/dist/commands/claude/marketplace/git-publish.js +143 -0
- package/dist/commands/claude/marketplace/git-publish.js.map +1 -0
- package/dist/commands/claude/marketplace/index.d.ts +3 -0
- package/dist/commands/claude/marketplace/index.d.ts.map +1 -0
- package/dist/commands/claude/marketplace/index.js +25 -0
- package/dist/commands/claude/marketplace/index.js.map +1 -0
- package/dist/commands/claude/marketplace/license-utils.d.ts +37 -0
- package/dist/commands/claude/marketplace/license-utils.d.ts.map +1 -0
- package/dist/commands/claude/marketplace/license-utils.js +123 -0
- package/dist/commands/claude/marketplace/license-utils.js.map +1 -0
- package/dist/commands/claude/marketplace/publish-tree.d.ts +38 -0
- package/dist/commands/claude/marketplace/publish-tree.d.ts.map +1 -0
- package/dist/commands/claude/marketplace/publish-tree.js +64 -0
- package/dist/commands/claude/marketplace/publish-tree.js.map +1 -0
- package/dist/commands/claude/marketplace/publish.d.ts +18 -0
- package/dist/commands/claude/marketplace/publish.d.ts.map +1 -0
- package/dist/commands/claude/marketplace/publish.js +196 -0
- package/dist/commands/claude/marketplace/publish.js.map +1 -0
- package/dist/commands/claude/marketplace/validate.d.ts +13 -0
- package/dist/commands/claude/marketplace/validate.d.ts.map +1 -0
- package/dist/commands/claude/marketplace/validate.js +169 -0
- package/dist/commands/claude/marketplace/validate.js.map +1 -0
- package/dist/commands/claude/org/skills.d.ts +0 -3
- package/dist/commands/claude/org/skills.d.ts.map +1 -1
- package/dist/commands/claude/org/skills.js +313 -25
- package/dist/commands/claude/org/skills.js.map +1 -1
- package/dist/commands/claude/plugin/build.js +30 -5
- package/dist/commands/claude/plugin/build.js.map +1 -1
- package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
- package/dist/commands/skills/skill-discovery.js +1 -0
- package/dist/commands/skills/skill-discovery.js.map +1 -1
- package/dist/commands/verify.d.ts +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +36 -5
- package/dist/commands/verify.js.map +1 -1
- package/dist/utils/skill-discovery.d.ts.map +1 -1
- package/dist/utils/skill-discovery.js +1 -0
- package/dist/utils/skill-discovery.js.map +1 -1
- package/package.json +11 -11
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace publish command.
|
|
3
|
+
*
|
|
4
|
+
* Pushes built marketplace artifacts to a Git branch for distribution.
|
|
5
|
+
* Composes marketplace build output with CHANGELOG, README, and LICENSE,
|
|
6
|
+
* then creates a squashed commit on the target branch.
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from 'commander';
|
|
9
|
+
export interface MarketplacePublishOptions {
|
|
10
|
+
dryRun?: boolean;
|
|
11
|
+
push?: boolean;
|
|
12
|
+
branch?: string;
|
|
13
|
+
force?: boolean;
|
|
14
|
+
marketplace?: string;
|
|
15
|
+
debug?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function createMarketplacePublishCommand(): Command;
|
|
18
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../../src/commands/claude/marketplace/publish.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAUD,wBAAgB,+BAA+B,IAAI,OAAO,CAwCzD"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace publish command.
|
|
3
|
+
*
|
|
4
|
+
* Pushes built marketplace artifacts to a Git branch for distribution.
|
|
5
|
+
* Composes marketplace build output with CHANGELOG, README, and LICENSE,
|
|
6
|
+
* then creates a squashed commit on the target branch.
|
|
7
|
+
*/
|
|
8
|
+
import { mkdtempSync, readFileSync } from 'node:fs';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { normalizedTmpdir } from '@vibe-agent-toolkit/utils';
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
import { handleCommandError } from '../../../utils/command-error.js';
|
|
13
|
+
import { createLogger } from '../../../utils/logger.js';
|
|
14
|
+
import { writeYamlOutput } from '../../../utils/output.js';
|
|
15
|
+
import { loadClaudeProjectConfig } from '../claude-config.js';
|
|
16
|
+
import { createCommitMessage, publishToGitBranch } from './git-publish.js';
|
|
17
|
+
import { isFilePath, isSpdxIdentifier } from './license-utils.js';
|
|
18
|
+
import { composePublishTree } from './publish-tree.js';
|
|
19
|
+
export function createMarketplacePublishCommand() {
|
|
20
|
+
const command = new Command('publish');
|
|
21
|
+
command
|
|
22
|
+
.description('Publish built marketplace to a Git branch')
|
|
23
|
+
.option('--dry-run', 'Show what would be published without pushing')
|
|
24
|
+
.option('--no-push', 'Create local branch only, do not push to remote')
|
|
25
|
+
.option('--branch <name>', 'Override publish branch')
|
|
26
|
+
.option('--force', 'Force-push (first publish or recovery)')
|
|
27
|
+
.option('--marketplace <name>', 'Publish specific marketplace only')
|
|
28
|
+
.option('--debug', 'Enable debug logging')
|
|
29
|
+
.action(marketplacePublishCommand)
|
|
30
|
+
.addHelpText('after', `
|
|
31
|
+
Description:
|
|
32
|
+
Pushes built marketplace artifacts to a Git branch for distribution.
|
|
33
|
+
Requires vat build to have been run first.
|
|
34
|
+
|
|
35
|
+
Composes:
|
|
36
|
+
- Marketplace artifacts from dist/.claude/plugins/marketplaces/
|
|
37
|
+
- CHANGELOG.md (stamped with version and date)
|
|
38
|
+
- README.md
|
|
39
|
+
- LICENSE (SPDX shortcut or file)
|
|
40
|
+
|
|
41
|
+
Creates one squashed commit per version on the target branch.
|
|
42
|
+
|
|
43
|
+
Output:
|
|
44
|
+
YAML summary -> stdout
|
|
45
|
+
Progress -> stderr
|
|
46
|
+
|
|
47
|
+
Exit Codes:
|
|
48
|
+
0 - Published successfully (or dry-run completed)
|
|
49
|
+
1 - Publish error (missing build, empty changelog)
|
|
50
|
+
2 - System error
|
|
51
|
+
|
|
52
|
+
Example:
|
|
53
|
+
$ vat build && vat claude marketplace publish --no-push # Create local branch
|
|
54
|
+
$ git push origin claude-marketplace # Push when ready
|
|
55
|
+
`);
|
|
56
|
+
return command;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Read version from package.json in the given directory.
|
|
60
|
+
*/
|
|
61
|
+
function readProjectVersion(configDir) {
|
|
62
|
+
const packageJsonPath = join(configDir, 'package.json');
|
|
63
|
+
try {
|
|
64
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- path constructed from validated config dir
|
|
65
|
+
const raw = readFileSync(packageJsonPath, 'utf-8');
|
|
66
|
+
const parsed = JSON.parse(raw);
|
|
67
|
+
if (!parsed.version) {
|
|
68
|
+
throw new Error('package.json is missing a "version" field.');
|
|
69
|
+
}
|
|
70
|
+
return parsed.version;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (error instanceof Error && error.message.includes('ENOENT')) {
|
|
74
|
+
throw new Error(`package.json not found at ${packageJsonPath}. Run from a project directory with package.json.`);
|
|
75
|
+
}
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Resolve a license config value to typed LicenseOptions.
|
|
81
|
+
*/
|
|
82
|
+
function resolveLicenseOptions(licenseValue, ownerName) {
|
|
83
|
+
if (isFilePath(licenseValue)) {
|
|
84
|
+
return { type: 'file', filePath: licenseValue };
|
|
85
|
+
}
|
|
86
|
+
if (isSpdxIdentifier(licenseValue)) {
|
|
87
|
+
return { type: 'spdx', value: licenseValue, ownerName };
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`License "${licenseValue}" is neither a known SPDX identifier nor a file path.`);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Build ComposeOptions for a single marketplace entry.
|
|
93
|
+
*/
|
|
94
|
+
function buildComposeOptions(mpName, configDir, version, date, publishConfig, licenseOpts) {
|
|
95
|
+
const opts = {
|
|
96
|
+
marketplaceName: mpName,
|
|
97
|
+
configDir,
|
|
98
|
+
outputDir: mkdtempSync(join(normalizedTmpdir(), `vat-publish-tree-${mpName}-`)),
|
|
99
|
+
version,
|
|
100
|
+
date,
|
|
101
|
+
};
|
|
102
|
+
if (publishConfig.changelog) {
|
|
103
|
+
opts.changelog = { sourcePath: publishConfig.changelog };
|
|
104
|
+
}
|
|
105
|
+
if (publishConfig.readme) {
|
|
106
|
+
opts.readme = { sourcePath: publishConfig.readme };
|
|
107
|
+
}
|
|
108
|
+
if (licenseOpts) {
|
|
109
|
+
opts.license = licenseOpts;
|
|
110
|
+
}
|
|
111
|
+
return opts;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Publish a single marketplace and return the result.
|
|
115
|
+
*/
|
|
116
|
+
async function publishOneMarketplace(ctx) {
|
|
117
|
+
const { mpName, mpConfig, publishConfig, configDir, version, date, options, logger } = ctx;
|
|
118
|
+
const branch = options.branch ?? publishConfig.branch ?? 'claude-marketplace';
|
|
119
|
+
const remote = publishConfig.remote ?? 'origin';
|
|
120
|
+
logger.info(`Publishing marketplace "${mpName}" v${version}`);
|
|
121
|
+
const licenseOpts = publishConfig.license
|
|
122
|
+
? resolveLicenseOptions(publishConfig.license, mpConfig.owner.name)
|
|
123
|
+
: undefined;
|
|
124
|
+
const composeOpts = buildComposeOptions(mpName, configDir, version, date, publishConfig, licenseOpts);
|
|
125
|
+
const composeResult = await composePublishTree(composeOpts);
|
|
126
|
+
// Resolve source repo for commit metadata
|
|
127
|
+
const sourceRepo = typeof publishConfig.sourceRepo === 'string'
|
|
128
|
+
? publishConfig.sourceRepo
|
|
129
|
+
: undefined;
|
|
130
|
+
const commitMessage = createCommitMessage(composeResult.version, composeResult.changelogDelta, sourceRepo ? { sourceRepo } : undefined);
|
|
131
|
+
if (options.dryRun) {
|
|
132
|
+
logger.info(`[dry-run] Would publish to ${remote}/${branch}`);
|
|
133
|
+
logger.info(`[dry-run] Version: ${version}`);
|
|
134
|
+
logger.info(`[dry-run] Files: ${composeResult.files.join(', ')}`);
|
|
135
|
+
}
|
|
136
|
+
else if (options.push === false) {
|
|
137
|
+
logger.info(`[no-push] Creating local branch ${branch}`);
|
|
138
|
+
}
|
|
139
|
+
await publishToGitBranch({
|
|
140
|
+
publishDir: composeOpts.outputDir,
|
|
141
|
+
branch,
|
|
142
|
+
remote,
|
|
143
|
+
commitMessage,
|
|
144
|
+
force: options.force ?? false,
|
|
145
|
+
dryRun: options.dryRun ?? false,
|
|
146
|
+
noPush: options.push === false,
|
|
147
|
+
logger,
|
|
148
|
+
});
|
|
149
|
+
return {
|
|
150
|
+
marketplace: mpName,
|
|
151
|
+
version,
|
|
152
|
+
branch,
|
|
153
|
+
files: composeResult.files,
|
|
154
|
+
dryRun: options.dryRun ?? false,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
async function marketplacePublishCommand(options) {
|
|
158
|
+
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
159
|
+
const startTime = Date.now();
|
|
160
|
+
try {
|
|
161
|
+
const { configDir, claudeConfig } = await loadClaudeProjectConfig();
|
|
162
|
+
if (!claudeConfig?.marketplaces) {
|
|
163
|
+
throw new Error('No marketplaces defined in config. Add a claude.marketplaces section to vibe-agent-toolkit.config.yaml.');
|
|
164
|
+
}
|
|
165
|
+
const version = readProjectVersion(configDir);
|
|
166
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
167
|
+
const results = [];
|
|
168
|
+
for (const [mpName, mpConfig] of Object.entries(claudeConfig.marketplaces)) {
|
|
169
|
+
if (options.marketplace && options.marketplace !== mpName) {
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
if (!mpConfig.publish) {
|
|
173
|
+
logger.info(`Skipping "${mpName}" (no publish config)`);
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
const result = await publishOneMarketplace({
|
|
177
|
+
mpName, mpConfig, publishConfig: mpConfig.publish, configDir, version, date: today, options, logger,
|
|
178
|
+
});
|
|
179
|
+
results.push(result);
|
|
180
|
+
}
|
|
181
|
+
if (results.length === 0) {
|
|
182
|
+
throw new Error(options.marketplace
|
|
183
|
+
? `Marketplace "${options.marketplace}" not found or has no publish config.`
|
|
184
|
+
: 'No marketplaces with publish config found.');
|
|
185
|
+
}
|
|
186
|
+
writeYamlOutput({
|
|
187
|
+
status: 'success',
|
|
188
|
+
published: results,
|
|
189
|
+
});
|
|
190
|
+
process.exit(0);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
handleCommandError(error, logger, startTime, 'MarketplacePublish');
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../src/commands/claude/marketplace/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `vat claude marketplace validate [path]` — strict marketplace validation.
|
|
3
|
+
*
|
|
4
|
+
* Validates a marketplace directory with strict requirements:
|
|
5
|
+
* - .claude-plugin/marketplace.json must exist and be valid
|
|
6
|
+
* - Each plugin must have valid plugin.json with version (error, not warning)
|
|
7
|
+
* - LICENSE file must exist (error)
|
|
8
|
+
* - README.md should exist (warning)
|
|
9
|
+
* - CHANGELOG.md should exist (warning)
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
export declare function createMarketplaceValidateCommand(): Command;
|
|
13
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/commands/claude/marketplace/validate.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAcH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+JpC,wBAAgB,gCAAgC,IAAI,OAAO,CAyB1D"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/* eslint-disable security/detect-non-literal-fs-filename -- Paths are user-provided CLI arguments */
|
|
2
|
+
/**
|
|
3
|
+
* `vat claude marketplace validate [path]` — strict marketplace validation.
|
|
4
|
+
*
|
|
5
|
+
* Validates a marketplace directory with strict requirements:
|
|
6
|
+
* - .claude-plugin/marketplace.json must exist and be valid
|
|
7
|
+
* - Each plugin must have valid plugin.json with version (error, not warning)
|
|
8
|
+
* - LICENSE file must exist (error)
|
|
9
|
+
* - README.md should exist (warning)
|
|
10
|
+
* - CHANGELOG.md should exist (warning)
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
13
|
+
import { join, resolve } from 'node:path';
|
|
14
|
+
import { validateMarketplace, validatePlugin, validateSkill, } from '@vibe-agent-toolkit/agent-skills';
|
|
15
|
+
import { Command } from 'commander';
|
|
16
|
+
import { formatDuration, handleCommandError } from '../../../utils/command-error.js';
|
|
17
|
+
import { createLogger } from '../../../utils/logger.js';
|
|
18
|
+
import { writeYamlOutput } from '../../../utils/output.js';
|
|
19
|
+
/**
|
|
20
|
+
* Check for required/recommended files in the marketplace root.
|
|
21
|
+
*/
|
|
22
|
+
function checkMarketplaceFiles(marketplacePath) {
|
|
23
|
+
const issues = [];
|
|
24
|
+
const fileChecks = [
|
|
25
|
+
{ file: 'LICENSE', code: 'MARKETPLACE_MISSING_LICENSE', severity: 'error', verb: 'required for distribution' },
|
|
26
|
+
{ file: 'README.md', code: 'MARKETPLACE_MISSING_README', severity: 'warning', verb: 'recommended for documentation' },
|
|
27
|
+
{ file: 'CHANGELOG.md', code: 'MARKETPLACE_MISSING_CHANGELOG', severity: 'warning', verb: 'recommended for tracking changes' },
|
|
28
|
+
];
|
|
29
|
+
for (const check of fileChecks) {
|
|
30
|
+
if (!existsSync(join(marketplacePath, check.file))) {
|
|
31
|
+
issues.push({
|
|
32
|
+
severity: check.severity,
|
|
33
|
+
code: check.code,
|
|
34
|
+
message: `Marketplace is missing a ${check.file} — ${check.verb}`,
|
|
35
|
+
location: join(marketplacePath, check.file),
|
|
36
|
+
fix: `Add a ${check.file} to the marketplace root directory`,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return issues;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Validate all SKILL.md files within a plugin's skills/ directory.
|
|
44
|
+
*/
|
|
45
|
+
async function validatePluginSkills(pluginDir) {
|
|
46
|
+
const skillsDir = join(pluginDir, 'skills');
|
|
47
|
+
if (!existsSync(skillsDir))
|
|
48
|
+
return [];
|
|
49
|
+
const issues = [];
|
|
50
|
+
const skillEntries = readdirSync(skillsDir, { withFileTypes: true });
|
|
51
|
+
for (const skillEntry of skillEntries) {
|
|
52
|
+
if (!skillEntry.isDirectory())
|
|
53
|
+
continue;
|
|
54
|
+
const skillDir = join(skillsDir, skillEntry.name);
|
|
55
|
+
const skillMdPath = join(skillDir, 'SKILL.md');
|
|
56
|
+
if (!existsSync(skillMdPath))
|
|
57
|
+
continue;
|
|
58
|
+
const skillResult = await validateSkill({ skillPath: skillMdPath, rootDir: skillDir });
|
|
59
|
+
issues.push(...skillResult.issues);
|
|
60
|
+
}
|
|
61
|
+
return issues;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate all plugins under the plugins/ directory.
|
|
65
|
+
*/
|
|
66
|
+
async function validatePlugins(marketplacePath) {
|
|
67
|
+
const pluginsDir = join(marketplacePath, 'plugins');
|
|
68
|
+
if (!existsSync(pluginsDir))
|
|
69
|
+
return { pluginResults: [], issues: [] };
|
|
70
|
+
const pluginResults = [];
|
|
71
|
+
const issues = [];
|
|
72
|
+
const entries = readdirSync(pluginsDir, { withFileTypes: true });
|
|
73
|
+
for (const entry of entries) {
|
|
74
|
+
if (!entry.isDirectory())
|
|
75
|
+
continue;
|
|
76
|
+
const pluginDir = join(pluginsDir, entry.name);
|
|
77
|
+
const pluginResult = await validatePlugin(pluginDir, { strict: true });
|
|
78
|
+
pluginResults.push(pluginResult);
|
|
79
|
+
issues.push(...pluginResult.issues);
|
|
80
|
+
const skillIssues = await validatePluginSkills(pluginDir);
|
|
81
|
+
issues.push(...skillIssues);
|
|
82
|
+
}
|
|
83
|
+
return { pluginResults, issues };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Determine overall validation status from issues.
|
|
87
|
+
*/
|
|
88
|
+
function determineStatus(issues) {
|
|
89
|
+
if (issues.some(i => i.severity === 'error'))
|
|
90
|
+
return 'error';
|
|
91
|
+
if (issues.some(i => i.severity === 'warning'))
|
|
92
|
+
return 'warning';
|
|
93
|
+
return 'success';
|
|
94
|
+
}
|
|
95
|
+
async function marketplaceValidateCommand(targetPath, options) {
|
|
96
|
+
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
97
|
+
const startTime = Date.now();
|
|
98
|
+
try {
|
|
99
|
+
const marketplacePath = resolve(targetPath ?? '.');
|
|
100
|
+
logger.info(`Validating marketplace: ${marketplacePath}`);
|
|
101
|
+
// 1. Validate marketplace.json
|
|
102
|
+
const marketplaceResult = await validateMarketplace(marketplacePath);
|
|
103
|
+
// If marketplace manifest is missing or invalid, bail early
|
|
104
|
+
if (marketplaceResult.status === 'error') {
|
|
105
|
+
const duration = formatDuration(Date.now() - startTime);
|
|
106
|
+
writeYamlOutput({
|
|
107
|
+
status: 'error',
|
|
108
|
+
path: marketplacePath,
|
|
109
|
+
summary: marketplaceResult.summary,
|
|
110
|
+
issues: marketplaceResult.issues,
|
|
111
|
+
duration,
|
|
112
|
+
});
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
// 2. Check required/recommended files
|
|
116
|
+
const fileIssues = checkMarketplaceFiles(marketplacePath);
|
|
117
|
+
// 3. Validate plugins and their skills
|
|
118
|
+
const { pluginResults, issues: pluginIssues } = await validatePlugins(marketplacePath);
|
|
119
|
+
// Combine all issues
|
|
120
|
+
const allIssues = [...marketplaceResult.issues, ...fileIssues, ...pluginIssues];
|
|
121
|
+
const status = determineStatus(allIssues);
|
|
122
|
+
const errorCount = allIssues.filter(i => i.severity === 'error').length;
|
|
123
|
+
const warningCount = allIssues.filter(i => i.severity === 'warning').length;
|
|
124
|
+
const duration = formatDuration(Date.now() - startTime);
|
|
125
|
+
writeYamlOutput({
|
|
126
|
+
status,
|
|
127
|
+
path: marketplacePath,
|
|
128
|
+
marketplace: marketplaceResult.metadata,
|
|
129
|
+
plugins: pluginResults.map(r => ({
|
|
130
|
+
path: r.path,
|
|
131
|
+
status: r.status,
|
|
132
|
+
metadata: r.metadata,
|
|
133
|
+
issues: r.issues,
|
|
134
|
+
})),
|
|
135
|
+
issues: allIssues,
|
|
136
|
+
summary: `${errorCount} error(s), ${warningCount} warning(s)`,
|
|
137
|
+
duration,
|
|
138
|
+
});
|
|
139
|
+
process.exit(status === 'error' ? 1 : 0);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
handleCommandError(error, logger, startTime, 'MarketplaceValidate');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
export function createMarketplaceValidateCommand() {
|
|
146
|
+
const command = new Command('validate');
|
|
147
|
+
command
|
|
148
|
+
.description('Validate a marketplace directory for publishing')
|
|
149
|
+
.argument('[path]', 'Path to marketplace directory (default: current directory)')
|
|
150
|
+
.option('-d, --debug', 'Enable debug logging')
|
|
151
|
+
.action(marketplaceValidateCommand)
|
|
152
|
+
.addHelpText('after', `
|
|
153
|
+
Description:
|
|
154
|
+
Validates a marketplace directory with strict requirements for publishing.
|
|
155
|
+
Checks marketplace.json, plugin manifests, skills, LICENSE, README, and CHANGELOG.
|
|
156
|
+
|
|
157
|
+
Plugin versions are required (error, not warning) in strict marketplace validation.
|
|
158
|
+
|
|
159
|
+
Exit Codes:
|
|
160
|
+
0 - All validations passed (warnings allowed)
|
|
161
|
+
1 - Validation errors found
|
|
162
|
+
2 - System error (directory not found, etc.)
|
|
163
|
+
|
|
164
|
+
Example:
|
|
165
|
+
$ vat claude marketplace validate . # Validate current directory
|
|
166
|
+
`);
|
|
167
|
+
return command;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/commands/claude/marketplace/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../../src/commands/claude/org/skills.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../../src/commands/claude/org/skills.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoRpC,wBAAgB,sBAAsB,IAAI,OAAO,CA6JhD"}
|