claude-data-academy
Version:
Claude Code용 데이터 학습 선생님 에이전트 NPX 설치 도구
92 lines (80 loc) • 3.69 kB
JavaScript
const { Command } = require('commander');
const chalk = require('chalk');
const { installTeachers } = require('../lib/installer');
const { validateClaudeProject } = require('../lib/validator');
const { listInstalledTeachers, generateLearningRoadmap } = require('../lib/teachers-manager');
const { runInteractiveInstaller } = require('../lib/interactive');
const program = new Command();
// ASCII Art 로고
const logo = `
${chalk.blue('🎓 Claude Data Learning Teachers')}
${chalk.gray('데이터 분야 학습용 선생님 에이전트 설치 도구')}
`;
program
.name('claude-data-learning-teachers')
.description('Claude Code 프로젝트에 데이터 학습 선생님 에이전트를 설치합니다')
.version('1.0.3')
.option('-a, --all', '모든 선생님 설치')
.option('-t, --teachers <names>', '특정 선생님들 설치 (쉼표로 구분)')
.option('-l, --list', '설치된 선생님 목록 표시')
.option('-r, --roadmap', '학습 로드맵 생성')
.option('--verbose', '상세한 로그 출력');
program.action(async (options) => {
console.log(logo);
try {
// Claude Code 프로젝트 검증
const projectInfo = await validateClaudeProject(process.cwd());
if (!projectInfo.isValid) {
console.error(chalk.red('❌ 설치 실패:'));
console.error(chalk.yellow(` ${projectInfo.reason}`));
console.log();
console.log(chalk.blue('💡 해결 방법:'));
console.log(chalk.gray(' 1. 프로젝트 디렉토리에 쓰기 권한이 있는지 확인하세요'));
console.log(chalk.gray(' 2. 다른 위치에서 다시 시도해보세요'));
process.exit(1);
}
console.log(chalk.green('✅ Claude Code 환경을 확인했습니다!'));
console.log(chalk.gray(`📁 현재 위치: ${process.cwd()}`));
console.log();
// 옵션에 따른 실행
if (options.list) {
await listInstalledTeachers(projectInfo.agentsPath);
} else if (options.roadmap) {
await generateLearningRoadmap(projectInfo.agentsPath);
} else if (options.all) {
const allTeachers = ['data-engineer', 'data-architect', 'data-analyst', 'data-scientist', 'ai-engineer'];
await installTeachers(allTeachers, 'intermediate', projectInfo.agentsPath);
} else if (options.teachers) {
const teacherList = options.teachers.split(',').map(t => t.trim());
await installTeachers(teacherList, 'intermediate', projectInfo.agentsPath);
} else {
// 대화형 설치
await runInteractiveInstaller(projectInfo.agentsPath);
}
} catch (error) {
console.error(chalk.red('❌ 오류가 발생했습니다:'), error.message);
if (options.verbose) {
console.error(error);
}
process.exit(1);
}
});
// 도움말 커스터마이징
program.on('--help', () => {
console.log();
console.log(chalk.yellow('사용 예시:'));
console.log(' $ npx claude-data-learning-teachers');
console.log(' $ npx claude-data-learning-teachers --all');
console.log(' $ npx claude-data-learning-teachers --teachers data-engineer,data-scientist');
console.log(' $ npx claude-data-learning-teachers --list');
console.log();
console.log(chalk.yellow('제공되는 선생님들:'));
console.log(' 📊 data-engineer - 데이터 엔지니어링 선생님');
console.log(' 🏗️ data-architect - 데이터 아키텍처 선생님');
console.log(' 📈 data-analyst - 데이터 분석 선생님');
console.log(' 🔬 data-scientist - 데이터 사이언스 선생님');
console.log(' 🤖 ai-engineer - AI 엔지니어링 선생님');
console.log();
});
program.parse(process.argv);