On this page

Roadmap: from test kit to agent suite

Where this kit goes next, agreed through question rounds with its one user. Each step is one pull request (or a few small ones); the pull requests and CHANGELOG.md are the record of what was built. This page keeps only what is still open.

Status

Phase State
1. Self-improvement Built: the plugin, retro, the run history (.godot/hyperdot-history.jsonl), the weekly canary (Fridays 18:47 UTC), kit-review, and the ten agent-efficiency items in research.md. Evals: run 7, the first where the sandbox could run Godot, scored explain-failure 1.00 with and without the plugin (1 run per arm); run 6 stands for review-publishing-deal (1.00 against 0.78) and lost-in-level (0.33 against 0.00). Open: below
2. /game Built: status, the GDD format and feature tags, plan links to features and cards, the game and weekly-review skills. Open: below
3. Architecture Built: the architecture runner in test (warnings by default), the patterns skill, the godot-architect subagent with decisions in docs/decisions/, shown by status and /game
4. Look and feel Built: shot -Baseline, shot's palette check against docs/STYLE.md (-MaxOffPalettePercent), the juice runner and juice.json, the style guide template, the look and game-juice skills. Open: writing Breakout Roguelike's docs/STYLE.md with the owner, and its first juice.json

Still open from phases 1 and 2:

Still open from the issue pass of 2026-11-09 (#230, #231, #221 and #212 in part; the issues hold the measurements):

0.1.0: the first Hyperdot release

Agreed in a question round with the owner on 2026-10-22. The kit becomes Hyperdot, a Godot-specific game development interface, and ships its first tagged release once these steps are done, in this order. Each step is one or more pull requests. On 2026-10-23 the owner chose to number it 0.1.0, a fresh start for the new name (plugin.json had 0.4.0), instead of 1.0: see Versions.

  1. Sanity check. Every self-test, both examples, doctor and plan on both, the Windows job; an inventory of the commands, skills, docs and library files, with what is dead, stale or contradictory.
  2. Cleanup. Merge or cut overlapping skills and docs (focused skills beat many big ones); clear finished roadmap items; fix stale counts. Done so far: five skill merges (55 to 50), this page cut to what is open, and docs/strategies.md folded into What was decided.
  3. Rename, clean break. Done in code: plugin hyperdot, ci/godot/hyperdot.ps1, HYPERDOT_* variables, the [hyperdot] log prefix, the hyperdot/1 JSON schema, .godot/hyperdot-history.jsonl, ~/.hyperdot, and examples/csharp (was examples/breakout, whose name clashed with Breakout Roguelike). No aliases; error codes keep their names. Old state moves once: the history file, the GUT stamp and ~/.godot-ci on any run; a game's workflow file and plugin entry on init. The owner renamed the repository from nick-vas/Godot_TestSuite to nick-vas/hyperdot.
  4. Fixes and features from the question round (the notes below).
  5. Benchmark. Evals with 3 runs per arm (the first run where all four cases can run commands), the token benchmark (costs money: confirm first) and bench on the C# example. Done for the token benchmark, with the Hyperdot label (label.md): an adversarial review of every area (62 findings: 59 fixed with regression tests), a grader that cannot be fooled, sessions that cannot read the test, and the 0.1.0 rating from 192 sessions.
  6. Retro over all of the above: retro.md.
  7. Release 0.1.0: changelog, version, tag v0.1.0; create and keep a moving v1 tag with release.yml (dispatch it: ci.md; init and the docs already write @v1; the tags v0.1.0 and v1 exist, so this step is done), a start-here page for working on a game (first use: Breakout Roguelike, nick-vas/BreakoutTheBreakout, in a new chat with the kit cloned beside it), and the GitHub Pages site (added to 0.1.0 by the owner on 2026-10-26; the owner turns on Pages with GitHub Actions as its source).

Versions

Semantic Versioning. The public interface is the commands and flags, the -Json output (schema hyperdot/1), the error codes, the environment variables, the workflow inputs and the files init writes.

Notes from the question round: none left for 0.1.0. Note 6 (an eval grader was wrong for three runs before anyone looked) is tests/Test-EvalGraders.ps1 for the graders that need no model; note 11 waits until after 0.1.0 (To do). Checking the model graders the same way needs a model call per check, and is not built.

GitHub Projects

The six bugs the connector test found (list names as columns, cards added on the board, boardColumn, removing a task, ARI card ids) are fixed and pass against the mock; the live run should also cover importing a card and archiving a removed task's card, which only the mock has seen.

What was decided

Question Answer Consequence
Who uses it Only the owner, for their own games Breaking changes are cheap. No installer, no public API promises beyond docs/json.md
Which agents Claude Code only Use Claude Code's own features: plugins, slash commands, subagents, hooks, scheduled tasks
How skills reach a game The Claude Code plugin (init -Agents, from GitHub by default or from the kit's folder with -PluginSource local); copies only with -CopySkills No copies by default, so none go stale; a fix to a skill reaches every plugin game at once. Games from before keep their copies until they are deleted (doctor warns when a game has both)
Agent and engine The CLI with -Json verifies; an editor-bridge MCP (init -Mcp godot-mcp or godot-ai) authors and inspects (mcp.md) The CLI stays the gate; scripted playtests in a live editor go through the bridge
Verifying beyond unit tests validate, smoke, export -Run, UI flows (the flows runner), playthrough and shot -Baseline Each is a runner or a command with -Json output
What must it survive Godot releases, agent and tool changes, new genres and platforms, the owner's limited upkeep time Automated canaries and self-review; the kit proposes its own updates; a size limit per skill
Where the agent needed the owner most Learning and updating the kit, transparent planning, architecture, look and feel, scope One phase each
How progress is judged Code and scenes, a design document, test and bench results, git history status collects the facts; Claude judges them against the GDD
Where the plan lives plan.json with gates, in the game repository (plan.md) It is the source of truth; the GitHub Project mirrors it
Who owns the project board Claude writes it; the owner reviews and steers by dragging items Owner moves always win over Claude's assessment
How the project is reached The GitHub CLI (plan -Do sync) No keys on disk; the plugin's Stop hook repeats the sync after a turn that changed the plan
How much the kit updates itself It proposes pull requests to this repository; the owner merges Never pushes to main, never merges
When /retro runs On demand only
When reviews run The weekly review Friday night, Athens time (Europe/Athens); the canary before it, at 18:47 UTC; kit-review monthly Scheduled tasks, not CI jobs
Architecture Pattern catalogue, design reviews with recorded decisions, and automated checks A skill, a subagent, ADRs and a runner whose rules all start as warnings
Look and feel Screenshot critique against a style guide, before/after choices in chat, a juice checklist Built on shot and game logs
Scope pushback Feature not in the GDD, too much work in progress, a weekly review Rules in /game and a scheduled review
Skill quality The skill validator, its fixtures and pressure tests (skills-quality.md) Quoted commands, flags, codes and versions must exist
Breakout Roguelike's GDD None exists /game drafts one from the code and asks the owner to confirm it

Principles that keep it future-proof

  1. Facts in the CLI, judgement in Claude. Anything that can be computed (tests, gates, git stats, bench numbers) is a hyperdot.ps1 command with -Json output. Anything that needs judgement (is this feature done, is this screen readable) is a skill, slash command or subagent that reads that JSON. The CLI survives model changes; the skills are cheap to rewrite.
  2. Ship as a Claude Code plugin. Skills, subagents and the Stop hook load from this repository as a plugin and are updated with /plugin update. The game keeps only what is about the game: AGENTS.md, docs/GDD.md, docs/decisions/, plan/, its tests.
  3. Every claim is checked. The skill validator checks that quoted commands, flags, codes and versions exist. New content follows the same rule: a lesson cites its evidence, a pattern cites the Godot API it uses, a version is tested.
  4. Upkeep budget. The validator fails a SKILL.md at 16 KB (warns from 15.5 KB), a description over 1,024 characters and the AGENTS.md template over 4 KB; detail goes to side files in the skill's folder, whose kit commands it checks too. There is no limit on the total: the 53 skills come to about 580 KB with their side files, but only the descriptions (about 9.6 KB) load into every session. A new skill that shares a trigger with an old one is merged into it instead; every command has a self-test; a feature nobody used for three months is proposed for removal.
  5. The owner sees the reasoning. Plans, assessments and decisions are written to files in the game repository and mirrored to the GitHub Project, not left in a chat transcript.

To do

What was left open by the research passes (docs/studio-lessons.md, docs/valve.md, docs/art.md, docs/audio.md and the other topic pages), grouped by what it waits for. Done items are in CHANGELOG.md.

Typography sources not read (docs/typography.md)

The typography skill rests on Practical Typography because these could not be read from the build environment on 2026-11-02. Each needs the owner: paste the text, save the pages and attach them, or allow the host.

CI supply chain (found in the review of the CI configuration)

CI history needed to demote more self-test jobs

After 0.1.0

From the label and the adversarial review (2026-10-23)

Kit features not built

In the example game (the C# example):

In the skills:

Not run or measured here (hardware, platforms, runners)

Sources and answers out of reach

Pasting a source, allowing a host or answering a question is enough for each.