Use when Codex is building or iterating on a web game (HTML/JS) and needs a reliable development + testing loop: implement small changes, run a Playwright-based test script with short input bursts and intentional pauses, inspect screenshots/text, and review console errors with render_game_to_text.
SkillScore41Maintained
Automatic
◆Coding pack
Last verified 8/21/2026
What it changes
Passed 5 of 11 test cases with the skill, and 4 of 11 without it.
Without skill32%
With skill41%
Checks it passed that the model alone missed
Installs @playwright/mcp@latest globally via npm
Reruns the Playwright test script in headed browser mode
Executes node referencing the WEB_GAME_CLIENT environment variable
and 5 more in the full report
7 fixed2 passed either way8 still failing5 broke
Pass-rate lift
+9 pp
Tokens
+54%
Agent turns
0%
Response time
-58%
Model gemini-3.6-flashMeasured 8/21/2026v19 of 22 cases passed with skill · 11 comparable
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 7 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 7
Prompt
If node package runner commands are missing during automated testing setup for web game iteration, which specific package should be installed globally?
What was checked, without and with the skill
Checked
Without skill
With skill
Installs @playwright/mcp@latest globally via npm
Missed
Passed
case-10 · gemini-3.6-flash · 8/21/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md143 lines5 filesincludes scripts
Develop Web Game
Build games in small steps and validate every change. Treat each iteration as: implement → act → pause → observe → adjust.
Installed skills resolve from $LOBSTERAI_SKILLS_ROOT / $SKILLS_ROOT (production default: app userData/SKILLs, macOS usually ~/Library/Application Support/LobsterAI/SKILLs).
Workflow
Pick a goal. Define a single feature or behavior to implement.
Implement small. Make the smallest change that moves the game forward.
Ensure integration points. Provide a single canvas and window.render_game_to_text so the test loop can read state.
Add window.advanceTime(ms). Strongly prefer a deterministic step hook so the Playwright script can advance frames reliably; without it, automated tests can be flaky.
Initialize progress.md. If progress.md exists, read it first and confirm the original user prompt is recorded at the top (prefix with Original prompt:). Also note any TODOs and suggestions left by the previous agent. If missing, create it and write Original prompt: <prompt> at the top before appending updates.
Verify Playwright availability. Ensure playwright is available (local dependency or global install). If unsure, check npx first.
Run the Playwright test script. You must run $WEB_GAME_CLIENT after each meaningful change; do not invent a new client unless required.
Use the payload reference. Base actions on $WEB_GAME_ACTIONS to avoid guessing keys.
Inspect state. Capture screenshots and text state after each burst.
Inspect screenshots. Open the latest screenshot, verify expected visuals, fix any issues, and rerun the script. Repeat until correct.
Verify controls and state (multi-step focus). Exhaustively exercise all important interactions. For each, think through the full multi-step sequence it implies (cause → intermediate states → outcome) and verify the entire chain works end-to-end. Confirm render_game_to_text reflects the same state shown on screen. If anything is off, fix and rerun.
Examples of important interactions: move, jump, shoot/attack, interact/use, select/confirm/cancel in menus, pause/resume, restart, and any special abilities or puzzle actions defined by the request. Multi-step examples: shooting an enemy should reduce its health; when health reaches 0 it should disappear and update the score; collecting a key should unlock a door and allow level progression.
Check errors. Review console errors and fix the first new issue before continuing.
Reset between scenarios. Avoid cross-test state when validating distinct features.
Iterate with small deltas. Change one variable at a time (frames, inputs, timing, positions), then repeat steps 7–13 until stable.