/
s.homyakov
/
skillhub
Обзор
Документация
Войти
/
s.homyakov
/
skillhub
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
cli/src/cli.ts
88 строк
2 KB
Sergey Khomyakov
Add skill upload processing with tar.gz support
23 фев 2026, 15:08
23 фев 2026, 15:08
547c541
Код
Авторство
О чём код?
#!/usr/bin/env node import { Command } from 'commander'; import chalk from 'chalk'; import { listSkills, searchSkills, installSkill, pushSkill } from './commands.js'; import { getConfig, setConfig } from './config.js'; const program = new Command(); program .name('skillhub') .description('SkillHub CLI - manage skills for AI agents') .version('0.1.0'); program .command('list') .description('List all available skills') .option('-a, --agent <agent>', 'Filter by agent system') .option('-t, --tag <tag>', 'Filter by tag') .action(async (options) => { try { await listSkills(options); } catch (error: any) { console.error(chalk.red('Error:'), error.message); process.exit(1); } }); program .command('search') .description('Search for skills') .argument('<query>', 'Search query') .action(async (query) => { try { await searchSkills(query); } catch (error: any) { console.error(chalk.red('Error:'), error.message); process.exit(1); } }); program .command('install') .description('Install a skill') .argument('<skill>', 'Skill name (optionally with version: name@version)') .option('-a, --agent <agent>', 'Target agent system') .option('-v, --version <version>', 'Specific version') .action(async (skill, options) => { try { await installSkill(skill, options); } catch (error: any) { console.error(chalk.red('Error:'), error.message); process.exit(1); } }); program .command('push') .description('Push a skill to SkillHub') .argument('<path>', 'Path to skill directory') .action(async (path) => { try { await pushSkill(path); } catch (error: any) { console.error(chalk.red('Error:'), error.message); process.exit(1); } }); program .command('config') .description('Manage configuration') .option('-g, --get <key>', 'Get config value') .option('-s, --set <key=value>', 'Set config value') .action((options) => { if (options.get) { const value = getConfig(options.get); console.log(value || chalk.gray('(not set)')); } else if (options.set) { const [key, ...valueParts] = options.set.split('='); const value = valueParts.join('='); setConfig(key, value); console.log(chalk.green(`Set ${key} = ${value}`)); } else { console.log(getConfig()); } }); program.parse();