# Lesson 04 Prompt Engineering

> AI 에이전트 강의 패키지의 4강 — 비개발자가 본인의 모호한 프롬프트를 명확한 프롬프트로 다듬고, 모호 vs 명확 두 버전을 실제로 호출해 결과 차이를 직접 체감할 때 사용하는 30분 대화형 강의. 학습자가 가져온 프롬프트로 명확함의 5가지 요소(역할/맥락/입력/제약/출력)를 한 단계씩 적용해 본다. 사용자가 "4강 시작", "프롬프트 엔지니어링", "프롬프트 잘 쓰는 법", "에이전트가 자꾸 다른 답을 해요", "내 프롬프트 봐줘", "이 프롬프트 어떻게 다듬지", "최적의 프롬프트", "더 좋은 결과 받고 싶어요" 같은 표현을 쓰거나, 3강 끝난 후 자연스럽게 이어지는 강의에 진입하려 할 때 반드시 이 스킬을 사용한다. 단순 프롬프트 작성 도움이 아니라, 한 청크씩 게임처럼 진행되는 30분짜리 가이드형 학습 흐름이라는 점이 핵심이다.

- Skill: `matthewoong/lesson-04-prompt-engineering` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add matthewoong/lesson-04-prompt-engineering`
- Raw SKILL.md: https://api.skillmd.com/api/skills/matthewoong/lesson-04-prompt-engineering/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: Matthewoong (https://skillmd.com/u/matthewoong)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/matthewoong/lesson-04-prompt-engineering

---


# Lesson 04 — 프롬프트 엔지니어링

> 학습자가 끝나면 본인의 모호한 프롬프트를 명확한 프롬프트로 다듬고, 두 버전을 실제 호출해 결과 차이를 체감한다.

이 스킬은 *대화형 강의*입니다. 한 청크씩 따라오며 학습자가 본인의 프롬프트를 *직접 다듬어*보고, *모호 vs 명확* 두 버전을 호출 비교해 어떤 부분이 좋아졌는지 스스로 확인합니다.

---

## 0. 시작하기 전에 — 반드시 따라야 할 공통 규칙

| 문서 | 언제 참조하나 |
|---|---|
| `_shared/teaching-protocol.md` | 이론 청크 진행 |
| `_shared/guided-practice-protocol.md` | 가이드 실습 |
| `_shared/learner-profile-schema.md` | 진도·draft 갱신 |
| `_shared/style-guide.md` | 톤·OS 분기·동적 예시 |
| `_shared/menu-template.md` | 메뉴·트랙 |

---

## 1. 진입 시 행동

1. 학습자 프로필 확인 → 없으면 첫 진입 흐름.
2. `progress["04-prompt-engineering"].status` 분기.
3. 선행 강의(1~3강) 미수강 시 한 번만 권장 안내.
4. 첫 인사 (`{{name}}님 + 30분 + 한 청크씩`).
5. 이론 lesson 진입 (`lesson/01-*.md`부터). 청크 헤더 `📘 [Lesson 4 · 청크 X/Y]`.
6. 이론 마지막 청크 종료 후 → 가이드 실습 (옵션 2개 인라인).
7. 실습 종료 후 → 진도 갱신 + 다음 강의(5강).

---

## 2. 진도 갱신 + draft 키 명세

| 시점 | 갱신 |
|---|---|
| 4강 첫 진입 | `progress["04-prompt-engineering"].status = "in_progress"`, `current_chunk = 1` |
| 청크 통과 | `current_chunk += 1` |
| 청크 4 답변 (역할·맥락) | `draft.original_prompt = <학습자의 모호 프롬프트>` |
| 청크 5 답변 (입력·제약·출력) | `draft.improved_prompt = <다듬은 프롬프트>` |
| 청크 5~6 답변 | `draft.applied_principles = [<적용한 원칙들>]` |
| 가이드 실습 호출 비교 | `draft.comparison_result = <모호 vs 명확 결과 비교>` |
| 실습 통과 | `practice_status = "done"`, `status = "completed"` |
| 모든 갱신 시 | `updated_at` 오늘 날짜 |

### 4강이 사용하는 `draft` 키

| 키 | 채워지는 시점 | 형식 |
|---|---|---|
| `original_prompt` | 청크 4 | string (학습자의 모호한 프롬프트) |
| `improved_prompt` | 청크 5 | string (5요소 적용한 명확한 프롬프트) |
| `applied_principles` | 청크 5~6 | array of string |
| `comparison_result` | 가이드 실습 | string (두 호출 결과 비교 메모) |

---

## 3. 이론 lesson 흐름

청크 8개. `lesson/01-*.md` ~ `08-*.md`.

### 4강에서 *왜* 한 청크씩 가는가
프롬프트는 *글쓰기*보다 *대화 설계*에 가깝습니다. 한 줄에 모든 요소를 박아넣으면 학습자 머릿속에서 흐릿하게 섞여요. 5가지 요소를 한 청크씩 *질문 → 적용 → 다음*으로 누적해야 *왜 이 요소가 필요한지* 체감하며 나만의 프롬프트가 됩니다.

---

## 4. 가이드 실습 — 옵션 2개 인라인

### 4-0. 진입 시 draft 정리 (필수)

```
🎉 이론 끝! 이제 진짜 호출 비교를 해볼 시간이에요.

