Skip to content
cccskills
FreePublished on GitHub

vp

Vite+ (vp) in this monorepo (apps/*, packages/*). Always `vp <command>` instead of pnpm/npm/vite/vitest/oxlint directly. Load before touching package.json, vite.config.ts, pnpm-workspace.yaml, tsconfig*.json, or running install/dev/build/test.

The English summary is being prepared. Showing the original description.

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

Run score Not tested

See how to install

Files included (1)

  • SKILL.md8.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Vite+ here

Local docs: node_modules/vite-plus/docs/guide/. Online: https://viteplus.dev/guide/. Vite+ 0.3.3 (pinned in pnpm-workspace.yaml catalog:) = Vite 8 + Rolldown + Vitest 4 + Oxlint + Oxfmt + tsgolint (TypeScript 7). Vite+ owns Node and pnpm, downloaded on demand: Node 26.10.0 in .node-version (vp env pin <version> --target node-version; CI: node-version in ci.yml), pnpm 12.5.1 in package.json devEngines.packageManager.

Workspace

  • apps/*: games (Vite apps). packages/vite-config: gameApp(port), the shared config.
  • Versions live in catalog: (pnpm-workspace.yaml), exact pins, no ^. A package lists "<dep>": "catalog:", workspace deps "workspace:*".
  • minimumReleaseAge: 4320: a version must be 3 days old to install. A fresh release fails with a "minimumReleaseAge" error: take the previous one.
  • The root vite.config.ts owns fmt, lint, staged and run.tasks (Vite+ ignores nested lint/fmt blocks; per-package lint rules go in lint.overrides). Each app's vite.config.ts owns its Vite/Vitest config.
  • -F/--filter exists only on vp run. Builtins take -C <dir>: vp -C apps/game dev.

Rule #1: vp <command>, never the tool underneath

TaskCommandNotes
Install depsvp install (root)after every pull; CI: vp install --frozen-lockfile
Add a depvp -C apps/game add <pkg> (-D dev), then move it to catalogexact version in the catalog, "catalog:" in the package
Dev servervp -C apps/game devhttp://localhost:8080, strictPort, HMR
Production buildvp -C apps/game buildapps/game/dist/, base ./ (or BASE=/path/ vp -C apps/game build)
Serve the buildvp -C apps/game previewdev port + 1 (8081)
Format + lint + typesvp check / vp check --fix (root, whole workspace)vp check --fix <file> for one file (the Claude hook does this)
Unit testsvp -C apps/game testVitest, tests/*.test.ts, import from vite-plus/test; watch: vp test watch
e2evp -C apps/game run e2ePlaywright on the build: run vp -C apps/game build first (skill e2e)
Everything ("done")vp run ready (root)vp check → each package's ready (test, build, e2e)
Pixi skills after a bumpvp run skills:pixicopies pixi.js/skills into .claude/skills/
Versionsvp toolchain, vp why <pkg>, vp pm view <pkg> version

vp build = the builtin; vp run <name> = a script or task. Scripts cannot shadow builtins. vp pm <cmd> is an allowlist (view, list, audit, cache…); anything else (pnpm patch): the embedded pnpm under ~/.vite-plus/package_manager/pnpm/<version>/.

Updating dependencies

  1. vp pm view <pkg> time --json: latest version at least 3 days old; read its changelog.
  2. Bump it in catalog: (vite and vite-plus together: vite: npm:@voidzero-dev/vite-plus-core@<v>).
  3. vp install, then vp run ready. Pixi: also vp run skills:pixi and README "More infos".

Traps

SymptomCauseFix
TS4111: Property 'X' comes from an index signaturenoPropertyAccessFromIndexSignature (tsconfig.base.json)process.env["X"], not process.env.X
prefer-readonly-parameter-types on a ReadonlySet/ReadonlyMap parameterthe rule wants deeply readonly types; a Set's methods do not countreadonly T[] or a readonly object type; Pixi classes are allowed in the root vite.config.ts
strict-void-return on (e) => set.add(e.code)an arrow returning a value where a void callback is expecteda block body: (e) => { set.add(e.code); }
vitest(no-conditional-in-test) / consistent-function-scoping in a testany if, ?:, ?., ?? inside it/testmove it to a module-level helper (apps/game/e2e/game.e2e.ts)
Oxlint no-unsafe-* on JSON.parse / res.json()any from the platformtype the result unknown and narrow it; never cast
A vite.config.ts task with * or && does nothing or failsvp runs task commands without a shell (it splits &&, no globbing)sh -c '…' (see skills:pixi)
vp run spawned at runtime under a vp run task fails silentlythe child inherits VP_COMMANDnever vp run in a Playwright webServer; vp preview / vp dev there work (verified)
vp test picks up Playwright specsVitest collects *.{test,spec}.tse2e files are *.e2e.ts; gameApp sets test.include: ["tests/**/*.test.ts"]
vp dev / vp build at the root: needs a target packagethe root is a workspacevp -C apps/<game> dev
CI vp install --frozen-lockfile: 1 dependency was added: node@runtime:…devEngines.runtime in package.json: pnpm then manages Node too, in the lockfilepin Node in .node-version, not devEngines.runtime
node: command not foundno global Node: Vite+ owns itvp node <file>, or vp env setup for the shims

Git hooks

"prepare": "vp config" installs the dispatcher in .vite-hooks/_ (ignored). The project hook .vite-hooks/pre-commit runs vp staged (the staged block of the root vite.config.ts: vp check --fix on staged files). Never git commit --no-verify.

Dev server under WSL

server: { host: true, port, strictPort: true } (in gameApp): binds 0.0.0.0 so VS Code/Cursor can forward it; strictPort fails loudly instead of moving to another port. Stop a server you started by PID (ss -ltnp | grep 8080), never pkill -f a pattern (it matches your own shell). Port 8080 is already in use while ss -ltn shows nothing: a Windows process holds it (WSL shares the network): netstat.exe -ano -p tcp | grep ':8080 ', then tasklist.exe /FI "PID eq <pid>". Cursor/VS Code keep auto-forwarded ports bound: Ports panel → Stop Forwarding Port.

VS Code

.vscode/settings.json: Oxc formats and fixes on save, from vite.config.ts. The [language] blocks are required (a user-level Prettier would win otherwise); formatOnSaveMode: "file" because Oxfmt cannot format a range.

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

game

Free

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-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

See all skills by ltruchot

Report a problem with this skill