---
name: outline-finalize
description: Phase 3 Gate 3 — draft outline 기반 대화형으로 section/example 선택·확정 후 Phase 4(script-maker) 진행 여부까지 한 번에 처리. "outline 확정", "Gate 3", "outline 최종", "강의 구성 확정" 등의 키워드가 나오면 이 skill을 사용한다.
---

# Outline 최종 확정 (Gate 3)

## 역할

`phase3/outline/draft-NN/` 하위의 draft outline을 바탕으로 최종 강의 구성을 확정하고 `phase3/outline/lecture-outline.md`를 생성하는 인터랙티브 루프다.

## 시작 절차

1. `current_run_path`가 없으면 사용자에게 요청한다.
2. `current-run.md`를 Read하여 `run_dir`을 추출한다.
3. `{run_dir}/phase3/outline/lecture-outline.md` 존재 여부를 확인한다.

### 파일이 이미 존재하는 경우

```
✅ 최종 outline이 이미 존재합니다.

파일: phase3/outline/lecture-outline.md

[파일 내용 요약 출력]

수정할 내용이 있으신가요? (수정 요청 / 없으면 "확정")
```

- **수정**: 아래 인터랙티브 수정 루프 진입
- **확정/없음**: 아래 "Phase 4 최종 승인" 단계로 진행
- **N**: 새로 작성 루프 진입

### 파일이 없는 경우

아래 절차로 draft를 로드한 뒤 인터랙티브 루프를 시작한다.

## Draft 로드 절차

1. `{run_dir}/phase3/outline/draft-*/lecture-outline.md` 를 Glob으로 스캔한다.
   - draft가 없으면: "draft outline이 없습니다. plugin-outline-architect를 먼저 실행해주세요." 출력 후 종료.
2. draft가 여러 개면 가장 최신(숫자 큰) draft를 기준 draft로 선택한다.
3. 기준 draft의 `lecture-outline.md`를 Read하여 Section 목록을 추출한다.
4. `{run_dir}/phase3/examples/` 를 Glob으로 스캔하여 Example 목록을 추출한다.
   - 각 example-plan.md의 frontmatter에서 `example_id`, `title`, `rq_refs` 추출
5. 아래 형식으로 현황을 출력한다:

```
📋 Draft Outline 기준: phase3/outline/draft-NN/lecture-outline.md

[SECTION 목록]
- Section 01: {제목} [Example: {연관 example_id}]
- Section 02: {제목}
- Section 03: {제목} [Example: {연관 example_id}]
...

[사용 가능한 Example]
- EX-01: {제목} (RQ: CONCEPT-01)
- EX-02: {제목} (RQ: IMPL-01)
...

수정 사항을 말씀해 주세요. 확정하려면 "확정" 또는 "OK"라고 말씀해 주세요.
```

## 인터랙티브 수정 루프

사용자 요청을 받아 현재 컨텍스트의 Section/Example 목록을 즉시 수정한다. 수정 후 변경 사항만 요약하고 루프를 유지한다.

### 지원하는 수정 명령

| 사용자 요청 예시 | 처리 방식 |
|---|---|
| "Section 02 빼줘" | 해당 section과 연관 example 연결 제거, 번호 재정렬 |
| "Section 03 제목 바꿔줘: {새 제목}" | 제목만 수정 |
| "Section 02에 EX-03 추가해줘" | 해당 section의 example 연결에 추가 |
| "Section 04 추가해줘: {제목}" | 새 section 추가 (내용은 사용자 입력 또는 draft 참고) |
| "EX-02 Section 03으로 옮겨줘" | example 연결 section 변경 |
| "Section 02 ↔ Section 03 순서 바꿔줘" | 순서 교환 |
| "전체 다시 보여줘" | 현재 Section/Example 목록 재출력 |
| "draft-01 기준으로 바꿔줘" | 다른 draft를 기준으로 재로드 |

### 수정 규칙 (강제)

1. `{run_dir}/phase3/examples/` 에 없는 Example은 추가하지 않는다.
2. Section 번호는 01부터 gaps 없이 재정렬한다.
3. 각 Section은 선택적으로 Example을 0개 이상 가질 수 있다.

## 확정 및 파일 작성

사용자가 "확정", "OK", "좋아" 등 승인 의사를 표현하면:

1. `skills/lecture-workflow/templates/lecture-outline-template.md` 를 Read하여 템플릿 구조를 로드한다.
2. `{run_dir}/phase3/outline/lecture-outline.md` 를 템플릿 기반으로 생성한다.
   - frontmatter: title(강의 주제), date(오늘), tags(topic 기반), based_on_draft, total_sections 채움
   - 🎯 강의목표: current-run.md의 lecture goal + 확정 RQ 기반으로 작성
   - 🧭 강의범위: 포함범위(확정 Section), 필수키워드(current-run.md keywords), 대상프레임워크(Java), 학습자수준(audience)
   - 🧩 강의흐름: 확정된 Section 목록을 테이블로 구성, 각 Section에 연관 Example과 시간(분) 배분
   - 총 시간 합계가 60분을 넘으면 자동으로 비율 조정
2. 완료 메시지를 출력한 뒤 즉시 **Phase 4 최종 승인** 단계로 진행한다.

```
✅ 최종 Outline 확정 완료

파일: phase3/outline/lecture-outline.md
Section {N}개 / Example 연결 {M}개
```

## Phase 4 최종 승인

outline 확정 후 즉시 아래 요약을 출력하고 Phase 4 진행 여부를 묻는다.

```
📋 최종 검토 요약

[Section 목록]
- Section 01: {제목} ({N}분) [예제: {example_id}]
- Section 02: {제목} ({N}분)
...
총 {N}분 / Example {M}개 연결

[연결된 Example]
- {example_id}: {제목}
- ...

이대로 script-maker를 실행할까요? (Y/N/수정)
```

- **Y**: "plugin-script-maker를 실행하세요. 입력: `current_run_path`" 안내 후 종료
- **수정**: 인터랙티브 수정 루프로 돌아감
- **N**: 종료 (이후 직접 script-maker 실행)
