$npx -y skills add issol14/paper2code-skill --skill paper2code연구 논문(PDF/arXiv URL)을 분석하여 실행 가능한 코드로 변환합니다. 논문 복제, 알고리즘 구현, 연구 재현 요청 시 자동으로 활성화됩니다. "이 논문 구현해줘", "paper2code", "논문 코드로 변환" 등의 요청에 반응합니다.
| 1 | # Paper2Code: 연구 논문을 코드로 변환하는 AI 에이전트 |
| 2 | |
| 3 | ## 개요 |
| 4 | |
| 5 | 이 Skill은 연구 논문을 체계적으로 분석하고, 실행 가능한 코드로 변환하는 **4+2단계 파이프라인**을 실행합니다. |
| 6 | |
| 7 | **핵심 원칙**: 단순히 논문을 읽고 코드를 생성하는 것이 아니라, **구조화된 중간 표현(YAML)**을 먼저 생성한 후 코드를 작성합니다. |
| 8 | |
| 9 | --- |
| 10 | |
| 11 | ## ⚠️ 핵심 행동 제어 규칙 (CRITICAL) |
| 12 | |
| 13 | ``` |
| 14 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ |
| 15 | ⚠️ MANDATORY BEHAVIORAL RULES |
| 16 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ |
| 17 | |
| 18 | 1. 한 번에 하나의 파일만 구현 |
| 19 | 2. 파일 구현 후 확인/허락 없이 다음 파일로 진행 |
| 20 | 3. 논문 원본 사양이 항상 참조 코드보다 우선 |
| 21 | 4. 완료 전 각 Phase의 Self-Check 필수 수행 |
| 22 | 5. 모든 중간 결과는 YAML 파일로 저장 |
| 23 | |
| 24 | DO: |
| 25 | ✓ 논문에 명시된 것을 정확히 구현 |
| 26 | ✓ 간단하고 직접적인 코드 작성 |
| 27 | ✓ 작동하는 것 우선, 우아한 것은 나중 |
| 28 | ✓ 각 컴포넌트 즉시 테스트 |
| 29 | ✓ 구현 완료 후 바로 다음 파일로 이동 |
| 30 | |
| 31 | DON'T: |
| 32 | ✗ 파일 사이에 "다음 파일을 구현할까요?" 묻지 말 것 |
| 33 | ✗ 핵심 기능에 필요하지 않은 광범위한 문서화 |
| 34 | ✗ 재현에 필요하지 않은 최적화 |
| 35 | ✗ 과도한 추상화나 디자인 패턴 |
| 36 | ✗ 지시만 제공하고 실제 코드를 작성하지 않는 것 |
| 37 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ |
| 38 | ``` |
| 39 | |
| 40 | --- |
| 41 | |
| 42 | ## 입력 처리 |
| 43 | |
| 44 | ### 지원 형식 |
| 45 | 1. **arXiv URL**: `https://arxiv.org/abs/xxxx.xxxxx` 또는 `https://arxiv.org/pdf/xxxx.xxxxx.pdf` |
| 46 | 2. **PDF 파일 경로**: `/path/to/paper.pdf` |
| 47 | 3. **이미 변환된 텍스트/마크다운**: 논문 내용이 텍스트로 제공된 경우 |
| 48 | |
| 49 | ### 입력 처리 방법 |
| 50 | |
| 51 | **arXiv URL인 경우:** |
| 52 | ```bash |
| 53 | # PDF URL로 변환하여 다운로드 |
| 54 | curl -L "https://arxiv.org/pdf/xxxx.xxxxx.pdf" -o paper.pdf |
| 55 | |
| 56 | # PDF를 텍스트로 변환 (pdftotext 사용) |
| 57 | pdftotext -layout paper.pdf paper.txt |
| 58 | ``` |
| 59 | |
| 60 | **PDF 파일인 경우:** |
| 61 | ```bash |
| 62 | pdftotext -layout "/path/to/paper.pdf" paper.txt |
| 63 | ``` |
| 64 | |
| 65 | --- |
| 66 | |
| 67 | ## 파이프라인 개요 |
| 68 | |
| 69 | ``` |
| 70 | [사용자 입력: 논문 URL/파일] |
| 71 | │ |
| 72 | ▼ |
| 73 | ┌─────────────────────────────────────────────┐ |
| 74 | │ Step 0: 논문 텍스트 확보 │ |
| 75 | │ - arXiv URL → PDF 다운로드 │ |
| 76 | │ - PDF → 텍스트 변환 │ |
| 77 | └─────────────────────────────────────────────┘ |
| 78 | │ |
| 79 | ▼ |
| 80 | ┌─────────────────────────────────────────────┐ |
| 81 | │ Phase 0: 참조 코드 검색 (선택적) │ |
| 82 | │ @[05_reference_search.md] │ |
| 83 | │ 출력: reference_search.yaml │ |
| 84 | └─────────────────────────────────────────────┘ |
| 85 | │ |
| 86 | ▼ |
| 87 | ┌─────────────────────────────────────────────┐ |
| 88 | │ Phase 1: 알고리즘 추출 │ |
| 89 | │ @[01_algorithm_extraction.md] │ |
| 90 | │ 출력: 01_algorithm_extraction.yaml │ |
| 91 | └─────────────────────────────────────────────┘ |
| 92 | │ |
| 93 | ▼ |
| 94 | ┌─────────────────────────────────────────────┐ |
| 95 | │ Phase 2: 개념 분석 │ |
| 96 | │ @[02_concept_analysis.md] │ |
| 97 | │ 출력: 02_concept_analysis.yaml │ |
| 98 | └─────────────────────────────────────────────┘ |
| 99 | │ |
| 100 | ▼ |
| 101 | ┌─────────────────────────────────────────────┐ |
| 102 | │ Phase 3: 구현 계획 │ |
| 103 | │ @[03_code_planning.md] │ |
| 104 | │ 출력: 03_implementation_plan.yaml │ |
| 105 | └─────────────────────────────────────────────┘ |
| 106 | │ |
| 107 | ▼ |
| 108 | ┌─────────────────────────────────────────────┐ |
| 109 | │ Phase 4: 코드 구현 │ |
| 110 | │ @[04_implementation_guide.md] │ |
| 111 | │ 출력: 완전한 프로젝트 디렉토리 │ |
| 112 | └─────────────────────────────────────────────┘ |
| 113 | ``` |
| 114 | |
| 115 | --- |
| 116 | |
| 117 | ## 단계 간 데이터 전달 형식 |
| 118 | |
| 119 | ### Phase 1 → Phase 2 전달 |
| 120 | ```yaml |
| 121 | phase1_to_phase2: |
| 122 | algorithms_found: "[발견된 알고리즘 수]" |
| 123 | key_algorithms: |
| 124 | - name: "[알고리즘 이름]" |
| 125 | section: "[논문 섹션]" |
| 126 | complexity: "[Simple/Medium/Complex]" |
| 127 | hyperparameters_count: "[수집된 하이퍼파라미터 수]" |
| 128 | critical_equations: "[핵심 수식 번호 목록]" |
| 129 | missing_info: "[누락된 정보 목록]" |
| 130 | ``` |
| 131 | |
| 132 | ### Phase 2 → Phase 3 전달 |
| 133 | ```yaml |
| 134 | phase2_to_phase3: |
| 135 | components_count: "[식별된 컴포넌트 수]" |
| 136 | implementation_complexity: "[Low/Medium/High]" |
| 137 | key_dependencies: |
| 138 | - "[컴포넌트 A] → [컴포넌트 B]" |
| 139 | experiments_to_reproduce: |
| 140 | - "[실험 이름]: [예상 결과]" |
| 141 | success_criteria: |
| 142 | - "[구체적인 성공 기준]" |
| 143 | ``` |
| 144 | |
| 145 | ### Phase 3 → Phase 4 전달 |
| 146 | ```yaml |
| 147 | phase3_to_phase4: |
| 148 | file_order: "[구현 순서대로 파일 목록]" |
| 149 | current_file: "[현재 구현 중인 파일]" |
| 150 | completed_files: "[완료된 파일 목록]" |
| 151 | blocking_dependencies: "[해결해야 할 의존성]" |
| 152 | ``` |
| 153 | |
| 154 | --- |
| 155 | |
| 156 | ## 각 Phase 상세 |
| 157 | |
| 158 | ### Phase 0: 참조 코드 검색 (선택적) |
| 159 | @[05_reference_search.md](05_reference_search.md) 프롬프트를 사용하여: |
| 160 | - 유사 구현체 5개 검색 및 평가 |
| 161 | - 구현 품질 향상을 위한 참조 확보 |
| 162 | - **출력**: YAML 형식의 참조 목록 |
| 163 | |
| 164 | ### Phase 1: 알고리즘 추출 |
| 165 | @[01_algorithm_extraction.md](01_algorithm_extraction.md) 프롬프트를 사용하여: |
| 166 | - 모든 알고리즘, 수식, 의사코드 추출 |
| 167 | - 하이퍼파라미터와 설정값 수집 |
| 168 | - 학습 절차 및 최적화 방법 정리 |
| 169 | - **출력**: YAML 형식의 완전한 알고리즘 명세 |
| 170 | |
| 171 | ### Phase 2: 개념 분석 |
| 172 | @[02_concept_analysis.md](02_concept_analysis.md) 프롬프트를 사용하여: |
| 173 | - 논문 구조 및 섹션 매핑 |
| 174 | - 시스템 아키텍처 분석 |
| 175 | - 컴포넌트 간 관계 및 데이터 흐름 파악 |
| 176 | - 실험 및 검증 요구사항 정리 |
| 177 | - **출력**: YAML 형식의 구현 요구사항 명세 |
| 178 | |
| 179 | ### Phase 3: 구현 계획 수립 |
| 180 | @[03_code_planning.md](03_code_planning.md) 프롬프트를 사용하여: |
| 181 | - Phase 1, 2 결과를 통합 |
| 182 | - 5개 필수 섹션의 상세 구현 계획 생성: |
| 183 | 1. `file_structure`: 프로젝트 파일 구조 |
| 184 | 2. `implementation_components`: 구현할 컴포넌트 상세 |
| 185 | 3. `validation_approach`: 검증 및 테스트 방법 |
| 186 | 4. `environment_setup`: 환경 및 의존성 |
| 187 | 5. `implementation_strategy`: 단계별 구현 전략 |
| 188 | - **출력**: 완전한 YAML 구현 계획 (8000-10000자) |
| 189 | |
| 190 | ### Phase 4: 코드 구현 |
| 191 | @[04_implementation_guide.md](04_implementation_guide.md) 가이드를 따라: |
| 192 | - 계획에 따라 파일별로 코드 생성 |
| 193 | - 의존성 순서대로 구현 |
| 194 | - 각 파일은 완전하고 실행 가능해야 함 |
| 195 | - **출력**: 실행 가능한 코드베이스 |
| 196 | |
| 197 | --- |
| 198 | |
| 199 | ## 메모리 관리 |
| 200 | @[06_memory_management.md](06_memory_management.md) 가이드를 참조: |
| 201 | - 긴 논문 처리 시 컨텍스트 관 |