낯선 주제를 3단계로 설명한다. [1] 똑똑한 초보자 대상 실제 사례와 오해 설명 [2] 초등학생도 이해할 수 있는 예시/비유 [3] 소크라테스식 문답법과 제1원리 사고 **자동 트리거 조건** (사용자가 다음과 같이 말할 때 자동 실행): [이해도 부족 표현 - 한국어] [이해도 부족 표현 - 영어] [질문 형태] [학습 요청]
낯선 주제를 3단계로 체계적으로 설명하여 깊은 이해를 유도한다.
/teach-3-levels <topic> [--level=N] [--focus=AREA]
| 파라미터 | 설명 | 예시 |
|---|---|---|
topic | 설명할 주제 | "dependency injection", "REST API" |
--level=N | 특정 레벨만 실행 (1, 2, 3) | --level=2 |
--focus=AREA | 집중 영역 | --focus="보안 측면" |
대상: 지적 능력은 있으나 해당 분야를 처음 접하는 사람
구성 요소:
| 요소 | 설명 | 예시 (Dependency Injection) |
|---|---|---|
| 핵심 정의 | 한 문장으로 본질 설명 | "객체가 필요한 것을 외부에서 받는 패턴" |
| 실제 사례 | 현업에서의 적용 예 | "테스트 시 Mock 객체 주입" |
| 왜 필요한가 | 문제-해결 관점 설명 | "강결합 → 테스트 불가 문제 해결" |
| 흔한 오해 | 자주 발생하는 오해 | "DI = DI 프레임워크 필수" |
| 오해의 원인 | 왜 그런 오해가 생기는지 | "Spring 등 프레임워크와 함께 배워서" |
출력 형식:
## Level 1: 똑똑한 초보자를 위한 설명
### 핵심 정의
[주제]는 **[한 문장 정의]**입니다.
### 실제 사례
실무에서 [주제]는 다음과 같이 사용됩니다:
1. **[사례 1]**: [설명]
2. **[사례 2]**: [설명]
3. **[사례 3]**: [설명]
### 왜 필요한가?
[주제]가 해결하는 문제:
| 문제 (Before) | 해결책 (After) |
|--------------|---------------|
| [문제점 1] | [해결 방법 1] |
| [문제점 2] | [해결 방법 2] |
### 흔한 오해
많은 사람들이 [주제]에 대해 다음과 같이 오해합니다:
#### 오해 1: "[오해 내용]"
**왜 이런 오해가 생기는가?**
[원인 설명]
**실제로는:**
[올바른 이해]
#### 오해 2: "[오해 내용]"
**왜 이런 오해가 생기는가?**
[원인 설명]
**실제로는:**
[올바른 이해]
대상: 사전 지식이 전혀 없는 사람
구성 요소:
| 요소 | 설명 | 방법 |
|---|---|---|
| 일상 비유 | 익숙한 대상에 비유 | 레고, 요리, 학교 |
| 시각적 예시 | 그림으로 설명 가능한 표현 | 블록, 화살표, 상자 |
| 단계별 분해 | 복잡한 것을 단순 단계로 | 1→2→3 순서 |
| 반복과 변형 | 같은 개념을 다른 예시로 | 예시 3개 이상 |
비유 선택 가이드:
| 기술 개념 | 좋은 비유 |
|---|---|
| API | 레스토랑 메뉴판 (주문→요리→배달) |
| 변수 | 이름표가 붙은 상자 |
| 함수 | 레시피 (재료→조리→완성) |
| 클래스 | 쿠키틀 (틀 하나로 여러 쿠키) |
| 상속 | 가족 (부모→자녀 특성 물려받음) |
| 인터페이스 | 리모컨 (버튼만 알면 TV 조작 가능) |
| 의존성 주입 | 레고 블록 (조립식으로 교체 가능) |
| 캐시 | 자주 쓰는 연락처를 즐겨찾기에 |
| 데이터베이스 | 정리된 서랍장 |
| Git | 게임 세이브 포인트 |
출력 형식:
## Level 2: 초등학생도 이해할 수 있는 설명
### 비유로 이해하기
[주제]를 [비유 대상]에 비유해볼게요.
**상황 설정:**
[친숙한 상황 묘사]
**비유 적용:**
[기술 개념을 비유에 대입]
### 그림으로 보기
┌─────────────┐ ┌─────────────┐ │ [요소 1] │ ──────▶ │ [요소 2] │ └─────────────┘ └─────────────┘ │ │ ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ [결과 1] │ │ [결과 2] │ └─────────────┘ └─────────────┘
### 단계별로 이해하기
**1단계**: [첫 번째 이해할 것]
- [설명]
**2단계**: [두 번째 이해할 것]
- [설명]
**3단계**: [세 번째 이해할 것]
- [설명]
### 다른 예시로 다시 보기
**예시 1: [상황 1]**
[설명]
**예시 2: [상황 2]**
[설명]
**예시 3: [상황 3]**
[설명]
대상: 스스로 깨달음을 얻고 싶은 학습자
구성 요소:
| 요소 | 설명 | 목적 |
|---|---|---|
| 유도 질문 | 답을 생각하게 하는 질문 | 능동적 사고 유발 |
| 반박 질문 | 가정을 흔드는 질문 | 깊은 이해 유도 |
| 제1원리 | 가장 기본이 되는 원리 | 근본 이해 |
| 연결 질문 | 다른 개념과 연결 | 통합적 사고 |
질문 유형:
| 유형 | 목적 | 예시 |
|---|---|---|
| 명료화 | 의미 확인 | "~라는 것은 무슨 뜻일까요?" |
| 가정 탐구 | 숨은 가정 발굴 | "왜 ~라고 가정하죠?" |
| 증거 요청 | 근거 확인 | "어떻게 알 수 있죠?" |
| 관점 전환 | 다른 시각 제시 | "반대로 생각하면?" |
| 결과 탐구 | 영향 분석 | "그러면 어떻게 될까요?" |
| 메타 질문 | 질문에 대한 질문 | "왜 이 질문이 중요할까요?" |
출력 형식:
## Level 3: 소크라테스식 문답법
### 시작 질문
먼저 생각해볼 것이 있습니다.
> **Q1**: [기본 질문]
잠시 생각해보세요...
---
### 탐구 과정
#### 가정 탐구
> **Q2**: [가정 질문]
많은 사람들이 [흔한 가정]이라고 생각하는데요,
> **Q3**: 정말 그럴까요? [반박 질문]
---
#### 제1원리로 돌아가기
모든 것을 지우고 처음부터 생각해봅시다.
> **Q4**: [주제]의 가장 본질적인 목적은 무엇일까요?
힌트: [힌트 제공]
[제1원리 설명]
---
#### 연결하기
> **Q5**: [주제]와 [관련 개념]의 공통점은 무엇일까요?
[연결 설명]
---
### 핵심 깨달음
이 과정을 통해 도달한 핵심:
1. **[깨달음 1]**: [설명]
2. **[깨달음 2]**: [설명]
3. **[깨달음 3]**: [설명]
---
### 스스로 확인해보기
다음 질문에 답해보세요:
1. [확인 질문 1]
2. [확인 질문 2]
3. [확인 질문 3]
답을 말로 설명할 수 있다면, 이해한 것입니다.
제1원리 사고(First Principles Thinking): 기존 지식이나 가정을 제거하고, 가장 기본적인 진리에서부터 논리를 구축하는 방법.
적용 단계:
1. 문제 정의: "무엇을 이해하려 하는가?"
2. 가정 제거: "당연하다고 생각하는 것들은 무엇인가?"
3. 기본 원리: "가장 확실하게 알 수 있는 것은 무엇인가?"
4. 재구성: "기본 원리에서 어떻게 결론에 도달하는가?"
예시 (REST API 제1원리):
## 제1원리로 REST API 이해하기
### 1. 문제 정의
"서로 다른 컴퓨터가 어떻게 소통할까?"
### 2. 가정 제거
- "HTTP를 써야 한다" → 꼭 그런가?
- "JSON 형식이어야 한다" → 꼭 그런가?
- "REST가 최선이다" → 꼭 그런가?
### 3. 기본 원리
- 컴퓨터 A가 컴퓨터 B에게 요청을 보낸다
- 요청에는 "무엇을", "어떻게" 정보가 필요하다
- 응답으로 결과를 받는다
### 4. 재구성
이 기본 원리에서 REST는 다음을 추가:
- "무엇을" = URL (리소스 주소)
- "어떻게" = HTTP 메서드 (GET, POST, PUT, DELETE)
- 상태를 서버에 저장하지 않음 (Stateless)
→ REST는 "웹의 기존 규칙을 활용한 소통 방식"
/teach-3-levels "Dependency Injection"
/teach-3-levels "Git" --level=2
/teach-3-levels "마이크로서비스" --focus="장단점"
# [주제] 3단계 설명
---
## Level 1: 똑똒한 초보자를 위한 설명
[Level 1 내용]
---
## Level 2: 초등학생도 이해할 수 있는 설명
[Level 2 내용]
---
## Level 3: 소크라테스식 문답법
[Level 3 내용]
---
## 요약
| 레벨 | 핵심 포인트 |
|------|------------|
| L1 | [핵심 1문장] |
| L2 | [핵심 비유] |
| L3 | [핵심 질문] |
## 더 알아보기
- [관련 주제 1]
- [관련 주제 2]
- [추천 자료]
이 스킬은 사용자의 이해도가 낮다고 판단될 때 자동으로 트리거됩니다.
| # | 트리거 표현 | 변형 | 예시 |
|---|---|---|---|
| 1 | "잘 모르겠어" | 모르겠어, 잘 모르겠는데, 모르겠음 | "이 부분 잘 모르겠어" |
| 2 | "이해가 안 돼" | 이해 안 돼, 이해가 안 됨, 이해 못 하겠어 | "async/await 이해가 안 돼" |
| 3 | "무슨 말이야" | 무슨 말인지, 뭔 말이야, 무슨 소리야 | "콜백이 무슨 말이야?" |
| 4 | "뭔 소리야" | 뭔 소린지, 무슨 소리, 뭔 얘기야 | "Promise가 뭔 소리야" |
| 5 | "헷갈려" | 헷갈리네, 헷갈림, 혼동돼 | "상속이랑 합성이 헷갈려" |
| 6 | "혼란스러워" | 혼란스럽네, 혼란스럼, 혼동스러워 | "아키텍처가 혼란스러워" |
| 7 | "어려워" | 어렵다, 어렵네, 너무 어려워 | "타입스크립트 어려워" |
| 8 | "복잡해" | 복잡하다, 복잡하네, 너무 복잡해 | "이 코드 복잡해" |
| 9 | "이게 뭐야" | 이건 뭐지, 이게 뭔지, 뭐지 이건 | "데코레이터 이게 뭐야" |
| 10 | "처음 들어봐" | 처음 듣는데, 첨 들어봄, 처음 봐 | "DI 처음 들어봐" |
| 11 | "생소해" | 생소하네, 생소한데, 낯선데 | "이 패턴 생소해" |
| 12 | "낯설어" | 낯설다, 낯선, 익숙하지 않아 | "함수형 프로그래밍 낯설어" |
| 13 | "다시 설명해줘" | 다시 설명해, 한번 더 설명해, 다시 알려줘 | "이 부분 다시 설명해줘" |
| 14 | "쉽게 설명해줘" | 쉽게 알려줘, 쉽게 풀어서, 간단하게 | "REST API 쉽게 설명해줘" |
| 15 | "자세히 알려줘" | 자세히 설명해, 더 자세히, 상세하게 | "이 개념 자세히 알려줘" |
| # | 트리거 표현 | 변형 | 예시 |
|---|---|---|---|
| 16 | "I don't understand" | don't get it, can't understand | "I don't understand async" |
| 17 | "I'm confused" | confused about, confusing | "I'm confused about closures" |
| 18 | "What does that mean" | what's that mean, meaning of | "What does 'immutable' mean?" |
| 19 | "Could you explain" | can you explain, please explain | "Could you explain Redux?" |
| 20 | "I'm lost" | lost me, I got lost | "I'm lost on this concept" |
| 21 | "This is confusing" | too confusing, kind of confusing | "This is confusing me" |
| 22 | "Too complicated" | overly complicated, complex | "This code is too complicated" |
| 23 | "Over my head" | above my level, beyond me | "This is over my head" |
| 24 | "ELI5" | explain like I'm 5, eli5 | "ELI5 Docker" |
| 25 | "TLDR" | too long, in simple terms | "TLDR what is Kubernetes?" |
| # | 패턴 | 예시 |
|---|---|---|
| 26 | "~가 뭐야?" | "GraphQL이 뭐야?" |
| 27 | "~이 뭐지?" | "캐싱이 뭐지?" |
| 28 | "~란?" | "마이크로서비스란?" |
| 29 | "왜 ~해?" | "왜 타입스크립트 써?" |
| 30 | "어떻게 ~해?" | "어떻게 테스트 작성해?" |
| 31 | "~하는 이유가 뭐야?" | "추상화하는 이유가 뭐야?" |
| 32 | "~와 ~의 차이가 뭐야?" | "REST와 GraphQL의 차이가 뭐야?" |
| 33 | "~을 왜 써?" | "컨테이너를 왜 써?" |
| 34 | "~이 왜 필요해?" | "DI가 왜 필요해?" |
| 35 | "언제 ~해?" | "언제 상속 대신 합성 써?" |
| # | 트리거 표현 | 예시 |
|---|---|---|
| 36 | "설명해줘" | "OOP 설명해줘" |
| 37 | "알려줘" | "Git 브랜치 전략 알려줘" |
| 38 | "가르쳐줘" | "Python 가르쳐줘" |
| 39 | "초보자용으로" | "초보자용으로 설명해줘" |
| 40 | "기초부터" | "기초부터 설명해줘" |
| 41 | "처음부터" | "처음부터 알려줘" |
| 42 | "비유로 설명해줘" | "비유로 설명해줘" |
| 43 | "예시 들어줘" | "예시 들어서 설명해줘" |
| 44 | "쉬운 말로" | "쉬운 말로 설명해" |
| 45 | "왕초보" | "왕초보도 이해하게" |
| # | 트리거 표현 | 상황 |
|---|---|---|
| 46 | "?" (단독 물음표) | 이전 설명에 대한 의문 |
| 47 | "음..." / "흠..." | 이해 중 망설임 |
| 48 | "그러니까..." | 재확인 시도 |
| 49 | "맞아?" / "맞나?" | 이해 확인 |
| 50 | "그게 뭔데" | 추가 설명 요청 |
| 51 | "더 쉽게" | 난이도 낮춤 요청 |
| 52 | "아직도 모르겠어" | 반복 설명 필요 |
| 53 | "구체적으로" | 상세 설명 요청 |
| 54 | "실제로 어떻게" | 실용적 예시 요청 |
| 55 | "비전공자인데" | 배경 지식 부족 |
사용자 입력 감지
↓
트리거 키워드 매칭 (55개)
↓
현재 대화 컨텍스트 분석
↓
설명할 주제 추출
↓
/teach-3-levels 자동 실행
| 우선순위 | 조건 | 동작 |
|---|---|---|
| 1 | 명시적 호출 (/teach-3-levels) | 즉시 실행 |
| 2 | 이해도 부족 표현 + 기술 용어 | 자동 실행 |
| 3 | 질문 형태 + 기술 용어 | 자동 실행 |
| 4 | 학습 요청 | 자동 실행 |
| 5 | 컨텍스트 트리거만 | 확인 후 실행 |
| 조건 | 이유 |
|---|---|
| 사용자가 이미 전문가 수준 | 불필요한 기초 설명 방지 |
| 단순 오타/실수 표현 | 오탐 방지 |
| 이전에 같은 주제 설명 완료 | 중복 방지 |
| 코드 작성 중 | 작업 흐름 방해 방지 |
| 스킬 | 역할 |
|---|---|
| [@skills/brainstorming/SKILL.md] | 주제 탐색 전 아이디어 정리 |
| [@skills/doc-spec/SKILL.md] | 기술 명세서로 상세 학습 |
| [@skills/diagram-generator/SKILL.md] | 시각적 다이어그램 생성 |
| [@skills/convention-design/SKILL.md] | 설계 원칙 참조 |
| 날짜 | 버전 | 변경 내용 |
|---|---|---|
| 2026-01-21 | 2.0.0 | 자동 트리거 조건 55개 추가, 트리거 동작 규칙 정의 |
| 2026-01-21 | 1.0.0 | 초기 생성 |