Agent skill

Pixi Vn Migration

by DRincs-Productions in DRincs-Productions/pixi-vn

A skill your agent uses when upgrading an existing @drincs/pixi-vn project to a newer version, or when a runtime/type error matches a known breaking change.

LGPL-2.1Auto-check passed

Install Pixi Vn Migration

skills CLI
$ npx skills add DRincs-Productions/pixi-vn --skill pixi-vn-migration -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install DRincs-Productions/pixi-vn pixi-vn-migration --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/DRincs-Productions/pixi-vn.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/migration .claude/skills/pixi-vn-migration && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pixi-vn-migration
GitHub stars
149
Token cost
~5.3k tokens
SKILL.md length
1,298 words
Files
1
Skills in repo
13
Repo updated
First seen
Licence
LGPL-2.1

At a glance

A skill your agent uses when upgrading an existing @drincs/pixi-vn project to a newer version, or when a runtime/type error matches a known breaking change.

  • Upgrading an existing @drincs/pixi-vn project to a newer version
  • SKILL.md covers When to use this skill, v1.9.3 → v1.9.4 — canvas…, v1.8.x → v1.9.0 —… and v1.7.x → v1.8.0 — Tone.js…, plus 7 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • A runtime/type error matches a known breaking change

What it does

Pixi Vn Migration is an agent skill from DRincs-Productions/pixi-vn. Use when upgrading an existing @drincs/pixi-vn project to a newer version, or when a runtime/type error matches a known breaking change. Covers every breaking change between versions with before/after code.

Its SKILL.md is about 5.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with npm. The repository describes itself as: Create visual novels with a modern 2D rendering engine and your favorite JavaScript framework.

When your agent uses it

  • Upgrading an existing @drincs/pixi-vn project to a newer version
  • A runtime/type error matches a known breaking change

Example prompts

  • “/pixi-vn-migration”

What it can do on your machine

Read from SKILL.md and the folder at commit 01c19cb. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • pixi-vn.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Pixi Vn Migration loads about 5.3k tokens when it runs. Until then it costs about 56 tokens; SKILL.md has 1,298 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~56
When it runs · the whole SKILL.md, loaded when a task matches
~5.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from DRincs-Productions/pixi-vn at commit 01c19cb, republished under its LGPL-2.1 licence (© DRincs-Productions). 1,298 words, ~5,326 tokens.

