add-game
FreeAdd a second game to the monorepo (apps/<game>) from the seed game, wired to the gate. Load when asked to create a new game / app / prototype in this repo.
The English summary is being prepared. Showing the original description.
End-to-end tests of a game with Playwright (apps/*/e2e/*.e2e.ts) on a WebGL canvas, and taking screenshots of the running game. Load before writing or debugging an e2e test, or to look at the game in a browser.
The English summary is being prepared. Showing the original description.
Run score Not tested
See how to installReview the instructions the agent will receive before you install.
apps/game/e2e/playwright.config.ts: Chromium, webServer = vp preview (port 8081) on the
build. So: vp -C apps/game build && vp -C apps/game run e2e (the ready script does both).
Results and traces: .local/test-results/ (gitignored). Chromium once per machine:
vp -C apps/game exec playwright install chromium (CI: --with-deps).
A canvas has no DOM to query: "the canvas is visible" passes on a black screen. Assert on pixels, and prove the test can fail:
page.screenshot({ clip }) buffers. game.e2e.ts: the center square differs from a
background-only corner (the hero is drawn), then after holding ArrowRight it equals it
(the hero left). Wait with expect.poll, never a fixed delay before the first assertion.pageerror and console errors for the whole test; assert [] at the end.| Symptom | Cause | Fix |
|---|---|---|
Lint no-conditional-in-test on an if in a page.on handler | any condition inside test() | a module-level helper (collectErrors(page)) |
require-await on expect.poll(async () => helper()) | the arrow only returns a promise | expect.poll(() => helper()) |
| The test sees the old game | e2e runs on dist/, not the dev server | vp -C apps/game build first |
Port 8081 is already in use | a vp preview left running (locally reuseExistingServer) | stop it by PID, skill vp ("Dev server under WSL") |
| "BEWARE: your OS is not officially supported by Playwright" | WSL distro newer than Playwright's list | harmless: the ubuntu24.04 build runs |
Take a screenshot to see a visual change: a one-off test in e2e/ that calls
page.screenshot({ path: "../../.local/screenshots/x.png" }), run it, read the PNG, delete
the test.
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Add a second game to the monorepo (apps/<game>) from the seed game, wired to the gate. Load when asked to create a new game / app / prototype in this repo.
The English summary is being prepared. Showing the original description.
How a game of this seed is organized (apps/<game>/src) and how to add gameplay with PixiJS v8 without breaking the strict gate. Load before editing apps/*/src or apps/*/tests.
The English summary is being prepared. Showing the original description.
Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job. Covers the full PixiJS surface: Application setup, the scene graph (Container, Sprite, Graphics, Text, Mesh, ParticleContainer, DOMContainer, GifSprite), rendering (WebGL/WebGPU/Canvas, render loop, custom shaders, filters, blend modes), assets, events, color, math, ticker, accessibility, performance, environments, migration from v7, and project scaffolding. Triggers on: pixi, pixi.js, pixijs, PixiJS, v8, Application, app.init, Sprite, Container, Graphics, Text, Mesh, ParticleContainer, DOMContainer, GifSprite, Assets, Ticker, renderer, WebGL, WebGPU, scene graph, filter, shader, blend mode, texture, BitmapText, create-pixi, how do I draw, how do I render, how do I animate in pixi.
The English summary is being prepared. Showing the original description.
Use this skill when adding screen reader and keyboard navigation to PixiJS v8 apps. Covers AccessibilitySystem options (enabledByDefault, debug, activateOnTab, deactivateOnMouseMove), per-container accessibility properties, shadow DOM overlay, mobile touch-hook activation. Triggers on: accessibility, a11y, screen reader, ARIA, keyboard navigation, tab order, AccessibilitySystem, accessibleTitle, accessibleHint, tabIndex, accessibleChildren.
The English summary is being prepared. Showing the original description.
Use this skill when creating and configuring a PixiJS v8 Application. Covers new Application() + async app.init() options (width, height, background, antialias, resolution, autoDensity, preference, resizeTo, autoStart, sharedTicker, canvas, useBackBuffer, powerPreference, eventFeatures, accessibilityOptions, gcActive, bezierSmoothness, webgl/webgpu/canvasOptions per-renderer overrides), app.stage/renderer/canvas/screen/domContainerRoot access, ResizePlugin, TickerPlugin, CullerPlugin (cullable, cullArea), custom ApplicationPlugin via ExtensionType.Application, start/stop lifecycle, and app.destroy() with releaseGlobalResources. Triggers on: Application, app.init, app.stage, app.renderer, app.canvas, app.screen, app.domContainerRoot, ApplicationOptions, ApplicationPlugin, ExtensionType.Application, resizeTo, sharedTicker, skipExtensionImports, preferWebGLVersion, preserveDrawingBuffer, cullable, CullerPlugin, app.start, app.stop, app.destroy, releaseGlobalResources.
The English summary is being prepared. Showing the original description.
Use this skill when loading and managing resources in PixiJS v8. Covers Assets.init, Assets.load/add/unload, bundles, manifests, background loading, onProgress, caching, spritesheets, video textures, web fonts, bitmap fonts, animated GIFs, compressed textures, SVG as texture or Graphics, resolution detection, per-asset data options, and forcing a specific loader with the parser field (for extension-less URLs). Triggers on: Assets, Assets.load, Assets.init, loadBundle, manifest, backgroundLoad, Spritesheet, Cache, LoadOptions, unload, parser, loadParser, loadWebFont, loadBitmapFont, loadVideoTextures, GifSource, VideoSourceOptions.
The English summary is being prepared. Showing the original description.