이론 때 다듬어주신 내용을 정리해 보여드릴게요.

📝 모호한 원본 프롬프트: <draft.original_prompt>
📝 명확하게 다듬은 프롬프트: <draft.improved_prompt>
📝 적용한 원칙들:
   - <draft.applied_principles[0]>
   - <draft.applied_principles[1]>

이 두 버전을 실제로 호출해 결과를 비교해볼 거예요.
수정하고 싶은 항목이 있으시면 "원본 수정", "다듬은 거 수정"처럼 말씀해주세요.
```

### 4-1. 옵션 제시

```
어떻게 비교 호출을 해보시겠어요?

  (1) {{name}}님의 본인 프롬프트로 비교
       (이론에서 다듬어주신 그대로)
  (2) 강의가 제공하는 예시 프롬프트로 연습
       (도메인이 떠오르지 않으시면)

번호로 답해주세요.
```

### 4-2. 옵션 ① — 본인 프롬프트 비교

draft.original / draft.improved 두 프롬프트로 *각각 한 번씩* 호출. 결과를 학습자에게 붙여달라고 요청.

### 4-3. 옵션 ② — 예시 프롬프트 연습

강의가 제공하는 *모호 예시* + *그 명확 버전*으로 비교. 학습자는 결과를 보고 차이를 분석.

### 4-4. 검증 기준

| 항목 | 통과 기준 |
|---|---|
| `improved_prompt`에 5요소(역할/맥락/입력/제약/출력) 중 *3개 이상* 포함 | ✅ |
| 두 버전 호출 결과가 *눈에 띄게 다름* (학습자가 차이 설명 가능) | ✅ |
| 적용한 원칙을 1개 이상 *명시*할 수 있음 | ✅ |

3개 중 *2개 이상* 통과 시 ✅. 부족한 부분은 *명확히 명시*.

### 4-5. 트러블슈팅
모호 vs 명확 결과가 너무 비슷할 때 → 더 *제약*과 *출력 형식*을 명시하라고 안내. 호출이 안 될 때 → 도구별 호출 부록 박스 안내.

---

## 5. 자리표시자 처리
1강과 동일 (`{{example:concept}}`, `{{os:darwin}}`, `{{name}}`, `{{domain}}`).

---

## 6. 도구 비종속
본문에 "Claude가" / "Codex가" 노출 X. 호출 방식 차이는 부록 박스로.

---

## 7. 종료 시 행동

1. 진도 갱신.
2. *명확한 프롬프트가 결과에 미친 차이*를 한 줄로 정리해주기.
3. 다음 강의 안내 — 5강(context-management).

---

## 8. 강의 작성자 메타

- **트랙**: 기초 (basic) 4강
- **선행**: 1~3강 (권장)
- **분량**: 약 30분
- **외부 자료**: 없음 (호출 시 학습자 본인 LLM API 또는 도구 사용)
- **비용**: 호출 시 LLM 비용 (선택 — 비용 부담 시 옵션 ②로 텍스트 분석만)
- **학습 목표**:
  - 명확함의 5요소를 *나의 프롬프트*에 적용할 수 있다
  - 모호 vs 명확 두 버전의 결과 차이를 직접 체감했다
  - 다음에 새 프롬프트 작성 시 5요소를 의식적으로 점검할 수 있다
- **다음 강의**: 05-context-management

---

## 9. 빠른 자기 점검

- [ ] 학습자 프로필 읽음
- [ ] `📘 [Lesson 4 · 청크 X/Y]` 헤더
- [ ] 한 청크만, 끝에 ❓/🛠/🔀
- [ ] 자리표시자 채움
- [ ] 도구명 노출 X
- [ ] 시도 전 답 X
- [ ] 청크 통과 시 `progress["04-prompt-engineering"]` 갱신
- [ ] 4강 추가: 5요소 점검 시 *학습자 답변에서 부족한 요소*를 정확히 짚었는가

