From wordsmith
Deep-initialize a webnovel project. Collects complete creative information through phased interaction, and generates a project skeleton and constraint files ready for planning and writing.
How this skill is triggered — by the user, by Claude, or both
Slash command
/wordsmith:webnovel-initThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
**You MUST read `../../STYLE_GUIDE_VN.md` before starting any task.**
references/creativity/anti-trope-game.mdreferences/creativity/anti-trope-rules-mystery.mdreferences/creativity/anti-trope-urban.mdreferences/creativity/anti-trope-xianxia.mdreferences/creativity/category-constraint-packs.mdreferences/creativity/creative-combination.mdreferences/creativity/creativity-constraints.mdreferences/creativity/inspiration-collection.mdreferences/creativity/market-positioning.mdreferences/creativity/market-trends-2026.mdreferences/creativity/selling-points.mdreferences/genre-tropes.mdreferences/system-data-flow.mdreferences/worldbuilding/character-design.mdreferences/worldbuilding/faction-systems.mdreferences/worldbuilding/power-systems.mdreferences/worldbuilding/setting-consistency.mdreferences/worldbuilding/world-rules.mdYou MUST read ../../STYLE_GUIDE_VN.md before starting any task.
The STYLE_GUIDE_VN.md contains authoritative Vietnamese writing patterns that MUST be applied:
8 Error Types to Avoid (from user feedback):
Key Patterns from Ta Dung Nhin Vo Lam Toang:
.webnovel/state.json, Settings/*, Outline/master.md, .webnovel/idea_bank.json./webnovel-plan and /webnovel-write can run directly.init_project.py until the sufficiency gate is passed.Read/Grep/Bash/Task/AskUserQuestion/WebSearch/WebFetch may be invoked to assist with collection.Use tiered loading to avoid dumping all material at once:
Path conventions:
references/... relative to the current skill directory (${CLAUDE_PLUGIN_ROOT}/skills/webnovel-init/references/...).templates/... relative to the plugin root directory (${CLAUDE_PLUGIN_ROOT}/templates/...).../../STYLE_GUIDE_VN.md for Vietnamese writing methodology patterns.Default loading manifest:
references/genre-tropes.mdtemplates/genres/{genre}.md../../templates/golden-finger-templates.mdreferences/worldbuilding/faction-systems.mdreferences/creativity/market-trends-2026.md../../STYLE_GUIDE_VN.mdreferences/genre-tropes.md
references/system-data-flow.md
/plan and /write data flow.references/worldbuilding/character-design.md
references/worldbuilding/faction-systems.md
references/worldbuilding/power-systems.md
references/worldbuilding/setting-consistency.md
references/worldbuilding/world-rules.md
references/creativity/creativity-constraints.md
references/creativity/category-constraint-packs.md
references/creativity/creative-combination.md
references/creativity/inspiration-collection.md
references/creativity/selling-points.md
references/creativity/market-positioning.md
references/creativity/market-trends-2026.md
references/creativity/anti-trope-xianxia.md
references/creativity/anti-trope-urban.md
references/creativity/anti-trope-game.md
references/creativity/anti-trope-rules-mystery.md
Read/Grep: Read project context and reference files (README.md, CLAUDE.md, templates/genres/*, references/*).Bash: Execute init_project.py, file existence checks, minimal validation commands.Task: Split parallel sub-tasks (e.g. genre mapping, constraint pack candidate generation, file validation).AskUserQuestion: Used for key conflict adjudication, candidate selection, and final confirmation.WebSearch: Search for the latest market trends, platform directions, and genre data (domain filtering supported).WebFetch: Fetch content from confirmed source pages for fact verification.Environment setup (before executing bash commands):
export WORKSPACE_ROOT="${CLAUDE_PROJECT_DIR:-$PWD}"
if [ -z "${CLAUDE_PLUGIN_ROOT}" ] || [ ! -d "${CLAUDE_PLUGIN_ROOT}/scripts" ]; then
echo "ERROR: CLAUDE_PLUGIN_ROOT is not set or directory is missing: ${CLAUDE_PLUGIN_ROOT}/scripts" >&2
exit 1
fi
export SCRIPTS_DIR="${CLAUDE_PLUGIN_ROOT}/scripts"
Required actions:
${CLAUDE_PLUGIN_ROOT}/scripts${SCRIPTS_DIR}/webnovel.pypython "${SCRIPTS_DIR}/webnovel.py" --project-root "${WORKSPACE_ROOT}" wherereferences/system-data-flow.md (for verifying the link between init output and plan/write input)references/genre-tropes.mdtemplates/genres/ (read on demand only after the user selects a genre)Output:
Required collection:
Genre set (for normalization and mapping):
Interaction approach:
Required collection:
Optional collection:
Required collection:
Conditionally required collection:
Required collection:
Genre-related collection:
Process:
references/creativity/creativity-constraints.md, section 8.1 Five-Dimension Scoring) to assist user decision-making.Notes:
Must output a "initialization summary draft" for user confirmation:
Confirmation rules:
{
"project": {
"title": "",
"genre": "",
"target_words": 0,
"target_chapters": 0,
"one_liner": "",
"core_conflict": "",
"target_reader": "",
"platform": ""
},
"protagonist": {
"name": "",
"desire": "",
"flaw": "",
"archetype": "",
"structure": "single-protagonist"
},
"relationship": {
"heroine_config": "",
"heroine_names": [],
"heroine_role": "",
"co_protagonists": [],
"co_protagonist_roles": [],
"antagonist_tiers": {},
"antagonist_level": "",
"antagonist_mirror": ""
},
"golden_finger": {
"type": "",
"name": "",
"style": "",
"visibility": "",
"irreversible_cost": "",
"growth_rhythm": ""
},
"world": {
"scale": "",
"factions": "",
"power_system_type": "",
"social_class": "",
"resource_distribution": "",
"currency_system": "",
"currency_exchange": "",
"sect_hierarchy": "",
"cultivation_chain": "",
"cultivation_subtiers": ""
},
"constraints": {
"anti_trope": "",
"hard_constraints": [],
"core_selling_points": [],
"opening_hook": ""
}
}
Do not execute init_project.py until all of the following conditions are met:
project_root must be generated by sanitizing the title (remove illegal characters, spaces to -).., automatically prefix with proj-.${CLAUDE_PLUGIN_ROOT}).python "${SCRIPTS_DIR}/webnovel.py" init \
"{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}"
idea_bank.jsonWrite to .webnovel/idea_bank.json:
{
"selected_idea": {
"title": "",
"one_liner": "",
"anti_trope": "",
"hard_constraints": []
},
"constraints_inherited": {
"anti_trope": "",
"hard_constraints": [],
"protagonist_flaw": "",
"antagonist_mirror": "",
"opening_hook": ""
}
}
Must fill in:
Run checks:
test -f "{project_root}/.webnovel/state.json"
find "{project_root}/Settings" -maxdepth 1 -type f -name "*.md"
test -f "{project_root}/Outline/master.md"
test -f "{project_root}/.webnovel/idea_bank.json"
Success criteria:
state.json exists and key fields are non-empty (title / genre / target_words / target_chapters).worldview.md, power-system.md, protagonist-profile.md, golden-finger-design.md.master.md has the core plot thread and constraint fields filled in.idea_bank.json has been written and matches the final selected option.Trigger conditions:
idea_bank.json is missing or its content is inconsistent.Recovery flow:
init_project.py;idea_bank inconsistent -> rewrite that file only.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub nntrivi2001/wordsmith --plugin wordsmith