The InKCre design system and multi-platform UI workspace. The current web
renderer is published as @inkcre/ui-web.
Designers publish tokens from Figma. Keep tokens/inkcre.tokens.json as the
authoritative source and edit generated files only through the generators.
scripts/build-tokens.ts transforms the token source into:
packages/web/styles/tokens/_ref.scsspackages/web/styles/tokens/_sys.scsspackages/web/styles/tokens/_comp.scsspackages/web/styles/uno/preset-ink.ts
The generator uses Style Dictionary.
The root manifest delegates both tools to pnpm:
- pnpm
11.17.0 - Node.js runtime
22.22.3
The root packageManager selects pnpm. Its devEngines.runtime entry makes
pnpm resolve the exact Node.js runtime into the lockfile and use it for project
scripts. Run project commands through pnpm rather than a separately managed
Node installation.
Install once at the repository root:
pnpm install --frozen-lockfileDo not install from an individual package directory. The root
pnpm-lock.yaml is the only dependency lock.
Dependency lifecycle scripts are denied by default; the small reviewed
allowlist lives in pnpm-workspace.yaml.
pnpm dev # Run the web package development server
pnpm story:dev # Run the interactive component catalog
pnpm test # Run the unit suite once
pnpm type-check # Check root scripts and Vue source
pnpm generate # Rebuild tokens and Agent Skills
pnpm build # Build the publishable package
pnpm story # Build the component catalog
pnpm check # Run the complete local/CI baselineGenerate derived files with pnpm generate. The public component manifest
drives the runtime registry, global component types, package version, Story
coverage, and generated Agent Skills.
The consuming Vite/Vitest/TypeScript pipeline owns source consumption. Keep
this workspace installed and generated, then opt in from a sibling
client-web checkout:
pnpm install --frozen-lockfile
pnpm generate
pnpm --dir ../client-web dev:ui --ui-source ../ui/packages/webReplace ../ui with this checkout's actual location while the local directory
is still named design or is stored elsewhere.
The command validates this package root and maps only its public specifiers for
the current development process. It does not use pnpm link, persist an
absolute path, or modify either manifest or lockfile. Token JSON changes still
require pnpm generate.
Run the consumer source-graph check with
pnpm --dir ../client-web type-check:ui --ui-source ../ui/packages/web.
Normal client development, builds, checks, and CI remain pinned to the
published registry artifact. The consumer's
apps/client-web/docs/development.md
owns the full startup, remotes, cleanup, troubleshooting, and release-fidelity
contract.
The committed .npmrc routes only the @inkcre scope to GitHub Packages. It
never stores or expands a credential. Local credentials belong to the trusted
user configuration.
For interactive one-time setup, create a classic GitHub personal access token
with read:packages, then let npm write it to your user-level configuration:
npm login --scope=@inkcre --auth-type=legacy --registry=https://npm.pkg.github.comUse your GitHub username, the token as the password, and your public email when
prompted. Alternatively, a credential manager may inject NODE_AUTH_TOKEN
into the current process if your user-level ~/.npmrc contains:
//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}Do not add that credential line to the repository .npmrc. Verify access with
the package manager itself:
pnpm view @inkcre/ui-web version
pnpm install --frozen-lockfileTreat 401 or 403 as an expired token, missing read:packages, or missing
package access. A 404 can also mean that the package name or repository
access is wrong. Re-run the native login flow after correcting the underlying
GitHub permission; this repository intentionally has no separate auth doctor.