# Code Lesson

> 코드에서 배우기. Claude가 짠 코드의 구조, 패턴, 로직을 초등학생도 이해할 수 있게 설명해준다. '이거 설명해줘', '코드 설명', '뭘 배울 수 있어', 'code lesson', '이 코드 뭐야', '구조 설명', '어떻게 돌아가는거야' 같은 요청 시 트리거.

- Skill: `kangraemin/code-lesson` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kangraemin/code-lesson`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kangraemin/code-lesson/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kangraemin (https://skillmd.com/u/kangraemin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kangraemin/code-lesson

---


# Code Lesson

세션에서 변경된 코드를 분석해서, 유저가 기술적으로 배울 수 있는 포인트를 쉽게 설명한다.

## 핵심 원칙

**초등학생도 이해할 수 있게.**
- 전문 용어를 쓰면 반드시 비유로 풀어준다
- "이건 뭐냐면..." 톤으로 설명
- 코드 → 비유 → 왜 이렇게 하는지 순서

## 플로우

1. **변경 감지**: `git diff HEAD~1` 또는 세션에서 변경한 파일 목록 파악
2. **분석**: 변경된 코드에서 배울 만한 포인트 추출
   - 사용된 디자인 패턴
   - 새로운 라이브러리/API 사용법
   - 구조적 결정 (왜 이렇게 나눴는지)
   - 에러 처리 방식
   - 성능 관련 선택
3. **설명**: 각 포인트를 쉽게 설명
4. **기록**: `.learnings/` 디렉토리에 저장

## 설명 형식

각 학습 포인트마다:

```
### [포인트 제목]

**파일**: `경로/파일명` (라인 N-M)

**뭐냐면**: 한 줄 요약

**비유로 설명하면**: 일상적인 비유로 풀어쓴 설명

**코드에서 보면**:
```코드 조각```

**왜 이렇게 했냐면**: 이유 설명

**이걸 알면 좋은 이유**: 실무에서 어디에 쓰이는지
```

## 배울 포인트 판단 기준

기록할 것:
- 처음 등장하는 패턴/기술 (이 프로젝트에서)
- 구조적으로 중요한 결정
- 실수하기 쉬운 부분과 해결 방법
- 라이브러리의 비직관적인 사용법

기록하지 않을 것:
- 단순 변수명 변경, 포맷팅
- 이미 설명한 적 있는 패턴 (`.learnings/`에서 확인)
- 설정 파일 변경

## 저장

경로: `<프로젝트>/.learnings/YYYY-MM-DD.md`

파일 형식:
```markdown
# Code Lessons — YYYY-MM-DD

## HH:MM

### [포인트 제목]
(위 설명 형식)

---
```

날짜별 파일에 append. `.learnings/`가 없으면 생성.

`.gitignore`에 `.learnings/`가 없으면 추가할지 유저에게 물어본다.

## 유저 레벨 감지

memory에 유저 정보가 있으면 레벨에 맞춰 조절:
- 초보: 모든 개념을 비유로 설명
- 중급: 패턴 이름 + 왜 선택했는지
- 고급: 트레이드오프, 대안 비교 중심

