Testing Changes
pnpm/pnpm
Run the tests that cover a change in the pnpm repository, in the Rust workspace (pnpm/, pnpr/) or the TypeScript CLI (pnpm11/), and recognize the cases where a scoped run passes without testing…
Comparative install-benchmarking methodology for nub vs npm/pnpm/bun — cold/warm protocol, genuine-cold cache isolation, load-robust measurement, and the anti-juicing honesty bar.
$ npx skills add nubjs/nub --skill benchmarking -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nubjs/nub benchmarking --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/benchmarking .claude/skills/benchmarking && rm -rf skills-srcUse ~/.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/
Install the "benchmarking" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/benchmarking into .claude/skills/benchmarking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmarking", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nubjs/nub/tree/main/.claude/skills/benchmarkingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nubjs/nub --skill benchmarking -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nubjs/nub benchmarking --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/benchmarking .agents/skills/benchmarking && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "benchmarking" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/benchmarking into .agents/skills/benchmarking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmarking", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nubjs/nub --skill benchmarking -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nubjs/nub benchmarking --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/benchmarking .cursor/skills/benchmarking && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "benchmarking" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/benchmarking into .cursor/skills/benchmarking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmarking", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nubjs/nub.git --path .claude/skills/benchmarking--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nubjs/nub --skill benchmarking -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nubjs/nub benchmarking --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/benchmarking .gemini/skills/benchmarking && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "benchmarking" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/benchmarking into .gemini/skills/benchmarking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmarking", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nubjs/nub benchmarkingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nubjs/nub --skill benchmarking -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/benchmarking .github/skills/benchmarking && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "benchmarking" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/benchmarking into .github/skills/benchmarking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmarking", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nubjs/nub --skill benchmarking -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nubjs/nub benchmarking --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nubjs/nub.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/benchmarking .opencode/skills/benchmarking && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "benchmarking" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/benchmarking into .opencode/skills/benchmarking/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "benchmarking", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
benchmarkingComparative install-benchmarking methodology for nub vs npm/pnpm/bun — cold/warm protocol, genuine-cold cache isolation, load-robust measurement, and the anti-juicing honesty bar.
Benchmarking is an agent skill from nubjs/nub. Comparative install-benchmarking methodology for nub vs npm/pnpm/bun — cold/warm protocol, genuine-cold cache isolation, load-robust measurement, and the anti-juicing honesty bar. Invoke (via the Skill tool) whenever you need to benchmark nub install against another package manager, produce or update the homepage/blog install numbers, or verify a perf claim before it ships. Encodes the hard-won gotchas: time setup OUTSIDE the measurement (hyperfine --prepare), the cache lives on DISK so env-var isolation is NOT…
Its SKILL.md is about 1.8k 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 pnpm, npm, Bun and Rust. The repository describes itself as: The fast all-in-one Node.js toolkit. The licence is MIT.
Read from SKILL.md and the folder at commit 568e73a. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
bunpnpmdockerFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm and docker, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Benchmarking loads about 1.8k tokens when it runs. Until then it costs about 215 tokens; SKILL.md has 783 words of instructions outside code blocks.
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.
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.
The full file from nubjs/nub at commit 568e73a, republished under its MIT licence (© nubjs). 783 words, ~1,844 tokens.
.claude/skills/benchmarking/SKILL.md (or your agent's skills folder).Honest, reproducible comparative install benchmarks of nub install against npm / pnpm / bun — the external, wall-clock-and-file-count method. For decomposing where the time goes INSIDE a single nub install, use pm-perf-tracing instead.
Applies to: benchmarking against another PM, refreshing homepage/blog install numbers, verifying a perf claim before it ships. A single non-genuine cell discredits the whole table.
/opt/homebrew/bin/hyperfine is the canonical timer. The load-bearing flag is --prepare, which runs setup BEFORE each timed run, untimed. Never time setup.
# COLD: empty the tool's REAL cache + wipe node_modules before each run (untimed), then time the install.
hyperfine --warmup 0 --runs 5 \
--prepare 'rm -rf node_modules && d="$(bun pm cache)" && rm -rf "${d:?}"' \
'bun install --ignore-scripts'
# WARM-RELINK: cache populated, wipe ONLY node_modules before each run.
hyperfine --warmup 1 --runs 5 \
--prepare 'rm -rf node_modules' \
'nub install --ignore-scripts'
# WARM-SAT: node_modules already present (idempotency path) — no prepare wipe.
hyperfine --warmup 1 --runs 5 'nub install --ignore-scripts'Prefer median + spread (min–max) over the mean — contention skews the mean.
node_modules is deleted before EVERY timed run, cold and warm, always in --prepare. The cold/warm axis differs only in global-cache state:
node_modules wiped (the link-from-store path; the homepage number).node_modules already present; a separate, clearly-labeled scenario, not the headline.A "cold" run is only cold if the tool's real on-disk cache is gone. Setting a cache-dir env var does not guarantee that — bun ignores BUN_INSTALL_CACHE_DIR and $HOME, resolving its cache via the OS passwd home. You must wipe the disk path.
| tool | real cache path | clear command for cold |
|---|---|---|
| nub | its store (NUB_CACHE_DIR + XDG_DATA_HOME/XDG_CACHE_HOME) | rm -rf "$NUB_CACHE_DIR" "$XDG_DATA_HOME" "$XDG_CACHE_HOME" |
| npm | ~/.npm/_cacache (or --cache <dir>) | rm -rf <cache> (the --cache dir you pass) |
| pnpm | pnpm store path (or --store-dir <dir>) | rm -rf <store> (or pnpm store prune) |
| bun | bun pm cache = the real ~/.bun/install/cache | rm -rf "$(bun pm cache)" — env vars do NOT relocate it |
After wiping a cache, an --offline install MUST FAIL. A pass means the cache wasn't cleared (wrong disk path), and any "cold" number from it is a warm-link artifact. Run this for every tool before trusting a cold number:
| tool | expected after cache wipe | genuine? |
|---|---|---|
| nub | rc≠0, "not available in the local cache" | FAIL → genuine |
| pnpm | rc=1, ERR_PNPM_NO_OFFLINE_TARBALL | FAIL → genuine |
| npm | rc≠0, cache-miss error | FAIL → genuine |
| bun | if bun install --offline SUCCEEDS → cache NOT cleared → bun cold is NOT genuine |
A true bun cold needs a clean container, or wiping the user's real cache (destructive — don't, unless in Docker).
--ignore-scripts for ALL tools (or --allow-scripts for all — same on both sides).--frozen-lockfile/--frozen equivalent where the tool offers one).find node_modules -type f -o -type l | wc -l # total materialized entries
ls -d node_modules/**/core-js node_modules/core-js # physical copies of a duplicated dep (dedup story)Reach for this first — exact, reproducible, immune to load.
Short-lived install/measurement processes reap themselves. The hazard is a long-lived process a bench starts and forgets:
trap '…kill…' EXIT INT TERM).docker run --rm, and confirm docker ps is empty when done./tmp/cs-bench-final.sh is a working 4-tool harness (nub / npm / bun / pnpm) — per-tool isolated cache dirs, --ignore-scripts for all, interleaved round-robin order, node_modules wiped before every run, median/spread helpers. Read its structure before hand-rolling a new one; adapt the cache paths and fixture, keep the protocol.
When a comparative number raises "WHY is nub's phase X slow?", switch to pm-perf-tracing: RUST_LOG=debug nub install for the phase:resolve/fetch/link split, and the gated AUBE_DIAG_FILE per-file linker strategy tally.
© nubjs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/benchmarking of nubjs/nub.
Open the folder on GitHubat commit 568e73a
Benchmarking 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Benchmarking this skillnubjs/nub | 4.4k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Testing Changespnpm/pnpm | 37k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Monorepo Tooling and Dependenciespierrecomputer/pierre | 6.2k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Building Farm From Sourcefarm-fe/farm | 5.6k | — | ~857 | Automated safety check: Pass | MIT | |
| Farm Ready Gatefarm-fe/farm | 5.6k | — | ~875 | Automated safety check: Pass | MIT | |
| Interlinked Supply ChainQuentinCody/interlinked-cli | 178 | — | ~2.8k | Automated safety check: Pass | MIT |
pnpm/pnpm
Run the tests that cover a change in the pnpm repository, in the Rust workspace (pnpm/, pnpr/) or the TypeScript CLI (pnpm11/), and recognize the cases where a scoped run passes without testing…
pierrecomputer/pierre
Sets one monorepo's rules for toolchain pins, pnpm package operations, the shared dependency catalog and moon tasks, so the agent adds versions and scripts the right way.
farm-fe/farm
A skill your agent uses when building Farm locally from source, native bindings or Rust plugin artifacts are missing, or an example/E2E needs local core and plugin artifacts.
farm-fe/farm
Run Farm verification with build-first constraints. An agent skill from farm-fe/farm.
QuentinCody/interlinked-cli
Respond to blocked package installs and manage the Interlinked supply-chain allowlist.
Aedelon/claude-code-blueprint
Master uv package manager for Python: project setup, dependency management, virtual environments, lockfiles, CI/CD integration, Docker builds, and migration from pip/poetry.
nubjs/nub
Diagnose and clear CPU, memory, and disk contention on the maintainer's dev host.
nubjs/nub
Reclaim disk on the maintainer's Mac when the volume is full or filling — ENOSPC, "no space left on device", a failed build or agent harness, or a routine sweep of Rust build residue.
nubjs/nub
Build a performance chart for nubjs.com — the SVG bar figures in blog posts, docs pages and social posts (a runtime augmentation against plain node, an install or dispatch comparison, a cross-tool…
nubjs/nub
A skill your agent uses when running a compatibility/parity AUDIT — enumerating where nub diverges from a reference it claims parity with (pnpm CLI grammar, a lockfile format, a Node behavior, a…
nubjs/nub
Run ad-hoc Nub tests and debugging probes on real local Linux guests.
nubjs/nub
Performance-trace Nub package-manager installs using the existing phase timings, structured diagnostics, and sampling-profiler workflow.
Comparative install-benchmarking methodology for nub vs npm/pnpm/bun — cold/warm protocol, genuine-cold cache isolation, load-robust measurement, and the anti-juicing honesty bar. Benchmarking is an agent skill from nubjs/nub. Comparative install-benchmarking methodology for nub vs npm/pnpm/bun — cold/warm protocol, genuine-cold cache isolation, load-robust measurement, and the anti-juicing honesty bar.
Run `npx skills add nubjs/nub --skill benchmarking -a claude-code`. Or copy the skill folder (.claude/skills/benchmarking in nubjs/nub) into .claude/skills/benchmarking in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nubjs/nub --skill benchmarking -a codex`. Or copy the skill folder (.claude/skills/benchmarking in nubjs/nub) into .agents/skills/benchmarking in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nubjs/nub --skill benchmarking -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/benchmarking, .gemini/skills/benchmarking, .github/skills/benchmarking and .opencode/skills/benchmarking in your project.
Going by SKILL.md and its folder, Benchmarking needs the command-line tools its instructions call (bun, pnpm and docker). Our summary lists: Docker.
SKILL.md contains no URLs. Its commands use docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Benchmarking is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Benchmarking: Testing Changes (pnpm/pnpm, 37k stars), Monorepo Tooling and Dependencies (pierrecomputer/pierre, 6.2k stars), Building Farm From Source (farm-fe/farm, 5.6k stars) and Farm Ready Gate (farm-fe/farm, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nubjs (a GitHub organization) maintains it in nubjs/nub, which has 4,370 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on October 7, 2026.
Source: nubjs/nub on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.