VibeGame development workflow

Document type
Field manual
Updated
Reading time
11 min

Install VibeGame, configure agents and APIs, build Phaser games, verify art and gameplay, and manage permissions, updates and release limits.

Source
Document details
tettethu/vibegame
License
Apache-2.0

Turn natural-language requirements, task plans, and art assets into a 2D game that can be played and verified in the browser.

Agent roles
8Coordination, design, implementation, and verification
Current engine scope
2DBased on Phaser
Package version
0.1.0From pyproject.toml at the reviewed revision

01Uses and scope

System purpose

VibeGame is a game development framework in which an agent team develops and accepts the game. Users provide requirements, and team members work within their roles.

ComponentPurpose
Claude Code and CodexRun development agents
Python CLIInitialize projects and manage the development environment
Phaser 3Run web games

The main output is a game project directory containing:

  • project.json.

  • Scene and object JSON.

  • JavaScript.

  • Asset manifests.

  • Work records.

It suits 2D web game prototypes and projects that need ongoing changes to gameplay and assets.

From requirements to game acceptance
  1. Requirements and coordination

    • User
    • orchestrator
    • designer
    • PRD and GDD
  2. Task execution

    • architect
    • programmer
    • auditor
    • artist
  3. Runtime and acceptance

    • Phaser engine
    • player
    • reviewer
    • State and screenshot evidence

Static checks, actual play, and final review are separate steps.

These capabilities remain unfinished roadmap items in the README:

  • Godot.

  • Unity.

  • End-to-end 3D production.

The instructions here cover the current public Phaser implementation.

02Requirements and setup

Installation and checks

  • Not completed:

    Python 3.12 or later.

  • Not completed:

    uv and tmux installed.

  • Not completed:

    Claude Code or Codex installed, signed in, and usable.

  • Not completed:

    Each selected role's CLI and model available to the current account.

  • Not completed:

    Image generation and VLM APIs configured for the complete art and visual verification workflow.

The standard installation needs neither Node.js nor npm. Keep the source checkout: installation uses editable mode, and the CLI reads these resources from that directory:

  • Engine.

  • Templates.

  • Dashboard.

bash
git clone https://github.com/tettethu/VibeGame
cd VibeGame
./setup.sh

Create a game directory beside the source checkout, then start the team:

bash
cd ..
mkdir my-game
cd my-game
vibegame init
vibegame start

By default, init initializes or uses Git and creates a framework baseline commit. If the directory already contains work, use vibegame init --no-commit to inspect the changes, then create the baseline needed for worktrees yourself.

Codex hooks

If any role uses Codex, run this after installation:

bash
vibegame setup codex-hooks

Then open Codex, enter /hooks, and trust the added VibeGame hooks. The command writes to the user's ~/.codex/hooks.json. Without both installation and trust, agents may fail to register in the Dashboard and startup may keep waiting.

Before the first managed Claude Code session in skip-permissions mode, complete the consent screen in a normal terminal as the README instructs. Review the permission limits below; do not treat a managed session as an isolated environment.

03CLIs, models, and credentials

Provider and role configuration

LocationPurposeOperating limit
src/.vibegame/settings.jsonRole CLIs, models, and optional effort for new projectsPreserve hooks when changing agents
src/.vibegame/team/models.jsonCLI model lists, argument mappings, and permission defaultsNames must match both the framework list and the actual provider
src/.vibegame/defaults.jsonDefault language for new projectsThe reviewed revision defaults to en
.env at the checkout rootImage, VLM, and optional third-party servicesKeep it out of Git and frontend code
The game's .vibegame/settings.jsonRole configuration for an initialized projectCheck it separately from the source template

The supplied role settings mix Claude Code and Codex. If you install only one tool, first move roles that require a CLI to an available harness and model instead of retaining every default.

ServiceRequired settingsOptional settings
Image generationIMAGE_PROVIDER, IMAGE_API_KEY, IMAGE_MODELIMAGE_BASE_URL
VLMVLM_BASE_URL, VLM_API_KEY, VLM_MODELNone

The VLM base URL ends at /v1 and does not include /chat/completions.

VLM has no built-in default model ID. Confirm the model name and visual-input capabilities with the provider before filling it in. An API-compatible format alone does not establish that a model can check game screenshots.

04Skills and interfaces

Core capabilities

Initialization

vibegame init

Create a game project

Copy the framework, roles, and engine, and create scene, input, and asset directories. Includes a Git commit by default.

Team startup

vibegame start

Dashboard and agent session

Start the coordination and collaboration environment. Use --project to specify the game directory alongside an initial message.

