---
name: flashcard
description: >
  강의노트에서 핵심 개념을 추출하여 질문-답 형식의 플래시카드를 생성하는 스킬.
  사용자가 "플래시카드 만들어줘", "암기카드 생성", "flashcard", "Anki 카드 만들어줘",
  "핵심 개념 정리해줘" 등을 요청할 때 사용한다.
  마크다운 파일 또는 Anki 호환 CSV로 내보낸다.
version: 0.1.0
---

# 플래시카드 생성 스킬

강의노트에서 핵심 개념을 추출하여 "질문(앞면) — 답변(뒷면)" 형식의 플래시카드를 생성한다.

## 1단계: 대상 파악

과목·주차(또는 범위)를 파악하고 강의노트를 로드한다. 여러 주차를 지정하면 모두 합쳐서 카드 생성.

## 2단계: 핵심 개념 추출

강의노트에서 카드로 만들 개념을 추출한다.

### 추출 기준

- **정의/용어**: "~란 ~이다" 패턴
- **비교/차이**: A vs B 구분이 필요한 개념
- **공식/수식**: 핵심 공식과 그 의미
- **코드 패턴**: 주요 함수/문법의 사용법과 결과
- **핵심 원리**: 작동 방식, 알고리즘 단계

### 카드 유형

| 유형 | 앞면 | 뒷면 |
|------|------|------|
| 정의 | "~은(는) 무엇인가?" | 간결한 정의 (2~3줄) |
| 비교 | "~와 ~의 차이는?" | 핵심 차이점 목록 |
| 공식 | "~를 구하는 공식은?" | 수식 + 각 변수 의미 |
| 코드 | "~를 하려면?" | 코드 + 설명 |
| 빈칸 | "~에서 ___는 ~역할을 한다" | 빈칸 답 + 보충 |

## 3단계: 카드 작성

### 작성 원칙

- 앞면(질문)은 하나의 개념만 묻는다
- 뒷면(답변)은 간결하되 충분한 정보를 포함
- 애매한 표현 금지 — 명확한 질문과 명확한 답
- 카드 수: 주차당 15~25개 (내용에 따라 조절)

### 출력 형식 1: 마크다운

```markdown
# 플래시카드 — 파이썬데이터분석 3주차

---

**Q:** 리스트 컴프리헨션이란?
**A:** 반복문과 조건문을 한 줄로 결합하여 새 리스트를 생성하는 문법
예: `[x**2 for x in range(10) if x % 2 == 0]`

---

**Q:** `map()`과 리스트 컴프리헨션의 차이는?
**A:**
- `map()`: 함수를 적용, iterator 반환, 단순 변환에 적합
- 리스트 컴프리헨션: 조건 필터링 가능, 리스트 직접 반환, 더 파이썬스러움
```

### 출력 형식 2: Anki CSV

```csv
앞면(질문)\t뒷면(답변)\t태그
리스트 컴프리헨션이란?\t반복문과 조건문을 한 줄로 결합하여 새 리스트를 생성하는 문법\t파이썬::3주차
```

- TSV(탭 구분) 형식 — Anki에서 바로 가져오기 가능
- 태그: `과목명::주차` 형식

## 4단계: 파일 저장

```python
import os

def save_flashcards(course_path, week, content, format='md'):
    note_dir = os.path.join(course_path, '강의노트')
    os.makedirs(note_dir, exist_ok=True)

    if format == 'csv':
        filename = f'{week:02d}주차-플래시카드.csv'
    else:
        filename = f'{week:02d}주차-플래시카드.md'

    filepath = os.path.join(note_dir, filename)
    with open(filepath, 'w', encoding='utf-8') as f:
        f.write(content)
    return filepath
```

## 5단계: 사용자에게 제공

- 생성된 카드 수 안내
- computer:// 링크로 파일 제공
- Anki CSV의 경우 가져오기 방법 안내:
  - Anki → 파일 → 가져오기 → 탭 구분 선택

## 전체 워크플로우

```
1. 과목·주차 파악 → 강의노트 로드
2. 핵심 개념 추출 (정의, 비교, 공식, 코드, 빈칸)
3. 질문-답변 카드 작성
4. 마크다운 또는 Anki CSV로 저장
5. 파일 링크 제공
```
