Novel Architect — 商业连载网文创作 Skill은(는) 무엇을 하나요?
버전 3.0.0. 목표는 Agent가 "스크립트 상태 가드 + 모델 문학 판단"의 혼합 방식으로 중국어 상업 연재 웹소설의 개서, 연재, 검수, 수정 및 장기 유지를 안정적으로 완료하는 것입니다.
0. 총칙
본 skill을 자율 실행 가능한 워크플로우로 취급하고, CLI 명령어 목록을 사용자에게 넘기지 마십시오.
- 사용자는 높은 수준의 창작 목표, 소재, 플랫폼, 선호도, 제한 사항 및 중요한 방향 선택을 제공합니다.
- Agent는 본
SKILL.md를 읽고, 필요 시references/를 읽은 후, 자체적으로novel_architectCLI를 호출하고, 산출물을 읽고, JSON/본문/수정본을 생성하며, 유효한 중단 지점까지 진행합니다. - Python CLI는 프로젝트 상태, 인덱스, 원장, 게이트, 신호, 해시 및 파일 쓰기를 담당하는 결정론적 도구 계층입니다. 사용자가 수동으로 실행하는 설명서가 아닙니다.
- 모델은 문학적 판단과 창작 출력(마켓 팩, 비트 선택, 본문 작성, 모델 신호, 수정, 피드백 진단)을 담당합니다.
- 쉘/파일 도구가 없고, 프로젝트 경로가 불명확하며 추론할 수 없거나, 실제 창작 방향 선택이 필요한 경우에만 사용자에게 문의합니다.
유효한 중단 지점은 다음과 같습니다: 챕터 gate.passed=true 및 commit 완료; 처음 3장 검수 실패로 인해 첫 부분을 다시 쓰거나 마켓 팩을 재작성해야 하는 경우; 필요한 입력이 부족하여 계속할 수 없는 경우; 도구 권한이 부족한 경우; 사용자가 여러 중요한 창작 방향 중에서 선택해야 하는 경우.
1. 명령 실행 규칙
novel_architect를 임포트할 수 있는 작업 공간에서 명령을 실행합니다. 우선적으로 프로젝트 저장소 루트 디렉토리에서 다음을 사용합니다:
uv run python -m novel_architect <command> ...
현재 환경에 uv가 없지만 패키지가 설치된 경우 다음을 사용합니다:
python -m novel_architect <command> ...
console 스크립트를 사용할 수 있는 경우 다음을 사용할 수도 있습니다:
novel-architect <command> ...
실행 전에 프로젝트 경로를 확인합니다. 사용자가 경로를 제공하면 해당 경로를 사용합니다. 사용자가 "이 책/계속 쓰기"라고만 말하면 projects/<책 이름>/ 디렉토리와 project.json을 먼저 확인합니다. 여러 후보 프로젝트를 판단할 수 없는 경우 사용자에게 문의합니다.
review, save-first3-review 등 명령어가 0이 아닌 값을 반환하는 것은 일반적으로 게이트를 통과하지 못했음을 의미하며, 프로그램 충돌을 의미하지 않습니다. 이 경우 출력 JSON, gate.json 또는 repair.json을 읽고 수정한 후 재시도합니다.
2. Agent 자율 실행 계약
반드시 직접 실행해야 하는 작업
작업에 개서, 연재, 검수, 수정, 개요 변경, 재구축, 피드백 진단 또는 상태 확인이 포함된 경우, Agent는 반드시 CLI를 직접 호출하고, 출력을 읽고, 파일에 쓰고, 프로세스를 계속 진행해야 합니다.
다음과 같이 응답하지 마십시오:
請 실행 python -m novel_architect prepare ...
실제로 명령을 실행하고, 산출물을 확인한 후 다음 단계로 진행해야 합니다. 환경에 쉘/파일 권한이 없는 경우에만 사용자에게 명령을 제공합니다.
내보낸 prompt는 모두 Agent의 작업 항목입니다
다음 명령어는 prompt 또는 input 파일을 내보냅니다. Agent는 이 파일들을 읽고 직접 해당 JSON/텍스트를 생성한 후, 저장 명령을 호출하거나 파일을 업데이트해야 합니다.
| 내보내기 명령 | 산출물 | Agent의 다음 단계 |
|---|---|---|
market-open | editorial/market_pack_prompt.md, market_pack_input.json | 엄격한 JSON을 생성하고 market-save 호출 |
beat-candidates | editorial/chXXXX/beat_competition_prompt.md, beat_competition_input.json, beat_options.json | 가장 강력한 계획을 선택/생성하고, beat-select 호출 후 apply-beat-selection 호출 |
export-signal-prompts | 12개의 signal prompt JSON | 각각 model signal JSON을 생성하고 save-model-signal 호출 |
first3-review | data/reviews/first3_review_prompt.md, first3_review_input.json | review_input_hash와 8개 점수를 포함한 평결 생성 후 save-first3-review 호출 |
feedback-diagnose | data/feedback/chXXXX_diagnosis_prompt.md, input | 진단 생성; 저장이 필요한 경우 진단을 피드백 JSON의 diagnosis에 기록한 후 save-feedback 호출 |
export-title-review-prompt / export-intro-review-prompt | 제목/소개 검수 prompt | 진단 생성, 필요 시 market_pack.json, 제목/소개 후보 또는 개서 자료 업데이트 |
사용자가 명시적으로 이러한 수동 협업 모드를 요청하지 않는 한, 사용자에게 이러한 prompt를 다른 모델에 붙여넣도록 하지 마십시오.
3. 작업 항목 빠른 참조
| 사용자 의도 | Agent가 실행해야 할 주요 프로세스 |
|---|---|
| 새 책 시작 | init → market-open → market-save → 진실 소스 보강 → first-10-retention / save-first10-plan → 처음 3장 시험 생산 |
| 다음 장 계속 쓰기 | status → prepare → beat competition → 본문 쓰기 → review → model signals → review → 수정 루프 → commit |
| 현재 장 수정 | editorial/chXXXX/repair.json 및 gate.json 읽기 → 본문 수정 → review → 필요한 model signals → 다시 review → 통과 후 commit |
| 처음 3장 검수 | 1-3장 제출 후 first3-review 실행 → 평결 생성 → save-first3-review |
| 개요/설정 수정 | src/*.json 진실 소스 수정 → rebuild → status → 필요 시 영향 받은 장 검수 재실행 |
| 권/일괄 검사 | batch-review, volume-review, benchmark, status |
| 플랫폼 피드백 반영 | save-feedback → feedback-diagnose → 진단 생성 → 후속 롤링 계획/market pack/장 노트 업데이트 |
| 책 분해 모델링 | learn --sample-dir <dir> 실행 후 결론을 실행 가능한 소재/리듬/장 계획 조정으로 변환 |
gen-prompt는 사용자가 "외부 집필 모델/Claude Code용 독립 프롬프트 내보내기"를 명시적으로 요청하는 경우에만 사용합니다. 일반 연재에서는 gen-prompt로 prepare → beat → writing_task → review → commit 주요 프로세스를 대체하지 마십시오.
4. 개서 프로세스
새 책을 시작할 때, 바로 1장을 쓰기 시작하지 마십시오. 먼저 시장 포지셔닝과 진실 소스를 구축합니다.
4.1 프로젝트 초기화
python -m novel_architect init --project <project_dir> --title <title> --genre <genre> --platform <platform> --premise <premise> --core-hook <core_hook> --protagonist <name>
초기화는 project.json, src/, manuscript/, data/, editorial/ 등 디렉토리를 생성합니다. 초기화는 골격만 제공하며, 개서 기획이 완료되었음을 의미하지 않습니다.
4.2 Market pack 생성 및 저장
market-open을 실행하고, 내보낸 prompt/input을 읽은 후, 직접 엄격한 JSON을 생성하고 market-save를 실행합니다.
market pack에는 최소한 다음이 포함되어야 합니다:
target_platformgenre_lanetarget_readerreader_desirescore_sell_pointsanti_sell_pointstitle_candidatesintro_candidatesfirst_10_chapter_retention_planplatform_notesauthor_constraints
처음 10장 계획에서 각 장은 반드시 chapter, hook, visible_payoff, drop_off_risk를 가져야 합니다. "갈등 강화", "쾌감 향상"과 같은 실행 불가능한 공허한 문구를 쓰지 마십시오.
4.3 진실 소스 보강
src/는 수동으로 확인된 진실 소스입니다. 개서 후 확인하고 보강합니다:
src/blueprint.json: 전제, 핵심 훅, 핵심 갈등, 주인공 목표.src/characters.json: 캐릭터 정체성, 욕망, 두려움, 약점, 아크, slug.src/character_voice_bible.json: 캐릭터 성문 규칙, 금지 어조, 행동 선호도, 감정 누출 지점. 구조는{"schema_version":1,"characters":{"캐릭터명":{...}}}; 파일이 스켈레톤이거나 캐릭터needs_completion=true인 경우, 본격적인 본문 작성 전에 먼저 보강합니다.src/world.json: 세계/직업/힘 규칙, 갈등과 쾌감에 기여하는 설정만 유지.src/taboos.json: 절대 건드릴 수 없는 클리셰, AI 냄새, 소재 안티패턴.src/volumes.json: 권 레벨 목표 및 롤링 장 개요. 한 번에 전체 책의 각 장을 고정하지 마십시오.src/genre_config.json: 소재 전략; 기본 지원: 판타지 레벨업, 도시 역습, 역사 권모, 미스터리 해결; 기타 소재는 market pack 및 사용자 정의 genre_config에 더 의존해야 합니다.
진실 소스 수정 후 다음을 실행합니다:
python -m novel_architect rebuild --project <project_dir>
python -m novel_architect status --project <project_dir>
플롯을 "수정"하기 위해 data/의 원장 또는 파생 상태를 수동으로 변경하지 마십시오. 장기적인 의미론적 수정은 src/ledger_overrides.json 또는 해당 src/*.json에 기록한 후 재구축합니다.
4.4 처음 10장 유지 계획
first-10-retention을 사용하여 계획을 내보내거나 생성합니다. 필요한 경우 직접 세분화한 후 save-first10-plan으로 저장합니다. 처음 10장은 진입 퍼널입니다. 계획은 각 장의 훅, 가시적 수익, 이탈 위험 및 하지 말아야 할 일을 구체적으로 명시해야 합니다.
5. 다음 장 연재 표준 프로세스
각 장은 완전한 순환을 거쳐야 합니다. 대화 컨텍스트에 따라 바로 본문을 쓰지 마십시오.
5.1 상태 확인
먼저 다음을 실행합니다:
python -m novel_architect status --project <project_dir>
현재 완료된 장 수, 게이트 상태, 인덱스 상태 및 처리해야 할 위험을 확인합니다. 대화 기억에 의존하여 다음 장 번호를 추정하지 마십시오.
5.2 PREPARE
python -m novel_architect prepare --project <project_dir> --query "<本章高层创作要求>"
산출물: editorial/chXXXX/writing_task.json. 이것은 집필 단계의 자체 포함 작업 패키지이며 반드시 읽어야 합니다. 여기에는 writer_brief, narrative_context, 서사 슬롯, 상업적 유지 필드, 캐릭터 성문, 독자 약속, 출력 형식 및 하드 규칙이 포함됩니다.
4장 이후 prepare는 처음 3장 특별 검수를 확인합니다. 정상적인 새 책은 --force-after-first3-fail을 사용해서는 안 됩니다. 이 매개변수는 이전 프로젝트 마이그레이션 또는 디버깅에만 사용됩니다.
5.3 Beat competition
1-10장은 반드시 beat competition을 실행해야 합니다. 10장 이후에도 기본적으로 실행하는 것이 좋으며, 사용자가 명시적으로 빠른 초안을 요청하는 경우에만 생략합니다.
python -m novel_architect beat-candidates --project <project_dir> --chapter <n>
내보낸 prompt를 읽고, 전략적으로 가장 강력한 계획을 생성하거나 선택한 후 저장하고 적용합니다:
python -m novel_architect beat-select --project <project_dir> --chapter <n> --file <selection.json>
python -m novel_architect apply-beat-selection --project <project_dir> --chapter <n>
선택 기준: 가시적 쾌감이 가장 명확하고, 적의 손실이 가장 구체적이며, 캐릭터 버튼이 가장 뚜렷하고, 장 마무리 추천 이유가 가장 강력하며, 이탈 위험이 가장 낮은 것. 적용 후 최신 writing_task.json을 다시 읽습니다.
5.4 WRITE
writing_task.json에 따라 본문을 작성하고 manuscript/第XXX章-标题.md에 저장합니다. 제목은 클릭 유발성이 있어야 하며, 단순히 第XXX章.md로 저장하지 마십시오.
본문은 반드시 writing_task.output_format.field_template을 엄격히 준수해야 합니다:
# 第XXX章-标题## 章节信息## 本章大纲## 正文## 记忆回写
주요 요구 사항:
- 본문은 최소 2000자, 목표 2000-2500자.
- 중국어 겹따옴표
""사용. - 첫 단락은 이전 장의 훅을 이어받음; 1장의 경우 빠르게 압박감, 주인공 욕망 및 가시적 기회를 구축.
- 각 장은 일반 독자가 5초 내에 설명할 수 있는 가시적 쾌감이 있어야 함.
- 전문적인 프로세스/용어는 돈, 권력, 체면, 신분, 관계, 비밀, 전투력, 자원 또는 안전의 득실로 번역되어야 함.
- 캐릭터 대화는
character_voice_bible을 반영해야 하며, 모든 캐릭터가 동일한 전략적 요약 어조를 사용해서는 안 됨. - 새로운 독자 기대를 생성한 경우, 기억 회신에 추가된 독자 약속을 기재해야 함; 기대를 충족시킨 경우, 충족 ID와 가시적 증거를 기재해야 함.
5.5 REVIEW 1차
python -m novel_architect review --project <project_dir> --chapter <n>
0이 아닌 값을 반환하면 editorial/chXXXX/gate.json 및 repair.json을 읽고 건너뛰지 마십시오.
5.6 모델 신호 평가
신호 prompt 내보내기:
python -m novel_architect export-signal-prompts --project <project_dir> --chapter <n>
처음 10장, 권 시작, 권 끝, 클라이맥스, 반전, 출시 전 장: 12개 신호를 모두 생성하고 model signal을 저장해야 합니다.
안정 기간에는 최소한 다음을 포함해야 합니다:
reader_pullvisible_payoffblockbustertitle_hookcharacter_voicedomain_translationstory_logicstate_guard
각 모델 신호 저장:
python -m novel_architect save-model-signal --project <project_dir> --chapter <n> --signal <signal_type> --file <signal.json>
모델 신호는 엄격한 JSON을 출력해야 합니다. 점수가 7 미만인 경우 pass를 쓰지 마십시오. 모델 pass는 heuristic warn/fail을 덮어쓸 수 없습니다. 최종적으로는 가장 엄격한 병합(strictest merge)을 채택합니다.
5.7 REVIEW 2차 및 수정 루프
모델 신호 저장 후 다시 실행:
python -m novel_architect review --project <project_dir> --chapter <n>
gate.json에서 passed=true인 경우에만 제출할 수 있습니다. passed=false인 경우 repair.json을 읽고, 본문을 수정한 후 review/model-signal/review를 통과하거나 유효한 중단 지점에 도달할 때까지 반복합니다.
5.8 COMMIT
python -m novel_architect commit --project <project_dir> --chapter <n>
게이트 통과 후에만 실행합니다. commit은 상태를 업데이트하고, 인덱스를 재구축하며, 원장을 업데이트하고, reader promise 생성/이행/기한 초과를 처리합니다. 장을 건너뛰어 제출하지 마십시오. gate.json 또는 signals를 수동으로 변경하여 강제로 통과시키지 마십시오.
6. 처음 3장 특별 게이트
새 책의 1-3장은 시험 생산 단계입니다. 1, 2, 3장이 각각 prepare → beat → write → review → model signals → review → commit을 완료한 후, 반드시 다음을 실행해야 합니다:
python -m novel_architect first3-review --project <project_dir>
data/reviews/first3_review_prompt.md 및 first3_review_input.json을 읽고, 평결 JSON을 생성한 후 저장합니다:
python -m novel_architect save-first3-review --project <project_dir> --file <first3_verdict.json>
4장을 계속 진행하려면 다음 조건을 모두 충족해야 합니다:
verdict == "continue"bulk_continue_allowed == true- 현재
review_input_hash를 원본 그대로 포함 - 8개 점수 모두 존재:
title_intro_click_score,first_chapter_hook_score,protagonist_desire_score,conflict_speed_score,first_payoff_speed_score,enemy_or_pressure_score,setting_clarity_score,continuation_score - 모든 점수는 1-10 숫자이며, 모두
>= 7
결과가 rewrite_opening이면 먼저 처음 3장을 수정하고; redo_market_pack이면 market pack, 제목/소개/처음 10장 계획을 먼저 재작성합니다. 정상적인 새 책 추진에 --force-after-first3-fail을 사용하지 마십시오.
처음 3장 본문, market pack 또는 진입 입력이 변경되면, 기존 first3_review는 해시 만료로 인해 4장 이후 생산을 차단하므로 first3-review를 다시 실행하고 새 평결을 저장해야 합니다.
7. 게이트 및 12개 신호
review는 12개의 신호, 평결, 게이트, 수리를 생성합니다. 각 review는 heuristic signal을 다시 실행합니다. 새로운 model signal은 .model.json 변형으로 저장되어 strictest merge에 참여합니다. 최종 신호는 더 엄격한 결과를 취합니다.
| 신호 | 감지 내용 | 실패 처리 |
|---|---|---|
anti_ai | AI 관용구, 추상 밀도, 빈 단락, 직선 따옴표 | hard, 반드시 수정 |
story_logic | POV, 정보 출처, 힘/논리, 정보 덤핑 | hard, 반드시 수정 |
state_guard | 훅, 대가, 적 라인, 필수 요소, 금지 구역, 기한 초과 reader promise | hard/quality, 반드시 수정 |
emotion | 감정 곡선, 관계 역학, 후유증 | quality, 실패 시 제출 불가 |
blockbuster | 압박/반격/이행/대가 4단 쾌감 곡선 | quality, 실패 시 제출 불가 |
visible_payoff | 돈/권력/체면/신분/관계/비밀/능력/자원/안전 득실 | quality, 실패 시 제출 불가 |
reader_pull | 시작 훅, 중간 서스펜스, 장 마무리 추천, 중독 루프 | quality, 실패 시 제출 불가 |
title_hook | 장 제목 클릭 유발성, 제목/파일명 일관성, 장 끝 훅 | quality, 실패 시 제출 불가 |
character_voice | 캐릭터 성문 차이, 금지 어조, 대화 귀속 | quality, 실패 시 제출 불가 |
domain_translation | 전문 설정이 일반 독자에게 가시적 득실로 번역되었는가 | quality, 실패 시 제출 불가 |
novelty | 구조/장법/결말 패턴 반복 | market, 실패 시 차단 |
continuity | 훅, 대가, 적 스레드 계승 | market, 실패 시 차단 |
간단한 규칙: gate.passed만 확인합니다. passed=true인 경우에만 commit 가능; passed=false인 경우 수정합니다.
8. 장기 유지 관리
- 매 장:
prepare → beat → write → review → model signals → review → repair → commit완전 실행. - 매 3장:
status실행, 활성/기한 초과 reader promise, 게이트 변경, 인덱스 상태 확인. - 매 5장:
batch-review --start <a> --end <b>실행, 연속 약점 및 반복 패턴 확인. - 매 10장 또는 중요 시점:
volume-review,benchmark실행,volumes.json및 이후 5-10장 계획 롤링 업데이트. - 매 권 종료: 권 목표, 적 손실, reader promise 이행, 다음 권 훅 확인.
- 출시 후:
save-feedback으로 데이터 및 댓글 기록,feedback-diagnose로 다음 실험 제안으로 변환. 샘플이 매우 작은 경우 단일 댓글에 과적합하지 마십시오.
9. 진실 소스 및 디렉토리 규칙
프로젝트 구조:
projects/<书名>/
├── project.json
├── src/ # 진실 소스, 수동 확인된 설정 및 계획
├── manuscript/ # 본문 챕터 .md
├── data/ # 파생 상태, 재구축 가능, 수동 수정 금지
├── editorial/ # 각 장 brief / writing_task / signals / gate / repair
└── exports/
중요 규칙:
src/및manuscript/는 진실 입력(truth input)입니다.data/,editorial/은 런타임/파생 산출물입니다. 게이트를 우회하기 위해 수동으로 수정하지 마십시오.- 설정, 권 개요, 캐릭터를 변경할 때는
src/*.json을 수정한 후rebuild를 실행합니다. - 본문을 변경할 때는
manuscript/第XXX章-标题.md를 수정한 후review를 실행합니다. - 장기적인 수동 원장 수정은
src/ledger_overrides.json에 기록한 후rebuild를 실행합니다.
10. 금지 사항
다음 행위를 하지 마십시오:
- CLI 작업을 사용자에게 수동 실행하도록 넘기지 마십시오.
prepare없이 본 장을 바로 작성하지 마십시오.- 처음 10장에서 beat competition을 건너뛰지 마십시오.
gate.passed=false상태에서 commit하거나 다음 장을 계속하지 마십시오.- 정상적인 새 책에
--force-after-first3-fail을 사용하지 마십시오. - heuristic review만으로 상업적 품질이 충분하다고 간주하지 마십시오. 중요 장은 반드시 model signal을 수행해야 합니다.
gate.json, signals 또는data/ledgers를 수동으로 수정하여 통과를 위조하지 마십시오.- 장에 제목이 없거나
第XXX章.md로만 저장하지 마십시오. - 기억 회신에 장기간 "없음"을 채우지 마십시오, 특히 reader promise.
- 전문적인 프로세스를 회의록, 권한 기록, 검토 체크리스트로 작성하지 말고, 독자에게 가시적인 득실로 번역하십시오.
- 특정 작가나 기존 작품의 언어 스타일을 문자 그대로 모방하겠다고 약속하지 마십시오.
11. 읽어야 할 참조 파일
필요에 따라 읽되, 모든 자료를 한 번에 컨텍스트에 넣지 마십시오.
| 파일 | 읽는 시기 |
|---|---|
references/pipeline-spec.md | PREPARE/WRITE/REVIEW/COMMIT, 복구, 해시, 신선도에 질문이 있을 때 |
references/review-spec.md | 12 signals, model signal, 평결, gate, repair 처리 시 |
references/story-spec.md | 장 형식, 장 패턴, 리듬 변형, 기억 회신 필드가 불확실할 때 |
references/state-spec.md | 상태, 원장, reader promise, ledger overrides, rebuild 변경 시 |
references/genre-spec.md | 소재 전략, genre_config, 소재 마커, 내장 플레이북 시 |
references/learning-spec.md | 책 분해 모델링 및 샘플 구조 학습 시 |
references/longrun-spec.md | batch/volume/benchmark 및 장편 안정성 확인 시 |
만약 구현 동작, README 및 references가 충돌하는 경우, 현재 Python CLI 동작을 기준으로 하고 유지 관리 작업에서 문서를 동기화합니다.
12. 일반 명령어 목록
python -m novel_architect --help
python -m novel_architect init --project <dir> --title <title> --genre <genre> [--platform <platform>] [--premise <text>] [--core-hook <text>] [--protagonist <name>]
python -m novel_architect market-open --project <dir> [--platform <platform>] [--genre-hint <genre>] [--seed-idea <idea>] [--author-intent <intent>] [--constraint <text>] [--stdout]
python -m novel_architect market-save --project <dir> --file <market_pack.json>
python -m novel_architect market-status --project <dir>
python -m novel_architect first-10-retention --project <dir> [--stdout]
python -m novel_architect save-first10-plan --project <dir> --file <first10.json>
python -m novel_architect status --project <dir>
python -m novel_architect prepare --project <dir> [--query <text>]
python -m novel_architect beat-candidates --project <dir> --chapter <n>
python -m novel_architect beat-select --project <dir> --chapter <n> --file <selection.json>
python -m novel_architect apply-beat-selection --project <dir> --chapter <n>
python -m novel_architect review --project <dir> --chapter <n>
python -m novel_architect export-signal-prompts --project <dir> --chapter <n>
python -m novel_architect save-model-signal --project <dir> --chapter <n> --signal <type> --file <signal.json>
python -m novel_architect commit --project <dir> --chapter <n>
python -m novel_architect resume --project <dir> --chapter <n> [--query <text>]
python -m novel_architect first3-review --project <dir>
python -m novel_architect save-first3-review --project <dir> --file <first3_verdict.json>
python -m novel_architect batch-review --project <dir> --start <a> --end <b>
python -m novel_architect volume-review --project <dir> [--volume <n>]
python -m novel_architect benchmark --project <dir>
python -m novel_architect rebuild --project <dir>
python -m novel_architect rebuild-index --project <dir>
python -m novel_architect validate --project <dir> --chapter <n>
python -m novel_architect learn --sample-dir <dir>
python -m novel_architect save-feedback --project <dir> --chapter <n> --file <feedback.json>
python -m novel_architect feedback-diagnose --project <dir> --chapter <n>
python -m novel_architect feedback-summary --project <dir>
python -m novel_architect gen-prompt --project <dir> [--outline-file <path>] [--stdout]