Goal execution

/vibegame-build

End-to-end game production

Submit the game goal in the agent conversation. This is a skill command, not a program to run directly in the shell.

Static checks

vibegame check

Validate project data

Check project, scene, asset, script, and input settings. Passing does not mean the actual gameplay has been accepted.

Runtime and inspection

vibegame run --port auto

A controllable game runtime

Start the game server and controlled browser, then query state and capture screenshots through the play interface.

Runtime shutdown

vibegame close

Close a game runtime

Close tracked runtimes. The Dashboard and agent team are separate processes.

When continuing from another directory, pass the project path to start with --project. Its positional argument is a message for the orchestrator:

bash
vibegame start --project ./my-game "Continue polishing the boss fight"

The Dashboard has these tabs:

  • Chat.

  • Assets.

  • Objects.

  • Play.

The static Play preview differs from the controlled runtime started by run. Use the latter for state inspection or repeatable input tests.

The source skills directory contains these workflows, separate from shell CLI subcommands:

SkillPurposeStartup boundary
vibegame-startInspect the team and load working contextFor an already-started team
vibegame-buildPlan, execute, and accept a game goalConfirm the goal and task plan through its workflow
vibegame-editChange an existing game's style, genre, or rulesEstablish a baseline before entering the build workflow
self-evolvePromote reusable project resourcesUser explicitly requests it and approves candidates
artist-self-evolveDistill reusable art production methodsDispatched by the lead; does not start itself in the background

05Specifications, implementation, and evidence

Agent roles and task handoff

RoleMain responsibilityDeliverable or limit
orchestratorClarify requirements, maintain PRDs, divide tasks, and accept resultsDecide task boundaries and completion criteria
designerGame design and GDDDoes not implement code
architectResearch code and specifications, then write the technical planProduce plan.md and task context
programmerImplement the planCheck code before handoff
auditorStatic review of code against specificationsDoes not run the game; can make fixes allowed by the specifications
playerVerify real input, behavior, and screenshotsNeeds the ability to process visual information
artistGenerate, process, and register art assetsUpdate the manifest after finishing assets
reviewerFunctionality, visual, and playability checks after the goal is completeSeparate from a single task's auditor

Roles start according to the task; they do not all need to run simultaneously each time. A typical handoff follows this order:

  • PRD.

  • Technical plan.

  • Implementation.

  • Static review.

  • Runtime verification.

  • Orchestrator acceptance.

Task data lives under .vibegame/tasks/<name>/, commonly in:

  • prd.md.

  • plan.md.

  • context.json.

  • Append-only log.md.

Record separate acceptance criteria for:

  • File validity.

  • Visual readability.

  • Conformance to interaction requirements.

The reviewer can reject delivery. Review requires real input and evidence; role names alone do not guarantee correctness.

06Scenes, scripts, and asset registration

Engine data and art assets

PathContentsEditing guidance
project.jsonCanvas, physics, start scene, manifests, and input settingsPreserve the engine boot entry and required fields
scenes/*.scene.jsonInitial node treeDeclare visuals, colliders, scripts, and children
entities/*.node.jsonReusable object definitionsShared character or obstacle definitions
scripts/*.jsGame behavior and ordinary JavaScript logicUse a Node when lifecycle behavior is needed
assets/**/manifest.jsonAsset keys, files, and atlas framesInclude in project.json.manifests for loading
config/input-map.jsonKeyboard-to-game-action mappingsSeparate input rules from implementation

Decide character and collider dimensions in game-world units before adjusting art display scale. Set these data separately:

  • Image resolution.

  • Display size.

  • Collider dimensions.

Recheck collision after changing appearance. Use placeholder_image or placeholder_atlas to verify gameplay before replacing them with registered assets.

After image generation, check:

  • Cropping.

  • Pivot.

  • Atlas frames.

  • Animation.

The artist's standard sprite workflow is:

  • Generate one image containing all frames of a single action.

  • Remove the background.

  • Cut.

  • Concatenate.

  • Register the manifest.

This workflow does not require generating a video for every action. Asset packs specified by the user are inspected and processed before registration.

The engine's original index.html loads Phaser 3.80.1 through a CDN. Standard development has no frontend bundling step, but deployment and offline use still require checking that this external resource can load.

07Advanced usage and cost controls

Operating rules

Accept the smallest gameplay loop first

Define one scene, its controls, failure, and restart conditions. Verify behavior with placeholder assets before arranging the art swap.

Separate static checks from play evidence

check validates project data. player verifies gameplay through real input, state, and screenshots. Neither replaces the other.

