Model or dataset
zenstory-ai/novel-to-game avatar
zenstory-ai/novel-to-game

NovelToGame: seven skills that make a coding agent cite the book before it writes the code

Agent Skills that turn novels into source-grounded, fully playable games for Claude Code, Codex, and Kimi Code(K3).

1,087 stars148 forksMarkdownMIT

At a glance

What is it?
NovelToGame is a set of Agent Skills for Claude Code, Codex and Kimi Code that turns a novel into a playable build by splitting the work into stages, each owning one document, each decision citing evidence. Its quality bar is deliberately narrow and stated out loud: one recorded run proving six named checks, and everything else written as a limitation.
Who is it for?
NovelToGame suits someone who wants a defensible adaptation artefact rather than a demo: the design trail, the rejected directions and the provenance of every source fact are the deliverable as much as the build is. Four things to settle before you rely on it.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly Markdown, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • zenstory-ai/novel-to-game1,087 ★ · +312
Star history
Repository2026-09-112026-11-14
zenstory-ai/novel-to-game7751.1k

312 Stars in the last 64 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Seven skills ship in three separate plugin roots, and there is no engine inside

The package is documentation, not software, and the repository layout says so. Skills live in `skills/`, with `AGENTS.md` and a `VERSION` file at the root, and three separate packaging roots sit beside them: `.claude-plugin/`, `.codex-plugin/` and `kimi.plugin.json`, plus an `.agents/` directory and a `.claude/` one. That is one adapter set per supported agent rather than a single manifest with conditionals. The important architectural statement is negative. There is no GPU, no hosted service and no bundled engine, and the skills run on the model of whichever agent you installed them into. Every generation, build and test step is therefore whatever your agent can do on your hardware, which is also why the examples are described as playable prototypes rather than finished products.

Each agent needs a different invocation string for the same skills

The install table has three rows and the middle column is nearly identical while the third is not.

bash
npx skills add zenstory-ai/novel-to-game -g -y -a claude-code -s '*'
npx skills add zenstory-ai/novel-to-game -g -y -a codex -s '*'
npx skills add zenstory-ai/novel-to-game -g -y -a kimi-code-cli -s '*'

The `-a` flag names the target agent and `-s '*'` selects every skill in the package. What changes is how you then call it: Claude Code uses `/novel-to-game`, Codex uses `$novel-to-game`, and Kimi Code uses `/skill:novel-to-game`. Three spellings for one command is a small tax, and it is the price of not depending on one agent's convention. The prerequisite is narrow, since you must already use one of the three CLIs and have `npx` from Node.js available. `-g` installs globally for every directory, dropping it scopes the install to the current directory, and updating means running the same command again or `npx skills update`.

Source facts are labelled immutable, adaptable, open, or conflicted

The first mechanism is a document called `SOURCE_BIBLE`, produced by a stage that reads the whole book. Every hard rule, every key character goal, every turning point and ending, and every signature anchor carries its chapter or file location. The labelling scheme is four values: `immutable`, `adaptable`, `open`, and `conflicted`. The last one is the interesting case, since it is how a contradiction inside the source gets recorded rather than silently resolved. Anything the novel does not define has to be marked as a design invention, never smuggled in as fact. That rule is the load-bearing one, because the failure mode this workflow exists to prevent is an agent inventing a detail and then treating its own invention as something the author wrote.

Directions die by named vetoes, and the build may not redesign them

The concept stage compares real alternatives and then kills directions with named hard vetoes. Three are given. The core loop ignores the novel's central tension. Strip the proper nouns away and a generic template remains. The player only spends resources to release a fixed plot, which is a cutscene with a wallet. Naming the veto is what makes this auditable, because a rejected direction is rejected against a stated reason rather than against taste. The same discipline separates authorship: concept, world design and art direction are written by different stages into different documents, and the build stage may not quietly redesign them. Interactive fiction is treated as a first-class track rather than a fallback, where continuous scenes, dialogue, testimony and key choices can carry the entire game, held to the same agency and evidence requirements as a systems game.

The product brief locks the runtime, and a missing toolchain cannot become a web build

The agent drafts a one-page product brief first, and in `quick` mode it stops for your decision only on blocking items such as platform, rights or adult content. That brief locks four things: the platform, the engine, the target runtime, and the runtime actually available for testing. The fourth is the interesting one, because it forces an honest comparison between what you asked for and what can be run. A missing toolchain may not silently become a web build, which closes the escape hatch most prototypes take when the intended engine will not install. The design documents that come out of the earlier stages are engine-independent Markdown, and the workflow frames them as yours to own, separate from whatever the build stage produces.

Quality assurance is one recorded run against six mechanical checks

