SuperAPI AI Directory

inkcheck

CI for ink interactive-fiction stories: compiles, playtests every branch and finds runtime errors, unreachable knots and every distinct ending.

Open website

About this tool

Inkcheck is a mechanical quality assurance (QA) tool for ink interactive fiction. It does not generate, rewrite, or send any prose content; instead, it compiles stories with the official ink compiler, explores choice paths within explicit limits, and reproduces failures before players find them. It can be used as a standalone CLI and offers optional CI and MCP integrations.

Main capabilities:

  • Compile checks: compile stories with the official ink compiler.
  • Bounded systematic branch exploration: deterministically explore reachable story states within explicit limits, report the exact reproduction path for discovered issues, and show where and why coverage is incomplete.
  • Dead content detection: find unreachable nodes and dead content.
  • Ending detection: find every distinct ending.
  • Assertions: use typed data rules (not JavaScript or arbitrary Ink expressions), supporting ==, !=, <, <=, >, >= comparisons, as well as all, any, and not combined conditions; rules can run always, on terminal states, or when entering a named knot; violating a rule fails CI and provides observed values and an exact indexed replay witness.
  • Goals: use the same non-executable condition syntax to guide exploration, but do not fail CI; goalMaxStates or --goal-states can be set to add deterministic goal-proximity slices.
  • Staged goals: for late-stage composite dependencies, multiple ordered stages can be used.
  • Persistent campaigns: MCP agents can start persistent campaigns in quick, balanced, deep, overnight, or campaign mode; humans can also use the same persistence strategy.
  • Result window: returns stable policy IDs, allocation reasons, measured preferred output, throughput/resource evidence, empirical ranges with uncertainty markers, binding constraints, and report IDs.
  • Rules (version 0.7): authors can declare invariants in managed checkers, local configuration, CI, and MCP, such as gold >= 0; the web flow detects declared Ink variables to assist selection, but the server remains authoritative.
  • Private QA evidence pinning (0.7.2): approved runtime, assertion, or goal witnesses can be rechecked after edits without searching again.

Usage: Requires Node.js 18 or later, no global installation required. First runDownloads a pinned official ink compiler, verifies its SHA-256 hash, and processes stories locally.

  • Project configuration: inkcheck.yml can be committed to pin the entry point and bounded CI settings; use inkcheck validate-config to check the configuration.
  • New projects: for projects containing a single .ink file, inkcheck init creates a configuration; multi-file projects must specify the root file with --entrypoint; inkcheck agent-kit --format codex adds configuration when needed.
  • Campaign mode: inkcheck campaign story.ink runs the balanced intent; --mode quick, deep, or overnight selects the outcome and time posture.

Applicable scenarios:

  • Writers and teams performing mechanical QA and regression testing on ink stories.
  • Compilation checks, branch exploration, and assertion verification in CI systems.
  • Optional AI coding agents driving the same mechanical QA checks via MCP.

Limitations:

  • This tool is a QA tool, not a writing tool; it does not generate or rewrite text.
  • It does not itself use AI, machine learning, LLMs, or generative models.
  • It cannot prove that a large interactive story is bug-free; combinatorial explosion, loops, variables, randomness, and host game code may produce states beyond what any tool can exhaustively visit.
  • A bounded clean run only means "no violations observed"; only an exhaustive run reports that a rule has been exhaustively verified.
  • When a target is not reached, it reports not_reached_within_limits, unless exhaustive exploration actually proves it unreachable.
  • Partial coverage cannot be described as complete coverage.
  • Dynamic allocation, long-tail expansion, rotation, and stopping are currently still experimental or shadow-only and have not been broadly rolled out.

Specific information such as pricing, fees, and platform support is not yet provided.