sandbox-npm-install — GitHub Copilot skill: npm in Docker
This skill installs npm dependencies on Docker's local ext4 filesystem and symlinks node_modules back into the workspace. Use it with virtiofs mounts.
npx skills add github/awesome-copilot --skill sandbox-npm-installWhat sandbox-npm-install does
The skill addresses native binary failures in workspaces mounted through virtiofs. It is intended for the first dependency install in a sandbox, reinstalling after changes to package.json or package-lock.json, and repairing a missing or corrupted node_modules directory.
Run bash scripts/install.sh from the workspace root. The script copies npm files to a local ext4 directory, runs npm ci or npm install, then symlinks node_modules back into the workspace. It checks esbuild, rollup, lightningcss, and vite when present. The --playwright option also installs Chromium and system dependencies.
You need a Docker sandbox with a virtiofs-mounted workspace, Node.js, npm, and package.json. Vite may require the symlink target's parent directory in server.fs.allow. Install this skill when native binaries fail in the container; a regular workspace without virtiofs does not need this setup.
What it helps with
- install npm dependencies inside a Docker sandbox
- avoid
esbuildandrollupcrashes on virtiofs - restore
node_modulesthrough a symlink - prepare Chromium for Playwright E2E tests
Example prompts for the agent
- Install the project dependencies with `bash scripts/install.sh` instead of running npm in the mounted workspace.
- Run the skill again after changing `package-lock.json`, then check the project with `npm run build`.
- Use `--playwright` when the project needs Chromium for E2E testing.
How to install sandbox-npm-install
1Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill sandbox-npm-install2GitHub CLI
gh skill install github/awesome-copilot sandbox-npm-install3Manually: put the files in place
.github/skills/sandbox-npm-install/SKILL.md1Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill sandbox-npm-install -a claude-code2Manually: put the files in place
~/.claude/skills/sandbox-npm-install/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/sandbox-npm-install/
Manually: put the files in place
.agents/skills/sandbox-npm-install/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/sandbox-npm-install/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
Platform CLI
gemini skills install https://github.com/github/awesome-copilot --path skills/sandbox-npm-installManually: put the files in place
.devin/skills/sandbox-npm-install/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set554
The whole set →Similar
Questions about sandbox-npm-install
How do I install sandbox-npm-install in GitHub Copilot?
Run npx skills add github/awesome-copilot --skill sandbox-npm-install or gh skill install github/awesome-copilot sandbox-npm-install. The skill file is placed at .github/skills/sandbox-npm-install/SKILL.md.
What does sandbox-npm-install do?
It installs npm packages in the container's local ext4 directory and links the resulting node_modules into the workspace. This helps avoid native binary crashes on virtiofs.
What does sandbox-npm-install require?
It requires a Docker sandbox with a virtiofs-mounted workspace, Node.js, npm, and package.json. Add --playwright when Chromium and its system dependencies are needed.
Source text
SKILL.md · MIT
--- name: sandbox-npm-install description: 'Install npm packages in a Docker sandbox environment. Use this skill whenever you need to install, reinstall, or update node_modules inside a container where the workspace is mounted via virtiofs. Native binaries (esbuild, lightningcss, rollup) crash on virtiofs, so packages must be installed on the local ext4 filesystem and symlinked back.' --- # Sandbox npm Install ## When to Use This Skill Use this skill whenever: - You need to install npm packages for the first time in a new sandbox session - `package.json` or `package-lock.json` has changed and you need to reinstall - You encounter native binary crashes with errors like `SIGILL`, `SIGSEGV`, `mmap`, or `unaligned sysNoHugePageOS` - The `node_modules` directory is missing or corrupted ## Prerequisites - A Docker sandbox environment with a virtiofs-mounted workspace - Node.js and npm available in the container - A `package.json` file in the target workspace ## Background Docker sandbox workspaces are typically mounted via **virtiofs** (file sync between the host and Linux VM). Native Go and Rust binaries (esbuild, lightningcss, rollup, etc.) crash with mmap alignment failures when executed from virtiofs on aarch64. The fix is to install on the container's local ext4 filesystem and symlink back into the workspace. ## Step-by-Step Installation Run the bundled install script from the workspace root: ```bash bash scripts/install.sh ``` ### Common Options | Option | Description | |---|---| | `--workspace <path>` | Path to directory containing `package.json` (auto-detected if omitted) | | `--playwright` | Also install Playwright Chromium browser for E2E testing | ### What the Script Does 1. Copies `package.json`, `package-lock.json`, and `.npmrc` (if present) to a local ext4 directory 2. Runs `npm ci` (or `npm install` if no lockfile) on the local filesystem 3. Symlinks `node_modules` back into the workspace 4. Verifies known native binaries (esbuild, rollup, lightningcss, vite) if present 5. Optionally installs Playwright browsers and system dependencies (uses `sudo` when available) If verification fails, run the script again — crashes can be intermittent during initial setup. ## Post-Install Verification After the script completes, verify your toolchain works. For example: ```bash npm test # Run project tests npm run build # Build the project npm run dev # Start dev server ``` ## Important Notes - The local install directory (e.g., `/home/agent/project-deps`) is **container-local** and is NOT synced back to the host - The `node_modules` symlink appears as a broken link on the host — this is harmless since `node_modules` is typically gitignored - Running `npm ci` or `npm install` on the host naturally replaces the symlink with a real directory - After any `package.json` or `package-lock.json` change, re-run the install script - Do NOT run `npm ci` or `npm install` directly in the mounted workspace — native binaries will crash ## Troubleshooting | Problem | Solution | |---|---| | `SIGILL` or `SIGSEGV` when running dev server | Re-run the install script; ensure you're not running `npm install` directly in the workspace | | `node_modules` not found after install | Check that the symlink exists: `ls -la node_modules` | | Permission errors during install | Ensure the local deps directory is writable by the current user | | Verification fails intermittently | Run the script again — native binary crashes can be non-deterministic on first load | ## Vite Compatibility If your project uses Vite, you may need to allow the symlinked path in `server.fs.allow`. Add the symlink target's parent directory (e.g., `/home/agent/project-deps/`) to your Vite config so that Vite can serve files through the symlink.
© github · MIT · github/awesome-copilot