The QA contract is narrow on purpose. The build is launched on the tested runtime, and one complete execution has to prove six named things: `launch`, `render`, `input`, `coreLoop`, `outcome`, and `restart`. Everything a reviewer would want to know that cannot be shown by a single run is written as a limitation and never as a pass. The stated exclusions are fun, balance, other browsers, and rights. The project is also candid about the evidence behind its own examples, since the v0.4.0 release note describes one run per example. So a green QA record means the build starts, draws, accepts input, has a loop, reaches an outcome and restarts. It does not mean the adaptation is good, and the workflow is structured so that you have to look at the design documents to judge that.

Voice is opt-in, generation happens at build time, and the novel is never uploaded

Audio is treated as a decision rather than a default. No line goes to a text-to-speech provider unless the art direction stage chooses voice, and runtime synthesis needs the explicit approval recorded in the product brief. Combined with the statement that there is no hosted service, this pins down the privacy posture: the novel and the design documents are never uploaded, and generated audio is baked in at build time rather than requested per line while the game runs. It also means a voice pipeline is a build-time dependency on whichever synthesis tool your agent can reach, which is a different constraint from a runtime one. For anyone adapting a text whose rights are not settled, that separation is the part that matters.

The three examples span all-ages narrative to a one-minute WebGL2 field demo

The published examples are not homogeneous, and the labels are uniform where the artefacts are not. Journey to the West, adapted as Three Borrowings of the Banana Fan, is an all-ages playable prototype with a design estimate of 45 to 90 minutes, where you command a party through the three borrowings, read a five-element wheel, follow a fire-vein treasure map and choose between pressing deeper or banking the haul. Jin Ping Mei, Ledger of Desire, is rated 18+, estimated at 60 to 90 minutes, and turns on keeping silver, influence, reputation, exposure and household strain in balance across twenty days and five courtyards. Project Plateau, from Arthur Conan Doyle's The Lost World, is a first-person 3D field-photography game estimated at 1 to 3 minutes. All three are called playable prototypes and all three are described as playable in a browser with no install, which is true and misleading in different ways: the third needs desktop WebGL2, with a 15-second preview offered on other devices.

Editorial conclusion

NovelToGame suits someone who wants a defensible adaptation artefact rather than a demo: the design trail, the rejected directions and the provenance of every source fact are the deliverable as much as the build is. Four things to settle before you rely on it. There is no engine, no GPU and no hosted service in the box, so the finish level you get is bounded by what your agent can install and run on your machine, and the skill explicitly forbids a missing toolchain silently becoming a web build. Quality assurance is one recorded execution against six mechanical checks, so do not read a passing record as evidence that the game is fun or balanced. The three published examples span from a 45 to 90 minute all-ages piece to a 1 to 3 minute WebGL2 prototype that needs a desktop, which is a wide spread to hide behind the word prototype. And voice is opt-in and generation happens at build time, so nothing is synthesised at runtime unless the brief says so.

Frequently asked questions

Which coding agents can run the NovelToGame skills?

Claude Code, Codex, and Kimi Code. Install with `npx skills add zenstory-ai/novel-to-game -g -y -a claude-code -s '*'` and its two equivalents, then invoke as `/novel-to-game`, `$novel-to-game`, or `/skill:novel-to-game` respectively. You need `npx` from Node.js available in your terminal.

Do I need a GPU or a hosted service to use NovelToGame?

No. There is no GPU, no hosted service and no bundled engine, and the skills run on the model of whichever agent you installed them into. The product brief locks the target runtime and the runtime actually available for testing, and a missing toolchain may not silently become a web build.

What does the NovelToGame QA step actually verify?

One complete execution on the tested runtime, proving six named checks: launch, render, input, coreLoop, outcome, and restart. Fun, balance, other browsers, and rights are written as limitations and never as a pass. The v0.4.0 release notes record one run per published example.

How does NovelToGame handle facts the novel does not define?

The source analysis stage writes a `SOURCE_BIBLE` where source facts are labelled `immutable`, `adaptable`, `open`, or `conflicted`, and every hard rule, character goal, turning point and signature anchor carries its chapter or file location. Anything the novel does not define must be marked a design invention rather than presented as fact.

Does NovelToGame send the novel or the design documents to any service?

No, the novel and the design documents are never uploaded. Voice is opt-in and no line goes to a text-to-speech provider unless art direction chooses it, and runtime synthesis needs the product brief's explicit approval; generated audio happens at build time.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. zenstory-ai/novel-to-game on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/zenstory-ai-novel-to-game.svg)](https://hysenlabs.com/projects/zenstory-ai-novel-to-game)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/zenstory-ai-novel-to-game.svg)](https://hysenlabs.com/projects/zenstory-ai-novel-to-game)

Was this useful?