✨
✨
✨
✨
➤
Track A
Track B
Track C
Week 3: 첫 번째 기여 Sprint
🏃 "작은 기여부터 시작하자 — 첫 PR의 감동"
📋 PR 작성법
좋은 PR의 구조와 작성 워크플로우
📝 커밋 컨벤션
Conventional Commits와 메시지 작성
⚙ CI/CD
GitHub Actions와 파이프라인 이해
🔍 코드 리뷰
Peer Review 실습과 피드백
AI Open Source Impact (AIOI) · 2026
02
✨
🎯 이번 주 학습 목표
Week 3에서 달성할 핵심 목표 3가지
🏆 목표 1
멘토의 가이드를 받아 첫 번째 Pull Request를 생성한다
Draft PR도 OK! 완벽하지 않아도 시작이 중요
💬 목표 2
오픈소스 커뮤니케이션 에티켓과 PR 작성법을 익힌다
영어 PR 작성, 이슈 코멘트 연습
🔬 목표 3
코드 리뷰를 주고받는 경험을 한다
건설적 피드백 주기와 받기 실습
03
✨
📅 멘토링 세션 구성
온라인 화상회의 1시간 + 자기주도 Sprint 2시간
| 시간 | 내용 | 세부사항 |
| 15분 | 진척 점검 | 팀별 이슈 선정 현황, 기여 계획 리뷰 |
| 30분 | PR 작성 워크숍 | 좋은 PR의 구조, 커밋 메시지 컨벤션, CI/CD 파이프라인 이해 |
| 15분 | 코드 리뷰 실습 | Peer Review 실습, 건설적 피드백 방법 |
💡 Sprint 활동 (2시간): 멘토링 후 각자 이슈 해결 → PR 생성 → 팀원 리뷰 요청
04
✨
📊 진척 점검
Week 2 과제 확인 — 지금 어디에 있나요?
✅ 완료 확인
이슈 1개 선정 완료?
기여 계획서 제출 완료?
프로젝트 아키텍처 분석 완료?
타겟 코드 영역 AI로 분석?
🚨 미완료 시
멘토에게 바로 도움 요청
더 작은 이슈로 타겟 변경 고려
문서/번역 기여부터 시작
팀원과 페어 프로그래밍
🚀 다음 단계
이제 실제 코드를 작성할 시간!
첫 PR 생성이 이번 주 목표
Draft PR도 OK — 완벽할 필요 없음
코드 리뷰를 통해 함께 성장
05
✨
🔄 PR 워크플로우 전체 흐름
Fork → Branch → Commit → Push → PR → Review → Merge
Fork
원본 저장소를 내 계정에 복제
→
Branch
기능별 브랜치 생성
→
Commit
의미 있는 단위로 커밋
→
Push
내 Fork에 푸시
→
PR
원본에 Pull Request 생성
Review
메인테이너 리뷰 & 피드백
→
Revise
피드백 반영 & 수정
→
Merge!
🎉 기여가 반영됨
06
🔌 Fork & Clone 셋업
기여를 위한 Git 환경 구성
# 1. GitHub에서 Fork 버튼 클릭 (웹에서)
# 2. Fork한 저장소 클론
git clone https://github.com/MY_USERNAME/project.git
cd project
# 3. 원본 저장소를 upstream으로 추가
git remote add upstream https://github.com/ORIGINAL_OWNER/project.git
# 4. upstream 확인
git remote -v
# origin https://github.com/MY_USERNAME/project.git (fetch)
# upstream https://github.com/ORIGINAL_OWNER/project.git (fetch)
# 5. 최신 코드 동기화
git fetch upstream
git merge upstream/main
⚠ 주의: 항상 upstream/main에서 새 브랜치를 생성하세요. main 브랜치에서 직접 작업하지 마세요!
07
✨
🌴 브랜치 전략
기능별 브랜치를 만들어 작업하세요
# 기능 브랜치 생성
git checkout -b fix/issue-123-typo-in-readme
git checkout -b feat/add-korean-translation
git checkout -b docs/update-contributing-guide
# 브랜치 네이밍 컨벤션
# <type>/<short-description>
# fix/ - 버그 수정
# feat/ - 새 기능
# docs/ - 문서 수정
# test/ - 테스트 추가
# refactor/ - 리팩토링
✅ 좋은 예시
fix/issue-456-null-check
feat/add-streaming-support
docs/translate-readme-to-korean
❌ 나쁜 예시
my-changes (설명이 없음)
update (무엇을 업데이트?)
fix (어떤 버그를 수정?)
08
➤
📋 좋은 PR의 구조
메인테이너가 이해하기 쉬운 PR을 작성하세요
📝 제목 (Title)
간결하고 명확하게
변경 유형을 포함
예: "Fix null pointer in tokenizer"
예: "Add Korean translation for README"
📄 본문 (Description)
What: 무엇을 변경했는가
Why: 왜 이 변경이 필요한가
How: 어떻게 해결했는가
관련 이슈 번호 참조
✅ 체크리스트
테스트 통과 확인
기존 코드 스타일 준수
CONTRIBUTING.md 가이드 확인
스크린샷/GIF 첨부 (UI 변경 시)
09
✨
🎯 PR 제목 작성법
첫인상을 결정하는 PR 제목 — 명확하고 간결하게!
| ✅ 좋은 PR 제목 | ❌ 나쁜 PR 제목 |
| Fix: handle null case in tokenizer decode() | fixed bug |
| Add Korean translation for getting-started.md | translation |
| feat: add streaming support for chat endpoint | update endpoint |
| test: add unit tests for vector search module | tests |
| docs: update installation guide for Python 3.12 | docs update |
💡 팁: 프로젝트의 기존 PR 제목 스타일을 참고하세요. Conventional Commits를 따르는 곳이 많습니다.
10
📄 PR 설명 템플릿
프로젝트마다 다르지만, 이 구조를 기본으로 사용하세요
## Summary
Fixes #123. Handle null case in tokenizer decode() method.
## Changes
- Added null check before calling decode() in `src/tokenizer.py`
- Added unit test for null input case
- Updated docstring to document nullable behavior
## Why
When input text is empty, the tokenizer throws an unhandled
NullPointerError. This fix adds a proper guard clause.
## Test Plan
- [x] Existing tests pass
- [x] New test for null input added
- [x] Manual test with empty string input
## Related Issues
Closes #123
11
✨
📝 Conventional Commits
많은 오픈소스가 따르는 커밋 메시지 규격
# 기본 형식
<type>(<scope>): <description>
# 예시
feat(tokenizer): add support for BPE tokenization
fix(api): handle timeout error in streaming endpoint
docs(readme): add Korean installation guide
test(vector): add unit tests for cosine similarity
chore(deps): bump transformers to 4.45.0
refactor(pipeline): simplify inference flow
style(ui): fix alignment in chat component
ci(actions): add Python 3.12 to test matrix
📚 Type 종류
feat: 새 기능 추가
fix: 버그 수정
docs: 문서 변경
test: 테스트 추가/수정
chore: 빌드/의존성 변경
refactor: 기능 변경 없는 코드 개선
💡 팁
scope는 선택 사항 (모듈명)
description은 명령형으로 작성
"added" 대신 "add" 사용
50자 이내로 작성
첫 글자 소문자
마침표 없이
12
💬 커밋 메시지 실전 예시
실제 AI 오픈소스 프로젝트에서 볼 수 있는 커밋 메시지
| 프로젝트 | 커밋 메시지 예시 | 유형 |
| LangChain | feat(core): add retry logic to LLM calls | feat |
| Transformers | fix: handle empty input in AutoTokenizer | fix |
| Dify | docs: translate workflow guide to Korean | docs |
| vLLM | test: add benchmark for batched inference | test |
| MCP SDK | feat(server): add streaming tool response | feat |
| CrewAI | refactor: simplify agent task delegation | refactor |
🔎 기여하려는 프로젝트의 git log --oneline을 확인하여 스타일을 파악하세요
13
✨
🔬 커밋 모범 사례
하나의 커밋 = 하나의 논리적 변경
✅ 좋은 커밋 습관
하나의 커밋에 하나의 변경만
관련 없는 변경을 섞지 않기
커밋 전 git diff로 확인
의미 있는 단위로 자주 커밋
WIP 커밋은 squash로 정리
❌ 나쁜 커밋 습관
"fix" 한 커밋에 10개 파일 변경
버그 수정 + 새 기능 + 리팩토링 혼합
"WIP" 커밋 그대로 PR에 포함
빈 커밋 메시지
거대한 하나의 커밋 (Mega Commit)
# 커밋 정리 (squash) - PR 전 정리
git rebase -i HEAD~3 # 최근 3개 커밋 합치기
# pick → squash 또는 fixup으로 변경
14
➤
⚙ CI/CD 파이프라인 이해
PR을 올리면 자동으로 실행되는 검증 프로세스
PR 생성
코드 변경 제출
→
CI 트리거
자동 빌드 시작
→
Lint & Format
코드 스타일 검사
→
Test
단위/통합 테스트
→
✅ / ❌
통과 또는 실패
🛠 주요 CI 도구
GitHub Actions — 가장 많이 사용
CircleCI — 엔터프라이즈 인기
Jenkins — 자체 호스팅 CI
GitLab CI — GitLab 내장
💡 알아두세요
CI가 통과해야 Merge 가능
CI 실패 시 로그를 확인하세요
로컬에서 먼저 테스트 실행 후 PR
CI 설정은 .github/workflows/
15
🛠 GitHub Actions 기초
대부분의 AI 오픈소스가 GitHub Actions를 사용합니다
# .github/workflows/ci.yml 예시
name: CI
on:
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: pip install -e ".[dev]"
- run: pytest tests/ -v
- run: ruff check . # 린트 검사
- run: ruff format --check . # 포맷 검사
🔎 PR 페이지 하단 "Checks" 탭에서 CI 결과를 확인할 수 있습니다
16
✨
🔎 자주 만나는 CI 검사
AI 오픈소스 프로젝트에서 흔히 설정된 CI 체크들
| 검사 항목 | 도구 | 실패 시 대응 |
| Lint | ruff, flake8, eslint | ruff check --fix . 실행 |
| Format | ruff format, black, prettier | ruff format . 실행 후 재커밋 |
| Test | pytest, jest, cargo test | 실패 테스트 로그 확인 후 코드 수정 |
| Type Check | mypy, pyright, tsc | 타입 힌트 추가/수정 |
| Build | make, npm build, cargo | 빌드 에러 확인 후 수정 |
| Coverage | codecov, coveralls | 테스트 커버리지 미달 시 테스트 추가 |
17
🔧 CI 실패 해결하기
CI가 실패해도 당황하지 마세요 — 로그를 읽으면 해결됩니다
1. 로그 확인
PR → Checks 탭 → Details
→
2. 에러 분석
실패 원인 파악
→
3. 로컬 수정
로컬에서 문제 해결
→
4. Push
수정 후 Push → CI 재실행
# 로컬에서 CI와 동일한 검사 실행하기
# Python 프로젝트
pip install -e ".[dev]"
ruff check . --fix # 린트 자동 수정
ruff format . # 포맷 자동 수정
pytest tests/ -v # 테스트 실행
# Node.js 프로젝트
npm install
npm run lint -- --fix # 린트 자동 수정
npm run format # 포맷 자동 수정
npm test # 테스트 실행
18
✨
🤖 AI로 CI 문제 해결하기
💬 CI 에러 분석
"이 CI 에러 로그를 분석해줘"
"왜 pytest가 실패하는지 찾아줘"
"lint 에러를 수정해줘"
🛠 자동 수정
"ruff 린트 에러를 모두 수정해줘"
"타입 힌트를 추가해줘"
"실패한 테스트를 분석하고 수정해줘"
💡 예방
"pre-commit hook을 설정해줘"
"CI와 동일한 검사를 로컬에서 실행할 수 있게 설정해줘"
# Claude Code로 CI 에러 해결
> "GitHub Actions CI가 실패했어. 에러 로그를 보고 수정해줘."
> "pre-commit hook을 추가해서 push 전에 lint를 자동 실행해줘."
19
➤
🔍 코드 리뷰의 기본
오픈소스에서 코드 리뷰는 학습의 최고 기회입니다
📚 코드 리뷰란?
PR 코드를 다른 개발자가 검토하는 과정
버그 발견, 코드 품질 향상
지식 공유와 팀 학습의 기회
오픈소스 문화의 핵심
🎓 리뷰의 가치
메인테이너의 코딩 스타일 학습
프로젝트 아키텍처 이해 심화
베스트 프랙티스 체득
커뮤니케이션 능력 향상
20
✨
🔍 리뷰에서 확인할 것
팀원 PR을 리뷰할 때 체크해야 할 포인트
| 카테고리 | 확인 사항 | 예시 |
| 정확성 | 로직이 올바른가? | 엣지 케이스 처리, off-by-one 에러 |
| 가독성 | 코드가 이해하기 쉬운가? | 변수명, 함수명, 주석의 적절성 |
| 일관성 | 프로젝트 스타일과 일치하는가? | 네이밍 규칙, 코드 포맷 |
| 보안 | 보안 취약점은 없는가? | 입력 검증, API 키 노출, SQL 인젝션 |
| 성능 | 성능 이슈는 없는가? | 불필요한 루프, N+1 쿼리 |
| 테스트 | 테스트가 충분한가? | 엣지 케이스 테스트, 커버리지 |
21
💬 건설적 피드백 주기
좋은 코드 리뷰는 사람이 아닌 코드에 집중합니다
✅ 좋은 피드백
"이 부분에서 null 체크를 추가하면 안전할 것 같아요"
"nit: 변수명을 userList에서 users로 변경하면 어떨까요?"
"이 접근이 좋네요! 한 가지 제안이 있는데..."
"궁금한 점: 이 로직을 선택한 이유가 있나요?"
❌ 나쁜 피드백
"이건 틀렸음" (대안 없는 비판)
"왜 이렇게 했어?" (공격적 톤)
"다시 작성해" (건설적이지 않음)
"LGTM" (아무 리뷰 없이 승인)
💡 리뷰 코멘트 접두어: nit: (사소한 제안), suggestion: (개선안), question: (질문), blocker: (반드시 수정 필요)
22
✨
🙌 피드백 받기
피드백은 공격이 아닌 성장의 기회입니다
💪 마인드셋
피드백은 "코드"에 대한 것, "나"에 대한 것이 아님
메인테이너는 프로젝트를 지키려는 것
더 나은 코드를 만드는 협업 과정
학습의 가장 좋은 기회!
📝 대응 방법
모든 코멘트에 답변 달기
동의하면 수정 후 "Done" or "Fixed"
동의하지 않으면 근거를 가지고 토론
수정 후 "Ready for review" 재요청
💬 응답 예시
"좋은 지적이네요! 수정했습니다."
"감사합니다. 이 부분은 X 때문에 이렇게 했는데, Y 방식으로 변경하겠습니다."
"이해했습니다. 한 가지 궁금한 점이 있는데..."
23
👥 팀 내 Peer Review 실습
팀원과 함께 코드 리뷰를 연습합시다
Step 1
Draft PR 생성
→
Step 2
팀원에게 리뷰 요청
→
Step 3
코멘트 작성
→
Step 4
피드백 반영
→
Step 5
Approve!
🎯 실습 규칙
최소 2개 이상의 코멘트 남기기
1개는 긍정적 피드백 (좋은 점)
1개는 개선 제안 (nit: 또는 suggestion:)
코멘트 후 "Changes requested" 또는 "Approved"
💡 AI 활용 팁
Claude Code로 "이 PR의 코드를 리뷰해줘"
CodeRabbit 봇으로 자동 리뷰 (오픈소스 무료)
AI 리뷰를 참고하되, 최종 판단은 사람이
PR-Agent(Qodo)로 오픈소스 PR 리뷰 자동화
24
✨
Track A Sprint 가이드
AI로 기존 오픈소스에 기여하기 — 첫 PR 전략
🐛 버그 수정 PR
Claude Code로 Good First Issue 분석
"이 이슈의 원인과 해결 방향을 분석해줘"
관련 코드 탐색 → 수정안 작성
테스트 추가 후 PR 생성
📜 문서/번역 PR
README, CONTRIBUTING 한국어 번역
API 문서 개선, 예제 추가
Copilot으로 번역 초안 작성
네이티브 체크 후 PR 제출
🔬 테스트 추가 PR
AI로 테스트 코드 자동 생성
테스트 커버리지 미비 영역 발견
Qodo Cover Agent 활용
엣지 케이스 테스트 추가
25
5단계 워크플로우: 이슈 발견 → PR 제출
# Step 1: 프로젝트 클론 & Claude Code 시작
git clone https://github.com/MY_USERNAME/langchain.git
cd langchain && claude
# Step 2: 코드베이스 이해
> "이 프로젝트의 전체 구조를 분석해줘. 코드 수정은 하지 마."
> /init # CLAUDE.md 생성
# Step 3: 이슈 분석
> "GitHub 이슈 #12345를 분석해줘. 관련 코드를 찾아줘."
# Step 4: 수정 & 테스트
> "이 버그를 수정하고 테스트를 추가해줘."
> "기존 테스트가 모두 통과하는지 확인해줘."
# Step 5: PR 생성
> "변경 사항을 커밋하고 PR을 생성해줘. 이슈 #12345를 참조해줘."
# 또는: /create-pr
26
✨
Track A AI로 테스트 생성
테스트 커버리지 향상은 입문자에게 좋은 기여 유형!
🔬 테스트 도구
Qodo Cover Agent — Meta TestGen-LLM 최초 오픈소스 구현
Claude Code — "이 함수의 테스트를 작성해줘"
Copilot — 테스트 자동 완성
✅ 성과 사례
OpenObserve: AI로 700+ 테스트 작성
플레이키 테스트 85% 감소
분석 시간 6-10배 단축
# Claude Code로 테스트 커버리지 분석
> "이 프로젝트의 테스트 커버리지를 분석해줘. 테스트가 없는 함수를 찾아줘."
> "src/tokenizer.py의 decode() 함수에 대한 pytest 테스트를 작성해줘."
27
Track A 문서 번역 PR 가이드
한국어 번역은 진입 장벽이 낮은 기여의 시작
⚠ AI 번역 도구(Tinbox, LLM)로 초안을 작성하되, 반드시 사람이 검수한 후 PR을 올리세요!
28
✨
Track B Sprint 가이드
기존 오픈소스에 AI 기능 추가하기 — 첫 통합 PR
💬 자연어 인터페이스
CLI 도구에 자연어 명령 추가
DB 도구에 자연어→SQL 변환
LLM API 연동 (OpenAI/Claude)
API 키 관리 & 보안 고려
29
Track B AI SDK 통합 패턴
기존 앱에 AI 기능을 추가할 때 사용하는 SDK들
| SDK | 언어 | 특징 | 적합한 프로젝트 |
| Vercel AI SDK | TypeScript | 18+ 모델 프로바이더, SSE 스트리밍, AI Gateway | Next.js, React 앱 |
| LangChain | Python/JS | LLM 앱 표준, LCEL 파이프라인, 도구 호출 | RAG, Agent 앱 |
| Spring AI | Java | 1.0 GA, @Tool 어노테이션, MCP 지원 | Java/Spring Boot 앱 |
| OpenAI SDK | Python/JS | 가장 범용적인 LLM API 클라이언트 | 모든 유형 |
💡 프로젝트의 기술 스택에 맞는 SDK를 선택하세요. Python이면 LangChain, JS/TS면 Vercel AI SDK!
30
✨
Track B RAG Q&A 구축 예시
문서 사이트에 AI Q&A 챗봇을 추가하는 실전 예시
1. 문서 수집
마크다운 파일 로드
→
2. 임베딩
텍스트 → 벡터 변환
→
3. 저장
벡터 DB에 저장
→
4. 검색
유사 문서 검색
→
5. 생성
LLM으로 답변 생성
# Python + LangChain RAG 간략 예시
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain.chains import RetrievalQA
# 벡터 DB 준비 (문서 임베딩 후 저장)
vectordb = Chroma.from_documents(docs, OpenAIEmbeddings())
# RAG 체인 구성
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o-mini"),
retriever=vectordb.as_retriever()
)
# 질의
answer = qa_chain.invoke("How do I install this project?")
31
➤
Track C Sprint 가이드
AI 네이티브 프로젝트 개발 — MCP 서버, Agent, AI 앱
한국 서비스 API 래핑 MCP 서버
공공데이터포털, 카카오, 네이버
Python FastMCP로 빠른 개발
KiMCP에 새 서비스 추가 PR
🤖 AI Agent 개발
CrewAI로 멀티 에이전트 시스템
LangGraph로 상태 기반 워크플로우
논문 리서치 자동화 에이전트
GitHub 이슈 분석 에이전트
32
Python FastMCP로 30분 안에 MCP 서버 만들기
# pip install fastmcp
from fastmcp import FastMCP
mcp = FastMCP("korean-weather")
@mcp.tool()
def get_weather(city: str) -> str:
"""한국 도시의 날씨 정보를 반환합니다"""
# 실제로는 기상청 API 호출
weather_data = {
"서울": "맑음, 12°C",
"부산": "구름, 15°C",
"대전": "맑음, 11°C"
}
return weather_data.get(city, f"{city}: 정보 없음")
@mcp.resource("config://app")
def get_config() -> str:
return "Korean Weather MCP Server v1.0"
# 실행: python server.py
💡 학습 리소스: Microsoft mcp-for-beginners · MCP 공식 문서
33
✨
AI 데모를 빠르게 만들어 오픈소스로 공개하기
💻 Streamlit 장점
Python만으로 웹 앱 개발
커스터마이징 유연성 높음
데이터 대시보드, 분석 앱에 최적
Streamlit Cloud 무료 배포
ML 모델 데모에 특화
이미지, 음성 등 비텍스트 입력 지원
챗봇 UI 내장 지원
Hugging Face Spaces 연동
# Streamlit PDF Q&A 챗봇 (간략)
import streamlit as st
from langchain_openai import ChatOpenAI
st.title("📚 PDF Q&A 챗봇")
uploaded = st.file_uploader("PDF 업로드", type="pdf")
question = st.text_input("질문을 입력하세요")
if st.button("답변 생성"):
# RAG 파이프라인으로 답변 생성
st.write(answer)
34
LangChain에 새로운 Tool/Loader를 추가하는 PR 가이드
1. Fork
LangChain 저장소 Fork
→
2. Tool 구현
BaseTool 상속, _run() 구현
→
3. 테스트
단위 테스트 & 통합 테스트
→
4. 문서
독스트링 & 예제 코드
→
5. PR
기여 가이드 준수
💡 PR 추천 유형
한국 서비스 API Tool (네이버, 카카오)
한국어 문서 로더 (HWP, PDF)
한국어 텍스트 분할기 개선
기존 Tool 버그 수정 / 성능 개선
📚 참고 사항
LangChain은 커뮤니티 패키지 환영
langchain-community 패키지에 추가
CONTRIBUTING.md 반드시 숙지
기존 Tool 코드 패턴 참고
35
✨
🌐 오픈소스 커뮤니케이션 에티켓
글로벌 개발자 커뮤니티에서의 소통 규칙
✅ DO
이슈/PR 전에 기존 토론 검색
명확하고 구체적으로 설명
재현 가능한 정보 제공
감사와 존중의 표현 사용
피드백에 신속하게 응답
CONTRIBUTING.md 가이드 준수
❌ DON'T
"아직 안 됐나요?"라고 재촉하기
이슈에 "+1"만 코멘트하기
여러 이슈를 하나에 섞기
요청 없이 @멘션하기
부정적/공격적 어조 사용
AI 생성 코드를 무검증 제출
36
🇬🇧 영어 커뮤니케이션 팁
영어가 부담스러워도 괜찮아요 — 패턴을 익히면 됩니다!
| 상황 | 영어 표현 예시 |
| 이슈 보고 | "I found a bug in X. Steps to reproduce: 1... 2... 3... Expected: ... Actual: ..." |
| PR 설명 | "This PR fixes #123 by adding a null check in decode(). I also added tests for this case." |
| 피드백 수용 | "Great point! I've updated the code accordingly. Please take another look." |
| 질문하기 | "I have a question about the expected behavior here. Should X return null or throw?" |
| 도움 요청 | "I'm working on #123 but I'm stuck on X. Could you point me in the right direction?" |
| 감사 표현 | "Thank you for the detailed review! I really appreciate your feedback." |
💡
Claude Code에 "이 PR 설명을 영어로 작성해줘"라고 요청하면 자연스러운 영어 PR을 생성해줍니다!
37
✨
💬 이슈 코멘트 모범 사례
작업 시작 전, 중, 후에 이슈에 업데이트하세요
🏁 작업 시작 시
"I'd like to work on this issue. I'm planning to [접근 방식]. Could you assign it to me?"
이미 누가 작업 중인지 확인!
🔧 진행 중
"Update: I've identified the root cause. It's in [파일명]. Working on a fix."
막힌 점이 있으면 공유
✅ PR 생성 시
"I've opened a PR #456 to fix this. Please take a look when you have a chance."
이슈와 PR을 연결
38
➤
⚠ 흔한 PR 실수
첫 PR에서 피해야 할 실수들 — 미리 알아두세요!
| 실수 | 해결책 |
| main 브랜치에서 직접 작업 | 기능 브랜치를 만들어서 작업하세요 |
| 너무 큰 PR (파일 20개 이상 변경) | 작은 단위로 나눠서 여러 개의 PR을 만드세요 |
| 관련 없는 변경 포함 (포맷팅 + 버그 수정) | 하나의 PR = 하나의 목적 |
| 테스트 없이 코드 변경 | 변경에 맞는 테스트를 반드시 추가하세요 |
| PR 설명이 비어 있거나 불충분 | What/Why/How 구조로 설명하세요 |
| CONTRIBUTING.md를 읽지 않음 | PR 전에 반드시 기여 가이드를 숙지하세요 |
| AI 생성 코드를 검증 없이 제출 | AI 코드를 이해하고 검증한 후 제출 |
39
✨
📝 이번 주 목표 & 과제
Week 3 필수 & 선택 과제
🎯 필수 과제
첫 번째 PR 생성 (Draft PR도 OK!)
팀원 PR 1개 이상 코드 리뷰 참여
이슈 코멘트에 진행 상황 업데이트
⭐ 선택 과제
두 번째 이슈 탐색 시작
팀원 PR 추가 리뷰
AI 도구 활용 경험 Discord에 공유
🏆 배지 획득 조건
🎯 First PR — 첫 PR 제출
🔎 Code Reviewer — 3개 이상 리뷰
🎉 Merged! — PR merge 성공
📅 제출 마감: 다음 멘토링 세션 전까지 · GitHub PR 링크를 Discord 팀 채널에 공유
40
✨
✨
➤
Q&A & 참고 자료
궁금한 점이 있으면 언제든 질문하세요!
📖 학습 자료
Conventional Commits (conventionalcommits.org)
GitHub Flow Guide
First Contributions (firstcontributions.github.io)
오픈소스 기여 가이드 (opensource.guide)
💬 소통 채널
Discord 팀 채널
멘토 Office Hour
#code-review 채널
#ai-tools-tips 채널
🚀 다음 주 예고: Week 4 — 기여 심화 Sprint · 피드백 반영과 심화 기여!