Interactive planning system for epic fantasy novels using the Crucible Structure—a 36-beat narrative framework with three interwoven story strands (Quest, Fire, Constellation), five Forge Points, and a Mercy Engine. Use when user wants to plan a fantasy novel, provides a story premise/synopsis, asks to "plan my fantasy book," wants to create planning documents for an epic fantasy, or mentions the Crucible Structure. Guides users through multi-choice questions to generate 7 planning document categories (14 files total) from a simple premise.
This skill inherits all available tools. When active, it can use any tool Claude has access to.
assets/templates/document-templates.mdreferences/crucible-structure.mdreferences/dark-mirror-guide.mdreferences/forge-point-rules.mdreferences/mercy-engine-guide.mdreferences/question-key-mapping.mdreferences/question-sequences.mdscripts/compile_documents.pyscripts/init_project.pyscripts/load_state.pyscripts/save_state.pyInteractive planning system for epic fantasy novels using the Crucible Structure.
Starting from a simple premise, guide users through multi-choice questions to build seven interconnected planning document categories (14 files total):
Always read these references:
references/crucible-structure.md (the 36-beat structure)references/question-sequences.md (complete question flows)Phase 1: INTAKE → Accept premise, initialize state, confirm scope
Phase 2: QUESTIONING → 9 document cycles with multi-choice questions
Phase 3: COMPILATION → Generate documents, present package
Extract from user input:
If premise too vague, use AskUserQuestion:
{
"questions": [
{
"header": "Protagonist",
"question": "Who is your protagonist?",
"options": [
{"label": "Reluctant chosen one", "description": "A chosen one who doesn't want the role"},
{"label": "Ordinary hero", "description": "An ordinary person thrust into extraordinary circumstances"},
{"label": "Fallen power", "description": "A powerful figure who's lost everything"},
{"label": "Seeking redemption", "description": "A morally gray character seeking redemption"}
],
"multiSelect": false
}
]
}
python scripts/init_project.py "./crucible-project" "Title" "Premise"
Use AskUserQuestion to confirm scope:
{
"questions": [
{
"header": "Novel Length",
"question": "What is your target novel length?",
"options": [
{"label": "Standard", "description": "100-150K words, ~20-25 chapters"},
{"label": "Epic", "description": "150-250K words, ~25-35 chapters"},
{"label": "Extended/Series", "description": "250K+ words or multi-book series, 35+ chapters"}
],
"multiSelect": false
},
{
"header": "Complexity",
"question": "What is your narrative complexity?",
"options": [
{"label": "Single POV", "description": "Single protagonist focus"},
{"label": "Dual POV", "description": "Two protagonists sharing the story"},
{"label": "Ensemble", "description": "Multiple POVs (3-5 characters)"}
],
"multiSelect": false
}
]
}
CRITICAL: Save every answer immediately after receiving it with FULL CONTEXT. This ensures progress is preserved if the session fails and answers can be understood later.
Each answer is saved with the question text, selected answer, and description:
python scripts/save_state.py "<project_path>" --answer "<document>" "<state_key>" "<question_text>" "<answer>" "<description>"
Parameters:
document - The document key (e.g., "doc1_crucible_thesis")state_key - The field name (e.g., "burden_type")question_text - The full question that was askedanswer - The selected option labeldescription - The description of the selected optionAsk the question using AskUserQuestion:
{
"questions": [{
"header": "Burden",
"question": "What form does the external burden take in your story?",
"options": [
{"label": "Physical object", "description": "An artifact that must be destroyed or protected"},
{"label": "Person to save", "description": "Someone who must be rescued or kept alive"}
],
"multiSelect": false
}]
}
User selects: "Physical object"
IMMEDIATELY save with full context:
python scripts/save_state.py "./crucible-project" --answer "doc1_crucible_thesis" "burden_type" "What form does the external burden take in your story?" "Physical object" "An artifact that must be destroyed or protected"
Verify save succeeded (output shows question and answer)
Ask next question
Each answer is stored as:
{
"question": "What form does the external burden take in your story?",
"answer": "Physical object",
"description": "An artifact that must be destroyed or protected"
}
This provides full context when resuming or reviewing progress.
Document 1 (Crucible Thesis):
python scripts/save_state.py "./project" --answer "doc1_crucible_thesis" "burden_type" "What form does the burden take?" "Physical object" "An artifact to destroy or protect"
python scripts/save_state.py "./project" --answer "doc1_crucible_thesis" "fire_type" "What is the Fire's nature?" "Magical ability" "A power that corrupts with use"
Nested Documents (Forge Points, Mercies):
python scripts/save_state.py "./project" --answer "doc5_forge_points.fp0_ignition" "quest_crisis" "What Quest crisis emerges?" "Artifact stolen" "Enemy takes the burden"
python scripts/save_state.py "./project" --answer "doc8_mercy_ledger.mercy_1" "recipient" "Who receives mercy?" "Enemy soldier" "A combatant who surrendered"
After the verification question is confirmed:
python scripts/save_state.py "./crucible-project" --complete <doc_num>
This marks the document complete and advances progress to the next document.
If a save fails:
/crucible-continueCRITICAL: Use the AskUserQuestion tool, NOT plain text options.
Example AskUserQuestion call:
{
"questions": [
{
"header": "Burden",
"question": "What form does the external burden take in your story?",
"options": [
{"label": "Physical object", "description": "An artifact that must be destroyed or protected"},
{"label": "Person to save", "description": "Someone who must be rescued or kept alive"},
{"label": "Knowledge/truth", "description": "Information that must be revealed or protected"},
{"label": "Mission/quest", "description": "A task that must be completed"}
],
"multiSelect": false
}
]
}
Header examples (max 12 chars): "Burden", "Fire Type", "Bond", "Antagonist", "Theme", "Sacrifice"
For verification questions, use multiSelect: true to allow checking multiple items.
See references/question-sequences.md for complete question banks.
Document 1: Crucible Thesis (10 questions)
Document 2: Quest Strand Map (7 questions)
Document 3: Fire Strand Map (7 questions)
Document 4: Constellation Strand Map (7 questions)
Document 5: Forge Point Blueprints (5 × 4 questions) For each Forge Point (Ignition, First, Second, Third, Apex):
Document 6: Dark Mirror Profile (9 questions)
Document 7: Constellation Bible (12 questions)
Document 8: Mercy Ledger (4 × 4 questions) For each of 4 mercies:
Document 9: World Forge (9 questions)
After completing Document 9 verification, Phase 2 is complete. All foundational planning documents have been created.
Proceed to Phase 3 to compile the documents into the final planning structure by running compile_documents.py.
python scripts/compile_documents.py "./crucible-project"
Creates:
planning/
├── crucible-thesis.md
├── strand-maps/
│ ├── quest-strand.md
│ ├── fire-strand.md
│ └── constellation-strand.md
├── forge-points/
│ ├── fp0-ignition.md
│ ├── fp1-first-crucible.md
│ ├── fp2-second-crucible.md
│ ├── fp3-third-crucible.md
│ └── apex-willed-surrender.md
├── dark-mirror-profile.md
├── constellation-bible.md
├── mercy-ledger.md
├── world-forge.md
└── crucible-summary.md
✅ **Crucible Planning Complete!**
📄 [View Crucible Thesis](computer:///path/planning/crucible-thesis.md)
📄 [View Strand Maps](computer:///path/planning/strand-maps/)
📄 [View Forge Points](computer:///path/planning/forge-points/)
📄 [View Dark Mirror Profile](computer:///path/planning/dark-mirror-profile.md)
📄 [View Constellation Bible](computer:///path/planning/constellation-bible.md)
📄 [View Mercy Ledger](computer:///path/planning/mercy-ledger.md)
📄 [View World Forge](computer:///path/planning/world-forge.md)
📋 [View Quick Reference](computer:///path/planning/crucible-summary.md)
After presenting the document links, use AskUserQuestion for next steps:
```json
{
"questions": [
{
"header": "Next Steps",
"question": "What would you like to do next?",
"options": [
{"label": "Review documents", "description": "Review and adjust any planning document"},
{"label": "Begin outline", "description": "Start creating chapter outlines from your plan"},
{"label": "Start drafting", "description": "Jump straight into writing prose"}
],
"multiSelect": false
}
]
}
Save after every question cluster:
python scripts/save_state.py "./crucible-project"
Resume interrupted session:
python scripts/load_state.py "./crucible-project"
crucible-structure.md — Complete 36-beat structurequestion-sequences.md — Full question bank by documentforge-point-rules.md — Strand convergence mechanicsdark-mirror-guide.md — Antagonist designmercy-engine-guide.md — Mercy/payoff mechanicsinit_project.py — Initialize projectsave_state.py — Save progressload_state.py — Load progresscompile_documents.py — Generate all documents