跳到正文
cccskills
免费在 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.

中文简介正在准备中。当前显示原文说明。

ltruchot/seed-pixi-typescript星标 35(GitHub 35 + cccskills 0)
集成工具Playwright

实测评分 未实测

查看安装方法

包含的文件(1)

  • SKILL.md8.8 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

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.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

add-game

免费

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.

中文简介正在准备中。当前显示原文说明。

ltruchot/seed-pixi-typescript352026年9月24日 更新

e2e

免费

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.

中文简介正在准备中。当前显示原文说明。

ltruchot/seed-pixi-typescript352026年9月24日 更新

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.

中文简介正在准备中。当前显示原文说明。

ltruchot/seed-pixi-typescript352026年9月24日 更新

pixijs

免费

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.

中文简介正在准备中。当前显示原文说明。

ltruchot/seed-pixi-typescript352026年9月24日 更新

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.

中文简介正在准备中。当前显示原文说明。

ltruchot/seed-pixi-typescript352026年9月24日 更新

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.

中文简介正在准备中。当前显示原文说明。

ltruchot/seed-pixi-typescript352026年9月24日 更新

查看 ltruchot 的全部技能

报告此技能的问题