toolchain

Validates and maintains pnpm, Node, ESLint, and Vitest configuration contracts in Next.js repositories.

Updated Jan 12, 2026
One-click install
npx skills add https://github.com/brandonarbini/arbini.family --skill toolchain-brandonarbini
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: toolchain
Source: https://github.com/brandonarbini/arbini.family/tree/main/.agents/skills/toolchain
Command: npx skills add https://github.com/brandonarbini/arbini.family --skill toolchain-brandonarbini

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Keeping package.json and pnpm-workspace.yaml consistent across pnpm 11, Node 24, ESLint 9 flat config, and Vitest 4 is error-prone: a missing allowBuilds entry breaks every install with ERR_PNPM_IGNORED_BUILDS, a pinned port in a dev script binds a port nothing publishes, and legacy .eslintrc* files silently mislead. This Skill encodes the authoritative contract and the reasoning behind it so edits to toolchain files stay correct. ## Core Features & Use Cases - Version pinning discipline: Keeps packageManager, engines.node, and .node-version in agreement so Corepack, the devcontainer, and CI resolve the same pnpm and Node. - Install and build-script governance: Explains pnpm 11 allowBuilds decisions (prisma, esbuild, unrs-resolver, @tailwindcss/oxide), confirmModulesPurge: false, and why legacy onlyBuiltDependencies keys are inert. - Script and lint contract: Defines exact dev, dev:web, dev:email, lint, typecheck, format, test, and prepare scripts, flat ESLint config requirements, and .mcp.json path rules. - Use Case: When adding a dependency or a new script to package.json, load this Skill to verify the change against the contract before committing, avoiding CI failures and hung installs. ## Quick Start Ask the assistant to review your package.json and pnpm-workspace.yaml changes against the toolchain contract before committing them.

Frequently Asked Questions about toolchain

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I fix ERR_PNPM_IGNORED_BUILDS in pnpm 11?▼

pnpm 11 exits non-zero when a dependency has a build script with no allowBuilds decision. Add an allowBuilds entry for that package in pnpm-workspace.yaml; legacy keys like onlyBuiltDependencies are inert and must be removed.

How do I add a dependency in a pnpm devcontainer project?▼

Edit package.json, then run pnpm install inside the container with devcontainer exec --workspace-folder . pnpm install, and commit the updated lockfile. Never run the install on the host or hand-edit pnpm-lock.yaml.

Why does my pnpm install hang in CI or a container bootstrap?▼

pnpm stops for an interactive confirmation when purging node_modules unless confirmModulesPurge: false is set in pnpm-workspace.yaml. A missing @react-email/ui dependency can also cause a hidden install prompt that hangs run entries.

Does ESLint 9 still read .eslintrc files?▼

No. ESLint 9 reads only the flat config (eslint.config.js, .mjs, .cjs, or .ts); .eslintrc* files are ignored entirely, so rules added there never run. Delete legacy files and use eslint . as the lint script since next lint was removed in Next 16.

Why should dev scripts not pin a port in a devcontainer?▼

The devcontainer injects PORT, and a number written into a script overrides it, binding a port the compose override never publishes. Keep dev:web as bare next dev and start as bare next start so the injected port is honored.

Can I upgrade Vitest to a different major version?▼

The owned vitest.config.ts harness is written against one major, pinned at ^4.0.8; v4 moved the global-setup context type, so older majors receive owned files that do not compile. Project-specific options belong in vitest.project.ts, which is merged into the owned config.