webnovel-init
npx skills add https://github.com/lingfengqaq/webnovel-writer --skill webnovel-init
Agent 安装分布
Skill 文档
Project Initialization (Deep only)
Goal: create a writing-ready project skeleton + creative constraints. No Quick/Standard mode.
Workflow
- Ask for deep setup info (story, character, world, golden finger, constraints).
- Run init_project.py with full parameters.
- Write idea_bank.json.
- Patch æ»çº².md with the collected core info.
- Verify files.
Reference Loading Levels (strict, lazy)
Apply progressive disclosure:
- L0: Load nothing extra until task type is confirmed.
- L1: Load only the minimum file needed for the current wave.
- L2: Load conditional files only when the user choice requires them.
- L3: Load optional/time-sensitive files only on explicit user request.
Do not recursively chase references inside a reference file unless blocked.
L1 (minimum, wave-gated)
- Before Wave 1:
references/genre-tropes.md
L2 (conditional)
- After genre selection:
templates/genres/{genre}.md(only for selected genres in A+B) - Before Wave 3 (golden finger):
templates/golden-finger-templates.md - Before Wave 4 (world):
references/worldbuilding/faction-systems.md - Before Wave 4 (constraints):
references/creativity/creativity-constraints.mdreferences/creativity/anti-trope-xianxia.md(ä¿®ä»/çå¹»/髿¦/西幻)references/creativity/anti-trope-rules-mystery.md(è§å/æ¬ç/çµå¼)
L3 (optional, explicit only)
references/creativity/market-trends-2026.md- If used, explicitly mark it as time-sensitive and verify freshness before relying on it.
Questioning style
- Ask in 3â4 conversational waves; avoid rigid templates.
- Ask only missing info; confirm before generation.
- Offer options only when the user is stuck.
Suggested grouping (flexible)
Wave 1: 书å + 颿 + ç®æ è§æ¨¡ + ä¸å¥è¯æ äº Wave 2: 主è§ï¼å§å/欲æ/缺é·/ç»æï¼ + ææ çº¿ + åæ´¾åå± Wave 3: éææï¼ç±»å/åç§°/飿 ¼/å¯è§åº¦/ä»£ä»·ï¼ + æ¡ä»¶è¿½é® Wave 4: ä¸çè§ï¼è§æ¨¡/åé/å¿å/é¶å±/å¢çï¼ + åæçº¦æç¡®è®¤
Adjust order based on user’s initial input. If user provides detailed info upfront, skip to missing items.
Required data (collect and map)
Order is flexible; group by theme.
A) Project scale & premise
- 书å
- é¢æï¼æ¯æ A+Bï¼
- ç幻修ä»ç±»: ä¿®ä» | ç³»ç»æµ | 髿¦ | 西幻 | æ éæµ | æ«ä¸ | ç§å¹»
- é½å¸ç°ä»£ç±»: é½å¸å¼è½ | é½å¸æ¥å¸¸ | é½å¸èæ´ | ç°å®é¢æ | 黿颿 | çµç« | ç´ææ
- è¨æ ç±»: å¤è¨ | 宫æå® æ | 鿥çå® | è±ªé¨æ»è£ | èåºå©æ | æ°å½è¨æ | å¹»æ³è¨æ | ç°è¨èæ´ | 女颿¬ç | çè¡è¨æ | æ¿èº«æ | å¤åå¤ç¦ | ç§ç° | 年代
- ç¹æ®é¢æ: è§åæªè° | æ¬çèæ´ | æ¬ççµå¼ | åå²å¤ä»£ | åå²èæ´ | 游æä½è² | ææè°æ | ç¥ä¹çç¯ | å èé²
- ç®æ è§æ¨¡ï¼æ»åæ°ææ»ç« æ°ï¼è¥åªç»æ»åæ°ï¼é»è®¤ææ¯ç« 3500 ä¼°ç®å¹¶åç¥ï¼
- ä¸å¥è¯æ äº + æ ¸å¿å²çª + ä¸»çº¿ç®æ
- ç®æ 读è /å¹³å°ï¼å¯ä¸å¥è¯æè¿°ï¼
B) 主è§ä¸éµè¥
- 主è§å§åã人设类åãæ ¸å¿æ¬²æãå ³é®ç¼ºé·
- 主è§ç»æï¼å/å¤ä¸»è§ï¼+ å¤ä¸»è§å§åä¸å®ä½
- ææ çº¿ï¼æ /å女主/å¤å¥³ä¸»ï¼å¥³ä¸»å§åä¸å®ä½
- åæ´¾åå±ï¼å°/ä¸/大ï¼+ åæ´¾éåä¸å¥è¯ + åæ´¾ç级ï¼è¥æï¼
C) éææ
- ç±»åãåç§°/ç³»ç»åã飿 ¼
- 常è§ç±»å: ç³»ç»é¢æ¿ | éçè®°å¿ | èç·ç·/ä¼ æ¿ | è¡èè§é | å¼è½è§é | éèº«ç©ºé´ | æ éææ
- 读è å¯è§åº¦ãä¸å¯é代价ãæé¿èå¥
- æ¡ä»¶è¿½é®ï¼æ ¹æ®ç±»åï¼ï¼
- ç³»ç»é¢æ¿ â ç³»ç»æ§æ ¼ãç³»ç»å½åãå级èå¥
- éçè®°å¿ â éçæ¶é´ç¹ãè®°å¿å®æ´åº¦ãå ç¥ç¨åº¦
- èç·ç·/ä¼ æ¿ â å¨çµæ§æ ¼ãå¨çµå®åãè¾ å©æ¹å¼
- éèº«ç©ºé´ â 空é´å¤§å°ãç¹æ®åè½ãå级æ¹å¼
- è¡èè§é â è¡èæ¥æºãè§éæ¡ä»¶ãè½åéå¶
- å¼è½è§é â å¼è½æ¥æºãå¼è½ä¸éãæ¯å¦å¯è¿å
- æ éææ â 主è§å¤©èµãç¹æ®æºéãæé¿è·¯çº¿
D) ä¸çè§ä¸åé
- ä¸çè§æ¨¡ãå¿åæ ¼å±ãåéä½ç³»ç±»å
- 社ä¼é¶å±ãèµæºåé
- è´§å¸ä½ç³» + å æ¢è§å
- å®é¨/ç»ç»å±çº§
- å¢çé¾ + å°å¢çååï¼å¦éç¨ï¼
E) åæçº¦æ
Generation flow:
- Load anti-trope library based on genre (xianxia or rules-mystery)
- Generate 2-3 creative packages, each containing:
- 书ååä½ï¼å¯éï¼
- ä¸å¥è¯åç¹
- åå¥è·¯è§åï¼ä»åºä¸é 1 æ¡ï¼
- 主è§ç¼ºé·ï¼é©±å¨æ äºï¼
- åæ´¾éå设计ï¼ä¸å¥è¯ï¼
- å¼ç¯é©å
- 硬约æ 2â3 æ¡
- Apply ä¸é®çé:
- Q1: è¿é¢æä¸ºä»ä¹”åªè½è¿æ ·å”ï¼
- Q2: è¿ä¸»è§å¦ææ¢æå¸¸è§äººè®¾ä¼å´©åï¼
- Q3: è¿ä¸ªåç¹ä¸å¥è¯è½è®²æ¸ ãä¸ä¸æå¸¸è§å¥è·¯åï¼
- Score each package (满å 50):
- æ°é¢åº¦ 25% | å¸åºæ§ 20% | å¯åæ§ 20% | ç½ç¹å¯åº¦ 20% | é¿çº¿æ½å 15%
- Present packages to user for selection
Collected data:
- åå¥è·¯è§åï¼ä»å¯¹åºåºé 1 æ¡ï¼
- 硬约æ 2â3 æ¡
- 主è§ç¼ºé·å¦ä½é©±å¨æ äºï¼ä¸å¥è¯ï¼
- åæ´¾éåå¦ä½ä½ç°ï¼ä¸å¥è¯ï¼
- å¼ç¯é©å + æ ¸å¿åç¹ 1â3 æ¡
Generate project
Sufficiency check (must pass before running init)
Hard requirement: do not run init_project.py until all items below are known or explicitly deferred by the user.
- 书åã颿ï¼å«å¤å颿ï¼
- ç®æ è§æ¨¡ï¼æ»åæ°ææ»ç« æ°ï¼
- 主è§å§å + 欲æ + 缺é·
- ä¸çè§æ¨¡ + åéä½ç³»ç±»å
- éææç±»åï¼å¯ä¸ºâæ éææâï¼
- åå¥è·¯è§å + 硬约æï¼è¥ç¨æ·æç»åæçº¦æï¼å¿ é¡»æç¡®è®°å½ï¼
If any is missing, stop and ask only for the missing items.
Project directory
- project_root = 书åå®å
¨åï¼å»éæ³å符ï¼ç©ºæ ¼è½¬
-ï¼ä¸ºç©ºæä»¥.å¼å¤´ååç¼proj-ï¼ - ç¦æ¢å¨
.claude/ä¸çæ
Run init script
python "${CLAUDE_PLUGIN_ROOT}/scripts/init_project.py" \
"{project_root}" \
"{title}" \
"{genre}" \
--protagonist-name "{protagonist_name}" \
--target-words {target_words} \
--target-chapters {target_chapters} \
--golden-finger-name "{gf_name}" \
--golden-finger-type "{gf_type}" \
--golden-finger-style "{gf_style}" \
--core-selling-points "{core_points}" \
--protagonist-structure "{protagonist_structure}" \
--heroine-config "{heroine_config}" \
--heroine-names "{heroine_names}" \
--heroine-role "{heroine_role}" \
--co-protagonists "{co_protagonists}" \
--co-protagonist-roles "{co_protagonist_roles}" \
--antagonist-tiers "{antagonist_tiers}" \
--world-scale "{world_scale}" \
--factions "{factions}" \
--power-system-type "{power_system_type}" \
--social-class "{social_class}" \
--resource-distribution "{resource_distribution}" \
--gf-visibility "{gf_visibility}" \
--gf-irreversible-cost "{gf_irreversible_cost}" \
--currency-system "{currency_system}" \
--currency-exchange "{currency_exchange}" \
--sect-hierarchy "{sect_hierarchy}" \
--cultivation-chain "{cultivation_chain}" \
--cultivation-subtiers "{cultivation_subtiers}" \
--protagonist-desire "{protagonist_desire}" \
--protagonist-flaw "{protagonist_flaw}" \
--protagonist-archetype "{protagonist_archetype}" \
--antagonist-level "{antagonist_level}" \
--target-reader "{target_reader}" \
--platform "{platform}"
Write idea_bank.json
Create .webnovel/idea_bank.json with the selected idea and inherited constraints.
{
"selected_idea": {
"title": "",
"one_liner": "",
"anti_trope": "",
"hard_constraints": []
},
"constraints_inherited": {
"anti_trope": "",
"hard_constraints": [],
"protagonist_flaw": "",
"antagonist_mirror": ""
}
}
Patch æ»çº².md
After init, fill these fields in 大纲/æ»çº².md using collected info:
- æ äºä¸å¥è¯ / æ ¸å¿ä¸»çº¿ / æ ¸å¿æçº¿
- åæçº¦æï¼åå¥è·¯è§å / 硬约æ / 主è§ç¼ºé· / åæ´¾éåï¼
- åæ´¾å屿¦è¦
- å ³é®ç½ç¹éç¨ç¢ï¼2â3 æ¡ï¼
Verify
Get-Item "{project_root}/.webnovel/state.json"
Get-ChildItem "{project_root}/设å®é" -Filter *.md
Get-Item "{project_root}/大纲/æ»çº².md"
Final check
.webnovel/state.jsonåå¨ä¸å å« title/genre/target_words/target_chapters设å®é/ä¸çè§.mdãåéä½ç³».mdã主è§å¡.mdãéææè®¾è®¡.mdå·²çæå¤§çº²/æ»çº².md已填ï¼ä¸å¥è¯æ äº / æ ¸å¿ä¸»çº¿ / åæçº¦æ / åæ´¾åå±.webnovel/idea_bank.jsonå·²åå ¥ï¼æåæçº¦ææ¶ï¼
Hard fail conditions (must stop)
- ä»»ä¸å ³é®æä»¶ä¸åå¨ï¼state.json / æ»çº².md / 设å®é主æä»¶ï¼
- æ»çº²å ³é®åæ®µä¸ºç©ºï¼æ äºä¸å¥è¯ / æ ¸å¿ä¸»çº¿ / åæçº¦æ / åæ´¾åå±ï¼
- idea_bank.json éè¦ä½æªçæï¼å½åæçº¦æè¢«å¯ç¨æ¶ï¼
Rollback / recovery
If any hard fail triggers:
- Stop and report missing items.
- Ask only for missing info.
- Re-run the minimal step needed:
- Missing files â re-run init_project.py.
- æ»çº²ç¼ºå段 â patch æ»çº².md only.
- idea_bank.json 缺失 â write it only.
- Re-run Final check. Do not proceed to /webnovel-plan until passing.