배경: - 문제: 플롯에 타임라인이 명시되어 있음에도 작성 시 역행 발생 - 원인: 작성 전 타임라인 체크가 선택적이고 강제성 없음 - 결과: VERIFICATION에서 발견 → FIX에서 재배치 → 비효율 추가 사항: - 📌 타임라인 역행 방지 4단계 필수 체크포인트 - Step 1: 이전 화 종료 날짜 확인 - Step 2: 현재 화 플롯 날짜 확인 - Step 3: 타임라인 역행 체크 (필수) - Step 4: 정상인 경우만 작성 시작 - 역행 감지 시 즉시 중단 및 사용자 보고 - 회상 장면 예외 처리 프로토콜 철학 전환: ``` WRITING 모드 = 1차 방어선 (예방) VERIFICATION 모드 = 최후의 보루 (검증) → 작성 단계에서 문제를 원천 차단! ``` 변경 파일: - writing-mode.md: v2.3.0 → v2.4.0 - CHANGELOG 추가 - Phase 2에 필수 체크포인트 추가 - 회상 예외 처리 추가 - README.md: WRITING 모드 버전 정보 업데이트 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
480 lines
11 KiB
Markdown
480 lines
11 KiB
Markdown
# 작성 모드 프로토콜
|
|
|
|
> **버전:** 2.4.0
|
|
> **최종 수정:** 2026-01-25
|
|
> **호환:** CWS Writing Guide v4.2.0+
|
|
> **용도:** 신규 챕터 작성 (3/5/7화 유연)
|
|
> **주요 변경:** 타임라인 역행 방지 강화 - 작성 전 필수 체크포인트 추가
|
|
|
|
---
|
|
|
|
## 📋 CHANGELOG
|
|
|
|
### v2.4.0 (2026-01-25)
|
|
|
|
**배경:**
|
|
- 문제: 플롯에 타임라인이 명시되어 있음에도 작성 시 역행 발생
|
|
- 원인: 작성 전 타임라인 체크가 선택적이고 강제성 없음
|
|
- 결과: VERIFICATION에서 발견 → FIX에서 재배치 → 비효율
|
|
|
|
**추가:**
|
|
- 📌 타임라인 역행 방지 필수 체크포인트 (4단계 강제 절차)
|
|
- 작성 전 이전 화 종료일 vs 현재 화 시작일 자동 비교
|
|
- 역행 감지 시 즉시 중단 및 사용자 보고
|
|
- 회상 장면 예외 처리 프로토콜
|
|
|
|
**철학:**
|
|
```
|
|
WRITING 모드 = 1차 방어선 (예방)
|
|
VERIFICATION 모드 = 최후의 보루 (검증)
|
|
|
|
→ 작성 단계에서 문제를 원천 차단!
|
|
```
|
|
|
|
### v2.3.0 (2026-01-21)
|
|
|
|
**추가:**
|
|
- 완성도 체크 강화 (미완성 챕터 재발 방지)
|
|
|
|
### v2.0.0 이전
|
|
|
|
자세한 이력은 Git 커밋 히스토리 참조
|
|
|
|
---
|
|
|
|
## 📋 작성 모드 개요
|
|
|
|
**작성 모드는:**
|
|
- 플롯 기반 신규 챕터 작성
|
|
- 매 화 완료 시 summary 누적 업데이트
|
|
- 작성 완료 후 즉시 간이 검증
|
|
- Git 자동 커밋
|
|
|
|
**진입 명령:**
|
|
- "작성 모드"
|
|
- "X화 작성해"
|
|
- "1-5화 작성해" (기본 권장)
|
|
- "3화 작성해" / "7화 작성해" (유연)
|
|
|
|
---
|
|
|
|
## 📚 모드 진입 시 읽을 파일
|
|
|
|
### 필수
|
|
1. `standards/file-formats.md` - 파일 형식 표준
|
|
2. `standards/writing-guide.md` - 작성 규칙
|
|
3. `volumes/vol-XX/characters.md` - 해당 권 캐릭터
|
|
4. `volumes/vol-XX/timeline.md` - 해당 권 타임라인
|
|
5. `volumes/vol-XX/plots/plot-XXX-YYY.md` - 이번 N화 플롯
|
|
6. `volumes/vol-XX/summaries/summary-이전.md` - 이전 서머리
|
|
7. `volumes/vol-XX/foreshadows.md` - 복선 추적
|
|
|
|
### 다른 권 시작 시 추가
|
|
8. `volumes/vol-이전/summaries/summary-vol-XX-final.md` - 이전 권 압축 서머리
|
|
|
|
---
|
|
|
|
## 🎯 작성 프로세스
|
|
|
|
### Phase 1: 준비
|
|
|
|
```
|
|
1. 진행 상황 파악
|
|
- 마지막 작성 챕터 확인
|
|
- 다음 5화 범위 계산
|
|
|
|
2. 필수 파일 읽기 (위 목록)
|
|
|
|
3. CURRENT-TASK.md 생성
|
|
- 모드: WRITING
|
|
- 작업: X권 N-M화 작성
|
|
- 진행 상황: 테이블 초기화
|
|
|
|
4. 준비 완료 보고
|
|
```
|
|
|
|
### Phase 2: 각 화 작성
|
|
|
|
```
|
|
1. 해당 화 플롯 확인
|
|
- 날짜, 장소, 등장인물
|
|
- 핵심 내용, 주요 장면
|
|
|
|
2. 🚨 타임라인 역행 방지 (v2.4.0 필수 체크포인트!)
|
|
|
|
❌ **이 절차를 건너뛰면 타임라인 역행이 발생합니다!**
|
|
✅ **반드시 아래 4단계를 순서대로 확인하세요:**
|
|
|
|
---
|
|
|
|
**Step 1: 이전 화 종료 날짜 확인**
|
|
```bash
|
|
# 이전 화 파일 읽기 (첫 5줄)
|
|
head -5 chapters/ch-027.md
|
|
|
|
# 출력 예시:
|
|
# # 1권 27화: 제목
|
|
#
|
|
# > **타임라인:** 1946.04.05-23
|
|
|
|
→ 종료일 추출: 1946.04.23
|
|
```
|
|
|
|
**Step 2: 현재 화 플롯 날짜 확인**
|
|
```bash
|
|
# plot-master.md에서 현재 화 검색
|
|
grep "28화" plot-master.md
|
|
|
|
# 출력 예시:
|
|
# ### 28화: 제목
|
|
# - **타임라인:** 1946.03.05-15
|
|
|
|
→ 시작일 추출: 1946.03.05
|
|
```
|
|
|
|
**Step 3: 타임라인 역행 체크 (필수!)**
|
|
```
|
|
비교:
|
|
- 이전 화 종료일: 1946.04.23
|
|
- 현재 화 시작일: 1946.03.05
|
|
|
|
판정:
|
|
→ 04.23 > 03.05 ❌ 역행!
|
|
|
|
⚠️ 즉시 중단!
|
|
⚠️ 사용자에게 보고:
|
|
|
|
"❌ 타임라인 역행 감지!
|
|
|
|
- 이전 화 (ch-027): 1946.04.23 종료
|
|
- 현재 화 (ch-028): 1946.03.05 시작
|
|
|
|
→ 4월 다음에 3월이 올 수 없습니다.
|
|
|
|
원인:
|
|
1. 플롯 순서가 잘못됨
|
|
2. 또는 회상 장면 (제목/본문에 명시 필요)
|
|
|
|
조치:
|
|
- 회상이 아니면 플롯 수정 필요
|
|
- 회상이면 제목에 \"회상:\" 추가
|
|
|
|
계속 진행하시겠습니까?"
|
|
|
|
→ 사용자 확인 대기
|
|
```
|
|
|
|
**Step 4: 정상인 경우만 작성 시작**
|
|
```
|
|
비교:
|
|
- 이전 화 종료일: 1946.04.23
|
|
- 현재 화 시작일: 1946.05.01
|
|
|
|
판정:
|
|
→ 04.23 < 05.01 ✅ 정상!
|
|
|
|
✅ 작성 시작 가능
|
|
```
|
|
|
|
---
|
|
|
|
**회상 장면 예외 처리:**
|
|
```
|
|
회상인 경우:
|
|
1. 제목에 명시: "# X권 Y화: [회상] 제목"
|
|
2. 또는 Part 헤더: "## [회상] 1945년 가을"
|
|
3. 본문 시제: "~했었다", "~였었다" 사용
|
|
|
|
→ VERIFICATION에서 "회상"으로 판정됨
|
|
→ FIX 모드 재배치 대상에서 제외
|
|
```
|
|
|
|
---
|
|
|
|
3. 작성
|
|
- 헤더: # X권 Y화: 제목
|
|
- 타임라인: > **타임라인:** YYYY.M.D-M.D
|
|
- 분량: 8,000-12,000자
|
|
- file-formats.md 형식 준수
|
|
|
|
⚠️ **각 Part 작성 후 즉시 자가 검증!**
|
|
```
|
|
Part 1 작성 완료 → 즉시 체크:
|
|
|
|
✅ 플롯 준수
|
|
- [ ] 플롯에 있는 핵심 내용 포함됐는가?
|
|
- [ ] 플롯에 없는 중요 설정 추가 안 했는가?
|
|
- [ ] 등장인물이 플롯과 일치하는가?
|
|
|
|
✅ 캐릭터 일관성
|
|
- [ ] 성격이 characters.md와 맞는가?
|
|
- [ ] 갑자기 못하던 걸 하진 않는가?
|
|
- [ ] 몰랐던 정보를 갑자기 알진 않는가?
|
|
|
|
✅ 설정 일관성
|
|
- [ ] 이전 화와 모순 없는가?
|
|
- [ ] 무기/아이템 연속성 유지되는가?
|
|
- [ ] 날씨/계절이 날짜와 맞는가?
|
|
|
|
🔴 **v2.3.0 신규: 완성도 체크**
|
|
- [ ] Part가 완전히 끝났는가? (중간에 안 끊김)
|
|
- [ ] 대화가 중간에 끊기지 않았는가? (질문만 하고 답 없음 X)
|
|
- [ ] 장면이 마무리됐는가? (시작만 하고 안 끝남 X)
|
|
- [ ] 헤더 만들었으면 내용도 3줄 이상 작성했는가?
|
|
|
|
→ 하나라도 "아니오"면: 즉시 완성 후 다음 Part!
|
|
→ 모두 "예"면: Part 2 작성
|
|
|
|
(Part 2, 3, 4도 동일하게 각각 작성 후 체크!)
|
|
```
|
|
|
|
⚠️ **마지막 Part 작성 시 중요:**
|
|
```
|
|
## Part 4: 소제목
|
|
|
|
(본문 내용 마지막 문장.)
|
|
|
|
← 여기서 즉시 멈추세요!
|
|
|
|
절대 추가하지 마세요:
|
|
- [X화 끝]
|
|
- 다음 화 예고
|
|
- 구분선 (---)
|
|
- 아무것도!
|
|
```
|
|
|
|
4. 저장
|
|
- volumes/vol-XX/chapters/ch-XXX.md
|
|
|
|
5. summary 즉시 업데이트
|
|
- summaries/summary-001-XXX.md 누적 업데이트
|
|
|
|
6. CURRENT-TASK.md 업데이트
|
|
- 해당 화: ✅ 완료
|
|
|
|
7. 다음 화로 이동
|
|
```
|
|
|
|
### Phase 3: 작성 완료 + 간이 검증
|
|
|
|
```
|
|
1. N개 챕터 파일 확인
|
|
|
|
2. summary 최종 정리
|
|
- 전체 줄거리 완성도
|
|
- 챕터별 핵심
|
|
- 캐릭터 상태
|
|
- 복선 추적
|
|
|
|
3. 🔍 즉시 간이 검증 (2-3분)
|
|
|
|
✅ 타임라인 연속성
|
|
- 이전 화 종료일 ≤ 현재 화 시작일
|
|
- 역행 체크
|
|
|
|
✅ 호칭 일관성
|
|
- characters.md 호칭 규칙 기준
|
|
- 갑작스러운 호칭 변화 없는지
|
|
|
|
✅ 호칭 복수/단수 정확성
|
|
- characters.md 나이 관계 테이블 기준
|
|
- "형님들" vs "형님" 체크
|
|
- 예: 박현우 → 강민준(1명) = "형님" (단수)
|
|
- 예: 최태준 → 강민준+박현우(2명) = "형님들" (복수)
|
|
- 검색 패턴: "형님들", "형들", "선배님들" 등
|
|
- 발견 시 화자가 누구인지 확인 → 대상 수 체크
|
|
|
|
✅ 바텀 존재 여부
|
|
- [X화 끝] 패턴 검색
|
|
- "다음 X화:" 패턴 검색
|
|
|
|
✅ 헤더 형식
|
|
- # X권 Y화: 제목 형식
|
|
- 파일명 번호 = 헤더 화수
|
|
- 타임라인 형식 (YYYY.M.D-M.D)
|
|
|
|
🔴 **v2.3.0 신규: 완성도 검증**
|
|
- [ ] 빈 섹션 0건
|
|
- Grep: "^## " 검색 → 각 헤더 이후 10줄 체크
|
|
- 실제 내용 (빈 줄/구분선 제외) 3줄 미만 = ❌
|
|
- [ ] 대화 완결성
|
|
- 마지막 대화가 질문으로 끝나지 않는지
|
|
- "?" 또는 불완전한 대화 패턴 체크
|
|
- [ ] 최소 분량
|
|
- 각 챕터 8,000자 이상
|
|
- 마지막 Part가 너무 짧지 않은지 (300자 이상)
|
|
|
|
→ 문제 발견 시: 즉시 수정 후 다시 검증
|
|
→ 통과 시: 다음 단계
|
|
|
|
4. foreshadows.md 업데이트
|
|
- 설치된 복선 추가
|
|
- 회수된 복선 체크
|
|
|
|
5. Git 커밋
|
|
"X권 N-M화 작성 완료
|
|
|
|
- ch-XXX: 제목 (분량)
|
|
- ch-XXX: 제목 (분량)
|
|
...
|
|
- summary-001-XXX.md 업데이트
|
|
- foreshadows.md 업데이트
|
|
|
|
총 XX,XXX자
|
|
간이 검증: 통과 ✅
|
|
|
|
Co-Authored-By: Claude <noreply@anthropic.com>"
|
|
|
|
6. CURRENT-TASK.md 업데이트 또는 삭제
|
|
|
|
7. 완료 보고 + 다음 작업 안내
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ 각 화 작성 체크리스트
|
|
|
|
```
|
|
작성 전:
|
|
- [ ] 플롯 확인 (날짜, 장소, 등장인물, 핵심)
|
|
- [ ] 이전 화 종료일 확인
|
|
- [ ] 타임라인 연속성 확인
|
|
|
|
작성 중 (각 Part마다!):
|
|
- [ ] 헤더 형식: # X권 Y화: 제목
|
|
- [ ] 타임라인 형식: > **타임라인:** YYYY.M.D-M.D
|
|
- [ ] 분량 8,000자 이상
|
|
- [ ] Show, Don't Tell
|
|
- [ ] 캐릭터 말투/호칭 일관성
|
|
- [ ] ⭐ 각 Part 작성 후 즉시 자가 검증!
|
|
- 플롯 준수, 캐릭터 일관성, 설정 일관성
|
|
- 🔴 v2.3.0: 완성도 체크 (Part 완료, 대화 완결, 장면 마무리)
|
|
|
|
🔴 **v2.3.0 신규: 작성 완료 전 최종 체크**
|
|
- [ ] 모든 섹션 헤더 이후 내용 3줄 이상 존재
|
|
- [ ] 마지막 대화가 완결됨 (질문으로 안 끝남)
|
|
- [ ] 마지막 장면이 마무리됨 (중간에 안 끊김)
|
|
- [ ] 최소 분량 8,000자 이상
|
|
- [ ] 각 Part가 완전히 끝남
|
|
|
|
작성 후:
|
|
- [ ] 바텀 없음 확인!
|
|
- [ ] summary 즉시 업데이트
|
|
- [ ] CURRENT-TASK.md 업데이트
|
|
```
|
|
|
|
---
|
|
|
|
## 🚫 작성 모드 금지사항
|
|
|
|
❌ 플롯 없이 작성
|
|
❌ summary 업데이트 생략
|
|
❌ 바텀 추가 ([X화 끝], 다음 X화: 등)
|
|
❌ 타임라인 역행
|
|
❌ 캐릭터 OOC (Out Of Character)
|
|
❌ 호칭 불일치
|
|
|
|
---
|
|
|
|
## 📊 summary 형식
|
|
|
|
```markdown
|
|
# 1-X화 누적 서머리
|
|
|
|
> 최종 업데이트: YYYY-MM-DD HH:MM
|
|
> 현재: ch-XXX (X화)
|
|
|
|
## 📌 전체 줄거리
|
|
(누적 3-5문단)
|
|
|
|
## 📖 챕터별 핵심
|
|
### ch-001: [제목]
|
|
**날짜:** YYYY.M.D
|
|
**핵심:** 1줄 요약
|
|
|
|
### ch-002: [제목]
|
|
...
|
|
|
|
## 🎭 캐릭터 상태
|
|
### [이름]:
|
|
- ch-001: 상태
|
|
- ch-005: 상태 변화
|
|
|
|
## ⚠️ 복선
|
|
- [ ] [내용] (ch-XXX) → 회수 예정: X권
|
|
|
|
## 📊 통계
|
|
- 총 챕터: X화
|
|
- 총 분량: XX,XXX자
|
|
```
|
|
|
|
---
|
|
|
|
## 🔢 유연한 작업 단위
|
|
|
|
### 기본 권장: 5화
|
|
|
|
```
|
|
플롯: plot-001-005.md (5화)
|
|
작성: ch-001 ~ ch-005
|
|
서머리: summary-001-005.md
|
|
|
|
장점:
|
|
- 토큰 효율 최적
|
|
- 한 세션 완료 가능
|
|
- 관리 용이
|
|
```
|
|
|
|
### 허용: 3화, 7화, 10화
|
|
|
|
```
|
|
"3화 작성해"
|
|
→ plot-001-003.md 기준
|
|
→ ch-001 ~ ch-003
|
|
→ summary-001-003.md
|
|
|
|
"7화 작성해"
|
|
→ plot-001-007.md 기준
|
|
→ ch-001 ~ ch-007
|
|
→ summary-001-007.md
|
|
|
|
"10화 작성해"
|
|
→ plot-001-010.md 기준
|
|
→ ch-001 ~ ch-010
|
|
→ summary-001-010.md
|
|
```
|
|
|
|
### 권장 사항
|
|
|
|
```
|
|
✅ 권장:
|
|
- 일반: 5화 (기본)
|
|
- 짧게: 3화 (시간 부족)
|
|
- 길게: 7화 (몰입 중)
|
|
|
|
⚠️ 주의:
|
|
- 10화 이상: 컴팩팅 위험
|
|
- 1-2화: 너무 잦은 세션 전환
|
|
|
|
❌ 비권장:
|
|
- 불규칙 단위 (4화, 6화)
|
|
- 단위 혼용 (5화 → 3화 → 7화)
|
|
```
|
|
|
|
### summary 누적 규칙
|
|
|
|
```
|
|
예: 1-5화 작성 후 6-10화 작성
|
|
|
|
summary-001-005.md 생성
|
|
↓
|
|
summary-001-010.md 생성 (1-10화 전체 누적!)
|
|
|
|
→ summary-001-005.md는 유지 (백업)
|
|
→ summary-001-010.md가 최신
|
|
```
|
|
|
|
---
|
|
|
|
*작성 모드는 속도가 핵심입니다. 플롯대로 빠르게 작성하고, 간이 검증 후 커밋!*
|