Stage 05 · SpecialtiesModule 23 of 26~5h

Creative Writing

Worldbuilding, drafting, and editing fiction.

← All modules in this stage

In every other module the warning has been "don't let it invent things." In creative writing, invention is the point. The discipline shifts: instead of grounding to facts, you ground to a voice, a structure, and a set of rules about your world. This module is about wielding Claude as a generative collaborator without losing your distinctive sound.

By the end of this module you'll have

Time: about 1 hour for the basics, ~5 hours with all three notebooks.

Prerequisites: Modules 3 (prompt basics), 10 (conversations), 13 (content creation).


What changes for creative work

Three things shift compared with the rest of the curriculum:

  1. Temperature goes up. Try temperature=0.9 for first drafts; lower it to 0.3 for revisions and continuity work.
  2. Voice replaces facts. Your equivalent of a knowledge base is a voice guide: tone, pacing, vocabulary, pet hates.
  3. You're in charge of taste. No grader will tell you "this scene works." That's still you.

Recipe 1 · Voice guide as a system prompt

The single highest-leverage thing you can write for creative work.

VOICE = """\
You are drafting prose for [author/project]. Voice rules, in order of importance:

- POV: third person limited, present tense.
- Sentence rhythm: short, declarative. Occasional fragment for emphasis. Never two long sentences in a row.
- Sensory: lean toward sound and texture, away from visual. Smell once per scene.
- Forbidden: "suddenly", "very", "really", "tasted like copper", any cliché list of three.
- Allowed: direct address to the reader, but only twice per chapter.
- Tone: cool, observational. Funny by understatement, never by quip.
"""

That VOICE becomes the system prompt for every creative call. The longer your project runs, the more refined this becomes. Save it; revise it the way you'd revise a manuscript.


Recipe 2 · Scene generator

from anthropic import Anthropic
from dotenv import load_dotenv

load_dotenv()
client = Anthropic()

beat = (
    "Beat: Mara discovers her brother has lied about quitting smoking. "
    "Setting: kitchen, 7am. She doesn't confront him; she just changes how she pours coffee."
)

draft = client.messages.create(
    model="claude-opus-4-7",            # Opus is meaningfully better for prose
    max_tokens=900, temperature=0.9,
    system=VOICE,
    messages=[{
        "role": "user",
        "content": f"Draft this scene in 250–350 words. {beat}",
    }],
).content[0].text

print(draft)

What you should notice: Claude's prose is a starting point, not a finished thing. Your job is the next step — keep the bones, replace anything that sounds like an LLM (always-on metaphors, "as if" similes, perfect grammar where it shouldn't be).


Recipe 3 · Character bible (continuity across sessions)

Models forget. Your story can't. Keep a bible.md and inject the relevant entries every session.

# Mara
- 32, photographer, cynical without self-pity.
- Lost her father at 19; never speaks about it directly.
- Voice: declarative, deflects with weather observations.
- Reliable behaviour: makes coffee for two even when alone.

# Theo (brother)
- 28, charming, evasive about money and small habits.
- Reliable behaviour: laughs to fill silences.
- Banned trait: do NOT make him a redemption arc.

Then:

relevant_chars = open("bible-mara-theo.md").read()

response = client.messages.create(
    model="claude-opus-4-7", max_tokens=900, temperature=0.85,
    system=VOICE + "\n\nCHARACTERS IN THIS SCENE:\n" + relevant_chars,
    messages=[{"role": "user", "content": "Continue from yesterday's last paragraph: ..."}],
)

The bible plus the voice guide plus the previous scene are usually enough context for ~1,000 words of consistent prose. For a novel, paginate: never inject more than the chapter you're working in.


Recipe 4 · Generating alternatives, not finals

The best creative use of Claude isn't "write the scene". It's "give me five different ways this paragraph could end" — then you pick.

alternatives = client.messages.create(
    model="claude-opus-4-7", max_tokens=600, temperature=1.0,
    system=VOICE,
    messages=[{
        "role": "user",
        "content": (
            "Here is the penultimate paragraph of a scene:\n\n"
            "<your paragraph here>\n\n"
            "Write FIVE alternative *final paragraphs* for the scene. Each must be ~80 words. "
            "Number them 1–5. They must differ in their emotional register, not just their wording."
        ),
    }],
).content[0].text

print(alternatives)

This is genuine collaboration: you supplied the lead-up and the taste; Claude supplied options.


Where Claude isn't the right tool

You shouldn't ask Claude to Because
Decide your theme Theme is yours. Outsource it and the story becomes generic.
Resolve a story you haven't figured out It will give you a plausible ending that's not your ending.
Replicate another author's living voice Beyond pastiche, this is ethically fraught.
Write the very first sentence Always sounds like an LLM. Write your own; have it continue.
Tell you "is this any good?" Friends, editors, beta readers. Not models.

Try changing one thing


Going deeper: open the notebooks


Module checklist


Next module

Module S4 · Education — the same craft applied to learning material and tutoring.