@skillsmith/cli 0.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/dist/.tsbuildinfo +1 -0
- package/dist/src/commands/author.d.ts +33 -0
- package/dist/src/commands/author.d.ts.map +1 -0
- package/dist/src/commands/author.js +337 -0
- package/dist/src/commands/author.js.map +1 -0
- package/dist/src/commands/index.d.ts +9 -0
- package/dist/src/commands/index.d.ts.map +1 -0
- package/dist/src/commands/index.js +12 -0
- package/dist/src/commands/index.js.map +1 -0
- package/dist/src/commands/manage.d.ts +37 -0
- package/dist/src/commands/manage.d.ts.map +1 -0
- package/dist/src/commands/manage.js +308 -0
- package/dist/src/commands/manage.js.map +1 -0
- package/dist/src/commands/search.d.ts +12 -0
- package/dist/src/commands/search.d.ts.map +1 -0
- package/dist/src/commands/search.js +316 -0
- package/dist/src/commands/search.js.map +1 -0
- package/dist/src/config.d.ts +19 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +21 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/import.d.ts +29 -0
- package/dist/src/import.d.ts.map +1 -0
- package/dist/src/import.js +255 -0
- package/dist/src/import.js.map +1 -0
- package/dist/src/index.d.ts +16 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +65 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/templates/index.d.ts +8 -0
- package/dist/src/templates/index.d.ts.map +1 -0
- package/dist/src/templates/index.js +8 -0
- package/dist/src/templates/index.js.map +1 -0
- package/dist/src/templates/readme.md.template.d.ts +8 -0
- package/dist/src/templates/readme.md.template.d.ts.map +1 -0
- package/dist/src/templates/readme.md.template.js +86 -0
- package/dist/src/templates/readme.md.template.js.map +1 -0
- package/dist/src/templates/skill.md.template.d.ts +8 -0
- package/dist/src/templates/skill.md.template.d.ts.map +1 -0
- package/dist/src/templates/skill.md.template.js +99 -0
- package/dist/src/templates/skill.md.template.js.map +1 -0
- package/dist/src/utils/license.d.ts +82 -0
- package/dist/src/utils/license.d.ts.map +1 -0
- package/dist/src/utils/license.js +282 -0
- package/dist/src/utils/license.js.map +1 -0
- package/dist/src/utils/license.test.d.ts +7 -0
- package/dist/src/utils/license.test.d.ts.map +1 -0
- package/dist/src/utils/license.test.js +303 -0
- package/dist/src/utils/license.test.js.map +1 -0
- package/dist/src/utils/sanitize.d.ts +30 -0
- package/dist/src/utils/sanitize.d.ts.map +1 -0
- package/dist/src/utils/sanitize.js +45 -0
- package/dist/src/utils/sanitize.js.map +1 -0
- package/dist/tests/author.test.d.ts +5 -0
- package/dist/tests/author.test.d.ts.map +1 -0
- package/dist/tests/author.test.js +149 -0
- package/dist/tests/author.test.js.map +1 -0
- package/dist/tests/e2e/author.e2e.test.d.ts +9 -0
- package/dist/tests/e2e/author.e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/author.e2e.test.js +346 -0
- package/dist/tests/e2e/author.e2e.test.js.map +1 -0
- package/dist/tests/e2e/import.e2e.test.d.ts +10 -0
- package/dist/tests/e2e/import.e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/import.e2e.test.js +213 -0
- package/dist/tests/e2e/import.e2e.test.js.map +1 -0
- package/dist/tests/e2e/manage.e2e.test.d.ts +9 -0
- package/dist/tests/e2e/manage.e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/manage.e2e.test.js +277 -0
- package/dist/tests/e2e/manage.e2e.test.js.map +1 -0
- package/dist/tests/e2e/search.e2e.test.d.ts +10 -0
- package/dist/tests/e2e/search.e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/search.e2e.test.js +267 -0
- package/dist/tests/e2e/search.e2e.test.js.map +1 -0
- package/dist/tests/e2e/test-config.d.ts +39 -0
- package/dist/tests/e2e/test-config.d.ts.map +1 -0
- package/dist/tests/e2e/test-config.js +44 -0
- package/dist/tests/e2e/test-config.js.map +1 -0
- package/dist/tests/e2e/utils/baseline-collector.d.ts +107 -0
- package/dist/tests/e2e/utils/baseline-collector.d.ts.map +1 -0
- package/dist/tests/e2e/utils/baseline-collector.js +211 -0
- package/dist/tests/e2e/utils/baseline-collector.js.map +1 -0
- package/dist/tests/e2e/utils/hardcoded-detector.d.ts +46 -0
- package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +1 -0
- package/dist/tests/e2e/utils/hardcoded-detector.js +197 -0
- package/dist/tests/e2e/utils/hardcoded-detector.js.map +1 -0
- package/dist/tests/e2e/utils/index.d.ts +8 -0
- package/dist/tests/e2e/utils/index.d.ts.map +1 -0
- package/dist/tests/e2e/utils/index.js +8 -0
- package/dist/tests/e2e/utils/index.js.map +1 -0
- package/dist/tests/e2e/utils/linear-reporter.d.ts +60 -0
- package/dist/tests/e2e/utils/linear-reporter.d.ts.map +1 -0
- package/dist/tests/e2e/utils/linear-reporter.js +223 -0
- package/dist/tests/e2e/utils/linear-reporter.js.map +1 -0
- package/dist/tests/import.test.d.ts +5 -0
- package/dist/tests/import.test.d.ts.map +1 -0
- package/dist/tests/import.test.js +11 -0
- package/dist/tests/import.test.js.map +1 -0
- package/dist/tests/manage.test.d.ts +5 -0
- package/dist/tests/manage.test.d.ts.map +1 -0
- package/dist/tests/manage.test.js +135 -0
- package/dist/tests/manage.test.js.map +1 -0
- package/dist/tests/search.test.d.ts +5 -0
- package/dist/tests/search.test.d.ts.map +1 -0
- package/dist/tests/search.test.js +91 -0
- package/dist/tests/search.test.js.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +9 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Configuration
|
|
3
|
+
*
|
|
4
|
+
* Shared configuration constants for the Skillsmith CLI.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Default database path: ~/.skillsmith/skills.db
|
|
8
|
+
* This matches the seed script and MCP server defaults.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DEFAULT_DB_PATH: string;
|
|
11
|
+
/**
|
|
12
|
+
* Default skills installation directory: ~/.claude/skills
|
|
13
|
+
*/
|
|
14
|
+
export declare const DEFAULT_SKILLS_DIR: string;
|
|
15
|
+
/**
|
|
16
|
+
* Default manifest path: ~/.skillsmith/manifest.json
|
|
17
|
+
*/
|
|
18
|
+
export declare const DEFAULT_MANIFEST_PATH: string;
|
|
19
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;GAGG;AACH,eAAO,MAAM,eAAe,QAA8C,CAAA;AAE1E;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAuC,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,qBAAqB,QAAkD,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Configuration
|
|
3
|
+
*
|
|
4
|
+
* Shared configuration constants for the Skillsmith CLI.
|
|
5
|
+
*/
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
import { homedir } from 'os';
|
|
8
|
+
/**
|
|
9
|
+
* Default database path: ~/.skillsmith/skills.db
|
|
10
|
+
* This matches the seed script and MCP server defaults.
|
|
11
|
+
*/
|
|
12
|
+
export const DEFAULT_DB_PATH = join(homedir(), '.skillsmith', 'skills.db');
|
|
13
|
+
/**
|
|
14
|
+
* Default skills installation directory: ~/.claude/skills
|
|
15
|
+
*/
|
|
16
|
+
export const DEFAULT_SKILLS_DIR = join(homedir(), '.claude', 'skills');
|
|
17
|
+
/**
|
|
18
|
+
* Default manifest path: ~/.skillsmith/manifest.json
|
|
19
|
+
*/
|
|
20
|
+
export const DEFAULT_MANIFEST_PATH = join(homedir(), '.skillsmith', 'manifest.json');
|
|
21
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAE5B;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;AAE1E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,eAAe,CAAC,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SMI-580: GitHub Skill Import Script
|
|
4
|
+
*
|
|
5
|
+
* Discovers and imports Claude skills from GitHub:
|
|
6
|
+
* - Searches for repos with topic:claude-skill
|
|
7
|
+
* - Extracts metadata from SKILL.md files
|
|
8
|
+
* - Handles rate limiting with exponential backoff
|
|
9
|
+
* - Supports batch import of 1000+ skills
|
|
10
|
+
*/
|
|
11
|
+
interface ImportOptions {
|
|
12
|
+
token?: string;
|
|
13
|
+
topic?: string;
|
|
14
|
+
maxSkills?: number;
|
|
15
|
+
dbPath?: string;
|
|
16
|
+
verbose?: boolean;
|
|
17
|
+
}
|
|
18
|
+
interface ImportResult {
|
|
19
|
+
imported: number;
|
|
20
|
+
skipped: number;
|
|
21
|
+
errors: number;
|
|
22
|
+
duration: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Import skills from GitHub into the database
|
|
26
|
+
*/
|
|
27
|
+
export declare function importSkills(options?: ImportOptions): Promise<ImportResult>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/import.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AA0BH,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAsLD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAyFrF"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SMI-580: GitHub Skill Import Script
|
|
4
|
+
*
|
|
5
|
+
* Discovers and imports Claude skills from GitHub:
|
|
6
|
+
* - Searches for repos with topic:claude-skill
|
|
7
|
+
* - Extracts metadata from SKILL.md files
|
|
8
|
+
* - Handles rate limiting with exponential backoff
|
|
9
|
+
* - Supports batch import of 1000+ skills
|
|
10
|
+
*/
|
|
11
|
+
import { createDatabase, SkillRepository } from '@skillsmith/core';
|
|
12
|
+
import { DEFAULT_DB_PATH } from './config.js';
|
|
13
|
+
const DEFAULT_TOPIC = 'claude-skill';
|
|
14
|
+
const GITHUB_API = 'https://api.github.com';
|
|
15
|
+
const MAX_PER_PAGE = 100;
|
|
16
|
+
const RATE_LIMIT_DELAY = 60000; // 1 minute
|
|
17
|
+
/**
|
|
18
|
+
* Sleep for a specified duration
|
|
19
|
+
*/
|
|
20
|
+
function sleep(ms) {
|
|
21
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Calculate exponential backoff delay
|
|
25
|
+
*/
|
|
26
|
+
function getBackoffDelay(attempt, baseDelay = 1000) {
|
|
27
|
+
return Math.min(baseDelay * Math.pow(2, attempt), 30000);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Fetch from GitHub API with authentication and rate limiting
|
|
31
|
+
*/
|
|
32
|
+
async function fetchGitHub(url, token, retries = 3) {
|
|
33
|
+
const headers = {
|
|
34
|
+
Accept: 'application/vnd.github+json',
|
|
35
|
+
'X-GitHub-Api-Version': '2022-11-28',
|
|
36
|
+
};
|
|
37
|
+
if (token) {
|
|
38
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
39
|
+
}
|
|
40
|
+
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
41
|
+
try {
|
|
42
|
+
const response = await fetch(url, { headers });
|
|
43
|
+
// Handle rate limiting
|
|
44
|
+
if (response.status === 403) {
|
|
45
|
+
const resetTime = response.headers.get('X-RateLimit-Reset');
|
|
46
|
+
if (resetTime) {
|
|
47
|
+
const waitTime = Math.max(0, parseInt(resetTime) * 1000 - Date.now());
|
|
48
|
+
console.log(`Rate limited. Waiting ${Math.ceil(waitTime / 1000)}s...`);
|
|
49
|
+
await sleep(Math.min(waitTime, RATE_LIMIT_DELAY));
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`);
|
|
55
|
+
}
|
|
56
|
+
return (await response.json());
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (attempt < retries) {
|
|
60
|
+
const delay = getBackoffDelay(attempt);
|
|
61
|
+
console.log(`Request failed, retrying in ${delay}ms...`);
|
|
62
|
+
await sleep(delay);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
throw new Error('Max retries exceeded');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Fetch SKILL.md content from a repository
|
|
73
|
+
*/
|
|
74
|
+
async function fetchSkillMd(repo, token) {
|
|
75
|
+
const url = `${GITHUB_API}/repos/${repo.full_name}/contents/SKILL.md`;
|
|
76
|
+
try {
|
|
77
|
+
const response = await fetchGitHub(url, token);
|
|
78
|
+
if (response.encoding === 'base64') {
|
|
79
|
+
return Buffer.from(response.content, 'base64').toString('utf-8');
|
|
80
|
+
}
|
|
81
|
+
return response.content;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Parse SKILL.md content to extract metadata
|
|
89
|
+
*/
|
|
90
|
+
function parseSkillMd(content) {
|
|
91
|
+
const metadata = {};
|
|
92
|
+
// Extract name from first heading
|
|
93
|
+
const nameMatch = content.match(/^#\s+(.+)$/m);
|
|
94
|
+
if (nameMatch?.[1]) {
|
|
95
|
+
metadata.name = nameMatch[1].trim();
|
|
96
|
+
}
|
|
97
|
+
// Extract description from first paragraph after heading
|
|
98
|
+
const descMatch = content.match(/^#\s+.+\n+([^#\n].+)/m);
|
|
99
|
+
if (descMatch?.[1]) {
|
|
100
|
+
metadata.description = descMatch[1].trim();
|
|
101
|
+
}
|
|
102
|
+
// Extract tags from frontmatter or inline
|
|
103
|
+
const tagsMatch = content.match(/tags:\s*\[([^\]]+)\]/);
|
|
104
|
+
if (tagsMatch?.[1]) {
|
|
105
|
+
metadata.tags = tagsMatch[1].split(',').map((t) => t.trim().replace(/["']/g, ''));
|
|
106
|
+
}
|
|
107
|
+
// Extract author from frontmatter
|
|
108
|
+
const authorMatch = content.match(/author:\s*["']?([^"'\n]+)["']?/);
|
|
109
|
+
if (authorMatch?.[1]) {
|
|
110
|
+
metadata.author = authorMatch[1].trim();
|
|
111
|
+
}
|
|
112
|
+
return metadata;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Calculate quality score based on repo metrics
|
|
116
|
+
*/
|
|
117
|
+
function calculateQualityScore(repo, hasSkillMd) {
|
|
118
|
+
let score = 0;
|
|
119
|
+
// Stars contribute up to 0.3
|
|
120
|
+
score += Math.min(repo.stargazers_count / 100, 0.3);
|
|
121
|
+
// Has SKILL.md contributes 0.3
|
|
122
|
+
if (hasSkillMd)
|
|
123
|
+
score += 0.3;
|
|
124
|
+
// Has description contributes 0.1
|
|
125
|
+
if (repo.description)
|
|
126
|
+
score += 0.1;
|
|
127
|
+
// Has topics contributes 0.1
|
|
128
|
+
if (repo.topics.length > 1)
|
|
129
|
+
score += 0.1;
|
|
130
|
+
// Recent activity contributes 0.2
|
|
131
|
+
const daysSinceUpdate = (Date.now() - new Date(repo.updated_at).getTime()) / (1000 * 60 * 60 * 24);
|
|
132
|
+
if (daysSinceUpdate < 30)
|
|
133
|
+
score += 0.2;
|
|
134
|
+
else if (daysSinceUpdate < 90)
|
|
135
|
+
score += 0.1;
|
|
136
|
+
return Math.min(score, 1);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Search for Claude skill repositories on GitHub
|
|
140
|
+
*/
|
|
141
|
+
async function searchSkillRepos(topic, token, maxResults = 1000) {
|
|
142
|
+
const repos = [];
|
|
143
|
+
let page = 1;
|
|
144
|
+
while (repos.length < maxResults) {
|
|
145
|
+
const url = `${GITHUB_API}/search/repositories?q=topic:${topic}&sort=stars&order=desc&per_page=${MAX_PER_PAGE}&page=${page}`;
|
|
146
|
+
try {
|
|
147
|
+
const result = await fetchGitHub(url, token);
|
|
148
|
+
if (result.items.length === 0)
|
|
149
|
+
break;
|
|
150
|
+
repos.push(...result.items);
|
|
151
|
+
console.log(`Found ${repos.length}/${result.total_count} repositories...`);
|
|
152
|
+
if (repos.length >= result.total_count)
|
|
153
|
+
break;
|
|
154
|
+
page++;
|
|
155
|
+
// Rate limit protection
|
|
156
|
+
await sleep(1000);
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.error('Search error:', error);
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return repos.slice(0, maxResults);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Import skills from GitHub into the database
|
|
167
|
+
*/
|
|
168
|
+
export async function importSkills(options = {}) {
|
|
169
|
+
const { token = process.env['GITHUB_TOKEN'], topic = DEFAULT_TOPIC, maxSkills = 1000, dbPath = DEFAULT_DB_PATH, verbose = false, } = options;
|
|
170
|
+
const startTime = Date.now();
|
|
171
|
+
const result = {
|
|
172
|
+
imported: 0,
|
|
173
|
+
skipped: 0,
|
|
174
|
+
errors: 0,
|
|
175
|
+
duration: 0,
|
|
176
|
+
};
|
|
177
|
+
// Initialize database
|
|
178
|
+
const db = createDatabase(dbPath);
|
|
179
|
+
const skillRepo = new SkillRepository(db);
|
|
180
|
+
console.log(`Searching for repositories with topic: ${topic}...`);
|
|
181
|
+
try {
|
|
182
|
+
// Search for skill repositories
|
|
183
|
+
const repos = await searchSkillRepos(topic, token, maxSkills);
|
|
184
|
+
console.log(`\nProcessing ${repos.length} repositories...`);
|
|
185
|
+
// Prepare batch import
|
|
186
|
+
const skills = [];
|
|
187
|
+
for (const repo of repos) {
|
|
188
|
+
try {
|
|
189
|
+
// Check if already imported
|
|
190
|
+
if (skillRepo.findByRepoUrl(repo.html_url)) {
|
|
191
|
+
result.skipped++;
|
|
192
|
+
if (verbose)
|
|
193
|
+
console.log(`Skipped (exists): ${repo.full_name}`);
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
// Try to fetch SKILL.md
|
|
197
|
+
const skillMd = await fetchSkillMd(repo, token);
|
|
198
|
+
const skillMdMeta = skillMd ? parseSkillMd(skillMd) : {};
|
|
199
|
+
// Build skill data
|
|
200
|
+
const skill = {
|
|
201
|
+
name: skillMdMeta.name || repo.name,
|
|
202
|
+
description: skillMdMeta.description || repo.description || null,
|
|
203
|
+
author: skillMdMeta.author || repo.owner.login,
|
|
204
|
+
repoUrl: repo.html_url,
|
|
205
|
+
qualityScore: calculateQualityScore(repo, !!skillMd),
|
|
206
|
+
trustTier: skillMd ? 'community' : 'experimental',
|
|
207
|
+
tags: skillMdMeta.tags || repo.topics,
|
|
208
|
+
};
|
|
209
|
+
skills.push(skill);
|
|
210
|
+
if (verbose) {
|
|
211
|
+
console.log(`Prepared: ${skill.name} (${repo.full_name})`);
|
|
212
|
+
}
|
|
213
|
+
// Rate limit protection
|
|
214
|
+
await sleep(100);
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
result.errors++;
|
|
218
|
+
console.error(`Error processing ${repo.full_name}:`, error);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Batch insert all skills
|
|
222
|
+
if (skills.length > 0) {
|
|
223
|
+
console.log(`\nImporting ${skills.length} skills...`);
|
|
224
|
+
const imported = skillRepo.createBatch(skills);
|
|
225
|
+
result.imported = imported.length;
|
|
226
|
+
console.log(`Successfully imported ${result.imported} skills`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
db.close();
|
|
231
|
+
}
|
|
232
|
+
result.duration = Date.now() - startTime;
|
|
233
|
+
console.log(`\n--- Import Complete ---`);
|
|
234
|
+
console.log(`Imported: ${result.imported}`);
|
|
235
|
+
console.log(`Skipped: ${result.skipped}`);
|
|
236
|
+
console.log(`Errors: ${result.errors}`);
|
|
237
|
+
console.log(`Duration: ${(result.duration / 1000).toFixed(1)}s`);
|
|
238
|
+
return result;
|
|
239
|
+
}
|
|
240
|
+
// CLI entry point
|
|
241
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
242
|
+
const args = process.argv.slice(2);
|
|
243
|
+
const verbose = args.includes('--verbose') || args.includes('-v');
|
|
244
|
+
const maxSkills = parseInt(args.find((a) => a.startsWith('--max='))?.split('=')[1] || '1000');
|
|
245
|
+
const dbPath = args.find((a) => a.startsWith('--db='))?.split('=')[1] || DEFAULT_DB_PATH;
|
|
246
|
+
importSkills({ verbose, maxSkills, dbPath })
|
|
247
|
+
.then((result) => {
|
|
248
|
+
process.exit(result.errors > 0 ? 1 : 0);
|
|
249
|
+
})
|
|
250
|
+
.catch((error) => {
|
|
251
|
+
console.error('Import failed:', error);
|
|
252
|
+
process.exit(1);
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/import.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Skillsmith CLI - Claude Skill Discovery Tools
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* - import: Import skills from GitHub (SMI-580)
|
|
7
|
+
* - search: Search for skills with interactive mode (SMI-744)
|
|
8
|
+
* - list: List installed skills (SMI-745)
|
|
9
|
+
* - update: Update installed skills (SMI-745)
|
|
10
|
+
* - remove: Remove installed skills (SMI-745)
|
|
11
|
+
* - init: Initialize new skill project (SMI-746)
|
|
12
|
+
* - validate: Validate local SKILL.md (SMI-746)
|
|
13
|
+
* - publish: Prepare skill for sharing (SMI-746)
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Skillsmith CLI - Claude Skill Discovery Tools
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* - import: Import skills from GitHub (SMI-580)
|
|
7
|
+
* - search: Search for skills with interactive mode (SMI-744)
|
|
8
|
+
* - list: List installed skills (SMI-745)
|
|
9
|
+
* - update: Update installed skills (SMI-745)
|
|
10
|
+
* - remove: Remove installed skills (SMI-745)
|
|
11
|
+
* - init: Initialize new skill project (SMI-746)
|
|
12
|
+
* - validate: Validate local SKILL.md (SMI-746)
|
|
13
|
+
* - publish: Prepare skill for sharing (SMI-746)
|
|
14
|
+
*/
|
|
15
|
+
import { Command } from 'commander';
|
|
16
|
+
import { importSkills } from './import.js';
|
|
17
|
+
import { createSearchCommand, createListCommand, createUpdateCommand, createRemoveCommand, createInitCommand, createValidateCommand, createPublishCommand, } from './commands/index.js';
|
|
18
|
+
import { DEFAULT_DB_PATH } from './config.js';
|
|
19
|
+
import { sanitizeError } from './utils/sanitize.js';
|
|
20
|
+
import { displayStartupHeader } from './utils/license.js';
|
|
21
|
+
const CLI_VERSION = '0.1.0';
|
|
22
|
+
const program = new Command();
|
|
23
|
+
program
|
|
24
|
+
.name('skillsmith')
|
|
25
|
+
.description('Claude Skill Discovery and Management CLI')
|
|
26
|
+
.version(CLI_VERSION);
|
|
27
|
+
// Display startup header with license status before parsing commands
|
|
28
|
+
// Use hook to display header before any command runs
|
|
29
|
+
program.hook('preAction', async () => {
|
|
30
|
+
await displayStartupHeader(CLI_VERSION);
|
|
31
|
+
});
|
|
32
|
+
// SMI-580: Import command
|
|
33
|
+
program
|
|
34
|
+
.command('import')
|
|
35
|
+
.description('Import skills from GitHub')
|
|
36
|
+
.option('-t, --topic <topic>', 'GitHub topic to search', 'claude-skill')
|
|
37
|
+
.option('-m, --max <number>', 'Maximum skills to import', '1000')
|
|
38
|
+
.option('-d, --db <path>', 'Database file path', DEFAULT_DB_PATH)
|
|
39
|
+
.option('-v, --verbose', 'Verbose output')
|
|
40
|
+
.action(async (options) => {
|
|
41
|
+
try {
|
|
42
|
+
await importSkills({
|
|
43
|
+
topic: options.topic,
|
|
44
|
+
maxSkills: parseInt(options.max),
|
|
45
|
+
dbPath: options.db,
|
|
46
|
+
...(options.verbose !== undefined && { verbose: options.verbose }),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.error('Import failed:', sanitizeError(error));
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// SMI-744: Search command with interactive mode
|
|
55
|
+
program.addCommand(createSearchCommand());
|
|
56
|
+
// SMI-745: Skill management commands
|
|
57
|
+
program.addCommand(createListCommand());
|
|
58
|
+
program.addCommand(createUpdateCommand());
|
|
59
|
+
program.addCommand(createRemoveCommand());
|
|
60
|
+
// SMI-746: Skill authoring commands
|
|
61
|
+
program.addCommand(createInitCommand());
|
|
62
|
+
program.addCommand(createValidateCommand());
|
|
63
|
+
program.addCommand(createPublishCommand());
|
|
64
|
+
program.parse();
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD,MAAM,WAAW,GAAG,OAAO,CAAA;AAE3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,WAAW,CAAC,CAAA;AAEvB,qEAAqE;AACrE,qDAAqD;AACrD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;IACnC,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA;AAEF,0BAA0B;AAC1B,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,cAAc,CAAC;KACvE,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,CAAC;KAChE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,eAAe,CAAC;KAChE,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,OAAsE,EAAE,EAAE;IACvF,IAAI,CAAC;QACH,MAAM,YAAY,CAAC;YACjB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;YAChC,MAAM,EAAE,OAAO,CAAC,EAAE;YAClB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SACnE,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,gDAAgD;AAChD,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAA;AAEzC,qCAAqC;AACrC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACvC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAA;AACzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAA;AAEzC,oCAAoC;AACpC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACvC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAA;AAC3C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAA;AAE1C,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* README.md Template
|
|
3
|
+
*
|
|
4
|
+
* Template for new skill README files.
|
|
5
|
+
*/
|
|
6
|
+
export declare const README_MD_TEMPLATE = "# {{name}}\n\n{{description}}\n\n## Overview\n\nThis is a Claude Code skill that provides [describe functionality].\n\n## Installation\n\n### Via Skillsmith\n\n```bash\nskillsmith install {{name}}\n```\n\n### Manual Installation\n\n1. Clone or download this repository\n2. Copy to your skills directory:\n\n```bash\ncp -r {{name}} ~/.claude/skills/\n```\n\n## Quick Start\n\n1. Install the skill\n2. Start Claude Code\n3. Use the skill by [describe how to trigger]\n\n## Documentation\n\nSee [SKILL.md](./SKILL.md) for detailed documentation.\n\n## Development\n\n### Prerequisites\n\n- Node.js 18+\n- npm or pnpm\n\n### Setup\n\n```bash\n# Install dependencies (if any)\nnpm install\n\n# Run tests\nnpm test\n```\n\n### Project Structure\n\n```\n{{name}}/\n\u251C\u2500\u2500 SKILL.md # Skill definition and documentation\n\u251C\u2500\u2500 README.md # This file\n\u251C\u2500\u2500 scripts/ # Automation scripts\n\u2502 \u2514\u2500\u2500 example.js # Example script\n\u251C\u2500\u2500 resources/ # Static resources\n\u2514\u2500\u2500 .gitignore # Git ignore rules\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Submit a pull request\n\n## License\n\nMIT License\n\n## Author\n\nCreated with [Skillsmith](https://github.com/skillsmith/skillsmith)\n";
|
|
7
|
+
export default README_MD_TEMPLATE;
|
|
8
|
+
//# sourceMappingURL=readme.md.template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readme.md.template.d.ts","sourceRoot":"","sources":["../../../src/templates/readme.md.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,kBAAkB,g1CA8E9B,CAAA;AAED,eAAe,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* README.md Template
|
|
3
|
+
*
|
|
4
|
+
* Template for new skill README files.
|
|
5
|
+
*/
|
|
6
|
+
export const README_MD_TEMPLATE = `# {{name}}
|
|
7
|
+
|
|
8
|
+
{{description}}
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
This is a Claude Code skill that provides [describe functionality].
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
### Via Skillsmith
|
|
17
|
+
|
|
18
|
+
\`\`\`bash
|
|
19
|
+
skillsmith install {{name}}
|
|
20
|
+
\`\`\`
|
|
21
|
+
|
|
22
|
+
### Manual Installation
|
|
23
|
+
|
|
24
|
+
1. Clone or download this repository
|
|
25
|
+
2. Copy to your skills directory:
|
|
26
|
+
|
|
27
|
+
\`\`\`bash
|
|
28
|
+
cp -r {{name}} ~/.claude/skills/
|
|
29
|
+
\`\`\`
|
|
30
|
+
|
|
31
|
+
## Quick Start
|
|
32
|
+
|
|
33
|
+
1. Install the skill
|
|
34
|
+
2. Start Claude Code
|
|
35
|
+
3. Use the skill by [describe how to trigger]
|
|
36
|
+
|
|
37
|
+
## Documentation
|
|
38
|
+
|
|
39
|
+
See [SKILL.md](./SKILL.md) for detailed documentation.
|
|
40
|
+
|
|
41
|
+
## Development
|
|
42
|
+
|
|
43
|
+
### Prerequisites
|
|
44
|
+
|
|
45
|
+
- Node.js 18+
|
|
46
|
+
- npm or pnpm
|
|
47
|
+
|
|
48
|
+
### Setup
|
|
49
|
+
|
|
50
|
+
\`\`\`bash
|
|
51
|
+
# Install dependencies (if any)
|
|
52
|
+
npm install
|
|
53
|
+
|
|
54
|
+
# Run tests
|
|
55
|
+
npm test
|
|
56
|
+
\`\`\`
|
|
57
|
+
|
|
58
|
+
### Project Structure
|
|
59
|
+
|
|
60
|
+
\`\`\`
|
|
61
|
+
{{name}}/
|
|
62
|
+
├── SKILL.md # Skill definition and documentation
|
|
63
|
+
├── README.md # This file
|
|
64
|
+
├── scripts/ # Automation scripts
|
|
65
|
+
│ └── example.js # Example script
|
|
66
|
+
├── resources/ # Static resources
|
|
67
|
+
└── .gitignore # Git ignore rules
|
|
68
|
+
\`\`\`
|
|
69
|
+
|
|
70
|
+
## Contributing
|
|
71
|
+
|
|
72
|
+
1. Fork the repository
|
|
73
|
+
2. Create a feature branch
|
|
74
|
+
3. Make your changes
|
|
75
|
+
4. Submit a pull request
|
|
76
|
+
|
|
77
|
+
## License
|
|
78
|
+
|
|
79
|
+
MIT License
|
|
80
|
+
|
|
81
|
+
## Author
|
|
82
|
+
|
|
83
|
+
Created with [Skillsmith](https://github.com/skillsmith/skillsmith)
|
|
84
|
+
`;
|
|
85
|
+
export default README_MD_TEMPLATE;
|
|
86
|
+
//# sourceMappingURL=readme.md.template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readme.md.template.js","sourceRoot":"","sources":["../../../src/templates/readme.md.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EjC,CAAA;AAED,eAAe,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SKILL.md Template
|
|
3
|
+
*
|
|
4
|
+
* Template for new skill SKILL.md files with YAML frontmatter.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SKILL_MD_TEMPLATE = "---\nname: {{name}}\ndescription: {{description}}\nauthor: {{author}}\nversion: 1.0.0\ncategory: {{category}}\ntags:\n - claude-skill\n - {{category}}\nlicense: MIT\ncreated: {{date}}\n---\n\n# {{name}}\n\n{{description}}\n\n## Features\n\n- Feature 1: Description of feature\n- Feature 2: Description of feature\n- Feature 3: Description of feature\n\n## Installation\n\n```bash\nskillsmith install {{name}}\n```\n\nOr manually:\n\n```bash\ncp -r . ~/.claude/skills/{{name}}\n```\n\n## Usage\n\n### Basic Usage\n\nDescribe how to use the skill with examples.\n\n### Commands\n\n| Command | Description |\n|---------|-------------|\n| `/example` | Description of example command |\n\n### Trigger Phrases\n\nThe skill responds to:\n- \"example phrase 1\"\n- \"example phrase 2\"\n\n## Configuration\n\n| Setting | Default | Description |\n|---------|---------|-------------|\n| `setting1` | `value` | Description |\n\n## Scripts\n\n### example.js\n\nLocated in `scripts/example.js`:\n\n```javascript\n// Your automation script here\n```\n\n## Resources\n\nFiles in the `resources/` directory:\n- `resource1.txt` - Description\n\n## Dependencies\n\nThis skill requires:\n- No external dependencies\n\n## Contributing\n\nContributions welcome! Please submit pull requests.\n\n## License\n\nMIT License - see LICENSE file for details.\n\n## Changelog\n\n### 1.0.0 ({{date}})\n- Initial release\n";
|
|
7
|
+
export default SKILL_MD_TEMPLATE;
|
|
8
|
+
//# sourceMappingURL=skill.md.template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.md.template.d.ts","sourceRoot":"","sources":["../../../src/templates/skill.md.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,iBAAiB,s3CA2F7B,CAAA;AAED,eAAe,iBAAiB,CAAA"}
|