Download SKILL.mdSave it as .claude/skills/pixi-vn-migration/SKILL.md (or your agent's skills folder).
name
pixi-vn-migration
description
Use when upgrading an existing @drincs/pixi-vn project to a newer version, or when a runtime/type error matches a known breaking change. Covers every breaking change between versions with before/after code.

Pixi'VN Migration guide

Official docs: pixi-vn.com/faq/migration. That page also covers the separate nqtr and pixi-vn-ink packages — this skill only covers the core @drincs/pixi-vn package (the ## pixi-vn section of that page), since that's what this skill set documents.

When to use this skill

Use this skill whenever a task is "upgrade this project's @drincs/pixi-vn from version X to the latest", or a developer hits an error that looks like a removed/renamed API. Check the currently installed version first (package.json dependency, or PIXIVN_VERSION/GameState.pixivn_version at runtime — see pixi-vn-getting-started), then walk forward through only the version sections below that fall between the installed version and the target — most of these changes don't apply unless a project is crossing that specific boundary.

v1.9.3 → v1.9.4 — canvas transitions/effects namespaces, top-level tickers

Canvas transitions and effects namespaces

Canvas transition helpers and canvas effects are now also grouped under discoverable namespaces: transitions contains showWithDissolve, showWithFade, moveIn, moveOut, zoomIn, zoomOut, pushIn, pushOut, removeWithDissolve, and removeWithFade; effects contains shakeEffect.

The previous flat exports remain available in v1.9.4 for compatibility, but are deprecated. Update imports and calls when migrating:

ts
import { moveIn, shakeEffect, zoomIn } from "@drincs/pixi-vn"; // [!code --]
import { effects, transitions } from "@drincs/pixi-vn"; // [!code ++]

await zoomIn("alice", "alice"); // [!code --]
await transitions.zoomIn("alice", "alice"); // [!code ++]

await moveIn("alice", "alice"); // [!code --]
await transitions.moveIn("alice", "alice"); // [!code ++]

shakeEffect("alice"); // [!code --]
effects.shakeEffect("alice"); // [!code ++]

The transition and effect behavior and their options are unchanged. This is an organizational API change intended to make canvas helpers easier to discover. The existing module entry points remain valid; the same namespaces are available from @drincs/pixi-vn/canvas.

canvas.tickers → top-level tickers

Ticker management is no longer part of the canvas manager: it's its own tickers singleton, exported from @drincs/pixi-vn next to canvas, sound, etc. canvas.tickers still works in v1.9.4 — it just forwards to tickers — but it's deprecated. The methods and their arguments are unchanged; only the receiver changes:

ts
import { canvas } from "@drincs/pixi-vn"; // [!code --]
import { tickers } from "@drincs/pixi-vn"; // [!code ++]

canvas.tickers.add("alien", new RotateTicker({ speed: 0.2 })); // [!code --]
tickers.add("alien", new RotateTicker({ speed: 0.2 })); // [!code ++]

canvas.tickers.pause({ canvasAlias: "alien" }); // [!code --]
tickers.pause({ canvasAlias: "alien" }); // [!code ++]

await canvas.tickers.forceCompletion(id); // [!code --]
await tickers.forceCompletion(id); // [!code ++]

The same applies to every other member (addSequence, find, remove, removeAll, resume, isPaused, unlinkComponent, transfer, completeOnStepEnd, onComplete, currentTickers, currentTickersSteps). The type CanvasTickersInterface is likewise a deprecated alias of the new TickersInterface:

ts
import type { CanvasTickersInterface } from "@drincs/pixi-vn"; // [!code --]
import type { TickersInterface } from "@drincs/pixi-vn"; // [!code ++]

TickerBase, tickerDecorator, RegisteredTickers, and the Ticker* types are still exported from @drincs/pixi-vn exactly as before. Saves are unaffected: tickers are still serialized as part of the canvas state.

Only code that reached into canvas internals breaks: the ticker bookkeeping on CanvasManagerStatic (_currentTickers, _currentTickersSequence, _currentTickersTimeouts, _tickersToCompleteOnStepEnd, currentTickersWithoutCreatedBySteps, currentTickersSequence, generateTickerId, addTickerTimeoutInfo, removeTickerTimeout*) moved to the TickersManagerStatic namespace, where the two former getters are now functions:

ts
CanvasManagerStatic._currentTickers; // [!code --]
TickersManagerStatic._currentTickers; // [!code ++]

CanvasManagerStatic.currentTickersSequence; // [!code --]
TickersManagerStatic.currentTickersSequence(); // [!code ++]

Prefer the public tickers.currentTickers / tickers.currentTickersSteps over either.

v1.8.x → v1.9.0 — long-deprecated APIs removed

This release removes several APIs that had been marked @deprecated for a while, with no replacement other than the one already documented at deprecation time:

Repeat/Pause(duration) and the RepeatType/PauseType types are gone. canvas.addTickersSequence now only accepts plain Ticker steps — chain tickers by duration instead of pause/repeat markers:

ts
canvas.addTickersSequence("alien", [
  new RotateTicker({ speed: 0.1, clockwise: true }, 2),
  Pause(1), // [!code --]
  new RotateTicker({ speed: 0.2, clockwise: false }, 2),
  Repeat, // [!code --]
]);

See pixi-vn-canvas/tickers.md for the current sequencing API. forceCompleteBeforeNext is gone from every transition helper (showWithDissolve, moveIn, zoomIn, ...) and from CommonTickerProps — use completeOnContinue directly, it's no longer just an alias:

ts
await showWithDissolve("alice", "alice", {
  forceCompleteBeforeNext: true, // [!code --]
  completeOnContinue: true, // [!code ++]
});

The deprecated AssetMemory.image field was removed; use AssetMemory.alias/url instead. Game.restoreGameState(data, navigate) lost its navigate overload — pass only data, and configure navigation once via Game.onNavigate (or Game.init({ navigate })) instead:

ts
Game.restoreGameState(data, navigateTo); // [!code --]
Game.restoreGameState(data); // [!code ++]

The singular Game.onError(...) handler was removed; use Game.addOnError/Game.removeOnError (already the recommended API since v1.6.0):

ts
Game.onError((type, error, { notify, uiTransition }) => { ... }); // [!code --]
Game.addOnError((error, { notify, uiTransition }) => { ... }); // [!code ++]

See pixi-vn-canvas/tickers.md for the current tickers/transitions API and pixi-vn-getting-started for the current Game API.

Manager APIs reorganized into namespaces

The canvas, sound, storage, and narration managers used to expose dozens of unrelated methods directly on the manager (ticker methods, layer methods, and HTML-layer methods all mixed together on canvas, for example). This release groups related operations into namespaced sub-APIs — canvas.tickers/.layers/.htmlLayers, sound.channels/.unsaved, storage.temp/.flags, narration.labels/.queries/.input/.choices — so each manager reads as a short, discoverable surface instead of a flat list, and related options/overloads live next to each other. See pixi-vn-canvas, pixi-vn-sound, pixi-vn-storage, and pixi-vn-getting-started for the current shape of each namespace.

Almost every old flat method still works and just forwards to its namespaced replacement — it's marked @deprecated but not removed, so migrate at your own pace. Two members are an exception: their type changed, so they break immediately rather than just warning.

sound.channels was AudioChannelInterface[]; it is now an object, and the array moved to .values:

ts
sound.channels.map((c) => c.alias); // [!code --]
sound.channels.values.map((c) => c.alias); // [!code ++]

narration.choices (getter) was StoredIndexedChoiceInterface[] | undefined; it now returns a namespace object, and the array moved to .list. The setter, narration.choices = [...], is unchanged — it's a shortcut for .list:

ts
const choices = narration.choices; // [!code --]
const choices = narration.choices.list; // [!code ++]

Every other rename below is a non-breaking, forward-compatible deprecation.

canvas's ticker methods moved to canvas.tickers (since v1.9.4 that is itself a deprecated alias of the top-level tickers — if you are migrating past v1.9.4, go straight to tickers.*, see v1.9.3 → v1.9.4 above):

ts
canvas.transferTickers("old", "new"); // [!code --]
canvas.tickers.transfer("old", "new"); // [!code ++]
ts
canvas.currentTickers; // [!code --]
canvas.tickers.currentTickers; // [!code ++]
ts
canvas.currentTickersSteps; // [!code --]
canvas.tickers.currentTickersSteps; // [!code ++]
ts
canvas.findTicker("t1"); // [!code --]
canvas.tickers.find("t1"); // [!code ++]
ts
canvas.addTicker("alien", new RotateTicker({ speed: 0.2 })); // [!code --]
canvas.tickers.add("alien", new RotateTicker({ speed: 0.2 })); // [!code ++]
ts
canvas.addTickersSequence("alien", steps); // [!code --]
canvas.tickers.addSequence("alien", steps); // [!code ++]
ts
canvas.unlinkComponentFromTicker("alien", RotateTicker); // [!code --]
canvas.tickers.unlinkComponent("alien", RotateTicker); // [!code ++]
ts
canvas.removeAllTickers(); // [!code --]
canvas.tickers.removeAll(); // [!code ++]
ts
canvas.removeTicker("t1"); // [!code --]
canvas.tickers.remove("t1"); // [!code ++]
ts
canvas.pauseTicker({ canvasAlias: "alien" }); // [!code --]
canvas.tickers.pause({ canvasAlias: "alien" }); // [!code ++]
ts
canvas.resumeTicker({ canvasAlias: "alien" }); // [!code --]
canvas.tickers.resume({ canvasAlias: "alien" }); // [!code ++]
ts
canvas.isTickerPaused("alien"); // [!code --]
canvas.tickers.isPaused("alien"); // [!code ++]
ts
canvas.completeTickerOnStepEnd({ id: "t1" }); // [!code --]
canvas.tickers.completeOnStepEnd({ id: "t1" }); // [!code ++]
ts
canvas.forceCompletionOfTicker("t1"); // [!code --]
canvas.tickers.forceCompletion("t1"); // [!code ++]
ts
canvas.onTickerComplete("t1", options); // [!code --]
canvas.tickers.onComplete("t1", options); // [!code ++]

canvas's layer methods moved to canvas.layers:

ts
canvas.gameLayer; // [!code --]
canvas.layers.gameLayer; // [!code ++]
ts
canvas.addLayer("ui", uiLayer); // [!code --]
canvas.layers.add("ui", uiLayer); // [!code ++]
ts
canvas.getLayer("ui"); // [!code --]
canvas.layers.get("ui"); // [!code ++]
ts
canvas.removeLayer("ui"); // [!code --]
canvas.layers.remove("ui"); // [!code ++]

canvas's HTML-layer methods moved to canvas.htmlLayers:

ts
canvas.addHtmlLayer("ui", root); // [!code --]
canvas.htmlLayers.add("ui", root); // [!code ++]
ts
canvas.getHtmlLayer("ui"); // [!code --]
canvas.htmlLayers.get("ui"); // [!code ++]
ts
canvas.removeHtmlLayer("ui"); // [!code --]
canvas.htmlLayers.remove("ui"); // [!code ++]

sound's transient/unsaved playback methods moved to sound.unsaved:

ts
sound.playTransient("ui-click"); // [!code --]
sound.unsaved.playTransient("ui-click"); // [!code ++]
ts
sound.pauseUnsavedAll(); // [!code --]
sound.unsaved.pauseAll(); // [!code ++]
ts
sound.resumeUnsavedAll(); // [!code --]
sound.unsaved.resumeAll(); // [!code ++]
ts
sound.stopTransientAll(); // [!code --]
sound.unsaved.stopTransientAll(); // [!code ++]

sound's channel creation/lookup methods moved to sound.channels (alongside the .values change above):

ts
sound.addChannel("music"); // [!code --]
sound.channels.add("music"); // [!code ++]
ts
sound.findChannel("music"); // [!code --]
sound.channels.find("music"); // [!code ++]

storage's temporary-variable methods moved to storage.temp (a new storage.temp.deadlines map is exposed alongside them):

ts
storage.setTempVariable("key", "value"); // [!code --]
storage.temp.set("key", "value"); // [!code ++]
ts
storage.removeTempVariable("key"); // [!code --]
storage.temp.remove("key"); // [!code ++]

storage's flag methods moved to storage.flags:

ts
storage.setFlag("introSeen", true); // [!code --]
storage.flags.set("introSeen", true); // [!code ++]
ts
storage.getFlag("introSeen"); // [!code --]
storage.flags.get("introSeen"); // [!code ++]

narration's label-stack members moved to narration.labels:

ts
narration.openedLabels; // [!code --]
narration.labels.opened; // [!code ++]
ts
narration.currentLabel; // [!code --]
narration.labels.current; // [!code ++]
ts
narration.closeCurrentLabel(); // [!code --]
narration.labels.closeCurrent(); // [!code ++]
ts
narration.closeAllLabels(); // [!code --]
narration.labels.closeAll(); // [!code ++]

narration's read-only queries moved to narration.queries:

ts
narration.isLabelAlreadyCompleted(label); // [!code --]
narration.queries.isLabelAlreadyCompleted(label); // [!code ++]
ts
narration.alreadyCurrentStepMadeChoices; // [!code --]
narration.queries.alreadyCurrentStepMadeChoices; // [!code ++]
ts
narration.isCurrentStepAlreadyOpened; // [!code --]
narration.queries.isCurrentStepAlreadyOpened; // [!code ++]
ts
narration.getTimesLabelOpened(label); // [!code --]
narration.queries.timesLabelOpened(label); // [!code ++]
ts
narration.getTimesChoiceMade(index); // [!code --]
narration.queries.timesChoiceMade(index); // [!code ++]

narration's input-request members moved to narration.input:

ts
narration.inputValue; // [!code --]
narration.input.value; // [!code ++]
ts
narration.isRequiredInput; // [!code --]
narration.input.isRequired; // [!code ++]
ts
narration.inputType; // [!code --]
narration.input.type; // [!code ++]
ts
narration.requestInput({ type: "number" }); // [!code --]
narration.input.request({ type: "number" }); // [!code ++]
ts
narration.removeInputRequest(); // [!code --]
narration.input.removeRequest(); // [!code ++]

narration's choice selection moved to narration.choices (alongside the .list change above):

ts
narration.selectChoice(choices[0], {}); // [!code --]
narration.choices.select(choices[0], {}); // [!code ++]
Show full SKILL.md (557 more words)Show less

v1.7.x → v1.8.0 — Tone.js audio engine

The audio system moved from @pixi/sound to Tone.js (performance, stability, flexibility). Two consequences (full API in pixi-vn-sound):

  • A media's volume is no longer a plain linear number — it's now a Tone.js decibel Param:
    ts
    const bgmMedia = sound.find("bgm_cheerful");
    if (bgmMedia) bgmMedia.volume = 90; // [!code --]
    if (bgmMedia) bgmMedia.volume.value = 90; // [!code ++]
  • Editing an already-loaded audio asset directly (sound.edit(alias, options)) is no longer possible — there is no replacement call; re-load/re-play with new options instead.

v1.6.x → v1.7.0 — template integration cleanup

  • HTML layers (canvas.addHtmlLayer) now default to userSelect: "none" (prevents accidental text selection during UI interaction). Opt back in per layer if needed:

    ts
    const htmlLayer = canvas.addHtmlLayer("ui", root, { userSelect: "auto" }); // [!code ++]
  • Navigation is now centralized: use Game.onNavigate once instead of passing a navigate function to every call site that needs one (see pixi-vn-getting-started):

    ts
    Game.onNavigate((path) => navigateTo(path)); // [!code ++]
    
    Game.restoreGameState(data, navigateTo); // [!code --]
    Game.restoreGameState(data); // [!code ++]
  • Custom UI storage reactivity: storage.setStorageHandler({ onSetVariable, onRemoveVariable, onClearOldTempVariable }) lets a UI state store mirror game-storage changes automatically (see pixi-vn-storage) — new capability, not a breaking change, but worth knowing this version added it.

v1.5.x → v1.6.0 — sound module rewrite, Game.start, storage key convention, addOnError

The sound API was completely redesigned around the sound/channels/media/assets split (see pixi-vn-sound for the current shape):

ts
sound.add("bird", "resources/bird.mp3"); // [!code --]
sound.play("bird", { loop: true }); // [!code ++] (sound.play replaces add()+play())

let s = sound.add("bird", { url: "resources/bird.mp3", loop: true }); // [!code --]
s.play(); // [!code --]
s.pause(); // [!code --]
sound.play("bird", { loop: true }); // [!code ++]
sound.pause("bird"); // [!code ++]

Other changes this version:

  • Game.start(label, props) was added as the recommended entry point (see pixi-vn-getting-started) instead of the previous Game.clear() + narration.call(...) pair:
    ts
    Game.clear(); // [!code --]
    narration.call("start", gameProps); // [!code --]
    Game.start("start", gameProps); // [!code ++]
  • Storage keys adopted a :-separated namespacing convention (e.g. character:alice:friendship) — doesn't break existing saves or the API, just a recommended naming style (see pixi-vn-storage).
  • Error handling moved to Game.addOnError (supports multiple stacked handlers) instead of the singular, now-deprecated Game.onError, and dropped the type argument (see pixi-vn-getting-started):
    ts
    Game.onError((type, error, { notify, uiTransition }) => { ... }); // [!code --]
    Game.addOnError((error, { toast, uiTransition }) => { ... }); // [!code ++]

v1.4.x → v1.5.0 — pixi.js external, canvas resize CSS

  • pixi.js is now marked external for non-CDN builds (Vite, official templates) — needed because pixi.js doesn't support multiple bundled instances; only relevant if something in the build config assumed it was bundled.
  • The canvas resizing logic changed; if upgrading an existing (pre-v1.5.4) template, update the base CSS to match the current one (see pixi-vn-getting-started's exact index.html/styles.css).

v1.3.x → v1.4.0 — stepHistory.back() takes props, not a navigate function

To support synchronous multi-step back/continue requests, stepHistory.back()'s argument changed from a path-navigation callback to the same StepLabelProps-shaped object passed to every step — the actual navigate function now lives on Game.init() instead (see pixi-vn-history / pixi-vn-getting-started):

ts
stepHistory.back((_path) => {
  /* navigate in the url path */
}); // [!code --]
const gameProps = {};
stepHistory.back(gameProps); // [!code ++]
ts
Game.init(body, {
  height: 1080,
  width: 1920,
  backgroundColor: "#303030",
  navigate: (_path) => {
    /* navigate in the url path */
  }, // [!code ++]
}).then(() => {
  /* ... */
});

Also removed in this release (all long-deprecated): stepHistory.goBack, narration.goNext, PIXI (the re-exported namespace), canvas.canvasWidth/canvas.canvasHeight, canvas.onEndOfTicker, the FadeAlphaTicker/MoveTicker/RotateTicker/ZoomTicker preset classes, narration.canContinue (now stepHistory-side), narration.callLabel/jumpLabel (now call/ jump), narration.choiceMenuOptions, storage.startingStorage/setVariable/getVariable/ removeVariable (now storage.default/set/get/remove).

v1.2.x → v1.3.0 — canvas.animate replaces ticker presets

Canvas animation was rebuilt around canvas.animate (PixiJS tickers + the motion library, see pixi-vn-canvas), deprecating the old ticker-preset classes (FadeAlphaTicker, MoveTicker, RotateTicker, ZoomTicker) in favor of transition helpers (showWithDissolve, moveIn, ...) and canvas.animate directly.

v0.10.x → v1.0 — the modular rewrite

The first stable release split the engine into independent modules (canvas/characters/history/ narration/sound/storage), introduced the Game namespace as the main entry point, and pulled step history out into its own stepHistory module (previously part of narration). Renames, all still relevant if migrating a pre-1.0 project:

ts
clearAllGameDatas(); // [!code --]
Game.clear(); // [!code ++]

canvas.initialize(body, options).then(...); // [!code --]
Game.init(body, options).then(...); // [!code ++]

getSaveData(); // [!code --]
Game.exportGameState(); // [!code ++]

getSaveJson(); // [!code --]
JSON.stringify(Game.exportGameState()); // [!code ++]

loadSaveData(data, navigate); // [!code --]
Game.restoreGameState(data, navigate); // [!code ++]

jsonToSaveData(json); // [!code --]
JSON.parse(json); // [!code ++]

narration.canGoBack; // [!code --]
stepHistory.canGoBack; // [!code ++]

narration.back(); // [!code --]
stepHistory.back(); // [!code ++]

narration.narrativeHistory; // [!code --]
stepHistory.narrativeHistory; // [!code ++]

See pixi-vn-getting-started for the current Game API, pixi-vn-history for stepHistory, and pixi-vn-saves for the current exportGameState/restoreGameState save/load flow.

  • pixi-vn-getting-started — current Game API, project setup.
  • pixi-vn-saves — current save/load flow (Game.exportGameState/restoreGameState).
  • pixi-vn-history — current stepHistory API.
  • pixi-vn-sound — current sound/channel/media API.
  • pixi-vn-canvas — current transition/animation API.
  • pixi-vn-storage — current storage API and key-naming convention.

© DRincs-Productions, LGPL-2.1. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/migration of DRincs-Productions/pixi-vn.

Open the folder on GitHubat commit 01c19cb

Compare with similar skills

Pixi Vn Migration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Pixi Vn Migration compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pixi Vn Migration this skillDRincs-Productions/pixi-vn149—~5.3kAutomated safety check: PassLGPL-2.1
Defuddlekepano/obsidian-skills49k11 repos~208Automated safety check: PassMIT
Vercel Deploybytedance/deer-flow84k10 repos~797Automated safety check: PassMIT
Knap Markdown Templateskepano/obsidian-skills49k2 repos~986Automated safety check: PassMIT
MCP Server BuildershareAI-lab/learn-claude-code78k4 repos~1.2kAutomated safety check: PassMIT
Nx Run Tasksnomcopter/react-mosaic4.8k8 repos~613Automated safety check: PassCustom licence

Similar skills

  • Defuddle

    kepano/obsidian-skills

    Uses the Defuddle CLI to pull clean, readable Markdown, JSON or metadata from web pages, stripping navigation, ads and clutter to save tokens.

    49k GitHub starsUsed in 11 repos~208 tokens
    Knowledge ManagementAuto-check passed
  • Vercel Deploy

    bytedance/deer-flow

    Deploys a project to Vercel with one script and no login, then returns a live preview URL and a claim link for moving the deployment into your own Vercel account.

    84k GitHub starsUsed in 10 repos~797 tokens
    DevOps & CloudAuto-check passed
  • Knap Markdown Templates

    kepano/obsidian-skills

    Renders Markdown notes from Knap templates and JSON data on the command line, including notes built from Defuddle web page output.

    49k GitHub starsUsed in 2 repos~986 tokens
    Documents & OfficeAuto-check passed
  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 4 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • Nx Run Tasks

    nomcopter/react-mosaic

    Helps with running tasks in an Nx workspace. An agent skill from nomcopter/react-mosaic.

    4.8k GitHub starsUsed in 8 repos~613 tokens
    DevelopmentAuto-check passed
  • Validates OpenHarness features by running real multi-turn agent loops with live LLM calls against an unfamiliar codebase, checking actual tool execution.

    16k GitHub starsUsed in 1 repo~2.1k tokens
    Testing & QAAuto-check: notes

More from DRincs-Productions/pixi-vn

All 13 skills in this repo
  • Pixi Vn Assets

    DRincs-Productions/pixi-vn

    A skill your agent uses when adding, organizing, registering, or loading non-code files (images, audio, video) in a Pixi'VN project — local assets processed by PixiJS AssetPack vs.

    149 GitHub stars~2.9k tokensUpdated 10 days ago
    Auto-check passed
  • Pixi Vn Characters

    DRincs-Productions/pixi-vn

    A skill your agent uses when defining visual novel characters for a @drincs/pixi-vn game — creating a character with a name, color, icon and other props, registering it so it can be looked up by id…

    149 GitHub stars~3.1k tokensUpdated 10 days ago
    Auto-check passed
  • Pixi Vn History

    DRincs-Productions/pixi-vn

    A skill your agent uses when implementing "go back" / "rewind" / step-navigation features in a Pixi'VN game, or when you need to read the player-facing dialogue/choice history (e.g.

    149 GitHub stars~2.6k tokensUpdated 10 days ago
    Auto-check passed
  • Pixi Vn Minigames

    DRincs-Productions/pixi-vn

    A skill your agent uses when adding a minigame (snake, quiz, puzzle, timing/reaction game, ...) to a Pixi'VN visual novel — the useMinigame lifecycle hook pattern, using PixiJS directly on its own…

    149 GitHub stars~2.9k tokensUpdated 10 days ago
    Auto-check passed
  • Pixi Vn Narration

    DRincs-Productions/pixi-vn

    A skill your agent uses when writing or editing Pixi'VN story content — defining labels (scenes) with newLabel, writing dialogue steps, adding player choices with…

    149 GitHub stars~4.9k tokensUpdated 10 days ago
    Auto-check passed
  • Pixi Vn Saves

    DRincs-Productions/pixi-vn

    A skill your agent uses when implementing save/load in a Pixi'VN game — Game.exportGameState()/restoreGameState()/jsonToGameState(), what the exported GameState contains, and how to persist it (save…

    149 GitHub stars~1.5k tokensUpdated 10 days ago
    Auto-check passed

Works with

Questions about Pixi Vn Migration

What does Pixi Vn Migration do?

A skill your agent uses when upgrading an existing @drincs/pixi-vn project to a newer version, or when a runtime/type error matches a known breaking change. Pixi Vn Migration is an agent skill from DRincs-Productions/pixi-vn. Use when upgrading an existing @drincs/pixi-vn project to a newer version, or when a runtime/type error matches a known breaking change.

When should I use Pixi Vn Migration?

Pixi Vn Migration fits situations like: upgrading an existing @drincs/pixi-vn project to a newer version; A runtime/type error matches a known breaking change.

How do I install Pixi Vn Migration in Claude Code?

Run `npx skills add DRincs-Productions/pixi-vn --skill pixi-vn-migration -a claude-code`. Or copy the skill folder (skills/migration in DRincs-Productions/pixi-vn) into .claude/skills/pixi-vn-migration in your project. Claude Code loads it when a task matches its description.

How do I install Pixi Vn Migration in Codex?

Run `npx skills add DRincs-Productions/pixi-vn --skill pixi-vn-migration -a codex`. Or copy the skill folder (skills/migration in DRincs-Productions/pixi-vn) into .agents/skills/pixi-vn-migration in your project. Codex loads it when a task matches its description.

Can I use Pixi Vn Migration in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add DRincs-Productions/pixi-vn --skill pixi-vn-migration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pixi-vn-migration, .gemini/skills/pixi-vn-migration, .github/skills/pixi-vn-migration and .opencode/skills/pixi-vn-migration in your project.

What does Pixi Vn Migration need to run?

SKILL.md names no scripts, command-line tools or credentials: Pixi Vn Migration is instructions for the agent only.

Does Pixi Vn Migration access the network?

SKILL.md names 1 domain. As links in the text: pixi-vn.com. This is read from the text; nothing was executed.

Is Pixi Vn Migration safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Pixi Vn Migration use?

Pixi Vn Migration is published under the LGPL-2.1 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pixi Vn Migration use?

About 5.3k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Pixi Vn Migration?

Skills that share tags, products or a category with Pixi Vn Migration: Defuddle (kepano/obsidian-skills, 49k stars), Vercel Deploy (bytedance/deer-flow, 84k stars), Knap Markdown Templates (kepano/obsidian-skills, 49k stars) and MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pixi Vn Migration?

DRincs-Productions (a GitHub organization) maintains it in DRincs-Productions/pixi-vn, which has 149 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 1, 2026.

Source: DRincs-Productions/pixi-vn on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.