@kongyo2/kongyo-cli 0.1.1 → 0.1.3

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.
Files changed (42) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/app.js +98 -2
  3. package/dist/app.js.map +1 -1
  4. package/dist/components/MainMenu.d.ts +8 -0
  5. package/dist/components/MainMenu.d.ts.map +1 -0
  6. package/dist/components/MainMenu.js +20 -0
  7. package/dist/components/MainMenu.js.map +1 -0
  8. package/dist/components/SkillsConfirm.d.ts +10 -0
  9. package/dist/components/SkillsConfirm.d.ts.map +1 -0
  10. package/dist/components/SkillsConfirm.js +8 -0
  11. package/dist/components/SkillsConfirm.js.map +1 -0
  12. package/dist/components/SkillsDownload.d.ts +15 -0
  13. package/dist/components/SkillsDownload.d.ts.map +1 -0
  14. package/dist/components/SkillsDownload.js +40 -0
  15. package/dist/components/SkillsDownload.js.map +1 -0
  16. package/dist/components/SkillsFetch.d.ts +10 -0
  17. package/dist/components/SkillsFetch.d.ts.map +1 -0
  18. package/dist/components/SkillsFetch.js +35 -0
  19. package/dist/components/SkillsFetch.js.map +1 -0
  20. package/dist/components/SkillsRepo.d.ts +8 -0
  21. package/dist/components/SkillsRepo.d.ts.map +1 -0
  22. package/dist/components/SkillsRepo.js +26 -0
  23. package/dist/components/SkillsRepo.js.map +1 -0
  24. package/dist/components/SkillsSelect.d.ts +11 -0
  25. package/dist/components/SkillsSelect.d.ts.map +1 -0
  26. package/dist/components/SkillsSelect.js +60 -0
  27. package/dist/components/SkillsSelect.js.map +1 -0
  28. package/dist/components/index.d.ts +6 -0
  29. package/dist/components/index.d.ts.map +1 -1
  30. package/dist/components/index.js +6 -0
  31. package/dist/components/index.js.map +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/lib/skills.d.ts +32 -0
  35. package/dist/lib/skills.d.ts.map +1 -0
  36. package/dist/lib/skills.js +465 -0
  37. package/dist/lib/skills.js.map +1 -0
  38. package/dist/lib/types.d.ts +50 -0
  39. package/dist/lib/types.d.ts.map +1 -1
  40. package/dist/lib/types.js +16 -0
  41. package/dist/lib/types.js.map +1 -1
  42. package/package.json +1 -1
