agent-skills-cli 1.0.8 → 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/README.md +44 -19
- package/dist/adapters/adapter.d.ts +51 -0
- package/dist/adapters/adapter.d.ts.map +1 -0
- package/dist/adapters/adapter.js +51 -0
- package/dist/adapters/adapter.js.map +1 -0
- package/dist/adapters/claude.d.ts +16 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +30 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/copilot.d.ts +16 -0
- package/dist/adapters/copilot.d.ts.map +1 -0
- package/dist/adapters/copilot.js +32 -0
- package/dist/adapters/copilot.js.map +1 -0
- package/dist/adapters/cursor.d.ts +17 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +34 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/index.d.ts +11 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +10 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/universal.d.ts +12 -0
- package/dist/adapters/universal.d.ts.map +1 -0
- package/dist/adapters/universal.js +16 -0
- package/dist/adapters/universal.js.map +1 -0
- package/dist/cli/agents.d.ts +21 -0
- package/dist/cli/agents.d.ts.map +1 -0
- package/dist/cli/agents.js +317 -0
- package/dist/cli/agents.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +11 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +168 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/blueprint.d.ts +11 -0
- package/dist/cli/commands/blueprint.d.ts.map +1 -0
- package/dist/cli/commands/blueprint.js +210 -0
- package/dist/cli/commands/blueprint.js.map +1 -0
- package/dist/cli/commands/bootstrap.d.ts +11 -0
- package/dist/cli/commands/bootstrap.d.ts.map +1 -0
- package/dist/cli/commands/bootstrap.js +267 -0
- package/dist/cli/commands/bootstrap.js.map +1 -0
- package/dist/cli/commands/capture.d.ts +11 -0
- package/dist/cli/commands/capture.d.ts.map +1 -0
- package/dist/cli/commands/capture.js +109 -0
- package/dist/cli/commands/capture.js.map +1 -0
- package/dist/cli/commands/ci.d.ts +11 -0
- package/dist/cli/commands/ci.d.ts.map +1 -0
- package/dist/cli/commands/ci.js +144 -0
- package/dist/cli/commands/ci.js.map +1 -0
- package/dist/cli/commands/collab.d.ts +11 -0
- package/dist/cli/commands/collab.d.ts.map +1 -0
- package/dist/cli/commands/collab.js +196 -0
- package/dist/cli/commands/collab.js.map +1 -0
- package/dist/cli/commands/convert.d.ts +11 -0
- package/dist/cli/commands/convert.d.ts.map +1 -0
- package/dist/cli/commands/convert.js +170 -0
- package/dist/cli/commands/convert.js.map +1 -0
- package/dist/cli/commands/craft.d.ts +18 -0
- package/dist/cli/commands/craft.d.ts.map +1 -0
- package/dist/cli/commands/craft.js +205 -0
- package/dist/cli/commands/craft.js.map +1 -0
- package/dist/cli/commands/export.d.ts +9 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +111 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/forge.d.ts +11 -0
- package/dist/cli/commands/forge.d.ts.map +1 -0
- package/dist/cli/commands/forge.js +152 -0
- package/dist/cli/commands/forge.js.map +1 -0
- package/dist/cli/commands/grid.d.ts +11 -0
- package/dist/cli/commands/grid.d.ts.map +1 -0
- package/dist/cli/commands/grid.js +217 -0
- package/dist/cli/commands/grid.js.map +1 -0
- package/dist/cli/commands/insight.d.ts +7 -0
- package/dist/cli/commands/insight.d.ts.map +1 -0
- package/dist/cli/commands/insight.js +71 -0
- package/dist/cli/commands/insight.js.map +1 -0
- package/dist/cli/commands/install.d.ts +6 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +359 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/interactive.d.ts +7 -0
- package/dist/cli/commands/interactive.d.ts.map +1 -0
- package/dist/cli/commands/interactive.js +535 -0
- package/dist/cli/commands/interactive.js.map +1 -0
- package/dist/cli/commands/list.d.ts +6 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +77 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/lockspec.d.ts +11 -0
- package/dist/cli/commands/lockspec.d.ts.map +1 -0
- package/dist/cli/commands/lockspec.js +179 -0
- package/dist/cli/commands/lockspec.js.map +1 -0
- package/dist/cli/commands/marketplace.d.ts +7 -0
- package/dist/cli/commands/marketplace.d.ts.map +1 -0
- package/dist/cli/commands/marketplace.js +417 -0
- package/dist/cli/commands/marketplace.js.map +1 -0
- package/dist/cli/commands/method.d.ts +7 -0
- package/dist/cli/commands/method.d.ts.map +1 -0
- package/dist/cli/commands/method.js +140 -0
- package/dist/cli/commands/method.js.map +1 -0
- package/dist/cli/commands/mine.d.ts +11 -0
- package/dist/cli/commands/mine.d.ts.map +1 -0
- package/dist/cli/commands/mine.js +254 -0
- package/dist/cli/commands/mine.js.map +1 -0
- package/dist/cli/commands/recall.d.ts +11 -0
- package/dist/cli/commands/recall.d.ts.map +1 -0
- package/dist/cli/commands/recall.js +201 -0
- package/dist/cli/commands/recall.js.map +1 -0
- package/dist/cli/commands/rule.d.ts +11 -0
- package/dist/cli/commands/rule.d.ts.map +1 -0
- package/dist/cli/commands/rule.js +230 -0
- package/dist/cli/commands/rule.js.map +1 -0
- package/dist/cli/commands/score.d.ts +10 -0
- package/dist/cli/commands/score.d.ts.map +1 -0
- package/dist/cli/commands/score.js +91 -0
- package/dist/cli/commands/score.js.map +1 -0
- package/dist/cli/commands/search.d.ts +6 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +173 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/show.d.ts +6 -0
- package/dist/cli/commands/show.d.ts.map +1 -0
- package/dist/cli/commands/show.js +158 -0
- package/dist/cli/commands/show.js.map +1 -0
- package/dist/cli/commands/submit-repo.d.ts +11 -0
- package/dist/cli/commands/submit-repo.d.ts.map +1 -0
- package/dist/cli/commands/submit-repo.js +133 -0
- package/dist/cli/commands/submit-repo.js.map +1 -0
- package/dist/cli/commands/submit.d.ts +15 -0
- package/dist/cli/commands/submit.d.ts.map +1 -0
- package/dist/cli/commands/submit.js +161 -0
- package/dist/cli/commands/submit.js.map +1 -0
- package/dist/cli/commands/suggest.d.ts +11 -0
- package/dist/cli/commands/suggest.d.ts.map +1 -0
- package/dist/cli/commands/suggest.js +164 -0
- package/dist/cli/commands/suggest.js.map +1 -0
- package/dist/cli/commands/track.d.ts +11 -0
- package/dist/cli/commands/track.d.ts.map +1 -0
- package/dist/cli/commands/track.js +199 -0
- package/dist/cli/commands/track.js.map +1 -0
- package/dist/cli/commands/trigger.d.ts +11 -0
- package/dist/cli/commands/trigger.d.ts.map +1 -0
- package/dist/cli/commands/trigger.js +157 -0
- package/dist/cli/commands/trigger.js.map +1 -0
- package/dist/cli/commands/utils-commands.d.ts +9 -0
- package/dist/cli/commands/utils-commands.d.ts.map +1 -0
- package/dist/cli/commands/utils-commands.js +389 -0
- package/dist/cli/commands/utils-commands.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +6 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +40 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +88 -2743
- package/dist/cli/index.js.map +1 -1
- package/dist/core/audit.d.ts +24 -0
- package/dist/core/audit.d.ts.map +1 -0
- package/dist/core/audit.js +195 -0
- package/dist/core/audit.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/quality.d.ts +48 -0
- package/dist/core/quality.d.ts.map +1 -0
- package/dist/core/quality.js +241 -0
- package/dist/core/quality.js.map +1 -0
- package/dist/core/scanner-rules.d.ts +58 -0
- package/dist/core/scanner-rules.d.ts.map +1 -0
- package/dist/core/scanner-rules.js +335 -0
- package/dist/core/scanner-rules.js.map +1 -0
- package/dist/core/suggest.d.ts +51 -0
- package/dist/core/suggest.d.ts.map +1 -0
- package/dist/core/suggest.js +241 -0
- package/dist/core/suggest.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { discoverSkills, loadSkill, listSkillResources, generateSkillsPromptXML, generateFullSkillsContext, } from '../../core/index.js';
|
|
3
|
+
import { assessQuality, formatScoreBar, getScoreColor } from '../../core/quality.js';
|
|
4
|
+
export function registerShowCommand(program) {
|
|
5
|
+
// Show command
|
|
6
|
+
program
|
|
7
|
+
.command('show <name>')
|
|
8
|
+
.description('Show detailed information about a skill')
|
|
9
|
+
.action(async (name) => {
|
|
10
|
+
try {
|
|
11
|
+
const skills = await discoverSkills();
|
|
12
|
+
const skillRef = skills.find(s => s.name === name);
|
|
13
|
+
if (!skillRef) {
|
|
14
|
+
console.error(chalk.red(`Skill not found: ${name}`));
|
|
15
|
+
console.log(chalk.gray('Available skills:'), skills.map(s => s.name).join(', ') || 'none');
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
const skill = await loadSkill(skillRef.path);
|
|
19
|
+
if (!skill) {
|
|
20
|
+
console.error(chalk.red(`Could not load skill: ${name}`));
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
console.log(chalk.bold(`\n${skill.metadata.name}`));
|
|
24
|
+
console.log('─'.repeat(40));
|
|
25
|
+
console.log(chalk.cyan('Description:'), skill.metadata.description);
|
|
26
|
+
console.log(chalk.cyan('Path:'), skill.path);
|
|
27
|
+
if (skill.metadata.license) {
|
|
28
|
+
console.log(chalk.cyan('License:'), skill.metadata.license);
|
|
29
|
+
}
|
|
30
|
+
if (skill.metadata.compatibility) {
|
|
31
|
+
console.log(chalk.cyan('Compatibility:'), skill.metadata.compatibility);
|
|
32
|
+
}
|
|
33
|
+
// List resources
|
|
34
|
+
const resources = await listSkillResources(skill.path);
|
|
35
|
+
if (resources.scripts.length > 0) {
|
|
36
|
+
console.log(chalk.cyan('\nScripts:'));
|
|
37
|
+
resources.scripts.forEach(s => console.log(chalk.gray(` - ${s}`)));
|
|
38
|
+
}
|
|
39
|
+
if (resources.references.length > 0) {
|
|
40
|
+
console.log(chalk.cyan('\nReferences:'));
|
|
41
|
+
resources.references.forEach(r => console.log(chalk.gray(` - ${r}`)));
|
|
42
|
+
}
|
|
43
|
+
if (resources.assets.length > 0) {
|
|
44
|
+
console.log(chalk.cyan('\nAssets:'));
|
|
45
|
+
resources.assets.forEach(a => console.log(chalk.gray(` - ${a}`)));
|
|
46
|
+
}
|
|
47
|
+
// Body preview
|
|
48
|
+
const bodyLines = skill.body.split('\n').slice(0, 10);
|
|
49
|
+
console.log(chalk.cyan('\nInstructions (preview):'));
|
|
50
|
+
console.log(chalk.gray(bodyLines.join('\n')));
|
|
51
|
+
if (skill.body.split('\n').length > 10) {
|
|
52
|
+
console.log(chalk.gray('...'));
|
|
53
|
+
}
|
|
54
|
+
// Quality score badge
|
|
55
|
+
try {
|
|
56
|
+
const quality = await assessQuality(skill.path);
|
|
57
|
+
const qColor = getScoreColor(quality.overall);
|
|
58
|
+
console.log(chalk.cyan('\nQuality:'), chalk[qColor](`${quality.grade} (${quality.overall}/100) ${formatScoreBar(quality.overall, 12)}`));
|
|
59
|
+
}
|
|
60
|
+
catch { /* skip if scoring fails */ }
|
|
61
|
+
console.log('');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.error(chalk.red('Error showing skill:'), error);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
// Prompt command - generate system prompt XML
|
|
69
|
+
program
|
|
70
|
+
.command('prompt')
|
|
71
|
+
.description('Generate system prompt XML for discovered skills')
|
|
72
|
+
.option('-f, --full', 'Include full skill system instructions')
|
|
73
|
+
.action(async (options) => {
|
|
74
|
+
try {
|
|
75
|
+
const skills = await discoverSkills();
|
|
76
|
+
if (skills.length === 0) {
|
|
77
|
+
console.log(chalk.yellow('No skills found.'));
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (options.full) {
|
|
81
|
+
const context = generateFullSkillsContext(skills);
|
|
82
|
+
console.log(context);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
const { xml, skillCount, estimatedTokens } = generateSkillsPromptXML(skills);
|
|
86
|
+
console.log(xml);
|
|
87
|
+
console.log(chalk.gray(`\n# ${skillCount} skills, ~${estimatedTokens} tokens`));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error(chalk.red('Error generating prompt:'), error);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
// Init command - create a new skill
|
|
96
|
+
program
|
|
97
|
+
.command('init <name>')
|
|
98
|
+
.description('Create a new skill from template')
|
|
99
|
+
.option('-d, --directory <dir>', 'Directory to create skill in', './skills')
|
|
100
|
+
.action(async (name, options) => {
|
|
101
|
+
try {
|
|
102
|
+
const { mkdir, writeFile } = await import('fs/promises');
|
|
103
|
+
const { join } = await import('path');
|
|
104
|
+
const skillDir = join(options.directory, name);
|
|
105
|
+
// Create directories
|
|
106
|
+
await mkdir(join(skillDir, 'scripts'), { recursive: true });
|
|
107
|
+
await mkdir(join(skillDir, 'references'), { recursive: true });
|
|
108
|
+
await mkdir(join(skillDir, 'assets'), { recursive: true });
|
|
109
|
+
// Create SKILL.md
|
|
110
|
+
const skillMd = `---
|
|
111
|
+
name: ${name}
|
|
112
|
+
description: Brief description of what this skill does and when to use it.
|
|
113
|
+
license: MIT
|
|
114
|
+
metadata:
|
|
115
|
+
author: your-name
|
|
116
|
+
version: "1.0"
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
# ${name.split('-').map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')}
|
|
120
|
+
|
|
121
|
+
## When to use this skill
|
|
122
|
+
|
|
123
|
+
Use this skill when the user needs to...
|
|
124
|
+
|
|
125
|
+
## Instructions
|
|
126
|
+
|
|
127
|
+
1. First step
|
|
128
|
+
2. Second step
|
|
129
|
+
3. Third step
|
|
130
|
+
|
|
131
|
+
## Examples
|
|
132
|
+
|
|
133
|
+
### Example 1
|
|
134
|
+
|
|
135
|
+
\`\`\`
|
|
136
|
+
Example input or command
|
|
137
|
+
\`\`\`
|
|
138
|
+
|
|
139
|
+
## Best practices
|
|
140
|
+
|
|
141
|
+
- Best practice 1
|
|
142
|
+
- Best practice 2
|
|
143
|
+
`;
|
|
144
|
+
await writeFile(join(skillDir, 'SKILL.md'), skillMd);
|
|
145
|
+
console.log(chalk.green(`✓ Created skill: ${name}`));
|
|
146
|
+
console.log(chalk.gray(` Path: ${skillDir}`));
|
|
147
|
+
console.log(chalk.gray('\nNext steps:'));
|
|
148
|
+
console.log(chalk.gray(' 1. Edit SKILL.md with your instructions'));
|
|
149
|
+
console.log(chalk.gray(' 2. Add scripts to scripts/'));
|
|
150
|
+
console.log(chalk.gray(' 3. Run: skills validate ' + skillDir));
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
console.error(chalk.red('Error creating skill:'), error);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/cli/commands/show.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Submit-Repo Command
|
|
3
|
+
* Submit a GitHub repo link for marketplace indexing.
|
|
4
|
+
* We extract everything from the repo — user only provides the link.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
/**
|
|
8
|
+
* Register the submit-repo command
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerSubmitRepoCommand(program: Command): void;
|
|
11
|
+
//# sourceMappingURL=submit-repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-repo.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/submit-repo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAYhE"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Submit-Repo Command
|
|
3
|
+
* Submit a GitHub repo link for marketplace indexing.
|
|
4
|
+
* We extract everything from the repo — user only provides the link.
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
/**
|
|
9
|
+
* Register the submit-repo command
|
|
10
|
+
*/
|
|
11
|
+
export function registerSubmitRepoCommand(program) {
|
|
12
|
+
program
|
|
13
|
+
.command('submit-repo <repo>')
|
|
14
|
+
.description('Submit a GitHub repo to be indexed in the marketplace')
|
|
15
|
+
.action(async (repo) => {
|
|
16
|
+
try {
|
|
17
|
+
await submitRepoCommand(repo);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
console.error(chalk.red('Error:'), err.message);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
// API endpoint
|
|
26
|
+
const SUBMIT_REPO_API = 'https://www.agentskills.in/api/repos/submit';
|
|
27
|
+
/**
|
|
28
|
+
* Run the submit-repo command
|
|
29
|
+
*/
|
|
30
|
+
async function submitRepoCommand(repo) {
|
|
31
|
+
// Parse owner/repo from any format
|
|
32
|
+
const parts = repo
|
|
33
|
+
.replace(/https?:\/\/(www\.)?github\.com\//, '')
|
|
34
|
+
.replace(/\.git$/, '')
|
|
35
|
+
.replace(/\/$/, '')
|
|
36
|
+
.split('/');
|
|
37
|
+
if (parts.length !== 2 || !parts[0] || !parts[1]) {
|
|
38
|
+
console.error(chalk.red('Invalid repo. Use: owner/repo or a GitHub URL'));
|
|
39
|
+
console.log(chalk.dim(' Example: skills submit-repo facebook/react'));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
const [owner, repoName] = parts;
|
|
43
|
+
console.log('');
|
|
44
|
+
console.log(chalk.bold('📤 Submit Skills Repository'));
|
|
45
|
+
console.log('');
|
|
46
|
+
// Step 1: Fetch repo info from GitHub
|
|
47
|
+
const spinner = ora('Fetching repo info from GitHub...').start();
|
|
48
|
+
let repoData;
|
|
49
|
+
try {
|
|
50
|
+
const res = await fetch(`https://api.github.com/repos/${owner}/${repoName}`, {
|
|
51
|
+
headers: { 'Accept': 'application/vnd.github.v3+json' },
|
|
52
|
+
});
|
|
53
|
+
if (!res.ok) {
|
|
54
|
+
spinner.fail(res.status === 404 ? 'Repository not found' : `GitHub API error: ${res.status}`);
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
repoData = await res.json();
|
|
58
|
+
spinner.succeed(`Found ${chalk.cyan(repoData.full_name)}`);
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
spinner.fail('Could not reach GitHub API');
|
|
62
|
+
console.log(chalk.dim(` ${err.message}`));
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
// Step 2: Scan for SKILL.md files
|
|
66
|
+
const scanSpinner = ora('Scanning for skills...').start();
|
|
67
|
+
let skillPaths = [];
|
|
68
|
+
try {
|
|
69
|
+
const treeRes = await fetch(`https://api.github.com/repos/${owner}/${repoName}/git/trees/${repoData.default_branch}?recursive=1`, { headers: { 'Accept': 'application/vnd.github.v3+json' } });
|
|
70
|
+
if (treeRes.ok) {
|
|
71
|
+
const treeData = await treeRes.json();
|
|
72
|
+
skillPaths = (treeData.tree || [])
|
|
73
|
+
.filter((f) => f.type === 'blob' && f.path.endsWith('SKILL.md'))
|
|
74
|
+
.map((f) => f.path);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch { /* non-critical */ }
|
|
78
|
+
if (skillPaths.length === 0) {
|
|
79
|
+
scanSpinner.warn('No SKILL.md files found — repo will still be submitted for review');
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
scanSpinner.succeed(`Found ${chalk.bold(skillPaths.length)} skill(s)`);
|
|
83
|
+
for (const p of skillPaths.slice(0, 5)) {
|
|
84
|
+
console.log(chalk.dim(` ${p}`));
|
|
85
|
+
}
|
|
86
|
+
if (skillPaths.length > 5) {
|
|
87
|
+
console.log(chalk.dim(` ... and ${skillPaths.length - 5} more`));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Step 3: Submit
|
|
91
|
+
const submitSpinner = ora('Submitting for indexing...').start();
|
|
92
|
+
try {
|
|
93
|
+
const response = await fetch(SUBMIT_REPO_API, {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
headers: { 'Content-Type': 'application/json' },
|
|
96
|
+
body: JSON.stringify({
|
|
97
|
+
full_name: repoData.full_name,
|
|
98
|
+
html_url: repoData.html_url,
|
|
99
|
+
description: repoData.description || '',
|
|
100
|
+
stars: repoData.stargazers_count || 0,
|
|
101
|
+
language: repoData.language || '',
|
|
102
|
+
license: repoData.license?.spdx_id || '',
|
|
103
|
+
default_branch: repoData.default_branch,
|
|
104
|
+
skills_count: skillPaths.length,
|
|
105
|
+
skill_paths: skillPaths,
|
|
106
|
+
}),
|
|
107
|
+
});
|
|
108
|
+
if (response.ok) {
|
|
109
|
+
submitSpinner.succeed('Submitted!');
|
|
110
|
+
console.log('');
|
|
111
|
+
console.log(chalk.green('✨ Your repo has been submitted for indexing!'));
|
|
112
|
+
console.log(chalk.dim(' Skills will appear in the marketplace once processed.'));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const data = await response.json().catch(() => ({}));
|
|
116
|
+
if (response.status === 409) {
|
|
117
|
+
submitSpinner.warn('Already submitted');
|
|
118
|
+
console.log(chalk.dim(` Status: ${data.status || 'pending'}`));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
submitSpinner.fail(data.error || `Failed (${response.status})`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
submitSpinner.fail('Could not reach API');
|
|
127
|
+
console.log(chalk.dim(` ${err.message}`));
|
|
128
|
+
console.log(chalk.dim(' Submit via GitHub issue instead:'));
|
|
129
|
+
console.log(chalk.dim(` ${chalk.white('https://github.com/Karanjot786/agent-skills-cli/issues/new')}`));
|
|
130
|
+
}
|
|
131
|
+
console.log('');
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=submit-repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-repo.js","sourceRoot":"","sources":["../../../src/cli/commands/submit-repo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Submit Command
|
|
3
|
+
* Submit skills to the marketplace
|
|
4
|
+
* (SkillKit calls this "publish submit" — we call it "submit")
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
export interface SubmitOptions {
|
|
8
|
+
dryRun?: boolean;
|
|
9
|
+
name?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Register the submit command with commander
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerSubmitCommand(program: Command): void;
|
|
15
|
+
//# sourceMappingURL=submit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/submit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAc5D"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Submit Command
|
|
3
|
+
* Submit skills to the marketplace
|
|
4
|
+
* (SkillKit calls this "publish submit" — we call it "submit")
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
import { readFile, stat } from 'fs/promises';
|
|
9
|
+
import { existsSync } from 'fs';
|
|
10
|
+
import { resolve, join, basename } from 'path';
|
|
11
|
+
import { loadSkill, validateMetadata, validateBody } from '../../core/index.js';
|
|
12
|
+
import { assessQuality, formatScoreBar, getScoreColor } from '../../core/quality.js';
|
|
13
|
+
// Supabase API for submission
|
|
14
|
+
const SUBMIT_API = 'https://www.agentskills.in/api/skills/submit';
|
|
15
|
+
/**
|
|
16
|
+
* Register the submit command with commander
|
|
17
|
+
*/
|
|
18
|
+
export function registerSubmitCommand(program) {
|
|
19
|
+
program
|
|
20
|
+
.command('submit [path]')
|
|
21
|
+
.description('Submit a skill to the Agent Skills marketplace')
|
|
22
|
+
.option('-n, --dry-run', 'Preview what would be submitted without uploading')
|
|
23
|
+
.option('--name <name>', 'Custom skill name (overrides SKILL.md name)')
|
|
24
|
+
.action(async (path, options) => {
|
|
25
|
+
try {
|
|
26
|
+
await submitCommand(path || '.', options);
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
console.error(chalk.red('Error:'), err.message);
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Run the submit command
|
|
36
|
+
*/
|
|
37
|
+
async function submitCommand(targetPath, options) {
|
|
38
|
+
const resolvedPath = resolve(targetPath);
|
|
39
|
+
// Step 1: Find and validate SKILL.md
|
|
40
|
+
const spinner = ora('Validating skill...').start();
|
|
41
|
+
let skillMdPath;
|
|
42
|
+
const pathStat = await stat(resolvedPath);
|
|
43
|
+
if (pathStat.isDirectory()) {
|
|
44
|
+
skillMdPath = join(resolvedPath, 'SKILL.md');
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
skillMdPath = resolvedPath;
|
|
48
|
+
}
|
|
49
|
+
if (!existsSync(skillMdPath)) {
|
|
50
|
+
spinner.fail('No SKILL.md found');
|
|
51
|
+
console.log(chalk.dim(` Looked in: ${skillMdPath}`));
|
|
52
|
+
console.log(chalk.dim(` Create one with: ${chalk.white('skills craft <name>')}`));
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
// Load and validate
|
|
56
|
+
const skillContent = await readFile(skillMdPath, 'utf-8');
|
|
57
|
+
let skill;
|
|
58
|
+
try {
|
|
59
|
+
skill = await loadSkill(pathStat.isDirectory() ? resolvedPath : resolve(resolvedPath, '..'));
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
spinner.fail(`Failed to load skill: ${err.message}`);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
if (!skill) {
|
|
66
|
+
spinner.fail('Could not parse skill from SKILL.md');
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
// Validate metadata
|
|
70
|
+
const metaResult = validateMetadata(skill.metadata);
|
|
71
|
+
if (!metaResult.valid) {
|
|
72
|
+
spinner.fail('Skill validation failed');
|
|
73
|
+
console.log('');
|
|
74
|
+
for (const error of metaResult.errors) {
|
|
75
|
+
console.log(` ${chalk.red('✖')} ${error.message}`);
|
|
76
|
+
}
|
|
77
|
+
console.log('');
|
|
78
|
+
console.log(chalk.dim('Fix validation errors before submitting.'));
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
// Validate body
|
|
82
|
+
const bodyResult = validateBody(skill.body);
|
|
83
|
+
if (!bodyResult.valid) {
|
|
84
|
+
spinner.warn('Skill has body warnings');
|
|
85
|
+
for (const warning of bodyResult.warnings || []) {
|
|
86
|
+
console.log(` ${chalk.yellow('⚠')} ${warning.message}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
spinner.succeed('Skill validated');
|
|
90
|
+
console.log('');
|
|
91
|
+
// Step 1.5: Quality score
|
|
92
|
+
const quality = await assessQuality(resolvedPath);
|
|
93
|
+
const qColor = getScoreColor(quality.overall);
|
|
94
|
+
console.log(` ${chalk.dim('Quality:')} ${chalk[qColor](formatScoreBar(quality.overall, 15))} ${chalk.bold[qColor](quality.grade)}`);
|
|
95
|
+
if (quality.overall < 50) {
|
|
96
|
+
console.log(chalk.yellow(` ⚠ Low quality score (${quality.overall}/100). Consider improving before submitting.`));
|
|
97
|
+
console.log(chalk.dim(` Run: skills score ${targetPath} --verbose`));
|
|
98
|
+
}
|
|
99
|
+
console.log('');
|
|
100
|
+
// Step 2: Extract metadata
|
|
101
|
+
const skillName = options.name || skill.metadata?.name || basename(resolvedPath);
|
|
102
|
+
const description = skill.metadata?.description || '';
|
|
103
|
+
const tags = skill.metadata?.metadata?.tags || [];
|
|
104
|
+
const version = skill.metadata?.metadata?.version || '1.0.0';
|
|
105
|
+
// Display submission preview
|
|
106
|
+
console.log(chalk.bold('📦 Submission Preview:'));
|
|
107
|
+
console.log(` ${chalk.dim('Name:')} ${chalk.cyan(skillName)}`);
|
|
108
|
+
console.log(` ${chalk.dim('Description:')} ${description || chalk.yellow('(none)')}`);
|
|
109
|
+
console.log(` ${chalk.dim('Version:')} ${version}`);
|
|
110
|
+
console.log(` ${chalk.dim('Tags:')} ${tags.length > 0 ? tags.join(', ') : chalk.yellow('(none)')}`);
|
|
111
|
+
console.log(` ${chalk.dim('Content:')} ${skillContent.split('\n').length} lines`);
|
|
112
|
+
console.log('');
|
|
113
|
+
if (options.dryRun) {
|
|
114
|
+
console.log(chalk.yellow('🏃 Dry run — skill was NOT submitted'));
|
|
115
|
+
console.log(chalk.dim(' Remove --dry-run to submit for real'));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Step 3: Submit to marketplace
|
|
119
|
+
const submitSpinner = ora('Submitting to marketplace...').start();
|
|
120
|
+
try {
|
|
121
|
+
const response = await fetch(SUBMIT_API, {
|
|
122
|
+
method: 'POST',
|
|
123
|
+
headers: { 'Content-Type': 'application/json' },
|
|
124
|
+
body: JSON.stringify({
|
|
125
|
+
name: skillName,
|
|
126
|
+
description,
|
|
127
|
+
tags,
|
|
128
|
+
version,
|
|
129
|
+
content: skillContent,
|
|
130
|
+
source: resolvedPath,
|
|
131
|
+
}),
|
|
132
|
+
});
|
|
133
|
+
if (response.ok) {
|
|
134
|
+
const data = await response.json();
|
|
135
|
+
submitSpinner.succeed('Submitted successfully!');
|
|
136
|
+
console.log('');
|
|
137
|
+
console.log(chalk.green('✨ Your skill has been submitted for review!'));
|
|
138
|
+
if (data?.url) {
|
|
139
|
+
console.log(chalk.dim(` View at: ${chalk.white(data.url)}`));
|
|
140
|
+
}
|
|
141
|
+
console.log(chalk.dim(` Status: Pending review`));
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
const errorText = await response.text();
|
|
145
|
+
submitSpinner.fail('Submission failed');
|
|
146
|
+
console.log(chalk.red(` Server responded: ${response.status} ${errorText}`));
|
|
147
|
+
console.log('');
|
|
148
|
+
console.log(chalk.dim('If this persists, submit via GitHub:'));
|
|
149
|
+
console.log(chalk.dim(' https://github.com/Karanjot786/agent-skills-cli/issues/new'));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
submitSpinner.fail('Could not reach marketplace API');
|
|
154
|
+
console.log(chalk.dim(` ${err.message}`));
|
|
155
|
+
console.log('');
|
|
156
|
+
console.log(chalk.dim('Alternative: Submit via GitHub issue:'));
|
|
157
|
+
console.log(chalk.dim(` ${chalk.white('https://github.com/Karanjot786/agent-skills-cli/issues/new')}`));
|
|
158
|
+
}
|
|
159
|
+
console.log('');
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=submit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/cli/commands/submit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Suggest Command
|
|
3
|
+
* Project-aware skill recommendations based on tech stack analysis
|
|
4
|
+
* (SkillKit calls this "recommend" — we call it "suggest")
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
/**
|
|
8
|
+
* Register the suggest command with commander
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerSuggestCommand(program: Command): void;
|
|
11
|
+
//# sourceMappingURL=suggest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/suggest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4B7D"}
|