Download the exact captured file
---
name: pixi-vn-ink-migration
description: Use when upgrading an existing @drincs/pixi-vn-ink project to a newer version, or when a hashtag command that used to work silently stops firing after an upgrade. Covers every breaking change between versions with before/after code.
---
# Pixi'VN ink migration guide
Official docs: [pixi-vn.com/faq/migration](https://pixi-vn.com/faq/migration). That page also covers the
separate `@drincs/pixi-vn` and `nqtr` packages (its `## pixi-vn` and `## nqtr` sections) — this skill
only covers the `## pixi-vn-ink` section, 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-ink` from version X to the
latest", or a developer reports that ink hashtag commands (`# show`, `# play sound`, ...) that used to
work now silently do nothing after a dependency bump. Check the currently installed version first
(`package.json` dependency, or the `version` field returned by the Vite dev-server's
`GET /__pixi-vn-ink/info` endpoint at runtime — see **pixi-vn-ink**), 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.0.x → v1.1.0 — base hashtag commands are no longer automatic
Before this release, importing `@drincs/pixi-vn-ink` registered every built-in
[hashtag command](../hashtag-commands/SKILL.md) (`# show`, `# play sound`, `# load`, `# request input`,
...) as a side effect. As of v1.1.0, **nothing is registered until you call it explicitly**:
```ts title="content/ink/hashtag-commands.ts"
import { addBaseHashtagCommands } from "@drincs/pixi-vn-ink"; // [!code ++]
addBaseHashtagCommands(); // [!code ++]
```
Call it once, near the start of the app, before any ink content is parsed (every official template
already does this). Symptom if this step is missed after upgrading: every built-in `#` command in
existing `.ink` files silently does nothing at runtime, and the Vite dev server logs each one as an
**unknown hashtag command** (see **pixi-vn-ink**'s debugging section) — that log output
is the fastest way to confirm this is the cause.
`addBaseHashtagCommands` also gained optional configuration in this same generation (`bundleIds`/
`assetAliasIds` for strict `# load`/`# lazyload` validation, and `sections` to opt out of a whole
built-in group) — see **pixi-vn-ink-hashtag-commands** and **pixi-vn-ink-assets** for current usage;
passing no options at all preserves the pre-v1.1.0 behavior of registering every built-in command.
## Related skills
- **pixi-vn-ink** — current installation, the Vite plugin, and the dev-server
debugging workflow (logs + `GET /__pixi-vn-ink/*` endpoints) referenced above.
- **pixi-vn-ink-hashtag-commands** — current `addBaseHashtagCommands`/`HashtagCommands` API.
- **pixi-vn-ink-assets** — current `bundleIds`/`assetAliasIds` validation option.