From novel-studio
Orchestrates sequential web novel episode creation from markdown config docs (character sheets, plot guides, bootstrap) using 4-agent pipeline. Ensures character depth, numeric consistency, hook strength, plausibility. Invoke via /create or Korean episode commands.
npx claudepluginhub mjbae/awesome-novel-studio --plugin novel-studioThis skill uses the workspace's default tool permissions.
설정문서(캐릭터시트·플롯가이드·부트스트랩)에 따라 에피소드를 순차 창작하는 4-에이전트 파이프라인.
Orchestrates 6 specialized agents in parallel/sequential phases to polish web novel episodes across 12+ axes including rules, story logic, platform optimization, and character vitality. Self-loops through episodes using novel-config.md for project-specific guardrails and custom axes. Invoke via /polish, /lint, or keywords.
Expands episode outlines into visually dense novel prose with tight pacing and suspense hooks. Auto-reads outlines, configs, characters, prior episodes for consistency. Ideal for storyboarding pipelines.
Generates first-draft novel prose from Crucible outlines via scene-by-scene drafting, style matching, continuity tracking, and hallucination prevention. Use after planning/outlining on write/draft requests.
Share bugs, ideas, or general feedback.
설정문서(캐릭터시트·플롯가이드·부트스트랩)에 따라 에피소드를 순차 창작하는 4-에이전트 파이프라인.
Phase 1 (병렬) Phase 2 (순차) Phase 3 (순차)
┌──────────────────┐ ┌──────────────┐ ┌──────────────┐
│ episode-architect│──┐ │ episode- │ │ quality- │
│ (설계도 추출) │ ├──▶│ creator │──────▶│ verifier │
└──────────────────┘ │ │ (본문 집필) │ │ (7축 검증) │
┌──────────────────┐ │ └──────────────┘ └──────┬───────┘
│ continuity-bridge│──┘ ◀── REWRITE (max 2) ───┘
│ (연속성 수집) │ │
└──────────────────┘ PASS ───▶ 다음 EP
실행 모드: 서브 에이전트 (파이프라인 패턴, lint/revise와 동일)
episode_dir in novel-config.md)novel-config.md가 없으면 에러를 출력하고 종료한다.
| 입력 형태 | 해석 |
|---|---|
/create | 현재 디렉토리에서 novel-config.md 탐색, 마지막 EP 다음부터 |
/create 36억평 | 36억평 프로젝트, 마지막 EP 다음부터 |
/create EP051 | 현재 프로젝트, EP051만 |
/create 36억평 EP051 | 36억평 프로젝트, EP051만 |
/create 36억평 EP051-EP060 | 36억평 프로젝트, EP051~EP060 범위 |
novel-config.md 필수 필드 검증 게이트: novel-config.md를 로드한 직후, 아래 필수 필드가 모두 존재하고 비어있지 않은지 검증한다. 하나라도 누락되면 에러를 출력하고 즉시 종료한다.
필수 필드 체크리스트:
- [ ] project.target_platform — 플랫폼명
- [ ] project.episode_dir — 에피소드 저장 디렉토리
- [ ] project.work_dir — 작업 디렉토리
- [ ] project.design_dir — 설계문서 디렉토리
- [ ] 설정문서 매핑.bootstrap — 부트스트랩 경로 (파일 존재 확인)
- [ ] 설정문서 매핑.character_core — 캐릭터 핵심 경로 (파일 존재 확인)
- [ ] 설정문서 매핑.character_detail — 캐릭터 상세 경로 (파일 존재 확인)
- [ ] EP 범위별 플롯 가이드 — 최소 1개 행 존재 (파일 존재 확인)
검증 실패 시 출력:
❌ novel-config.md 필수 필드 누락:
- {누락 필드 목록}
create 스킬을 실행하려면 위 필드를 채워주세요.
템플릿: ${CLAUDE_PLUGIN_ROOT}/skills/polish/references/project-config-template.md
0.5 target_platform 허용 집합 검증 게이트:
project.target_platform은 아래 canonical name 중 하나여야 한다:
❌ 허용되지 않는 target_platform: {현재값}
허용 플랫폼:
- 문피아
- 네이버시리즈
- 카카오페이지
- 리디
- 조아라
- 노벨피아
novel-config.md의 project.target_platform을 허용 플랫폼명으로 수정한 뒤 다시 실행해주세요.
novel-config.md를 파싱한다:
{CONFIG} ← novel-config.md 전체
{TARGET_PLATFORM} ← config.target_platform
{DESIGN_DIR} ← config.design_dir
{EPISODE_DIR} ← config.episode_dir
{WORK_DIR} ← config.work_dir
{GUARD_RAILS} ← config.guard_rails + config.create_guard_rails (있으면)
{CUSTOM_AXES} ← config.custom_axes (있으면)
{CREATE_CFG} ← config.create 설정 (있으면, 없으면 기본값)
기본값 ([create] 섹션 없을 때):
draft_chars: 6000-10000 # Phase 2 초안 목표 (넉넉하게 작성)
final_chars: 5000-8000 # Step 2.5 트리밍 후 최종 목표
dialogue_ratio: 40-60%
max_scenes: 4
hook_targets:
opening_intensity: 4
ending_intensity: 5
continuity_lookback: 2
분량 전략: "넘치게 쓰고 줄이기" episode-creator는
draft_chars(6000-10000자) 목표로 초안을 작성한다. Step 2.5에서 오케스트레이터가final_chars(5000-8000자)로 트리밍한다. 이유: 부족해서 살을 붙이면 품질이 낮아진다. 충분히 쓰고 불필요한 부분을 삭제해야 밀도가 높아진다.
EP 범위 결정:
{EPISODE_DIR}에서 마지막 EP 번호를 찾고, 다음 번호부터 시작EP 범위에 따른 설정문서 매핑:
ep_range_table에서 해당 EP가 속하는 act 확인{PLOT_DOC} = 세부 플롯 가이드{PLOT_DOC} = 큰 설계 플롯 가이드{CHAR_DETAIL_EP} = 세부 캐릭터 시트{CHAR_DETAIL_EP} = 공통 character_detail⚠️ EP{NNN}이 속하는 범위에 세부 플롯 가이드가 없습니다.
큰 설계 플롯 가이드만으로 EP별 비트를 추출하므로 설계도 품질이 저하될 수 있습니다.
작은 설계(design-small)를 먼저 실행하는 것을 권장합니다.
그래도 진행하시겠습니까?
{WORK_DIR}/_workspace/ 디렉토리 확인 (없으면 생성)
{WORK_DIR}/create-plan.md 생성/갱신:
# 에피소드 창작 계획
## 대상: EP{start}-EP{end}
- [ ] EP{NNN} — 미착수
...
두 에이전트를 병렬로 (한 메시지에 Agent 2회 호출) 실행한다. run_in_background: true로 배경 실행한다.
⚠️ Phase 1 대기 방법 — 절대 금지/필수 준수:
- 금지: TaskOutput 사용 (팀 네임스페이스 충돌으로 "No task found" 오류 발생)
- 금지: Bash sleep 폴링 (
sleep N && ls반복 금지 — 불필요한 대기 + 승인 요청 유발)- 필수: 배경 에이전트는 완료 시 시스템이 자동으로 알려준다. 두 에이전트 모두 완료 알림을 받은 후 Phase 2로 진행한다.
⚠️ 에이전트 공통 경로 제한 지시 (episode-architect, continuity-bridge 프롬프트에 반드시 포함): "아래 명시된 파일 경로만 읽어라. design/ 디렉토리를 Glob으로 탐색하거나, 명시되지 않은 파일을 스스로 찾아 읽으려 시도하지 마라. 필요한 모든 파일 경로는 이 프롬프트에 포함되어 있다."
Agent 1: episode-architect
general-purposerun_in_background: true{CONFIG.bootstrap} (novel-config.md의 bootstrap 경로){PLOT_DOC} (Step 0.4에서 ep_range_table로 결정된 경로){CONFIG.character_core} (novel-config.md의 character_core 경로){CHAR_DETAIL_EP} (ep_range_table 세부 캐릭터 시트 우선, 없으면 공통 character_detail)blueprint 헤더의 '목표 분량' 항목은 반드시 아래 값을 사용한다:
- 초안 목표(draft_chars): {CREATE_CFG.draft_chars}자
플랫폼 상식(문피아 3,000~4,000자 등) 기반의 자체 추론을 절대 사용하지 말 것.
novel-config.md의 [create] 섹션 값이 없을 경우 기본값 8,000~10,000자 사용.
이 작업에서 Read할 수 있는 파일은 아래 목록이 전부다.
목록에 없는 파일은 어떤 이유로든 Read하지 마라:
0. ${CLAUDE_PLUGIN_ROOT}/agents/episode-architect.md (자신의 에이전트 정의)
1. {CONFIG.bootstrap}
2. {PLOT_DOC}
3. {CONFIG.character_core}
4. {CHAR_DETAIL_EP}
5. novel-config.md
위 6개 파일 외의 Read 시도는 경로 제한 위반이다.
{WORK_DIR}/_workspace/01_episode-architect_blueprint_EP{NNN}.mdAgent 2: continuity-bridge
general-purposerun_in_background: true{EPISODE_DIR}/ep{N-2}.md, {EPISODE_DIR}/ep{N-1}.md{WORK_DIR}/alive-tracker.md (존재 시){DESIGN_DIR}/delta_tracker_*.md (존재 시){DESIGN_DIR}/verification_*.md (존재 시){WORK_DIR}/_workspace/02_continuity-bridge_report_EP{NNN}.mdPhase 1 완료 후 episode-creator를 실행한다.
Agent 3: episode-creator
general-purpose{WORK_DIR}/_workspace/01_episode-architect_blueprint_EP{NNN}.md{WORK_DIR}/_workspace/02_continuity-bridge_report_EP{NNN}.md{CREATE_CFG} 설정 (목표 글자수, 대화 비율 등){EPISODE_DIR}/ep{NNN}.mdreferences/creation-principles.md를 읽으라고 지시재작성 모드 (REWRITE 후 재실행 시):
{WORK_DIR}/_workspace/04_quality-verifier_verdict_EP{NNN}.md를 읽으라고 지시{EPISODE_DIR}/ep{NNN}.md를 읽으라고 지시Phase 2 완료 후, Phase 3 진입 전에 오케스트레이터가 초안을 트리밍한다.
전략: "넘치게 쓰고 줄이기" episode-creator는 6000-10000자 초안을 작성한다. 오케스트레이터가 5000-8000자로 트리밍한다. 부족해서 살을 붙이는 것보다 충분히 쓰고 줄이는 것이 품질이 높다.
측정 기준: wc -m으로 파일 전체 글자수를 측정한다 (마크다운 헤더·메타데이터 포함).
측정: Bash wc -m {EPISODE_DIR}/ep{NNN}.md → 글자수 확인
판정: 최종 목표 범위(기본 final_chars: 5000-8000) 대비 확인
상한 초과 (8000자 초과 — 일반적 케이스):
트리밍 모드:
- 현재 글자수: {N}자 (wc -m 기준, 헤더 포함)
- 목표 범위: {FINAL_MIN}~{FINAL_MAX}자
- 초과분: {N - FINAL_MAX}자
- 지시: 아래 삭제 우선순위에 따라 불필요한 부분을 제거하여 {FINAL_MAX}자 이내로 만들어라.
삭제 우선순위:
1순위: 서술자의 상황 정리/요약 문장 (메타서술)
2순위: 같은 감정을 다른 비유로 반복 표현한 문장
3순위: 플롯 비트에 기여하지 않는 배경 묘사
4순위: 이미 행동으로 보여준 감정을 내면 독백으로 재확인하는 문장
5순위: 과도한 감각 묘사 (핵심 장면이 아닌 전환 구간)
주의: 플롯 비트, 대사, 클리프행어, 핵심 감각 묘사는 보존. 엔딩은 대사/행동으로 유지.
범위 내 (5000-8000자): Phase 3으로 진행
하한 미달 (5000자 미만 — 초안이 부족한 비정상 케이스):
글자수 부족 보정 모드:
- 현재 글자수: {N}자
- 목표 하한: {FINAL_MIN}자
- 지시: 기존 장면을 확장하거나 부족한 묘사/대화를 보강하여 {FINAL_MIN}자 이상으로 만들어라.
새로운 플롯 비트를 추가하지 말고, 기존 장면의 밀도를 높여라.
Agent 4: quality-verifier (CREATE 모드)
general-purposeCREATE 모드 검증 8축 (구조적 정합성 중심 — polish의 문체·표현 레벨 교정과 구분):
1. PLOT_BEAT — 설계도의 플롯 비트가 에피소드에 모두 반영되었는가
2. TIMELINE — 시간 마커·날짜·나이가 설정문서 및 이전 에피소드와 일치하는가
3. NUMBER — 핵심 수치(면적·자금·수확량 등)가 설정문서와 일치하는가
4. GUARDRAIL — novel-config.md의 보존 가드레일을 위반하지 않았는가
5. CONTINUITY — continuity-bridge 보고서의 미해결 복선/관계 상태가 반영되었는가
6. HOOK — 오프닝/엔딩 훅 강도가 설정된 목표치 이상인가
7. CHAR_VOICE — 등장인물의 대사가 캐릭터 보이스표/대화 DNA와 일관되는가
8. CUSTOM — novel-config.md의 커스텀 축 위반이 없는가
polish와의 관계: create의 quality-verifier는 구조적 정합성(플롯·수치·가드레일)을 검증한다. polish는 문장 품질(금지표현·침묵패턴·번역투·모바일 가독성·캐릭터 생동감)을 교정한다. 따라서 create PASS 에피소드도 polish를 거쳐야 최종 품질에 도달한다.
{EPISODE_DIR}/ep{NNN}.md (창작된 에피소드){WORK_DIR}/_workspace/01_episode-architect_blueprint_EP{NNN}.md{WORK_DIR}/_workspace/02_continuity-bridge_report_EP{NNN}.md{WORK_DIR}/_workspace/04_quality-verifier_verdict_EP{NNN}.mdverdict 파일을 읽어 판정을 확인한다.
PASS 판정 시 — 오케스트레이터 교차검증 (필수):
이중 안전장치: quality-verifier가 직접 Grep 카운트를 수행하더라도, 오케스트레이터는 독립적으로 재확인한다. 두 레이어가 동일 결과를 내야 PASS가 확정된다.
verdict가 PASS인 경우, 오케스트레이터가 핵심 가드레일을 직접 교차검증한다:
있었다 in {EPISODE_DIR}/ep{NNN}.md → 5회 이하 확인고 있었다 in {EPISODE_DIR}/ep{NNN}.md → 3회 이하 확인wc -m {EPISODE_DIR}/ep{NNN}.md → 목표 글자수 범위(기본 final_chars: 5000-8000) 확인3개 중 하나라도 위반 시, 위반 유형에 따라 분기한다:
경로 A — 오케스트레이터 직접 Edit (MINOR 위반): 다음 조건을 모두 충족하면 오케스트레이터가 직접 수정한다:
직접 Edit 절차:
경로 B — REWRITE 절차 (MAJOR 위반): 다음 중 하나라도 해당하면 기존 REWRITE 절차를 따른다:
REWRITE 절차:
교차검증 통과 시:
create-plan.md에서 해당 EP를 [x]로 갱신하고 요약 추가REWRITE:
rm -f {WORK_DIR}/_workspace/04_quality-verifier_verdict_EP{NNN}.md
verdict 파일이 남아있으면 quality-verifier가 재검증 없이 이전 결과를 재사용한다. 반드시 삭제한다.
[△](부분통과)로 표시, 다음 EP로 이동대상 범위의 모든 EP가 처리될 때까지 Step 1~4를 반복한다.
완료 시:
create-plan.md 최종 갱신.design-hashes 베이스라인 생성: {WORK_DIR}/.design-hashes 파일을 생성/갱신한다.
설정문서(부트스트랩, 캐릭터시트, 플롯가이드 등 {DESIGN_DIR}/ 내 모든 설정문서)의 SHA256 해시를 기록한다.
이 파일은 rewrite 스킬이 설정문서 변경을 감지하는 베이스라인으로 사용된다.
.design-hashes 형식:
{파일경로}\t{SHA256해시}\t{생성시각}
목적: rewrite 최초 실행 시 "모든 설정문서가 변경됨"으로 오탐하는 것을 방지. create가 완료된 시점의 설정문서 상태가 베이스라인이 된다.
## 창작 완료 요약
- 총 에피소드: N화
- PASS: X화
- 부분통과(△): Y화
- REWRITE 발생: Z회
### 다음 단계
- 문장 품질 향상: `/polish` — 12축 진단으로 문체·훅·수치·캐릭터 생동감을 교정
- 설정 변경 반영: `/rewrite` — 설정문서 변경 시 영향받는 에피소드를 재작성
- ⚠️ 설정을 변경할 예정이라면 `/rewrite` → `/polish` 순서로 실행하세요
| 에러 유형 | 전략 |
|---|---|
| 에이전트 실패 | 1회 재시도 → 실패 시 해당 EP를 [!]로 표시하고 다음으로 |
| 설정문서 누락 | 사용자에게 경고 후 가용한 문서로 진행. 플롯가이드 누락 시 종료 |
| 이전 EP 없음 (EP001) | continuity-bridge가 부트스트랩 초기 상태 요약 |
| novel-config.md 누락 | 에러 출력 후 종료 |
| 가드레일 충돌 | episode-creator가 [가드레일우회] 태그 → auditor가 해당 부분 별도 평가 |
| Phase 1 한쪽만 실패 | 성공한 보고서로 Phase 2 진행, 누락 명시 |
novel-config.md에 다음 섹션을 추가하면 창작 설정을 커스터마이즈할 수 있다. 없으면 기본값을 사용한다.
## create 설정
draft_chars: 6000-10000 # Phase 2 초안 목표 (넉넉하게 작성)
final_chars: 5000-8000 # Step 2.5 트리밍 후 최종 목표
dialogue_ratio: 40-60% # 대화 비율 (기본: 40-60%)
max_scenes: 4 # 최대 장면 수 (기본: 4)
hook_targets:
opening_intensity: 4 # 1-5, 오프닝 훅 강도 (기본: 4)
ending_intensity: 5 # 1-5, 엔딩 클리프행어 강도 (기본: 5)
continuity_lookback: 2 # 이전 참조 화수 (기본: 2)
point_scenes_per_ep: 2-3 # 포인트 장면 수 (기본: 2-3)
dead_zone_threshold: 3500 # 포인트 장면 없는 최대 허용 글자수 (기본: 3500)
## create 사전 예방 (shift-left)
# create는 lint와 달리 문제를 사후 검출이 아닌 사전 예방한다.
# 아래 항목을 episode-architect의 설계도에 사전 포함하여 episode-creator가 준수하게 한다:
timeline_lock: true # 에피소드별 절대 날짜/나이 사전 확정 (기본: true)
voice_quickref: true # 등장인물별 보이스 퀵레프 카드 사전 추출 (기본: true)
nonverbal_memory: true # 이전 2화 비언어 반복 메모리 수집 (기본: true)
echo_dialogue_filter: true # 메아리 대화 방지 규칙 적용 (기본: true)
cider_gogumo_balance: true # 사이다/고구마 밸런스 추적 (기본: true)
## create 가드레일
# lint 가드레일에 추가로 적용할 창작 전용 가드레일
# 예시:
# - 주인공이 1화에 전문 분야 외 지식을 시연하면 안 됨
# - 회귀 사실을 3막 이전에 타인에게 노출하면 안 됨
/create 36억평 EP051 실행36억평/episodes/ep051.md[x] EP051, EP052로 이동/create 36억평 EP001 실행/create 36억평 EP051-EP055 실행