Control generation and testing costs

Normal project check does not call paid APIs. --api adds VLM and image generation smoke checks. Inspect local data before deciding whether to run paid tests.

Keep the source checkout

The CLI depends on the source directory. After updating it, check framework and engine versions within existing games as well.

Image generation sends prompts and images to external services. Some image-processing agent workflows also use VLM, including:

  • Background removal.

  • Cutting.

  • Normalization.

Before starting, set separate quotas and stopping conditions for:

  • CLI inference.

  • Image generation.

  • VLM evaluation.

  • Optional video generation.

Image generation records live in .vibegame/logs/imagegen.jsonl and include:

  • Full prompts.

  • Reference-image paths.

  • Models.

  • Output locations.

  • Errors.

When reporting a problem, provide the source version and necessary error messages. Remove private data before sharing logs.

08Inputs, execution, and results

Worked example

After starting the orchestrator in the earlier my-game project, submit this proposed acceptance specification. This review did not generate or play-test the example.

text
/vibegame-build Build a single-screen 2D dodge game. Use arrow keys to move, avoid falling hazards, and survive for 30 seconds to win. A hit ends the round. Add a visible timer, clear win and lose states, and a restart button. Use placeholder assets first. Verify movement, collisions, the timer, and restart before replacing art. Keep API keys out of runtime files.

Divide the work into these tasks, each with observable outcomes:

  • Input and movement.

  • Hazards and collision.

  • Timing and end states.

  • Restart.

  • Asset replacement.

Do not use "the game is playable" as the only completion criterion.

After team delivery, run these commands in the game directory:

bash
vibegame check
vibegame run --port auto

Save the decisive state and screenshot evidence, then run vibegame close. Move to art replacement and regression checks after these checks pass:

  • Win/loss behavior.

  • Interface readability.

  • Restart state.

09Failure conditions and corrections

Limits and failure handling

Symptom or limitCheck and correction
Codex starts, but the Dashboard is empty or waiting for a sessionComplete vibegame setup codex-hooks and Codex's /hooks trust step
Only one CLI is installed and some roles fail to startCheck each role's cli and model; replace settings that require the other tool
An existing project has staged workinit rebuilds staging and commits by default; save the work first, then inspect manually with --no-commit
Updated runtime reports missing clock supportSave custom engine changes, then update the framework and engine within the game; updating only the CLI checkout is insufficient
check passes, but gameplay or visuals remain brokenAdd the player's runtime tests; Dashboard Play is not equivalent to controlled runtime verification
Image or visual tests failCheck provider, base URL, model capabilities, credentials, and quota; check --api calls paid services
Moving to Godot, Unity, or 3DThese remain roadmap items in the current README; do not infer support from the Phaser manual

When using Claude roles, start handles project trust settings in the user's ~/.claude.json. Global hooks, trust registration, and project settings are separate. Inspect changes to user-level files before adoption.

The package uses Apache-2.0. The README's commercial-deployment notice is an author request that explicitly:

  • Requires no approval.

  • Charges no license fee.

  • Does not change Apache-2.0 rights.

Check terms separately for:

  • Image models.

  • External services.

  • Assets used.

10Updates, releases, and shared resources

Next steps

Updating an existing game

After pulling updates in the VibeGame source checkout, run vibegame init --no-commit in the game directory. Inspect the diff before deciding whether to choose Replace entire engine. Replacing the whole engine removes game-local engine changes and requires separate confirmation.

Releasing a game

bash
vibegame release --dry-run
vibegame release

By default, release creates or updates the local release branch without automatically pushing or deploying. If the game uses entities/, modules/, or other extra runtime directories, list them explicitly in project.json.releaseExtraRoots. Manifests still select assets.

Verify on the release branch:

  • Actual HTTP paths.

  • All scenes.

  • Dynamically created objects.

A game with a custom backend also needs that service deployed with the correct API address injected. The tool's local runtime does not provide a production model backend for the game.

Promoting shared resources

vibegame evolve copies completed, user-approved shared resources back to the installed CLI's source checkout. It can promote:

  • Skeletons.

  • Modules.

  • Contracts.

Inspect the copy plan with --dry-run first. If the destination exists, it stops without overwriting or merging; it also does not automatically:

  • Edit indexes.

  • Commit.

  • Push.

This manual reviews revision fc9cbbe1f82c217b6d1946c00f51d309e584d826, package version 0.1.0. Interfaces and limits follow official sources at this revision; see the reference links for individual sources.

This review did not run:

  • Paid image generation.

  • VLM calls.

  • Complete agent-led game production.

References