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.
View on GitHubforsonny/The-Crucible-Writing-System-For-Claude
crucible-suite
January 15, 2026
Select agents to install to:
npx add-skill https://github.com/forsonny/The-Crucible-Writing-System-For-Claude/blob/main//skills/crucible-planner/SKILL.md -a claude-code --skill crucible-plannerInstallation paths:
.claude/skills/crucible-planner/# Crucible Planner
Interactive planning system for epic fantasy novels using the Crucible Structure.
## Overview
Starting from a simple premise, guide users through multi-choice questions to build seven interconnected planning document categories (14 files total):
1. **Crucible Thesis** — philosophical core
2. **Strand Maps** — Quest, Fire, Constellation (3 separate maps)
3. **Forge Point Blueprints** — five convergence crises
4. **Dark Mirror Profile** — antagonist design
5. **Constellation Bible** — character relationships
6. **Mercy Ledger** — mercy/payoff tracking
7. **World Forge** — world-building
## Before Starting
**Always read these references:**
- `references/crucible-structure.md` (the 36-beat structure)
- `references/question-sequences.md` (complete question flows)
## Workflow
```
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
```
## Phase 1: Intake
### Accept Premise
Extract from user input:
- Core concept (1-2 sentences)
- Protagonist sketch
- Central conflict hint
**If premise too vague, use AskUserQuestion:**
```json
{
"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
}
]
}
```
### Initialize State
```bash
python scripts/init_project.py "./crucible-project" "Title" "Premise"
```
### Confirm Scope
Use AskUserQuestion to confirm scope:
```json
{
"questions": [
{
"header":