From novel-studio
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.
npx claudepluginhub mjbae/awesome-novel-studio --plugin novel-studioThis skill uses the workspace's default tool permissions.
6๋ช ์ ์ ๋ฌธ ์์ด์ ํธ๋ฅผ **Fan-out/Fan-in ๋ณ๋ ฌ ๊ตฌ์กฐ**๋ก ์ด์ฉํ์ฌ
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.
Provides structured revision and editing for Crucible-drafted novels, covering developmental, line, copy editing, and final polish after first draft completion.
Writes webnovel chapters (2000-2500 words) via workflow: context, draft, style adapt, review, polish, data extraction. Use /webnovel-write or auto-activates on requests.
Share bugs, ideas, or general feedback.
6๋ช ์ ์ ๋ฌธ ์์ด์ ํธ๋ฅผ Fan-out/Fan-in ๋ณ๋ ฌ ๊ตฌ์กฐ๋ก ์ด์ฉํ์ฌ ์ํผ์๋๋ฅผ ์์ฐจ์ ์ผ๋ก 12์ถ(+ALIVE 4์ถ, +ํ๋ก์ ํธ ์ปค์คํ ์ถ) ์ ๋ฐ ์ค๋ฌธํ๋ ์๊ธฐ ๋ฐ๋ณต(self-loop) ์คํฌ.
ํ๋ก์ ํธ ๋
๋ฆฝ์ : novel-config.md๋ฅผ ์ฝ์ด ์ค์ ๋ฌธ์ยท๊ฐ๋๋ ์ผยท์ปค์คํ
์ถ์ ์๋ ์ ์ฉํ๋ค.
๋ค๋ฅธ ์์ค ํ๋ก์ ํธ์์๋ novel-config.md๋ง ์์ฑํ๋ฉด ๋์ผํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ.
Phase 1 (๋ณ๋ ฌ ์ง๋จ โ Agent ๋๊ตฌ๋ก 4๊ฐ ๋์ ํธ์ถ)
โโ [rule-checker] โโ BANNED, VOICE, TITLE, SILENCE, TRANS โโ
[์ํผ์๋] โโ [story-analyst] โโ SCENE, LOGIC, UNIFORM (+์ปค์คํ
) โโค
โโ [platform-optimizer] โโ HOOK, OPENING, MOBILE, SUMMARY โโผโ [์ง๋จ ํตํฉ]
โโ [alive-enhancer] โโ ALIVE-1~4 (๋ฉ์๋ฆฌ,์นจ๋ฌต,๊ธด์ฅ์ ,๊ฑฐ๋ฆฌ๊ฐ) โโ
Phase 2 (์์ฐจ ๊ต์ )
[์ง๋จ ํตํฉ] โ [revision-executor] โ [๊ต์ ๋ ์ํผ์๋]
Phase 3 (์์ฐจ ๊ฒ์ฆ)
[๊ต์ ๋ ์ํผ์๋] โ [revision-reviewer] โ PASS / REVISE โ (REVISE์ Phase 2 ์ฌ์คํ)
| ์์ด์ ํธ | ์ญํ | ๋ด๋น ์ถ | Phase |
|---|---|---|---|
| rule-checker | ๊ท์น ์๋ฐ ์ง๋จ | BANNED, VOICE, TITLE, SILENCE, TRANS | 1 (๋ณ๋ ฌ) |
| story-analyst | ์์ฌยท๋ ผ๋ฆฌ ๋ถ์ | SCENE, LOGIC, UNIFORM (+์ปค์คํ ์ถ) | 1 (๋ณ๋ ฌ) |
| platform-optimizer | ํ๋ซํผ ์ต์ ํ | HOOK, OPENING, MOBILE, SUMMARY | 1 (๋ณ๋ ฌ) |
| alive-enhancer | ์บ๋ฆญํฐ ์๋๊ฐ | ALIVE-1~4 | 1 (๋ณ๋ ฌ) |
| revision-executor | ๊ต์ ์คํ | ์ ์ฒด ํตํฉ ๊ต์ | 2 (์์ฐจ) |
| revision-reviewer | ๊ต์ ๊ฒ์ฆ | ๊ณผ๊ต์ ยท์ ๊ท์ค๋ฅยท๊ฐ๋๋ ์ผ | 3 (์์ฐจ) |
/polish โ ๊ธฐ๋ณธ ํ๋ก์ ํธ์ ๋ค์ ๋ฏธ์๋ฃ ์ํผ์๋๋ถํฐ
/polish EP051 โ EP051๋ถํฐ ์์
/polish start โ EP001๋ถํฐ ์ ์ฒด ์์
/polish {ํ๋ก์ ํธ๋ช
} โ ํน์ ํ๋ก์ ํธ ์ง์ (์: /polish 36์ตํ)
/polish {ํ๋ก์ ํธ๋ช
} EP051 โ ํน์ ํ๋ก์ ํธ + ํน์ ์ํผ์๋
์ด ์คํฌ์ ํต์ฌ: ์ํผ์๋ ํ๋๋ฅผ ์๋ฃํ ๋ค ์ค์ค๋ก ๋ค์ ์ํผ์๋๋ก ๋์ด๊ฐ๋ค. ์ธ๋ถ ๋ฃจํ๊ฐ ํ์ ์๋ค. Claude ์์ฒด์ ์์ด์ ํฑ ๋ฃจํ๋ก ๋ฐ๋ณตํ๋ค.
LOOP:
1. fix_plan.md์์ ๋ค์ ๋ฏธ์๋ฃ ์ํผ์๋ ๊ฒฐ์
2. ํด๋น ์ํผ์๋์ ๋ํด Phase 1โ2โ3 ์คํ
3. fix_plan.md ์
๋ฐ์ดํธ
4. learnings.md ์
๋ฐ์ดํธ (์ ํจํด ๋ฐ๊ฒฌ ์๋ง)
5. alive-tracker.md ์
๋ฐ์ดํธ (alive-enhancer ๋ณด๊ณ ์ ๊ธฐ๋ฐ)
6. ์ ์ฒด ์๋ฃ ํ์ธ
- ๋ฏธ์๋ฃ ์์ โ LOOP ๋ฐ๋ณต (๋ค์ ์ํผ์๋)
- ์ ์ฒด ์๋ฃ โ "REVISION_COMPLETE" ์ถ๋ ฅํ๊ณ ์ข
๋ฃ
์๋ฃ ์ ์๋ด: "์ค์ ๋ฌธ์๋ฅผ ๋ณ๊ฒฝํ ์์ ์ด๋ผ๋ฉด `/rewrite` ์คํ ํ `/polish`๋ฅผ ๋ค์ ์คํํ์ธ์."
[x]์ผ ๋๋ง ๋ฉ์ถ๋ค./polish๋ฅผ ๋ค์ ์น๋ฉด ๋ง์ง๋ง ๋ฏธ์๋ฃ ์ํผ์๋๋ถํฐ ์ด์ด๊ฐ๋ค.1. ํ๋ก์ ํธ ๊ฒฐ์
- $ARGUMENTS์์ ํ๋ก์ ํธ๋ช
์ถ์ถ (์: "36์ตํ")
- ํ๋ก์ ํธ๋ช
์ง์ ์์ผ๋ฉด: ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ํ์ํ์ฌ novel-config.md๊ฐ ์๋ ๋๋ ํ ๋ฆฌ ์๋ ๊ฐ์ง
- novel-config.md๊ฐ ์ฌ๋ฌ ๊ฐ๋ฉด: ์ฌ์ฉ์์๊ฒ ์ ํ ์์ฒญ
- novel-config.md๊ฐ ์์ผ๋ฉด: references/project-config-template.md ์๋ด ํ ์ข
๋ฃ
2. novel-config.md ๋ก๋ ๋ฐ **ํ์ ํ๋ ๊ฒ์ฆ ๊ฒ์ดํธ**
- {PROJECT_DIR}/novel-config.md ์ฝ๊ธฐ
- **์ฆ์ ํ์ ํ๋ ๊ฒ์ฆ** (ํ๋๋ผ๋ ๋๋ฝ ์ ์๋ฌ ์ถ๋ ฅ ํ ์ข
๋ฃ):
```
ํ์ ํ๋ ์ฒดํฌ๋ฆฌ์คํธ:
- [ ] project.target_platform โ ํ๋ซํผ๋ช
- [ ] project.episode_dir โ ์ํผ์๋ ์ ์ฅ ๋๋ ํ ๋ฆฌ
- [ ] project.work_dir โ ์์
๋๋ ํ ๋ฆฌ
- [ ] ์ค์ ๋ฌธ์ ๋งคํ.bootstrap โ ๋ถํธ์คํธ๋ฉ ๊ฒฝ๋ก (ํ์ผ ์กด์ฌ ํ์ธ)
- [ ] ์ค์ ๋ฌธ์ ๋งคํ.character_core โ ์บ๋ฆญํฐ ํต์ฌ ๊ฒฝ๋ก (ํ์ผ ์กด์ฌ ํ์ธ)
- [ ] ์ค์ ๋ฌธ์ ๋งคํ.character_detail โ ์บ๋ฆญํฐ ์์ธ ๊ฒฝ๋ก (ํ์ผ ์กด์ฌ ํ์ธ)
- [ ] EP ๋ฒ์๋ณ ํ๋กฏ ๊ฐ์ด๋ โ ์ต์ 1๊ฐ ํ ์กด์ฌ (ํ์ผ ์กด์ฌ ํ์ธ)
```
๊ฒ์ฆ ์คํจ ์:
```
โ novel-config.md ํ์ ํ๋ ๋๋ฝ: {๋๋ฝ ํ๋ ๋ชฉ๋ก}
polish ์คํฌ์ ์คํํ๋ ค๋ฉด ์ ํ๋๋ฅผ ์ฑ์์ฃผ์ธ์.
ํ
ํ๋ฆฟ: ${CLAUDE_PLUGIN_ROOT}/skills/polish/references/project-config-template.md
```
- **target_platform ํ์ฉ ์งํฉ ๊ฒ์ฆ**:
- `project.target_platform`์ ๋ฌธํผ์, ๋ค์ด๋ฒ์๋ฆฌ์ฆ, ์นด์นด์คํ์ด์ง, ๋ฆฌ๋, ์กฐ์๋ผ, ๋
ธ๋ฒจํผ์ ์ค ํ๋์ฌ์ผ ํ๋ค
- polish ์คํฌ์ novel-config.md์ canonical ๊ฐ๋ง ์ฌ์ฉํ๋ฉฐ ์๋ ๋งคํํ์ง ์๋๋ค
- ๋น์ง์ ๊ฐ์ด๋ฉด ์๋ฌ ์ถ๋ ฅ ํ ์ข
๋ฃ:
```
โ ํ์ฉ๋์ง ์๋ target_platform: {ํ์ฌ๊ฐ}
novel-config.md์ project.target_platform์ ํ์ฉ ํ๋ซํผ๋ช
์ผ๋ก ์์ ํด์ฃผ์ธ์.
```
- ์ค์ ๋ฌธ์ ๊ฒฝ๋ก ๋งคํ ์ถ์ถ โ {CONFIG} ๋ณ์๋ก ์ ์ฅ
- ๋ณด์กด ๊ฐ๋๋ ์ผ ์ถ์ถ
- ์ปค์คํ
์ถ ์กด์ฌ ์ฌ๋ถ ํ์ธ
- ์นจ๋ฌต ํจํด ์์ธ ์บ๋ฆญํฐ ํ์ธ
3. ์์
๋๋ ํ ๋ฆฌ ์ค์
- novel-config.md์ work_dir์์ fix_plan.md ์ฝ๊ธฐ
- ์์ผ๋ฉด ์์ฑ (EP001~๋ง์ง๋ง ํ)
- learnings.md ์ฝ๊ธฐ (์์ผ๋ฉด ์์ฑ)
- alive-tracker.md ์ฝ๊ธฐ (์์ผ๋ฉด ์์ฑ)
4. $ARGUMENTS ํ์ธ
- "EP{NNN}" โ ํด๋น ์ํผ์๋๋ถํฐ ์์
- "start" โ EP001๋ถํฐ
- ์์ โ fix_plan.md์ ๋ค์ ๋ฏธ์๋ฃ๋ถํฐ
๋์ ์ํผ์๋ ๋ฒํธ์ ๋ฐ๋ผ ์ฐธ์กฐํ ์ค์ ๋ฌธ์๋ฅผ ๊ฒฐ์ ํ๋ค. novel-config.md์ "EP ๋ฒ์๋ณ ์ค์ ๋ฌธ์" ํ ์ด๋ธ์์ ํด๋น EP์ ํ๋กฏ ๋ฌธ์์ ์บ๋ฆญํฐ ์ํธ๋ฅผ ์ ํ.
{PLOT_DOC} = novel-config.md์ EP ๋ฒ์ ๋งคํ์์ ํด๋น EP์ ๋ง๋ ํ๋กฏ ๊ฐ์ด๋ ๊ฒฝ๋ก
์ธ๋ถ ํ๋กฏ ๊ฐ์ด๋ ์ด์ ๊ฒฝ๋ก๊ฐ ์๊ณ ํ์ผ์ด ์กด์ฌํ๋ฉด ์ธ๋ถ ๊ฐ์ด๋ ์ฐ์
(๋ฒ์ ์ค์ฒฉ ๋ฐ๊ฒฌ ์ ๊ฒฝ๊ณ ์ถ๋ ฅ ํ ์ฒซ ๋ฒ์งธ ๋งค์นญ ํ ์ฌ์ฉ)
{CHAR_CORE} = novel-config.md์ ๊ณตํต ๋ฌธ์ ์ค character_core ๊ฒฝ๋ก
{CHAR_DETAIL} = EP ๋ฒ์๋ณ ์ค์ ๋ฌธ์ ํ
์ด๋ธ์ ์ธ๋ถ ์บ๋ฆญํฐ ์ํธ ์ด์ ๊ฒฝ๋ก๊ฐ ์๊ณ ํ์ผ์ด ์กด์ฌํ๋ฉด
์ธ๋ถ ์บ๋ฆญํฐ ์ํธ ์ฐ์ , ์์ผ๋ฉด ๊ณตํต ๋ฌธ์์ character_detail ๊ฒฝ๋ก
{BOOTSTRAP} = novel-config.md์ ๊ณตํต ๋ฌธ์ ์ค bootstrap ๊ฒฝ๋ก
{GUIDE} = novel-config.md์ ๋ณด์กฐ ์ฐธ์กฐ ์ค web_novel_guide ๊ฒฝ๋ก
{VERIFY} = novel-config.md์ ๋ณด์กฐ ์ฐธ์กฐ ์ค verification ๊ฒฝ๋ก
{PLOT_MACRO} = novel-config.md์ ๋ณด์กฐ ์ฐธ์กฐ ์ค plot_macro ๊ฒฝ๋ก
{EPISODE_DIR} = novel-config.md์ episode_dir ๊ฒฝ๋ก
{GUARD_RAILS} = novel-config.md์ ๋ณด์กด ๊ฐ๋๋ ์ผ ๋ชฉ๋ก
{CUSTOM_AXES} = novel-config.md์ ์ปค์คํ
์ง๋จ ์ถ ์น์
(์์ ๊ฒฝ์ฐ)
{SILENCE_EXCEPT} = novel-config.md์ ์นจ๋ฌต ํจํด ์์ธ ์บ๋ฆญํฐ (์์ ๊ฒฝ์ฐ)
์ดํ Phase 1~3์ ์์ด์ ํธ ํ๋กฌํํธ์์ ์ ๋ณ์๋ฅผ ์ค์ ๊ฐ์ผ๋ก ์นํํ์ฌ ์ ๋ฌํ๋ค.
fix_plan.md์์ ์ต์๋จ ๋ฏธ์๋ฃ([ ]) ํญ๋ชฉ์ ๊ฐ์ ธ์จ๋ค.
SKIP ์ ๋ ๊ธ์ง. ๋ชจ๋ ์ํผ์๋ ์ ๋ฌธ ์ ๋
.
๋์ ์ํผ์๋(EP{NNN})์ ์ง์ 2ํ๋ฅผ ๋ฐ๋์ ์ฝ๋๋ค:
{EPISODE_DIR}/ep{NNN-2}.md โ ์ง์ ์ ํ ์ ๋ฌธ (์กด์ฌํ ๊ฒฝ์ฐ){EPISODE_DIR}/ep{NNN-1}.md โ ์ง์ ํ ์ ๋ฌธ๊ฒ์ฆ ๋ชฉ์ :
์ํผ์๋ ๊ฐ ์๊ฐ ์ฐธ์กฐ์ ์์น์ ์ ํฉ์ฑ์ ๊ตฌ์กฐ์ ์ผ๋ก ๊ฒ์ฆํ๋ค. ๋จ์ํ "์์น ํ์ธ"์ด ์๋๋ผ, ์๋ 3๋จ๊ณ๋ฅผ ๋ฐ๋์ ์ํํ๋ค.
1๋จ๊ณ: ํ์๋ผ์ธ ์ถ์ถ ๋์ ์ํผ์๋์ ์ง์ 2ํ์์ ๋ชจ๋ ์๊ฐ ๋ง์ปค๋ฅผ ์ถ์ถํ๋ค:
2๋จ๊ณ: ํ์๋ผ์ธ ๊ต์ฐจ๋์กฐ ๊ฐ์ ์ฌ๊ฑด/์ฝ์/์๊ณ ์ ๋ํ ์๊ฐ ์ฐธ์กฐ๊ฐ ์ง์ 2ํ์์ ๋ชจ์๋๋์ง ํ์ธํ๋ค.
3๋จ๊ณ: ์์น ๊ต์ฐจ๋์กฐ ๊ฐ์ ๋์์ ๋ํ ์์น๊ฐ ์ํผ์๋ ๊ฐ ์ผ๊ด๋๋์ง ํ์ธํ๋ค:
๊ฒ์ฆ_๋์:
๋ฉด์ : ha, ์์ด์ปค, ํ โ ๊ฐ์ ๋์์ ๋ฉด์ ์ด ํ๋ง๋ค ๋ค๋ฅด๋ฉด [NUMBER] CRITICAL
์๊ธ: ๋ฌ๋ฌ, ์ โ ๊ฐ์ ๊ฑฐ๋/๋น/๋งค์ถ์ด ํ๋ง๋ค ๋ค๋ฅด๋ฉด [NUMBER] CRITICAL
์ํ๋: t/ha, ํค, ๋ถ์
ธ โ ๊ฐ์ ์ํ์ ์์น๊ฐ ํ๋ง๋ค ๋ค๋ฅด๋ฉด [NUMBER] CRITICAL
์ธ์: ๊ฐ๊ตฌ ์, ๋ช
โ ๊ฐ์ ๋ชจ์/์กฐํฉ์ ์ธ์์ด ํ๋ง๋ค ๋ค๋ฅด๋ฉด [NUMBER] MAJOR
์ฐ์ ๊ฒ์ฆ: ์ํผ์๋ ๋ด ๊ณ์ฐ์ด ๋ง๋์ง [NUMBER] MAJOR
๊ต์ฐจ๋์กฐ_๋ฐฉ๋ฒ:
1. ๋์ EP์์ ๋ชจ๋ ์ซ์+๋จ์๋ฅผ ์ถ์ถ
2. ์ง์ 2ํ์์ ๊ฐ์ ๋์์ ์ซ์๋ฅผ ์ฐพ์ ๋์กฐ
3. ๋ถ์ผ์น ๋ฐ๊ฒฌ ์ [NUMBER] ๋๋ [TIMELINE] ํ๊ทธ + ๋ฑ๊ธ ๋ถ์ฌ
4. ์ด๋ ์ชฝ์ด ์ ๋ณธ์ธ์ง ํ๋จ์ด ์ด๋ ค์ฐ๋ฉด ์์ชฝ ๋ชจ๋ ๋ณด๊ณ
EP001์ ์ง์ ํ ์์ด, EP002๋ ์ง์ 1ํ๋ง์ผ๋ก ์งํํ๋ค. ์ง์ ์ํผ์๋ ์ ๋ณด๋ Phase 1์ ๋ชจ๋ ์์ด์ ํธ์๊ฒ ์ ๋ฌํ๋ค.
Agent ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ 4๊ฐ ์์ด์ ํธ๋ฅผ ํ ๋ฒ์ ๋ฉ์์ง์ ๋์ ํธ์ถํ๋ค.
๋ณด๊ณ ์ ์ ์ฅ ๊ท์น: ๊ฐ ์์ด์ ํธ์ ์ง๋จ ๋ณด๊ณ ์๋ฅผ _workspace/์ ํ์ผ๋ก ์ ์ฅํ๋ค.
Phase 2์ revision-executor๊ฐ ๋ณด๊ณ ์ ํ์ผ์ ์ง์ Readํ์ฌ ์ปจํ
์คํธ ์ ๋ฌ ๋ถ๋ด์ ์ค์ธ๋ค.
| ์์ด์ ํธ | ๋ณด๊ณ ์ ์ ์ฅ ๊ฒฝ๋ก |
|---|---|
| rule-checker | {WORK_DIR}/_workspace/07_rule-checker_report_ep{NNN}.md |
| story-analyst | {WORK_DIR}/_workspace/07_story-analyst_report_ep{NNN}.md |
| platform-optimizer | {WORK_DIR}/_workspace/07_platform-optimizer_report_ep{NNN}.md |
| alive-enhancer | {WORK_DIR}/_workspace/07_alive-enhancer_report_ep{NNN}.md |
[๋์ ํธ์ถ โ ํ๋์ ์๋ต์ 4๊ฐ Agent ๋๊ตฌ ํธ์ถ]
Agent("rule-checker"):
prompt: "EP{NNN} ({EPISODE_DIR}/ep{NNN}.md)์ ๋ํด ๊ท์น ๊ฒ์ฆ 5์ถ ์ง๋จ ์ํ.
์ง์ 2ํ({EPISODE_DIR}/ep{NNN-2}.md, {EPISODE_DIR}/ep{NNN-1}.md)๋ ์ ๋ฌธ ์ ๋
ํ์ฌ
ํธ์นญยท๊ธ์งํํยท์นจ๋ฌต ํจํด์ด ์ง์ ํ์ ๊ฒน์น๊ฑฐ๋ ์ถฉ๋ํ๋์ง ํ์ธ.
โ
์ค์ ๋ฌธ์ ๋ก๋ (novel-config.md ๊ธฐ์ค):
- {CHAR_DETAIL} โ ๋ณด์ด์คํ(์ข
๊ฒฐ์ด๋ฏธยท๊ธธ์ดยทํจํด), ํธ์นญ ๊ท์นํ(ํ์ร์ฒญ์)
- {CHAR_CORE} โ ์ฃผ์ธ๊ณต ๊ฐ์ ํํ ๊ท์น (ํฌ๋ ๋ฌธ๋ฒ ๋ฑ)
์นจ๋ฌต ํจํด ์์ธ ์บ๋ฆญํฐ: {SILENCE_EXCEPT}
์์ด์ ํธ ์ ์(rule-checker.md)์ ์ถ๋ณ ์ฒดํฌ๋ฆฌ์คํธ์ ๋ฑ๊ธ ๊ธฐ์ค์ ๋ฐ๋ผ
${CLAUDE_PLUGIN_ROOT}/skills/polish/references/12-axes.md ์ถ1~5 ์ฐธ์กฐํ์ฌ ์ง๋จ.
๊ฐ ์ถ์ grep ํจํด์ผ๋ก ๊ธฐ๊ณ์ ๊ฒ์ถ ํ ์ ๋
์ผ๋ก ์คํ ์ ๊ฑฐ.
VOICE๋ ์ค์ ๋ฌธ์ ๋ณด์ด์คํ, TITLE์ ํธ์นญ ๊ท์นํ์ 1:1 ๋์กฐ.
Rule Check Report ํ์์ผ๋ก ์ถ๋ ฅ."
Agent("story-analyst"):
prompt: "EP{NNN} ({EPISODE_DIR}/ep{NNN}.md)์ ๋ํด SCENE + LOGIC + UNIFORM 3์ถ ์ง๋จ ์ํ.
${CLAUDE_PLUGIN_ROOT}/skills/polish/references/12-axes.md ์ถ6ยท7ยท9 ๊ธฐ์ค ์ฐธ์กฐ.
์ง์ 2ํ({EPISODE_DIR}/ep{NNN-2}.md, {EPISODE_DIR}/ep{NNN-1}.md)๋ ์ ๋ฌธ ์ ๋
.
โ
์ค์ ๋ฌธ์ ๋ก๋ (novel-config.md ๊ธฐ์ค โ ์์นยท์๊ฐยท์ค์ ์ ๋ณธ):
- {PLOT_DOC} โ ํด๋น EP์ ํ์ ์์น (๋ฉด์ ยท์๊ธยท์ํ๋ยท์ธ์ยท์๊ฐ๋)
- {BOOTSTRAP} โ ๋งคํฌ๋ก ์์น ์ ๋ณธ
- {CHAR_CORE} โ ์บ๋ฆญํฐ ๋์ด(์๋
๊ธฐ์ค), ๊ณ ์ ์ค์ ์ ๋ณธ
- {VERIFY} โ ๊ฒ์ฆ ์๋ฃ ์์น (์์ ๊ฒฝ์ฐ)
โ
โ
โ
LOGIC ์ถ์ ๋ฐ๋์ ์๋ธ์นดํ
๊ณ ๋ฆฌ๋ฅผ ๋
๋ฆฝ ์ํ โ
โ
โ
[TIMELINE] ์๊ฐ ์ ํฉ์ฑ โ 3๋จ๊ณ ํ๋กํ ์ฝ (์๋ต ๋ถ๊ฐ):
1๋จ๊ณ: ๋์ EP + ์ง์ 2ํ์์ ๋ชจ๋ ์๊ฐ ๋ง์ปค ์ถ์ถ. ์๋ ์๊ฐ์ ์ ๋ ๋ ์ง๋ก ๋ณํ.
2๋จ๊ณ: ๊ฐ์ ์ฌ๊ฑด/์ฝ์์ ๋ํ ์๊ฐ ์ฐธ์กฐ๊ฐ EP ๊ฐ ๋ชจ์๋๋์ง ํ์ธ.
3๋จ๊ณ: ์ถ์ถ ๊ฒฐ๊ณผ๋ฅผ ํ๋ก ์ถ๋ ฅ. '๋ฌธ์ ์์'์ด๋ผ๋ ํ๋ ๋ฐ๋์ ์ถ๋ ฅ.
[NUMBER] ์์น ์ ํฉ์ฑ:
๋์ EP์์ ๋ชจ๋ ์ซ์+๋จ์ ์ถ์ถ โ ์ง์ 2ํ์์ ๊ฐ์ ๋์ grep ๋์กฐ.
EP ๋ด ์ฐ์ (๋๋์
ยท๊ณฑ์
ยทํฉ์ฐ) ์ง์ ๊ณ์ฐ ๊ฒ์ฆ.
์ถ์ถ ๊ฒฐ๊ณผ๋ฅผ ํ๋ก ์ถ๋ ฅ.
[PLAUSIBILITY] ๊ฐ์ฐ์ฑ:
์บ๋ฆญํฐ ๋ฐ์ ๋ชจ์, ๋น์ฉ ๋๋ฝ, ์๋ ๊ณ ์ฆ ์๋ฐ ๊ฒ์ถ.
{CUSTOM_AXES_PROMPT}
์์ด์ ํธ ์ ์(story-analyst.md)์ ์ถ๋ ฅ ํ์์ ์ ํํ ๋ฐ๋ผ
TIMELINE ์ถ์ถ ํ, NUMBER ์ถ์ถ ํ, ๊ต์ฐจ๋์กฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋์ ํฌํจํ
Story Analysis Report๋ฅผ ์ถ๋ ฅํ๋ผ."
Agent("platform-optimizer"):
prompt: "EP{NNN} ({EPISODE_DIR}/ep{NNN}.md)์ ๋ํด ํ๋ซํผ ์ต์ ํ 4์ถ+ํนํ ์ง๋จ ์ํ.
์ง์ 2ํ({EPISODE_DIR}/ep{NNN-2}.md, {EPISODE_DIR}/ep{NNN-1}.md)๋ ์ฝ๊ธฐ.
์ง์ EP ๋ง์ง๋ง 500์ โ ํ์ฌ EP ์ฒซ 1,000์ ์ฐ๊ฒฐ ์์ฐ์ค๋ฌ์ ํ์ธ.
โ
์ค์ ๋ฌธ์ ๋ก๋ (novel-config.md ๊ธฐ์ค):
- {PLOT_DOC} โ ํด๋น EP์ ํ
์ ํยท๊ฐ์ ๊ฐ๋ยท๋นํธ ๊ตฌ์กฐ
- {PLOT_MACRO} โ ํต์ฌ ์ ํ ํฌ์ธํธ (์์ ๊ฒฝ์ฐ)
- {GUIDE} โ ๋ชจ๋ฐ์ผ ์ต์ ํ ์์น (์์ ๊ฒฝ์ฐ)
โ
ํ๋ซํผ๋ณ ๊ธฐ์ค:
- novel-config.md์ target_platform์ ๋ฌธํผ์, ๋ค์ด๋ฒ์๋ฆฌ์ฆ, ์นด์นด์คํ์ด์ง, ๋ฆฌ๋, ์กฐ์๋ผ, ๋
ธ๋ฒจํผ์ ์ค ํ๋์ฌ์ผ ํจ
- novel-config.md์ target_platform์ ํด๋นํ๋ ํ๋ซํผ ๊ฐ์ด๋ ์ฐธ์กฐ
- _workspace/platform-guide-{platform}.md๊ฐ ์์ผ๋ฉด ํด๋น ํ์ผ์ ๊ธฐ์ค ์ ์ฉ
์์ด์ ํธ ์ ์(platform-optimizer.md)์ ์ถ๋ณ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ๋ฐ๋ผ
${CLAUDE_PLUGIN_ROOT}/skills/polish/references/12-axes.md ์ถ8ยท10ยท11ยท12 ์ฐธ์กฐํ์ฌ ์ง๋จ.
HOOKยทOPENINGยทMOBILEยทSUMMARY ๊ฐ๊ฐ ์ ๋ ์ธก์ (ํ
๊ฐ๋, ๋ํ ๋น์จ ๋ฑ).
HOOK ์ ํ์ ์ค์ ๋ฌธ์์ ํด๋น EP ํ
์ ํ๊ณผ ๋์กฐํ์ฌ ํ๊ฐ.
ํต์ฌ ์ ํ ํฌ์ธํธ ํด๋น ์ ํ
๊ฐ๋ 4+ ํ์.
Platform Optimization Report ํ์์ผ๋ก ์ถ๋ ฅ."
Agent("alive-enhancer"):
prompt: "EP{NNN} ({EPISODE_DIR}/ep{NNN}.md)์ ๋ํด ์บ๋ฆญํฐ ์๋๊ฐ 4์ถ ์ง๋จ ์ํ.
์ง์ 2ํ({EPISODE_DIR}/ep{NNN-2}.md, {EPISODE_DIR}/ep{NNN-1}.md)๋ ์ฝ์ด
๋์ผ ๋น์ธ์ด ํํ์ด ์ง์ ํ์์ ๋ฐ๋ณต ์ฌ์ฉ๋๋์ง ํ์ธ.
โ
์ค์ ๋ฌธ์ ๋ก๋ (novel-config.md ๊ธฐ์ค):
- {CHAR_CORE} โ ์กฐ์ฐ๋ณ ๊ณ ์ ๊ธด์ฅ์ , ์ฃผ์ ๊ด๊ณ ๊ณก์
- {CHAR_DETAIL} โ ๋น์ธ์ด ํ๊ทธ ํ๋ ํธ, ํธ์นญ ๊ท์น, ๊ด๊ณ ๋ณํํ
alive-tracker.md์์ ์กฐ์ฐ๋ณ ๋ง์ง๋ง ๊ด๊ณ ์ด๋ฒคํธ ํ์ธ.
Alive Enhancement Report ํ์์ผ๋ก ์ถ๋ ฅ."
์ปค์คํ ์ถ ํ๋กฌํํธ ์ฝ์ ({CUSTOM_AXES_PROMPT}): novel-config.md์ "์ปค์คํ ์ง๋จ ์ถ" ์น์ ์ด ์์ผ๋ฉด, story-analyst ํ๋กฌํํธ์ ํด๋น ์ถ์ ์ ๋ณธยทํ์ง ํค์๋ยทํ๋ณ ๊ธฐ์ค์ ์ถ๊ฐํ๋ค. ์:
[PASTLIFE] ์ ์ ์ค์ ์ ํฉ์ฑ (novel-config.md ์ปค์คํ
์ถ):
๋ ์ด์ด1: 'grep "์ ์"' โ ํค์๋ ๋ฌธ์ฅ์์ ์ ๋ณธ๊ณผ ๋ชจ์ ๊ฒ์ถ.
๋ ์ด์ด2: ํ์ง_ํค์๋ grep โ ์์ ์์ ๋ฅ๋ ฅ ๋ถ์ ํฉ ๊ฒ์ถ.
ํ๋ณ: ์์ ์ ์ฌ์ค ์ง์ =VIOLATION / ์ ๋ต์ ์ํ=ALLOWED.
novel-config.md์ PASTLIFE ์น์
์ ๋ฌธ์ ์ฐธ์กฐํ๋ผ.
์ปค์คํ ์ถ์ด ์์ผ๋ฉด ์ด ๋ถ๋ถ์ ์๋ตํ๋ค.
4๊ฐ ๋ณด๊ณ ์๊ฐ ๋์์ค๋ฉด ํตํฉํ์ฌ revision-executor ํธ์ถ:
Agent("revision-executor"):
prompt: "์๋ 4๊ฐ ์ง๋จ ๋ณด๊ณ ์๋ฅผ ํตํฉํ์ฌ {EPISODE_DIR}/ep{NNN}.md๋ฅผ ๊ต์ .
๊ต์ ์ ์ง์ 2ํ๋ฅผ ๋ฐ๋์ ์ฝ์ด ์ค๋ณต ๋ด์ฉ ์ ๊ฑฐ ๋ฐ ์ฐ์์ฑ ๋ณด์ฅ์ ํ์ธํ๋ผ.
โ
์ค์ ๋ฌธ์ ๋ก๋ (novel-config.md ๊ธฐ์ค):
- {PLOT_DOC} โ ํด๋น EP์ ํ์ ์์นยท๋นํธ
- {BOOTSTRAP} โ ๋งคํฌ๋ก ์์น ์ ๋ณธ
- {CHAR_CORE} โ ์ฃผ์ธ๊ณต ๊ณ ์ ์ค์ , ๋์ด(์๋
๊ธฐ์ค)
- {CHAR_DETAIL} โ ๋ณด์ด์คํยทํธ์นญํยท๋น์ธ์ด ํ๊ทธ
โ
Phase 1 ์ง๋จ ๋ณด๊ณ ์ (ํ์ผ๋ก ์ฝ๊ธฐ):
- {WORK_DIR}/_workspace/07_rule-checker_report_ep{NNN}.md
- {WORK_DIR}/_workspace/07_story-analyst_report_ep{NNN}.md
- {WORK_DIR}/_workspace/07_platform-optimizer_report_ep{NNN}.md
- {WORK_DIR}/_workspace/07_alive-enhancer_report_ep{NNN}.md
์ 4๊ฐ ํ์ผ์ Readํ ํ, ์๋ ๋ณด๊ณ ์๋ ์ฐธ์กฐํ๋ผ:
[Rule Check Report โ ์ ํ์ผ ์ฐธ์กฐ]
{rule-checker ์ถ๋ ฅ ์์ฝ}
[Story Analysis Report โ ์ ํ์ผ ์ฐธ์กฐ]
{story-analyst ์ถ๋ ฅ ์์ฝ}
[Platform Optimization Report โ ์ ํ์ผ ์ฐธ์กฐ]
{platform-optimizer ์ถ๋ ฅ ์์ฝ}
[Alive Enhancement Report โ ์ ํ์ผ ์ฐธ์กฐ]
{alive-enhancer ์ถ๋ ฅ ์์ฝ}
โ
โ
โ
๊ต์ ์ฐ์ ์์ (์์ด์ ํธ ์ ์ ์ฐธ์กฐ) โ
โ
โ
1์์: [TIMELINE] CRITICAL, [NUMBER] CRITICAL โ ์ง์ 2ํ grep ํ ์ ๋ณธ ํ์ธํ์ฌ ์์
2์์: BANNED, LOGIC(๊ฐ์ฐ์ฑ), ์ปค์คํ
์ถ CRITICAL
3์์: TITLE, VOICE, SILENCE, TRANS
4์์: HOOK, OPENING, SCENE, ALIVE, SUMMARY, MOBILE, UNIFORM
์๊ฐยท์์น ๊ต์ ์ ํน๋ณ ๊ท์น:
- ์ ๋ณธ ํ์ธ: novel-config.md์ ์์น ๊ต์ฐจ๊ฒ์ฆ ์ ๋ณธ ์ฐ์ ์์๋ฅผ ๋ฐ๋ฅธ๋ค
- ํ๊ธ ํ์ธ: ์์น ๋ณ๊ฒฝ ์ ๊ฐ์ EP ๋ด ์ฐธ์กฐ ๋ฌธ์ฅ๋ ํจ๊ป ์์
- ์ฐ์ ์ฌ๊ฒ์ฆ: ์์ ํ ๊ด๋ จ ๊ณ์ฐ์ด ๋ง๋์ง ์ง์ ํ์ธ
- ์ ์๊ฐ ๋ง์ปค ๋์
์ ์ง์ 2ํ ํ์๋ผ์ธ๊ณผ ๋ชจ์ ์๋์ง ํ์ธ
๋ณด์กด ๊ฐ๋๋ ์ผ: {GUARD_RAILS}
[ADJACENT] ํ๊ทธ ํญ๋ชฉ์ ์ฐ์ ๊ต์ ๋์์ด๋ค.
๊ต์ ํ fix_plan.md๋ฅผ ์
๋ฐ์ดํธํ๋ผ."
Agent("revision-reviewer"):
prompt: "EP{NNN}์ ๊ต์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํ๋ผ.
๊ต์ ๋ {EPISODE_DIR}/ep{NNN}.md๋ฅผ ์ ๋ฌธ ์ ๋
ํ๋ผ.
์ง์ 2ํ๋ ๋ฐ๋์ ์ฐธ์กฐํ๋ผ.
โ
์ค์ ๋ฌธ์ ๋ก๋ (novel-config.md ๊ธฐ์ค):
- {PLOT_DOC} โ ํด๋น EP์ ํ์ ์์นยท๋นํธ
- {BOOTSTRAP} โ ๋งคํฌ๋ก ์์น ์ ๋ณธ
- {CHAR_CORE} โ ์ฃผ์ธ๊ณต ๊ณ ์ ์ค์ ์ ๋ณธ
- {CHAR_DETAIL} โ ๋ณด์ด์คํยท๋น์ธ์ด ํ์ธ
[Revision Execution Report]
{revision-executor ์ถ๋ ฅ}
โ
โ
โ
7๋ ๊ฒ์ฆ ์ํ โ
โ
โ
1. ๊ณผ๊ต์ : ์์ฐ์ค๋ฌ์ด ํํ์ ๊ธฐ๊ณ์ ์ผ๋ก ๋ฐ๊ฟ ์ด์ํด์ง ๊ณณ
2. ์ ๊ท ์ค๋ฅ: ๊ต์ ์ผ๋ก ์ธํด ์๋ก ๋ฐ์ํ ์์น ๋ถ์ผ์น, ํธ์นญ ์ค๋ฅ, ๋ฌธ๋งฅ ๋จ์
3. โ
TIMELINE/NUMBER ์ต์ข
๊ฒ์ฆ:
๊ต์ ๋ EP์์ ์๊ฐ ๋ง์ปค์ ์ซ์+๋จ์๋ฅผ ์ฌ์ถ์ถํ์ฌ ์ง์ 2ํ์ ๊ต์ฐจ๋์กฐ.
[TIMELINE] CRITICAL ์์กด โ REVISE
[NUMBER] CRITICAL ์์กด โ REVISE
๊ต์ ์ผ๋ก ์ธํ ์ ๊ท ์๊ฐยท์์น ๋ถ์ผ์น โ REVISE
์ฐ์ ์ค๋ฅ ์์กด โ REVISE
๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ ํ์์ผ๋ก ์ถ๋ ฅ
4. ์ปค์คํ
์ถ ์ต์ข
ํ์ธ (novel-config.md์ ์ปค์คํ
์ถ์ด ์์ผ๋ฉด)
5. ๋ณด์กด ๊ฐ๋๋ ์ผ: {GUARD_RAILS}
6. ํ
์ต์ข
ํ์ธ
7. ๋ถ๋ ยฑ15% ์ด๋ด
PASS/REVISE ํ์ ."
novel-config.md์ "๋ณด์กด ๊ฐ๋๋ ์ผ" ์น์ ์์ ๋ก๋ํ๋ค. ๊ต์ ์ ์ด ๋ชฉ๋ก์ ์์๋ฅผ ์ ๋ ํผ์ํ์ง ์๋๋ค.
novel-config.md์์ ํ๋ก์ ํธ๋ณ ํต์ฌ ์ ํ ํฌ์ธํธ๋ฅผ ์ ์ํ๋ค. platform-optimizer์๊ฒ ํ๋๊ทธ ์ ๋ฌ. ํ ๊ฐ๋ 4+ ํ์.