What Is a Story Bible, and How Does Your AI Use It?
A story bible is one file that holds the truth about your game: its characters, world, timeline and rules. Your AI turns that file into a model and runs a checker over every path, so the file is tested against your story and not just stored next to it.
What goes wrong without a story bible?
You are building a cosy cooking game set in a floating market. In one chat, the market sits on a lake. In another, it is at sea. In a third, the AI gives your heroine a dead mother, although her mother runs the noodle stall.
All of these came from the same project. The real answers were in your head and in old chats, and the AI could reach neither.
But a file alone is not enough either. An AI can read it and still drift. That is why the file feeds a model, and a checker compares every path with it.
What goes in a story bible?
- The game in two sentences, and its mood.
- Characters. Fixed facts, what they want, how they talk. See keeping characters consistent.
- World rules. What is possible and what is not. See world rules and lore.
- Timeline. What happened before the game, and what happens in it.
- Scene map. What each scene needs and what it changes.
- Quests. The steps, what each step needs and how each quest can end.
- What the game remembers. Every fact it saves about the player's choices.
- Decisions. Things you have fixed, which nobody changes without asking you.
- Open questions. Things you have not decided yet.
Write facts, not prose: "The market floats on a lake" is enough. Short facts turn straight into a model.
Which facts and rules come from the bible?
- Facts: every line under Characters, Timeline and What the game remembers.
- Steps: the Scene map, with what each scene needs and changes.
- Rules: everything under World rules and Decisions.
- No two scenes contradict. A fact never has two different values on any path.
What does a real check look like?
Here is the cooking game as a model. The noodle stall establishes that the market floats on a lake and that the mother runs the stall. After that the player hears an old song or goes to the fish market. The AI wrote the song in a new chat, and it says the mother is dead.
We ran this invented story through TLC 2.19 on 2 November 2026. This is TLC's real output. We only left out its housekeeping lines and put each step on one line.
Error: Invariant NoTwoScenesContradict is violated.
State 1: scene = "Start", established = {}
State 2: scene = "Noodle stall", established = {<<"market", "floats on a lake">>, <<"mother", "runs the noodle stall">>}
State 3: scene = "Old song", established = {<<"market", "floats on a lake">>, <<"mother", "runs the noodle stall">>, <<"mother", "is dead">>}
On the path Start, Noodle stall, Old song, the mother both runs the stall and is dead. That path is the proof.
The fix: the song is now about the heroine's grandmother. We ran TLC again.
Model checking completed. No error has been found.
8 states generated, 6 distinct states found, 0 states left on queue.
TLC looked at all 6 states the story can reach, and the rule held on every path.
Who keeps it up to date?
Let the AI do the typing, and keep the last word yourself. A story bible that is out of date is worse than none, because the AI trusts it. So every change updates the file and the model, and the checker runs again. When the AI says something fits, ask it to show you the line.
To make sure the AI reads the file in every new chat, set it up once. Why does my AI keep forgetting my story? shows how in Claude Code, Cursor and ChatGPT.
Do I have to read any of this?
No. You never have to read the model or the checker's output, because your AI writes it, runs it and tells you the result in plain words. TLA+ is a language for modelling, and TLC is the tool that checks a model. If TLC cannot run on your computer, your AI can get a ready-made checker through our MCP server and run it in your project. Spielerando never looks at your story.
A pass means your rules held on every path in the model. It does not mean your story is good, and it says nothing about rules nobody wrote down.
Paste this to your AI
Make a story bible for my game, then check my story against it with a tool.
Read everything in this project first. If you cannot see my files, ask me to paste the story so far.
Create story-bible.md with these sections:
1. The game in two sentences, and its mood.
2. Characters: fixed facts, what they want, how they talk, what they would never do.
3. World rules: what is possible, what is not, and what things cost.
4. Timeline: what happened before the game, and what happens in it, in order.
5. Scene map: for each scene, what it needs and what it changes.
6. Quests: the steps, what each step needs, how each quest can end.
7. What the game remembers: every fact the game saves about the player's choices.
8. Decisions: things I have fixed. Never change these without asking me.
9. Open questions: anything still undecided.
While you write it:
- Write short facts, not stories.
- After each line, say where it comes from: the scene, the file or "you told me".
- If you cannot say where it comes from, mark it GUESS.
- Then ask me about the gaps, one question at a time.
Then write a TLA+ model of the story in a folder called story-check.
- Facts, as state: the lines under Characters, Timeline and What the game remembers.
- Steps: the Scene map, with what each scene needs and what it changes.
- Rules, as invariants: World rules and Decisions, plus: no two scenes contradict.
Run the TLC model checker on the model so that it walks every path. If TLC cannot run here, use get_recipe with story-model-check through Spielerando and run that checker in this project. If you can run neither, tell me, and do not claim that anything was checked.
For each broken rule, show me the exact path of scenes the checker found, in plain words, and quote the line of story-bible.md it breaks. Do not change my story until I pick a fix.
From now on:
- Read story-bible.md before you write or change any story.
- When we decide something new, add it to the file and the model, show me the line and run the checker again.
- When you say something fits, quote the line of the file it rests on. If no line covers it, say "I do not know".
- Report only which rules held, how many states were checked and whether the check was cut off. Never tell me the story is good.
Or skip this and connect the MCP: your AI then finds all of this by itself.Connect the MCP
How to check it worked
- Play the path it gave you. Follow those exact scenes in the game. You should see the clash yourself.
- Look at the GUESS lines. Each one is a place where the AI was making things up. Decide each of them.
- Start a new chat. Ask what the game is about and who the main characters are, without pasting anything.
- Ask for a clash. Ask for something that breaks a line under Decisions. The next check should fail and name the path.
- Look again in a week. Is what you decided this week in the file?