@@ -0,0 +1,465 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { Result, ok, err } from "neverthrow";
4
+ /**
5
+ * Parse GitHub URL in various formats
6
+ * Supports:
7
+ * - https://github.com/owner/repo
8
+ * - https://github.com/owner/repo/tree/branch
9
+ * - https://github.com/owner/repo/tree/branch/path/to/skills
10
+ */
11
+ function parseGitHubUrl(url) {
12
+ const patterns = [
13
+ /^https?:\/\/github\.com\/([^/]+)\/([^/]+)\/tree\/([^/]+)\/(.+)$/,
14
+ /^https?:\/\/github\.com\/([^/]+)\/([^/]+)\/tree\/([^/]+)\/?$/,
15
+ /^https?:\/\/github\.com\/([^/]+)\/([^/]+)\/?$/,
16
+ ];
17
+ for (const pattern of patterns) {
18
+ const match = url.match(pattern);
19
+ if (match) {
20
+ const owner = match[1];
21
+ const repo = match[2];
22
+ if (owner && repo) {
23
+ return {
24
+ owner,
25
+ repo,
26
+ branch: match[3] ?? "main",
27
+ path: match[4] ?? "",
28
+ };
29
+ }
30
+ }
31
+ }
32
+ return null;
33
+ }
34
+ /**
35
+ * Fetch directory contents from GitHub API
36
+ */
37
+ async function fetchGitHubContents(owner, repo, contentPath) {
38
+ const apiUrl = `https://api.github.com/repos/${owner}/${repo}/contents/${contentPath}`;
39
+ try {
40
+ const response = await fetch(apiUrl, {
41
+ headers: {
42
+ Accept: "application/vnd.github.v3+json",
43
+ "User-Agent": "kongyo-cli",
44
+ },
45
+ });
46
+ if (!response.ok) {
47
+ if (response.status === 404) {
48
+ return err({ type: "fetch_error", message: `Path not found: ${contentPath || "(root)"}` });
49
+ }
50
+ if (response.status === 403) {
51
+ return err({ type: "fetch_error", message: "GitHub API rate limit exceeded. Try again later." });
52
+ }
53
+ return err({ type: "network_error", message: `HTTP ${response.status}: ${response.statusText}` });
54
+ }
55
+ const data = await response.json();
56
+ // Handle single file response
57
+ if (!Array.isArray(data)) {
58
+ return ok([data]);
59
+ }
60
+ return ok(data);
61
+ }
62
+ catch (error) {
63
+ return err({
64
+ type: "network_error",
65
+ message: error instanceof Error ? error.message : String(error),
66
+ });
67
+ }
68
+ }
69
+ /**
70
+ * Fetch raw file content from GitHub
71
+ */
72
+ async function fetchRawContent(owner, repo, branch, filePath) {
73
+ const rawUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${filePath}`;
74
+ try {
75
+ const response = await fetch(rawUrl, {
76
+ headers: { "User-Agent": "kongyo-cli" },
77
+ });
78
+ if (!response.ok) {
79
+ return err({ type: "fetch_error", message: `Failed to fetch: ${filePath}` });
80
+ }
81
+ return ok(await response.text());
82
+ }
83
+ catch (error) {
84
+ return err({
85
+ type: "network_error",
86
+ message: error instanceof Error ? error.message : String(error),
87
+ });
88
+ }
89
+ }
90
+ /**
91
+ * Parse YAML frontmatter from SKILL.md
92
+ * Supports multi-line quoted descriptions per Agent Skills spec
93
+ *
94
+ * Required fields: name, description
95
+ * Optional fields: license, compatibility, metadata, allowed-tools
96
+ */
97
+ function parseSkillMd(content) {
98
+ // Extract YAML frontmatter
99
+ const frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
100
+ if (!frontmatterMatch?.[1]) {
101
+ // Fallback: extract title from first heading
102
+ const headingMatch = content.match(/^#\s+(.+)$/m);
103
+ if (headingMatch?.[1]) {
104
+ return {
105
+ name: headingMatch[1].trim(),
106
+ description: "Skill from repository",
107
+ };
108
+ }
109
+ return null;
110
+ }
111
+ const frontmatter = frontmatterMatch[1];
112
+ // Parse name (required)
113
+ const nameMatch = frontmatter.match(/^name:\s*["']?([^"'\n]+)["']?$/m);
114
+ const name = nameMatch?.[1]?.trim();
115
+ // Parse description (required) - supports both single-line and multi-line quoted strings
116
+ let description;
117
+ // Try multi-line quoted description first: description: "line1\nline2"
118
+ const multiLineMatch = frontmatter.match(/^description:\s*["']([\s\S]*?)["']\s*$/m);
119
+ if (multiLineMatch?.[1]) {
120
+ description = multiLineMatch[1].trim();
121
+ }
122
+ else {
123
+ // Try single-line unquoted
124
+ const singleLineMatch = frontmatter.match(/^description:\s*(.+)$/m);
125
+ if (singleLineMatch?.[1]) {
126
+ description = singleLineMatch[1].trim().replace(/^["']|["']$/g, "");
127
+ }
128
+ }
129
+ // Parse optional license
130
+ const licenseMatch = frontmatter.match(/^license:\s*["']?([^"'\n]+)["']?$/m);
131
+ const license = licenseMatch?.[1]?.trim();
132
+ // Parse optional compatibility
133
+ const compatibilityMatch = frontmatter.match(/^compatibility:\s*["']?([^"'\n]+)["']?$/m);
134
+ const compatibility = compatibilityMatch?.[1]?.trim();
135
+ // Parse optional allowed-tools (space-separated list)
136
+ const allowedToolsMatch = frontmatter.match(/^allowed-tools:\s*(.+)$/m);
137
+ const allowedTools = allowedToolsMatch?.[1]?.trim().split(/\s+/);
138
+ return {
139
+ name: name ?? "Unknown",
140
+ description: description ?? "No description",
141
+ license,
142
+ compatibility,
143
+ allowedTools,
144
+ };
145
+ }
146
+ /**
147
+ * Check if a directory contains SKILL.md (case-insensitive)
148
+ */
149
+ function hasSkillMd(contents) {
150
+ return contents.find((item) => item.type === "file" && item.name.toLowerCase() === "skill.md");
151
+ }
152
+ /**
153
+ * Recursively discover skills in a repository
154
+ *
155
+ * Strategy (based on Agent Skills spec):
156
+ * 1. Look for "skills/" directory and search within it
157
+ * 2. Look for directories containing SKILL.md at current level
158
+ * 3. Recursively search in subdirectories (excluding common non-skill dirs)
159
+ */
160
+ async function discoverSkillsRecursive(owner, repo, branch, basePath, repoUrl, depth = 0, maxDepth = 3) {
161
+ if (depth > maxDepth)
162
+ return [];
163
+ const contentsResult = await fetchGitHubContents(owner, repo, basePath);
164
+ if (contentsResult.isErr())
165
+ return [];
166
+ const contents = contentsResult.value;
167
+ const skills = [];
168
+ // Non-skill directories to skip
169
+ const skipDirs = new Set([
170
+ "node_modules", ".git", ".github", "dist", "build",
171
+ "test", "tests", "docs", "spec", "template", ".claude-plugin",
172
+ "__pycache__", ".venv", "venv", "coverage"
173
+ ]);
174
+ // Priority 1: Check if we're at a directory with SKILL.md
175
+ const skillMd = hasSkillMd(contents);
176
+ if (skillMd) {
177
+ const contentResult = await fetchRawContent(owner, repo, branch, skillMd.path);
178
+ const metadata = contentResult.isOk() ? parseSkillMd(contentResult.value) : null;
179
+ // Extract directory name as skill ID
180
+ const dirName = basePath.split("/").pop() ?? basePath;
181
+ skills.push({
182
+ id: metadata?.name ?? dirName,
183
+ name: metadata?.name ?? dirName.replace(/-/g, " "),
184
+ description: metadata?.description ?? `Skill: ${dirName}`,
185
+ repoUrl,
186
+ path: basePath,
187
+ selected: false,
188
+ });
189
+ // Don't recurse into skill directories
190
+ return skills;
191
+ }
192
+ // Get directories to explore
193
+ const directories = contents.filter((item) => item.type === "dir" && !skipDirs.has(item.name.toLowerCase()));
194
+ // Priority 2: Check for "skills" directory
195
+ const skillsDir = directories.find((d) => d.name.toLowerCase() === "skills");
196
+ if (skillsDir) {
197
+ // Search within skills directory
198
+ const skillsDirContents = await fetchGitHubContents(owner, repo, skillsDir.path);
199
+ if (skillsDirContents.isOk()) {
200
+ const skillSubDirs = skillsDirContents.value.filter((item) => item.type === "dir" && !skipDirs.has(item.name.toLowerCase()));
201
+ // Check each subdirectory for SKILL.md
202
+ for (const subDir of skillSubDirs) {
203
+ const subDirContents = await fetchGitHubContents(owner, repo, subDir.path);
204
+ if (subDirContents.isOk()) {
205
+ const subSkillMd = hasSkillMd(subDirContents.value);
206
+ if (subSkillMd) {
207
+ const contentResult = await fetchRawContent(owner, repo, branch, subSkillMd.path);
208
+ const metadata = contentResult.isOk() ? parseSkillMd(contentResult.value) : null;
209
+ skills.push({
210
+ id: metadata?.name ?? subDir.name,
211
+ name: metadata?.name ?? subDir.name.replace(/-/g, " "),
212
+ description: metadata?.description ?? `Skill: ${subDir.name}`,
213
+ repoUrl,
214
+ path: subDir.path,
215
+ selected: false,
216
+ });
217
+ }
218
+ }
219
+ }
220
+ }
221
+ // If we found skills in skills/ directory, don't search elsewhere
222
+ if (skills.length > 0)
223
+ return skills;
224
+ }
225
+ // Priority 3: Check each directory at current level for SKILL.md
226
+ for (const dir of directories) {
227
+ if (dir.name.toLowerCase() === "skills")
228
+ continue; // Already handled
229
+ const dirContents = await fetchGitHubContents(owner, repo, dir.path);
230
+ if (dirContents.isOk()) {
231
+ const dirSkillMd = hasSkillMd(dirContents.value);
232
+ if (dirSkillMd) {
233
+ const contentResult = await fetchRawContent(owner, repo, branch, dirSkillMd.path);
234
+ const metadata = contentResult.isOk() ? parseSkillMd(contentResult.value) : null;
235
+ skills.push({
236
+ id: metadata?.name ?? dir.name,
237
+ name: metadata?.name ?? dir.name.replace(/-/g, " "),
238
+ description: metadata?.description ?? `Skill: ${dir.name}`,
239
+ repoUrl,
240
+ path: dir.path,
241
+ selected: false,
242
+ });
243
+ }
244
+ else {
245
+ // Recurse into directory
246
+ const subSkills = await discoverSkillsRecursive(owner, repo, branch, dir.path, repoUrl, depth + 1, maxDepth);
247
+ skills.push(...subSkills);
248
+ }
249
+ }
250
+ }
251
+ // Priority 4: If nothing found yet, check for .md files (legacy support)
252
+ if (skills.length === 0 && depth === 0) {
253
+ const mdFiles = contents.filter((item) => item.type === "file" &&
254
+ item.name.toLowerCase().endsWith(".md") &&
255
+ !["readme.md", "changelog.md", "contributing.md", "license.md"].includes(item.name.toLowerCase()));
256
+ for (const file of mdFiles) {
257
+ const contentResult = await fetchRawContent(owner, repo, branch, file.path);
258
+ const metadata = contentResult.isOk() ? parseSkillMd(contentResult.value) : null;
259
+ // Only include if it has proper frontmatter
260
+ if (metadata && metadata.name !== "Unknown") {
261
+ skills.push({
262
+ id: metadata.name,
263
+ name: metadata.name,
264
+ description: metadata.description,
265
+ repoUrl,
266
+ path: file.path,
267
+ selected: false,
268
+ });
269
+ }
270
+ }
271
+ }
272
+ return skills;
273
+ }
274
+ /**
275
+ * Fetch skills from a GitHub repository
276
+ */
277
+ export async function fetchSkillsFromRepo(repoUrl) {
278
+ const parsed = parseGitHubUrl(repoUrl);
279
+ if (!parsed) {
280
+ return err({ type: "parse_error", message: "Invalid GitHub URL format" });
281
+ }
282
+ const { owner, repo, branch, path: basePath } = parsed;
283
+ const skills = await discoverSkillsRecursive(owner, repo, branch, basePath, repoUrl);
284
+ if (skills.length === 0) {
285
+ return err({ type: "fetch_error", message: "No skills found in this repository. Skills require a SKILL.md file with name and description frontmatter." });
286
+ }
287
+ return ok(skills);
288
+ }
289
+ /**
290
+ * Recursively get all files in a directory
291
+ */
292
+ async function getAllFilesInDirectory(owner, repo, dirPath) {
293
+ const files = [];
294
+ const contentsResult = await fetchGitHubContents(owner, repo, dirPath);
295
+ if (contentsResult.isErr()) {
296
+ return err(contentsResult.error);
297
+ }
298
+ for (const item of contentsResult.value) {
299
+ if (item.type === "file") {
300
+ files.push({ path: item.path });
301
+ }
302
+ else if (item.type === "dir") {
303
+ // Recursively get files in subdirectory
304
+ const subResult = await getAllFilesInDirectory(owner, repo, item.path);
305
+ if (subResult.isOk()) {
306
+ files.push(...subResult.value);
307
+ }
308
+ }
309
+ }
310
+ return ok(files);
311
+ }
312
+ /**
313
+ * Download skill content (SKILL.md and optionally related files)
314
+ */
315
+ export async function downloadSkillContent(skill) {
316
+ const parsed = parseGitHubUrl(skill.repoUrl);
317
+ if (!parsed) {
318
+ return err({ type: "download_error", skillName: skill.name, message: "Invalid repository URL" });
319
+ }
320
+ const { owner, repo, branch } = parsed;
321
+ // Check if path points to a file or directory
322
+ const contentsResult = await fetchGitHubContents(owner, repo, skill.path);
323
+ if (contentsResult.isErr()) {
324
+ return err({ type: "download_error", skillName: skill.name, message: contentsResult.error.message });
325
+ }
326
+ const contents = contentsResult.value;
327
+ // If it's a single file
328
+ if (contents.length === 1 && contents[0]?.type === "file") {
329
+ return fetchRawContent(owner, repo, branch, skill.path);
330
+ }
331
+ // If it's a directory, look for SKILL.md first
332
+ const skillMd = hasSkillMd(contents);
333
+ if (skillMd) {
334
+ return fetchRawContent(owner, repo, branch, skillMd.path);
335
+ }
336
+ // Try README.md as fallback
337
+ const readme = contents.find((item) => item.type === "file" && item.name.toLowerCase() === "readme.md");
338
+ if (readme) {
339
+ return fetchRawContent(owner, repo, branch, readme.path);
340
+ }
341
+ // Get any .md file
342
+ const anyMd = contents.find((item) => item.type === "file" && item.name.toLowerCase().endsWith(".md"));
343
+ if (anyMd) {
344
+ return fetchRawContent(owner, repo, branch, anyMd.path);
345
+ }
346
+ return err({ type: "download_error", skillName: skill.name, message: "No skill content found" });
347
+ }
348
+ /**
349
+ * Download the entire skill directory including all resources
350
+ * Returns a map of relative paths to content
351
+ */
352
+ export async function downloadSkillDirectory(skill) {
353
+ const parsed = parseGitHubUrl(skill.repoUrl);
354
+ if (!parsed) {
355
+ return err({ type: "download_error", skillName: skill.name, message: "Invalid repository URL" });
356
+ }
357
+ const { owner, repo, branch } = parsed;
358
+ const filesMap = new Map();
359
+ // Get all files in the skill directory
360
+ const filesResult = await getAllFilesInDirectory(owner, repo, skill.path);
361
+ if (filesResult.isErr()) {
362
+ return err({ type: "download_error", skillName: skill.name, message: filesResult.error.message });
363
+ }
364
+ // Download each file
365
+ for (const file of filesResult.value) {
366
+ const contentResult = await fetchRawContent(owner, repo, branch, file.path);
367
+ if (contentResult.isOk()) {
368
+ // Store with relative path from skill root
369
+ const relativePath = file.path.replace(skill.path + "/", "").replace(skill.path, "");
370
+ filesMap.set(relativePath || path.basename(file.path), contentResult.value);
371
+ }
372
+ }
373
+ if (filesMap.size === 0) {
374
+ return err({ type: "download_error", skillName: skill.name, message: "No files found in skill directory" });
375
+ }
376
+ return ok(filesMap);
377
+ }
378
+ /**
379
+ * Sanitize skill name for use as filename
380
+ * Per Agent Skills spec: lowercase, alphanumeric and hyphens only
381
+ */
382
+ function sanitizeSkillName(name) {
383
+ return name
384
+ .toLowerCase()
385
+ .replace(/[^a-z0-9-]/g, "-")
386
+ .replace(/-+/g, "-")
387
+ .replace(/^-|-$/g, "");
388
+ }
389
+ /**
390
+ * Save skill content to a single file
391
+ */
392
+ export function saveSkillToFile(skillName, content) {
393
+ try {
394
+ const cwd = process.cwd();
395
+ const skillsDir = path.join(cwd, ".claude", "skills");
396
+ // Create directories if they don't exist
397
+ if (!fs.existsSync(skillsDir)) {
398
+ fs.mkdirSync(skillsDir, { recursive: true });
399
+ }
400
+ const safeSkillName = sanitizeSkillName(skillName);
401
+ const filePath = path.join(skillsDir, `${safeSkillName}.md`);
402
+ fs.writeFileSync(filePath, content, "utf-8");
403
+ return ok(filePath);
404
+ }
405
+ catch (error) {
406
+ return err({
407
+ type: "download_error",
408
+ skillName,
409
+ message: error instanceof Error ? error.message : String(error),
410
+ });
411
+ }
412
+ }
413
+ /**
414
+ * Save skill as a full directory with all resources
415
+ */
416
+ export function saveSkillDirectory(skillName, files) {
417
+ try {
418
+ const cwd = process.cwd();
419
+ const safeSkillName = sanitizeSkillName(skillName);
420
+ const skillDir = path.join(cwd, ".claude", "skills", safeSkillName);
421
+ // Create skill directory
422
+ if (!fs.existsSync(skillDir)) {
423
+ fs.mkdirSync(skillDir, { recursive: true });
424
+ }
425
+ // Write each file
426
+ for (const [relativePath, content] of files) {
427
+ const filePath = path.join(skillDir, relativePath);
428
+ const fileDir = path.dirname(filePath);
429
+ // Create subdirectories if needed
430
+ if (!fs.existsSync(fileDir)) {
431
+ fs.mkdirSync(fileDir, { recursive: true });
432
+ }
433
+ fs.writeFileSync(filePath, content, "utf-8");
434
+ }
435
+ return ok(skillDir);
436
+ }
437
+ catch (error) {
438
+ return err({
439
+ type: "download_error",
440
+ skillName,
441
+ message: error instanceof Error ? error.message : String(error),
442
+ });
443
+ }
444
+ }
445
+ /**
446
+ * Download and save skill (single file mode)
447
+ */
448
+ export async function downloadAndSaveSkill(skill) {
449
+ const contentResult = await downloadSkillContent(skill);
450
+ if (contentResult.isErr()) {
451
+ return err(contentResult.error);
452
+ }
453
+ return saveSkillToFile(skill.id, contentResult.value);
454
+ }
455
+ /**
456
+ * Download and save skill with all resources (directory mode)
457
+ */
458
+ export async function downloadAndSaveSkillWithResources(skill) {
459
+ const filesResult = await downloadSkillDirectory(skill);
460
+ if (filesResult.isErr()) {
461
+ return err(filesResult.error);
462
+ }
463
+ return saveSkillDirectory(skill.id, filesResult.value);
464
+ }
465
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,28 @@ export declare const PromptItemSchema: z.ZodObject<{
11
11
  enabled: z.ZodDefault<z.ZodBoolean>;
12
12
  }, z.core.$strip>;
13
13
  export type PromptItem = z.infer<typeof PromptItemSchema>;
14
+ export declare const SkillItemSchema: z.ZodObject<{
15
+ id: z.ZodString;
16
+ name: z.ZodString;
17
+ description: z.ZodString;
18
+ repoUrl: z.ZodString;
19
+ path: z.ZodString;
20
+ selected: z.ZodDefault<z.ZodBoolean>;
21
+ }, z.core.$strip>;
22
+ export type SkillItem = z.infer<typeof SkillItemSchema>;
23
+ export declare const SkillMetadataSchema: z.ZodObject<{
24
+ name: z.ZodString;
25
+ description: z.ZodString;
26
+ license: z.ZodOptional<z.ZodString>;
27
+ compatibility: z.ZodOptional<z.ZodString>;
28
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
29
+ }, z.core.$strip>;
30
+ export type SkillMetadata = z.infer<typeof SkillMetadataSchema>;
31
+ export type MainMenuChoice = "prompts" | "skills";
14
32
  export type AppState = {
15
33
  phase: "logo";
34
+ } | {
35
+ phase: "mainMenu";
16
36
  } | {
17
37
  phase: "fileSelect";
18
38
  } | {
@@ -22,6 +42,22 @@ export type AppState = {
22
42
  phase: "summary";
23
43
  } | {
24
44
  phase: "writing";
45
+ } | {
46
+ phase: "skillsRepo";
47
+ } | {
48
+ phase: "skillsFetching";
49
+ repoUrl: string;
50
+ } | {
51
+ phase: "skillsSelect";
52
+ repoUrl: string;
53
+ skills: SkillItem[];
54
+ } | {
55
+ phase: "skillsConfirm";
56
+ skills: SkillItem[];
57
+ } | {
58
+ phase: "skillsDownloading";
59
+ skills: SkillItem[];
60
+ currentIndex: number;
25
61
  } | {
26
62
  phase: "done";
27
63
  success: boolean;
@@ -39,4 +75,18 @@ export type FileError = {
39
75
  type: "permission_denied";
40
76
  path: string;
41
77
  };
78
+ export type SkillError = {
79
+ type: "fetch_error";
80
+ message: string;
81
+ } | {
82
+ type: "parse_error";
83
+ message: string;
84
+ } | {
85
+ type: "download_error";
86
+ skillName: string;
87
+ message: string;
88
+ } | {
89
+ type: "network_error";
90
+ message: string;
91
+ };
42
92
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;EAAqC,CAAC;AACnE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,gBAAgB;;;;;iBAK3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,MAAM,QAAQ,GAChB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GACvB;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;EAAqC,CAAC;AACnE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,gBAAgB;;;;;iBAK3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAG1D,eAAO,MAAM,eAAe;;;;;;;iBAO1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,mBAAmB;;;;;;iBAM9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElD,MAAM,MAAM,QAAQ,GAChB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,GACrB;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GACvB;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GACvB;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAA;CAAE,GAC/D;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhD,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC"}
package/dist/lib/types.js CHANGED
@@ -6,4 +6,20 @@ export const PromptItemSchema = z.object({
6
6
  content: z.string(),
7
7
  enabled: z.boolean().default(true),
8
8
  });
9
+ // Skill-related types
10
+ export const SkillItemSchema = z.object({
11
+ id: z.string(),
12
+ name: z.string(),
13
+ description: z.string(),
14
+ repoUrl: z.string(),
15
+ path: z.string(),
16
+ selected: z.boolean().default(false),
17
+ });
18
+ export const SkillMetadataSchema = z.object({
19
+ name: z.string(),
20
+ description: z.string(),
21
+ license: z.string().optional(),
22
+ compatibility: z.string().optional(),
23
+ allowedTools: z.array(z.string()).optional(),
24
+ });
9
25
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC;AAGH,sBAAsB;AACtB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACrC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kongyo2/kongyo-cli",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "CLI tool for generating CLAUDE.md / AGENTS.md files",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",