Canon Keeper is an offline CLI for solo writers who publish fiction chapter by chapter, often with AI drafts. It keeps a sourced fact sheet (canon.json), where every fact remembers the chapter and line it came from, and checks each new chapter against it. Each contradiction is reported with its receipt: "Mira.eyes: canon says grey (ch01:3), this line says green". It also catches characters who died earlier but act again. An HTML report highlights the offending lines. learn then adds the chapter's new facts to canon without overwriting existing ones. The exit code is 0 when clean and 1 with issues, so it can gate chapters in CI. Python stdlib only: no keys, no cost, deterministic. It was planned and built from an empty folder with the Devpost Learn Skill Pack (scope.md, prd.md, spec.md and checklist.md are in /devpost). Next steps: LLM-assisted extraction, timeline checks, and an editor plugin.
Try it: python3 -m canonkeeper check samples/canon.json samples/ch03.md --html report.html
Disclosure: no pre-existing code; skill pack + coding agent used.
Log in or sign up for Devpost to join the conversation.