pixi-vn-ui
Use when building game UI (menus, HUD, dialogue box, settings/save screens) on top of Pixi'VN with an external JS framework (React, Vue) or with plain PixiJS components — mounting HTML or PixiJS UI layers over the canvas, navigating between UI screens/routes, theming a shadcn/ui-based template, and…
Install / Use
npx skills add DRincs-Productions/pixi-vn --skill uiInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
DesignSupported Platforms
Our assessment of pixi-vn-ui
pixi-vn-ui scores 80/100 on our quality scale, 228th of 258 Design skills we index.
Its SKILL.md is 15 KB long, well organised into 11 sections with 12 code examples: a thorough specification that gives an agent plenty to work with.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- The repository was last updated 4 days ago, so pixi-vn-ui is actively maintained.
- Our last check on 2026-09-24 found the source still online.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 80/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
pixi-vn-ui compared with similar skills
All 4 of these similar skills score higher than pixi-vn-ui; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| pixi-vn-ui (this skill)by DRincs-Productions | 80 | 0 | 4d ago | SKILL.md |
| algorithmic-artby anthropics | 100 | 177.9k | 34d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 34d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 137.2k | 11d ago | SKILL.md |
| ui-ux-pro-maxby nextlevelbuilder | 100 | 137.2k | 11d ago | SKILL.md |
Frequently asked questions
- How do I install pixi-vn-ui?
- Run
npx skills add DRincs-Productions/pixi-vn --skill pixi-vn-ui. The install tabs above show the steps for each supported agent. - Which AI agents does pixi-vn-ui work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is pixi-vn-ui safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 80/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is pixi-vn-ui still maintained?
- The repository was last updated 4 days ago, so pixi-vn-ui is actively maintained.
Skill content
View source on GitHubname: pixi-vn-ui
description: Use when building game UI (menus, HUD, dialogue box, settings/save screens) on top of Pixi'VN with an external JS framework (React, Vue) or with plain PixiJS components — mounting HTML or PixiJS UI layers over the canvas, navigating between UI screens/routes, theming a shadcn/ui-based template, and connecting UI components to game storage/settings. Covers canvas.htmlLayers.add/get/remove and the PixiJS-only layer helpers canvas.layers.add/get/remove.
Pixi'VN User Interface (UI)
Pixi’VN does not ship its own UI components (buttons, menus, forms, HUD). Instead of reinventing what already exists in the JavaScript ecosystem, it lets a project use any external framework (React, Vue, ...) — or plain PixiJS — to build the UI, and just provides the plumbing to mount that UI on top of the canvas and keep it in sync with game data. Official docs: pixi-vn.com/start/interface.
Because the UI is built with standard, widely-used frameworks rather than a proprietary system, AI coding assistants already know these tools well — this is a deliberate design choice, not just a missing feature.
When to use this skill
Load this skill whenever a task involves:
- Building a menu, HUD, dialogue box, settings screen, or save/load screen for a Pixi'VN game.
- Mounting an HTML UI layer (React/Vue root) or a PixiJS UI layer on top of the canvas.
- Navigating/switching between UI screens (routing).
- Reading or writing game storage/settings from UI components, or keeping the UI in sync with changes made elsewhere (a label, a step, loading a save).
- Theming/styling a template's generated UI (colors, radius, fonts).
For the rendering primitives the UI sits on top of (images, sprites, text, transitions), see
pixi-vn-canvas. For building UI screens purely out of PixiJS components (no HTML framework), see
pixijs.md in this same skill folder.
UI vs canvas
The UI and the canvas are two distinct, independent systems:
- The canvas is save-able; the UI is not. All canvas element state (by alias) is included in a
save and restored when loading one — see
pixi-vn-storage/pixi-vn-saves. The UI's current state is never included; you must persist whatever UI state matters yourself, into game storage or browser storage (see "Connecting UI to game data" below). - The canvas is stepped; the UI is navigated. In the canvas you add/replace components during each narration step. The UI instead is built as several distinct "screens", and you move between them with a router (see "Navigating between UI screens" below) — you don't swap UI content per step the way you swap canvas elements.
- The canvas is Pixi'VN-only; the UI is anything. The canvas only accepts Pixi'VN's own
save-able component classes (
Container,Sprite,ImageSprite,Text, ...). The UI layer can hold any HTML/PixiJS component or any UI component library, so it's where the actual interface complexity (forms, animations, component libraries) belongs.
HTML UI layers
An HTML UI Layer is a <div> added above the PixiJS canvas, sized and positioned to match it —
this is how a React/Vue (or any DOM-based) UI gets mounted on top of the game.
const root = document.getElementById("root");
if (!root) {
throw new Error("root element not found");
}
const htmlLayer = canvas.htmlLayers.add("ui", root, {
position: "absolute",
pointerEvents: "none",
userSelect: "none",
});
// createRoot(htmlLayer).render(<App />)
<!doctype html>
<html lang="en">
<body>
<div id="root"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
canvas.htmlLayers.add(id, element, style?)creates the layer and returns theHTMLDivElementto render into.styleisPartial<Pick<CSSStyleDeclaration, "position" | "pointerEvents" | "userSelect">>, defaulting to{ position: "absolute", pointerEvents: "none", userSelect: "none" }.canvas.htmlLayers.get(id)returns the layer'sHTMLElement | undefined.canvas.htmlLayers.remove(id)removes it.
Enabling interaction: every HTML UI layer defaults to pointer-events: none, so by default none
of its elements intercept mouse/touch — the PixiJS canvas gets all events. This matters when you
want an image/video on the canvas to receive clicks/taps unobstructed by an overlay. Set
pointer-events: auto explicitly, and only, on the components that must be interactive:
export default function NextButton() {
return <button style={{ pointerEvents: "auto" }}>Next</button>;
}
@layer components {
[data-slot="button"],
[data-slot="card"],
[data-slot="toggle"] {
pointer-events: auto;
}
}
PixiJS UI layers
You can also build a UI screen directly out of PixiJS components (no HTML framework at all), or mix
PixiJS components into an HTML-based UI. This uses a PixiJS UI Layer — a plain PixiJS
Container attached directly to the PixiJS stage, outside the save-able canvas.gameLayer — via
canvas.layers.add/get/remove. See pixijs.md in this skill folder for the full
API, the differences from gameLayer, combining PixiJS and HTML layers, and recommended component
libraries (PixiUI, PixiLayout).
Real-world layer conventions (official React template)
The API above is library-level; here's one concrete way it's used in practice, from the official
"TS narration + React" template (what npm create pixi-vn@latest scaffolds) at src/main.tsx /
src/constants.ts. This is the template's convention, not a library requirement.
- Named constants for layer ids, not string literals:
CANVAS_UI_LAYER_NAME,HTML_UI_LAYER_NAME,HTML_CANVAS_LAYER_NAME. A separateCANVAS_MINIGAME_LAYER_NAMEconstant reserves a layer for future minigame content. - A dedicated PixiJS UI layer, added once at startup and kept apart from game-content elements
(which live in
canvas.gameLayerviacanvas.add):canvas.layers.add(CANVAS_UI_LAYER_NAME, new Container()). canvas.htmlLayers.addto mount a UI framework's root as an actual canvas layer — not merely an absolutely-positioned<div>floating outside the canvas system:
Done insideconst htmlLayout = canvas.htmlLayers.add(HTML_UI_LAYER_NAME, root); createRoot(htmlLayout).render(<App />);Game.init(...).then(...), after canvas setup, before rendering the app.canvas.extractImage()for save-file thumbnails — captures a screenshot of the current canvas to embed in a save entry:const image = await canvas.extractImage();. (This is acanvas/save concern, not UI state — seepixi-vn-canvas/pixi-vn-saves.)
Navigating between UI screens
Docs: pixi-vn.com/start/interface-navigate. To move
between different UI screens, use a routing system that defines routes/paths for each screen and
handles navigation between them — e.g.
TanStack Router, which official templates use, with
file-based route generation (createFileRoute, e.g. a file about.tsx under src/routes becomes
the /about route).
Wiring navigate into narration steps: extend StepLabelProps (typically in pixi-vn.d.ts,
already done in every official template) so every step/Game.onEnd/Game.addOnError receives a
navigate function:
declare module "@drincs/pixi-vn" {
interface StepLabelProps {
navigate: (route: string) => void;
}
}
export const startLabel = newLabel("start", [
({ navigate }) => {
navigate("/new-route");
},
]);
In ink templates, a custom hashtag command navigates instead: # navigate /new-route.
Blocking the browser's back/forward buttons: those buttons let the player navigate between
routes, not narrative steps, which can leave the game in an inconsistent state. The recommended
approach is to intercept popstate and call history.forward() to cancel it, pushing a new history
state on every route change so a second back-press in quick succession is still allowed through —
see the useConfirmBackNavigation hook pattern in the
official docs for the full
implementation.
Styling & theming
Docs: pixi-vn.com/start/interface-font. Official
templates build the UI with shadcn/ui on Tailwind CSS — the component
source is copied into src/components/ui/, not installed as an opaque package. The entire theme
(colors, roundness, fonts) lives in one file, src/styles.css.
Rather than hand-editing styles.css, generate a theme with a visual tool and apply it:
- shadcn/ui theme builder (official) — pick colors, mode, and
radius with a live component preview, then copy a generated command:
npx shadcn@latest add <generated-command> - tweakcn (community) — same colors/radius, plus live font/shadow
editing and ready-made presets; exports plain CSS variables you paste into
styles.cssinstead.
Either way, once the theme is applied, run:
npm run ui:reinit
This force-reinstalls every shadcn component already in the project from the shadcn registry using
the updated styles.css/components.json, so every component stays consistent with the new theme
instead of keeping whatever variables it was originally built with.
Connecting UI to game data
Docs:
pixi-vn.com/start/interface-connect-storage.
Variables shown or edited in the UI fall into three categories, each with its own recommended
pattern (official templates use these throughout src/lib/stores/ and src/lib/query/):
Settings variables (text speed, font size, auto-forward delay, ...) are not part of
game storage — they must persist across every playthrough, even
before a save exists — so they live in localStorage, mirrored into a
TanStack Store so components re-render on change:
import { Store } from "@tanstack/store";
export namespace AutoSettings {
export const store = new Store({
enabled: Boolean(localStorage.getItem("auto_forward_enabled") ?? false),
time: Number(localStorage.getItem("auto_forward_second") ?? 1),
});
export function setEnabled(value: boolean) {
localStorage.setItem("auto_forward_enabled", value.toString());
store.setState((state) => ({ ...state, enabled: value }));
}
}
Read-only game variables (a stat, a flag, dialogue text) — read them straight from
game storage inside a
TanStack Query queryFn:
import { useQuery } from "@tanstack/react-query";
import { storage } from "@drincs/pixi-vn";
export function useQueryAffection() {
return useQuery({
queryKey: ["affection_use_query_key"],
queryFn: async () => storage.get<number>("affection") ?? 0,
});
}
Game storage only changes during a step/go-back, a label call/jump, or loading a save — Pixi'VN has no way of knowing a query depends on that data, so invalidate broadly at those call sites rather than tracking every key:
narration.continue({}).then(() => {
queryClient.invalidateQueries();
});
Read/write game variables (a selected option, a toggle tied to a quest flag) — the same Store
pattern as settings, but backed by game storage instead of
localStorage, so the value survives saves and go back:
import { storage } from "@drincs/pixi-vn"
Truncated for display — read the full file on GitHub.
Related Skills
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
design
137.2kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVG…
ui-ux-pro-max
137.2kUI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation.
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
