{"id":41425233,"url":"https://github.com/wlgns5376/ai-devteam-node","last_synced_at":"2026-01-23T14:14:52.226Z","repository":{"id":311342390,"uuid":"1025568043","full_name":"wlgns5376/ai-devteam-node","owner":"wlgns5376","description":"Github 프로젝트 보드 기반 AI DevTeam","archived":false,"fork":false,"pushed_at":"2025-10-01T06:13:03.000Z","size":1056,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-01T08:26:56.708Z","etag":null,"topics":["ai","claude","claude-code","devteam","gemini"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wlgns5376.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-24T13:01:20.000Z","updated_at":"2025-09-12T12:58:18.000Z","dependencies_parsed_at":"2025-08-24T09:24:46.089Z","dependency_job_id":"2dddeeb1-3c76-4afb-87ab-f641bff40cce","html_url":"https://github.com/wlgns5376/ai-devteam-node","commit_stats":null,"previous_names":["wlgns5376/ai-devteam-node"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/wlgns5376/ai-devteam-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wlgns5376%2Fai-devteam-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wlgns5376%2Fai-devteam-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wlgns5376%2Fai-devteam-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wlgns5376%2Fai-devteam-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wlgns5376","download_url":"https://codeload.github.com/wlgns5376/ai-devteam-node/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wlgns5376%2Fai-devteam-node/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28693747,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T11:01:27.039Z","status":"ssl_error","status_checked_at":"2026-01-23T11:00:26.909Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","claude","claude-code","devteam","gemini"],"created_at":"2026-01-23T14:14:52.161Z","updated_at":"2026-01-23T14:14:52.217Z","avatar_url":"https://github.com/wlgns5376.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AI DevTeam Node\n\n[![English](https://img.shields.io/badge/lang-English-blue.svg)](docs/README.en.md)\n[![한국어](https://img.shields.io/badge/lang-한국어-green.svg)](README.md)\n[![License: ISC](https://img.shields.io/badge/License-ISC-yellow.svg)](LICENSE.md)\n\nAI 개발자(Claude Code, Gemini CLI)를 활용한 자동화 개발 시스템입니다. GitHub Projects의 작업을 자동으로 감지하고, AI 개발자에게 작업을 할당하여 코드를 자동으로 생성하고 PR을 만드는 시스템입니다.\n\n## 🚀 주요 기능\n\n- **자동 작업 관리**: GitHub Projects에서 작업을 자동으로 감지하고 관리\n- **AI 개발자 통합**: Claude Code 및 Gemini CLI를 통한 자동 코드 생성\n- **PR 자동화**: 작업 완료 후 자동으로 Pull Request 생성 및 리뷰 처리\n- **병렬 처리**: 여러 Worker를 통한 동시 작업 처리 (최대 5개)\n- **피드백 처리**: PR 리뷰 코멘트를 자동으로 반영\n- **워크스페이스 관리**: Git worktree를 활용한 독립적인 작업 환경\n- **다중 레포지토리 지원**: 여러 레포지토리의 작업을 동시에 처리\n- **레포지토리 필터링**: Whitelist/Blacklist 모드로 작업 대상 제어\n\n## 🏗 아키텍처\n\n```mermaid\ngraph TB\n    subgraph \"AI DevTeam System\"\n        PL[Planner\u003cbr/\u003e작업 관리]\n        MG[Manager\u003cbr/\u003e워커 관리]\n        WK[Worker\u003cbr/\u003e작업 실행]\n        DV[Developer\u003cbr/\u003eAI 개발자]\n    end\n    \n    subgraph \"External Services\"\n        PB[GitHub Projects]\n        PR[GitHub PR]\n        GIT[Git Repository]\n    end\n    \n    PL \u003c--\u003e PB\n    PL \u003c--\u003e PR\n    PL --\u003e MG\n    MG --\u003e WK\n    WK --\u003e DV\n    WK \u003c--\u003e GIT\n```\n\n### 구성 요소\n\n- **Planner**: GitHub Projects의 작업을 모니터링하고 상태를 관리\n- **Manager**: Worker Pool을 관리하고 작업을 할당\n- **Worker**: 실제 작업을 수행하고 AI 개발자와 통신\n- **Developer**: Claude Code 또는 Gemini CLI를 통한 코드 생성\n\n## 📋 시스템 요구사항\n\n- Node.js 20+\n- Git 2.15+ (worktree 기능 필요)\n- GitHub CLI (`gh`)\n- Docker \u0026 Docker Compose (선택사항)\n- Claude Code CLI 또는 Gemini CLI\n\n## 🛠 설치\n\n### 1. 저장소 클론\n\n```bash\ngit clone https://github.com/your-org/ai-devteam-node.git\ncd ai-devteam-node\n```\n\n### 2. 의존성 설치\n\n```bash\n# pnpm 사용 (권장)\npnpm install\n\n# npm 사용\nnpm install\n```\n\n### 3. 필수 도구 설치\n\n#### GitHub CLI 설치\n```bash\n# macOS\nbrew install gh\n\n# Linux (Ubuntu/Debian)\ncurl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg\necho \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main\" | sudo tee /etc/apt/sources.list.d/github-cli.list \u003e /dev/null\nsudo apt update \u0026\u0026 sudo apt install gh\n\n# Windows\nwinget install --id GitHub.cli\n\n# 인증\ngh auth login\n```\n\n#### Claude Code 설치\n```bash\n# npm을 통한 설치\nnpm install -g @anthropic-ai/claude-code\n\n# 인증\nclaude login\n# 또는 API 키 사용\nexport ANTHROPIC_API_KEY=your_api_key\n```\n\n### 4. 환경 변수 설정\n\n`.env.example` 파일을 복사하여 `.env` 파일을 생성하고 설정합니다:\n\n```bash\ncp .env.example .env\n```\n\n#### 필수 환경 변수\n\n```bash\n# GitHub 설정\nGITHUB_TOKEN=\"your_github_personal_access_token\"    # GitHub PAT (repo, project 권한 필요)\nGITHUB_OWNER=\"your_github_username_or_org\"          # GitHub 사용자명 또는 조직명\nGITHUB_PROJECT_NUMBER=\"your_project_number\"         # GitHub Project 번호\n\n# 저장소 설정 (선택 1: 다중 레포지토리)\nGITHUB_REPOS=\"owner1/repo1,owner2/repo2\"           # 작업할 저장소 목록\nGITHUB_REPO_FILTER_MODE=\"whitelist\"                # whitelist 또는 blacklist\n\n# 저장소 설정 (선택 2: 단일 레포지토리)\nGITHUB_REPO=\"your_repository_name\"                 # 단일 저장소명\n```\n\n#### 선택 환경 변수\n\n```bash\n# AI 개발자 도구 설정\nCLAUDE_CODE_PATH=\"claude\"                          # Claude Code 실행 경로\nCLAUDE_CODE_TIMEOUT=\"300000\"                       # 타임아웃 (ms)\nGEMINI_CLI_PATH=\"gemini\"                          # Gemini CLI 실행 경로\nGEMINI_CLI_TIMEOUT=\"300000\"                       # 타임아웃 (ms)\n\n# Worker Pool 설정\nMIN_WORKERS=\"1\"                                    # 최소 Worker 수\nMAX_WORKERS=\"5\"                                    # 최대 Worker 수\nWORKER_TIMEOUT=\"600000\"                           # Worker 타임아웃 (ms)\n\n# 워크스페이스 설정\nWORKSPACE_ROOT=\"./workspace\"                      # 작업 디렉토리 경로\nCLONE_DEPTH=\"1\"                                   # Git clone 깊이\n\n# 애플리케이션 설정\nNODE_ENV=\"development\"                            # development 또는 production\nLOG_LEVEL=\"info\"                                  # error, warn, info, debug\nPORT=\"3000\"                                       # 애플리케이션 포트\nMONITORING_INTERVAL_MS=\"30000\"                    # 모니터링 주기 (ms)\n\n# PR 코멘트 필터링\nALLOWED_PR_BOTS=\"sonarcloud[bot],deepsource[bot]\" # 허용할 봇 목록\nEXCLUDE_PR_AUTHOR=\"true\"                          # PR 작성자 코멘트 제외\n```\n\n### GitHub Token 생성 가이드\n\n1. GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)\n2. \"Generate new token\" 클릭\n3. 필요한 권한 선택:\n   - `repo` (전체) - 저장소 접근\n   - `project` (read:project, write:project) - GitHub Projects 접근\n   - `workflow` - GitHub Actions (선택사항)\n4. 토큰 생성 후 `.env` 파일에 복사\n\n## 🚀 실행 방법\n\n### 로컬 실행\n\n#### 개발 모드\n```bash\npnpm dev\n# 또는\nnpm run dev\n```\n\n#### 프로덕션 모드\n```bash\n# 빌드\npnpm build\n\n# 실행\npnpm start\n```\n\n### Docker 실행\n\n#### 방법 1: Docker Hub 이미지 사용 (권장)\n\nDocker Hub에서 사전 빌드된 이미지를 다운로드하여 사용할 수 있습니다:\n\n```bash\n# 표준 이미지 다운로드 (Node.js 환경만 포함)\ndocker pull wlgns5376/ai-devteam:latest\n\n# All-languages 이미지 다운로드 (Python, Go, Java 등 모든 언어 환경 포함)\ndocker pull wlgns5376/ai-devteam:latest-all-languages\n```\n\n##### 이미지 태그 종류\n\n- **표준 이미지** (Dockerfile 기반):\n  - `latest`: 최신 버전\n  - `vX.Y.Z`: 특정 버전 (예: `v1.0.2`)\n  - `vX.Y`: 메이저.마이너 버전 (예: `v1.0`)\n  - `vX`: 메이저 버전 (예: `v1`)\n\n- **All-languages 이미지** (Dockerfile.all-languages 기반):\n  - `latest-all-languages`: 모든 언어 환경을 포함한 최신 버전\n  - `vX.Y.Z-all-languages`: 특정 버전 (예: `v1.0.2-all-languages`)\n  - `vX.Y-all-languages`: 메이저.마이너 버전 (예: `v1.0-all-languages`)\n  - `vX-all-languages`: 메이저 버전 (예: `v1-all-languages`)\n\n##### 이미지 선택 가이드\n\n- **표준 이미지**를 사용하는 경우:\n  - Node.js/TypeScript 프로젝트만 처리하는 경우\n  - 이미지 크기를 최소화하고 싶은 경우\n  - 빠른 컨테이너 시작이 필요한 경우\n\n- **All-languages 이미지**를 사용하는 경우:\n  - 다양한 프로그래밍 언어로 작성된 프로젝트를 처리하는 경우\n  - Python, Go, Java, Rust 등의 프로젝트를 함께 관리하는 경우\n  - AI 개발자가 여러 언어로 코드를 생성해야 하는 경우\n\n#### 방법 2: 로컬에서 Docker 이미지 빌드\n\n직접 이미지를 빌드하려면:\n\n```bash\n# 표준 이미지 빌드\ndocker build -t ai-devteam:v1.0.2 .\n\n# All-languages 이미지 빌드\ndocker build -f Dockerfile.all-languages -t ai-devteam:v1.0.2-all-languages .\n```\n\n#### Docker Compose 실행\n\n1. Docker 환경 변수 파일 생성:\n```bash\ncp .env.example .env.docker\n# .env.docker 파일 편집하여 환경 변수 설정\n```\n\n2. `docker-compose.yml` 파일 생성:\n```yaml\nversion: '3.8'\n\nservices:\n  ai-devteam:\n    # Docker Hub 이미지 사용 (다음 중 선택)\n    image: wlgns5376/ai-devteam:latest                 # 표준 이미지\n    # image: wlgns5376/ai-devteam:latest-all-languages # 모든 언어 환경 포함\n    # image: wlgns5376/ai-devteam:v1.0.2               # 특정 버전\n    # image: ai-devteam:\u003ctag\u003e                          # 로컬 빌드 이미지 사용 시\n    container_name: ai-devteam\n    user: \"1001:1001\"\n    environment:\n      - GIT_USER_NAME=your_git_username\n      - GIT_USER_EMAIL=your_email@example.com\n      - GITHUB_TOKEN=${GITHUB_TOKEN}\n      - GIT_ACCEPT_HOST_KEY=true\n    volumes:\n      - ./.env.docker:/app/.env:ro\n      - ./workspace:/workspace\n      - ai_devteam_home:/home/appuser\n    restart: unless-stopped\n    healthcheck:\n      test: [\"CMD\", \"node\", \"-e\", \"console.log('Health check: OK')\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n      start_period: 60s\n\nvolumes:\n  ai_devteam_home:\n    driver: local\n```\n\n3. Docker Compose 실행:\n```bash\ndocker-compose up -d\n```\n\n4. 로그 확인:\n```bash\ndocker-compose logs -f ai-devteam\n```\n\n## 📚 작업 흐름\n\n### 신규 작업 처리\n\n1. **Planner**가 주기적으로 GitHub Projects에서 TODO 상태의 작업을 확인\n2. **Manager**에게 작업을 전달하고 사용 가능한 Worker 확인\n3. **Worker**가 작업 디렉토리와 Git worktree 생성\n4. **Developer**(AI)에게 작업 내용 전달\n5. AI가 코드 생성 및 PR 생성\n6. 작업 상태를 IN_REVIEW로 변경\n\n### PR 리뷰 처리\n\n1. **Planner**가 IN_REVIEW 상태의 작업 모니터링\n2. PR이 승인되면 자동 병합\n3. 피드백이 있으면 Worker를 통해 AI에게 전달하여 수정\n\n## 🧪 테스트\n\n```bash\n# 단위 테스트 실행\npnpm test\n\n# 테스트 커버리지 확인\npnpm test:coverage\n\n# 테스트 감시 모드\npnpm test:watch\n```\n\n## 🏗 프로젝트 구조\n\n```\nai-devteam-node/\n├── src/\n│   ├── app/                    # 애플리케이션 핵심 로직\n│   │   ├── TaskRequestHandler.ts\n│   │   └── WorkerTaskExecutor.ts\n│   ├── services/               # 서비스 계층\n│   │   ├── planner/           # 작업 계획 관리\n│   │   ├── worker/            # Worker 관리\n│   │   ├── developer/         # AI 개발자 통합\n│   │   ├── git/               # Git 작업 관리\n│   │   ├── project-board/     # GitHub Projects 연동\n│   │   └── pull-request/      # PR 관리\n│   ├── types/                  # TypeScript 타입 정의\n│   └── index.ts               # 진입점\n├── docs/                       # 문서\n│   ├── PRD.md                 # 제품 요구사항 문서\n│   └── prd-design-flow.md     # 설계 흐름도\n├── tests/                      # 테스트 코드\n├── .env.example               # 환경 변수 예제\n├── docker-compose.yml         # Docker Compose 설정\n└── Dockerfile                 # Docker 이미지 정의\n```\n\n## 🔧 개발 가이드\n\n### 코드 스타일\n\n```bash\n# ESLint 검사\npnpm lint\n\n# 자동 수정\npnpm lint:fix\n\n# Prettier 포맷팅\npnpm format\n\n# 타입 체크\npnpm typecheck\n```\n\n### 빌드\n\n```bash\n# TypeScript 컴파일\npnpm build\n\n# 빌드 파일 정리\npnpm clean\n```\n\n### 커밋 메시지 규칙\n\n- `feat:` 새로운 기능\n- `fix:` 버그 수정\n- `docs:` 문서 수정\n- `test:` 테스트 추가/수정\n- `refactor:` 코드 리팩토링\n- `chore:` 빌드, 설정 등\n\n## 🐛 문제 해결\n\n### GitHub 토큰 권한 문제\n\nGitHub Personal Access Token에 다음 권한이 필요합니다:\n- `repo` - 저장소 접근\n- `project` - GitHub Projects 접근\n- `workflow` - GitHub Actions (선택사항)\n\n### Claude Code 인증\n\nDocker 환경에서 Claude Code를 사용하는 경우:\n1. 컨테이너에 접속: `docker exec -it ai-devteam /bin/bash`\n2. Claude 인증: `claude login`\n3. 볼륨 마운트를 통해 인증 정보 영속화\n\n### Worker 타임아웃\n\n작업이 오래 걸리는 경우 `WORKER_TIMEOUT` 환경 변수를 늘려주세요:\n```bash\nWORKER_TIMEOUT=\"1800000\"  # 30분\n```\n\n### Git worktree 오류\n\nGit 버전이 2.15 이상인지 확인:\n```bash\ngit --version\n\n# worktree 목록 확인\ncd workspace/repositories/[repo-name]\ngit worktree list\n```\n\n### 로그 확인\n\n```bash\n# 로컬 환경\ntail -f logs/ai-devteam.log\n\n# Docker 환경\ndocker-compose logs -f ai-devteam\n```\n\n## 📝 라이선스\n\nISC License - 자세한 내용은 [LICENSE.md](LICENSE.md) 파일을 참조하세요.\n\n## 🤝 기여\n\n프로젝트에 기여하고 싶으시다면 Pull Request를 보내주세요!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'feat: Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## 📞 문의\n\n이슈가 있거나 질문이 있으시면 GitHub Issues를 통해 문의해주세요.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwlgns5376%2Fai-devteam-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwlgns5376%2Fai-devteam-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwlgns5376%2Fai-devteam-node/lists"}