Skip to content
cccskills
FreePublished on GitHub

game

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.

ltruchot/seed-pixi-typescript35 stars(GitHub 35 + cccskills 0)

Run score Not tested

See how to install

Files included (1)

  • SKILL.md3.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

A game here

PixiJS 8.21 (v8 API only). Never guess an API: load the skill pixijs (it routes to the right pixijs-* skill), then check the types in apps/game/node_modules/pixi.js/lib/**/*.d.ts. v7 habits that do not exist anymore: new Application({...}) options (→ await app.init({...})), app.view (→ app.canvas), Loader (→ Assets), beginFill/endFill (→ .rect().fill()), new Text("hi", style) (→ new Text({ text, style })). Skill pixijs-migration-v8.

Layout: logic apart from rendering

FileRole
src/main.tsthe only file that touches Pixi: app.init, Assets.load, sprites, app.ticker.add
src/entity.tsgame state as readonly data + pure functions (moveEntity); Pixi math only (Rectangle)
src/input.tskeyboard → held keys → direction (KeyboardEvent.code: physical keys, WASD = ZQSD)
src/assets/images, sounds: import url from "./assets/x.png" (hashed, works under any base path)
tests/*.test.tsVitest on the pure functions (import … from "vite-plus/test")

Collisions: walls are drawn with Graphics (rect().fill()) in main.ts; their hit boxes are wall.getBounds().rectangle, passed to moveEntity, which tests hitBox(entity).intersects(wall) one axis at a time (stops flush, slides along). Moving walls: read getBounds() again each frame.

The loop in main.ts, every frame: state = update(state, input, ticker.deltaMS), then copy the state onto the sprites. New gameplay = a new pure function + its test, then one line in the ticker. Speeds are in pixels per second, scaled by ticker.deltaMS (frame-rate independent).

Strictness you will meet

  • tsconfig.base.json: strict, noUncheckedIndexedAccess (array[i] is T | undefined), exactOptionalPropertyTypes, verbatimModuleSyntax (import type for types only).
  • Lint (root vite.config.ts): pedantic + type-aware. Parameters must be readonly types: readonly T[], { readonly x: number }. Pixi's Application, Rectangle, Sprite, Text, Ticker are allowed as parameters; another Pixi class as a parameter → add it to that allow list with the reason, never disable the rule.
  • Imports end in .ts (./entity.ts).
  • Top-level await is fine in main.ts (Vite 8 targets browsers that support it).

Checks

The Claude hook runs vp check --fix <file> and the game's unit tests after each edit. Before "done": vp run ready. A visible change: also look at it (vp -C apps/game dev, or a Playwright screenshot, skill e2e).

Reviews

No reviews yet. Tell others what you thought.

Comments

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.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

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.

ltruchot/seed-pixi-typescript35Updated Sep 24, 2026

e2e

Free

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.

ltruchot/seed-pixi-typescript35Updated Sep 24, 2026

pixijs

Free

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.

ltruchot/seed-pixi-typescript35Updated Sep 24, 2026

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.

ltruchot/seed-pixi-typescript35Updated Sep 24, 2026

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.

ltruchot/seed-pixi-typescript35Updated Sep 24, 2026

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.

ltruchot/seed-pixi-typescript35Updated Sep 24, 2026

See all skills by ltruchot

Report a problem with this skill