Spec-driven long-form novel creation — Spec-first workflow for AI-assisted storytelling
Project description
NovelSpec
Spec-driven long-form novel creation for AI coding assistants.
Inspired by OpenSpec (spec-driven development for AI coding), NovelSpec brings the same philosophy to storytelling:
Agree on the world before you write a single word.
Philosophy
→ spec-first not improv-first
→ iterative not waterfall
→ structured enough to keep AI consistent
→ flexible enough to change your mind
→ scalable from short stories to epic sagas
How It Works
NovelSpec Workflow
╔══════════════════════════════════════════════════════╗
║ SETUP PHASE ║
║ ║
║ /novel:init → /novel:worldbuild → /novel:outline ║
║ │ │ │ ║
║ │ (iterate) (batch per part) ║
╚════════╪═══════════════╪══════════════════╪═══════════╝
│ │ │
▼ ▼ ▼
╔══════════════════════════════════════════════════════╗
║ WRITING PHASE ║
║ ║
║ /novel:write → review → /novel:revise → continue ║
║ ║
╚══════════════════════════════════════════════════════╝
│ │ │
▼ ▼ ▼
╔══════════════════════════════════════════════════════╗
║ EVOLUTION PHASE ║
║ ║
║ /novel:propose → discuss → /novel:accept → archive ║
║ ║
║ /novel:audit (weekly or on demand) ║
║ ║
╚══════════════════════════════════════════════════════╝
Quick Start
# Install
pip install novelspec
# Create a new novel project
novelspec init my-novel
cd my-novel
# In your AI assistant (Claude Code, Cursor, Windsurf...):
# /novel:worldbuild → describe your story materials
# /novel:outline part-01 → create chapter outlines
# /novel:write → start writing chapters
Project Structure
my-novel/
├── novel.yaml # Metadata
├── world/ # World-building
├── characters/ # Character profiles
├── plot/ # Plot, outlines, foreshadowing
├── style/ # Narrative style guide
├── prompts/ # Agent working instructions
├── state/ # Writing progress tracker
├── chapters/ # Chapter drafts
├── framework/ # Framework change proposals
└── meta/ # Changelog
Slash Commands
| Command | Purpose |
|---|---|
/novel:init |
Initialize a new novel project |
/novel:worldbuild |
Generate world framework from your materials |
/novel:outline |
Create chapter outlines per part |
/novel:write |
Write the next chapter |
/novel:show |
Read written content |
/novel:revise |
Revise a chapter (auto-saves history) |
/novel:propose |
Propose a framework change |
/novel:accept |
Accept and apply a framework change |
/novel:archive |
Archive completed proposals |
/novel:audit |
Consistency audit |
/novel:status |
Show writing progress |
Three-Level Storage
- L1 - Framework layer (world/ + characters/ + plot/ + style/): Stable, rarely changes
- L2 - State layer (state/): Updates daily, compact
- L3 - Output layer (chapters/): Full drafts, only
summary.mdreferenced for context
This prevents context window explosion in long novels.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file novelspec-1.1.0.tar.gz.
File metadata
- Download URL: novelspec-1.1.0.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56eb19635d85da34c0201d4d22dacf8bfbb3a07d93015df4c538bee96ff6a5e3
|
|
| MD5 |
82a3fc35ed9cdff9c2b4ce329b9b5fc4
|
|
| BLAKE2b-256 |
a55abae9e3f0714c90bd6e004c9c99c1cc2d4942fc9494a87ac238e78b7f757f
|
Provenance
The following attestation bundles were made for novelspec-1.1.0.tar.gz:
Publisher:
publish.yml on liemei/novelspec
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
novelspec-1.1.0.tar.gz -
Subject digest:
56eb19635d85da34c0201d4d22dacf8bfbb3a07d93015df4c538bee96ff6a5e3 - Sigstore transparency entry: 1386984983
- Sigstore integration time:
-
Permalink:
liemei/novelspec@c3895116924a9440c9af88808736b03e850a4962 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/liemei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c3895116924a9440c9af88808736b03e850a4962 -
Trigger Event:
release
-
Statement type:
File details
Details for the file novelspec-1.1.0-py3-none-any.whl.
File metadata
- Download URL: novelspec-1.1.0-py3-none-any.whl
- Upload date:
- Size: 22.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db3738dffed1c9a6aef84b818f29a9bfa2158f2c3258ddb3757533b58e647a18
|
|
| MD5 |
45912665eca988dafbf3d62273ccad43
|
|
| BLAKE2b-256 |
e9a1b44fb2ad0f915d3557eeb1a3dde20877b39e8afb1630db390d4c4f036e17
|
Provenance
The following attestation bundles were made for novelspec-1.1.0-py3-none-any.whl:
Publisher:
publish.yml on liemei/novelspec
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
novelspec-1.1.0-py3-none-any.whl -
Subject digest:
db3738dffed1c9a6aef84b818f29a9bfa2158f2c3258ddb3757533b58e647a18 - Sigstore transparency entry: 1386985276
- Sigstore integration time:
-
Permalink:
liemei/novelspec@c3895116924a9440c9af88808736b03e850a4962 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/liemei
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c3895116924a9440c9af88808736b03e850a4962 -
Trigger Event:
release
-
Statement type: