You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(setup): Game guided flow to a Godot project (E6) (#5665)
* docs(setup): design the Game guided flow to a Godot project (E6)
A sixth entry card on the New Project surface that walks from a sentence to
an exported Godot 4.3 project on the existing SetupFlow shell. The build is a
slot-filling workflow graph built without a model call, ending in an export
node that wraps the existing Godot join, so the graph re-runs and the agent
takes over for the playtest loop.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDqhsPX3jAxwKFUvvK9qkf
* feat(setup): game style tiles, template cards and harness docs (G3)
Nine deterministic PNGs drawn by scripts/make-game-style-tiles.mjs from each
preset's palette and each template's own placeholder art, with a --check that
fails on a changed byte or a missing tile. The harness docs, the AGENTS.md
table row and the godot-game skill point at the flow's graph.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDqhsPX3jAxwKFUvvK9qkf
* feat(protocol): game flow contracts — settings.game, designer, slot prompt, graph builder (G1a)
The designer writes cast, level and one prompt per slot against a schema that
pins the manifest's slot ids; the slot prompt sizes each generation to the
slot's exact pixels; gameGraphPlacement is a pure function of manifest, design
and choices, so no model decides which chain a slot gets. Six game style
presets join the storyboard ones.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDqhsPX3jAxwKFUvvK9qkf
* test(audio-nodes): read the pacer test's clock before constructing the pacer
RealtimePacer's origin is its construction time. The test captured its own
start afterwards, so on a loaded CI runner the gap shortened the measured
wait (52 ms against a 70 ms floor) and failed a diff that never touched
audio-nodes. Reading the clock first makes the measured wait a lower bound.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDqhsPX3jAxwKFUvvK9qkf
* feat(web): Game guided flow — steps, hooks, landing checklist, ui_game_* tools (G2)
The sixth entry card on the New Project surface. Idea, Template with the
designer, Design review, Look with game style presets and one model per slot
kind, then Build places the slot-filling graph through the node tools and
runs it once. The landing checklist folds the run's per-node results into
assets, export and verification rows and reports Verified only on a true
export output. Four ui_game_* tools give the flow headless parity.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDqhsPX3jAxwKFUvvK9qkf
* feat(game-nodes): ExportGodotProject node, game seeds and capabilities, game-flow harness (G1b)
packages/game-nodes holds nodetool.game.ExportGodotProject and the export
join extracted from the export_godot_project capability, which now calls it.
The node takes one dynamic input per slot, exports the template with its
placeholders for slots left unfilled, writes the zip beside the directory,
and reports verified only when Godot ran. The checker fills carry the asset
id the node needs; nodetool.image.ResizeImage joins the registry it was
missing from. games.templates and games.stylePresets serve the flow, the
four game setup capabilities mirror the ui_game_* tools, and the game-flow
harness entry runs every suite the flow depends on.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDqhsPX3jAxwKFUvvK9qkf
* feat(web): mount the game landing checklist in the canvas chat dock
The panel renders above the conversation only for a workflow whose
settings.game reads stage done with a recorded build, and the build record
is written onto settings.game so a reload still shows it. Build opens the
dock; the next steps open the folder, download the zip, stage the play-test
turn for the project agent, or run the graph again.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDqhsPX3jAxwKFUvvK9qkf
* feat(game-nodes): one export node for the flow and the capability
After merging main, the flow builds on main's game-nodes package. The
ExportGodotProject node gains the flow's behaviours: empty fills export the
template's placeholders, unfilled slots keep theirs, the zip lands beside the
directory, and verified stays false unless Godot ran clean. The graph builder
feeds every checker's output into the node's fills list, the flow's prompt
builder rides on slotPrompt, and the capability imports the shared join.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDqhsPX3jAxwKFUvvK9qkf
* fix(game): address review — templates array, named run outputs, resume on reopen, placeholder sentinels
F1: games.templates returns the array, so the hook reads it as one and the
router's slot type is the protocol's, which drops the client cast. F2: the
landing summary reads the focused job's completed generation outputs, which
keep handle names and are never edge-suppressed; the old source lost the
export node's named handles and every checker's asset row. F3: the workflow
editor surface renders the game setup host while settings.game.stage is not
done, so a reload during Design or Look resumes the flow. F4: one protocol
helper normalizes the keep-placeholder sentinel for both the browser flow and
the build_game capability.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDqhsPX3jAxwKFUvvK9qkf
* fix(game): restore the finished export after a reload, count checkers only
The landing panel read the export outcome from the focused job's live
generations, so a reload lost it. Persist the outcome once on
settings.game.build.export keyed by job id and read it back only when
no job is focused. The checked count now counts a slot only when its
checker node produced outputs without an error, with the checker node
types exported from the graph builder so both sides agree.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TDqhsPX3jAxwKFUvvK9qkf
* fix(game): recover exports from completed jobs
---------
Co-authored-by: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: AGENTS.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -502,6 +502,7 @@ reference is [docs/harnesses.md](docs/harnesses.md) plus [docs/cli.md](docs/cli.
502
502
| Re-run an approved storyboard, script, timeline or entity from a graph |`npm run fixtures:graph-resources` — seeds a scratch install and runs the four shipped examples on the fake provider |`create_storyboard`, `get_storyboard`, `list_entities`, `get_script`, `validate_timeline` on what the graph wrote | minutes |
503
503
| Build or fix a 3D scene with no editor open | no command of its own — the `capability-suites` selfcheck the `model3d` harness entry names |`list_model3ds`, `create_model3d`, `get_model3d`, `edit_model3d`, `validate_model3d`| sub-second |
504
504
| Fill a Godot template with generated sprites, tiles and audio, export the project, and run it headless | no command of its own — the `capability-suites` selfcheck the `godot` harness entry names; real Godot runs when `GODOT_BIN` is set |`list_game_templates`, `export_godot_project`, `verify_godot_project`; the `nodetool.game.*` nodes fill slots | seconds; Godot import and smoke tens of seconds |
505
+
| Take one sentence to a running Godot project — design, slot-filling graph, export | no command of its own — the suites the `game-flow` harness entry names, run by `harness gate` on diffs touching the flow |`ui_game_set_setup`, `ui_game_design`, `ui_game_update_design`, `ui_game_build`; the graph ends in `nodetool.game.ExportGodotProject`| seconds to build, the run as long as its models take |
505
506
| Season a prompt with the entity library | no command of its own — the `capability-suites` selfcheck the `entities` harness entry names |`list_entities`, `get_entity`, `apply_entities`| sub-second |
506
507
| Measure a clip instead of watching it — duration, loudness, frequency content, motion, cuts | no command of its own — the `capability-suites` selfcheck the `agent-capabilities` harness entry names |`analyze_audio`, `analyze_audio_spectrum`, `detect_audio_events`, `analyze_video`, `detect_video_scenes`| seconds, no ffmpeg |
507
508
| See what a timeline looks like at a timecode — tracks layered, animations mid-flight, transitions part way, text drawn | no command of its own — the `capability-suites` selfcheck the `agent-capabilities` harness entry names |`preview_timeline_frame` (composited frames + per-layer opacity/z-order/wipe), then `view_image`| seconds, no GPU or browser |
0 commit comments