Worktrunk CLI Output Rules
max-sixty/worktrunk
CLI output standards for worktrunk: message functions, ANSI color nesting and the shell integration that changes directory after the wt command exits.
A skill your agent uses when building or testing the nub Rust workspace inside a git worktree — cargo build/test/clippy for nub-cli/nub-core/aube in a worktree off origin/main.
$ npx skills add nubjs/nub --skill rust-build -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nubjs/nub rust-build --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/rust-build .claude/skills/rust-build && 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 "rust-build" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/rust-build into .claude/skills/rust-build/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-build", 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/rust-buildType 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 rust-build -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nubjs/nub rust-build --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/rust-build .agents/skills/rust-build && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "rust-build" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/rust-build into .agents/skills/rust-build/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-build", 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 rust-build -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nubjs/nub rust-build --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/rust-build .cursor/skills/rust-build && 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 "rust-build" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/rust-build into .cursor/skills/rust-build/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-build", 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/rust-build--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 rust-build -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nubjs/nub rust-build --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/rust-build .gemini/skills/rust-build && 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 "rust-build" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/rust-build into .gemini/skills/rust-build/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-build", 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 rust-buildInstalls 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 rust-build -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/rust-build .github/skills/rust-build && 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 "rust-build" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/rust-build into .github/skills/rust-build/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-build", 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 rust-build -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 rust-build --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/rust-build .opencode/skills/rust-build && 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 "rust-build" agent skill from https://github.com/nubjs/nub/tree/main/.claude/skills/rust-build into .opencode/skills/rust-build/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rust-build", 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.
rust-buildA skill your agent uses when building or testing the nub Rust workspace inside a git worktree — cargo build/test/clippy for nub-cli/nub-core/aube in a worktree off origin/main.
Rust Build is an agent skill from nubjs/nub. Use when building or testing the nub Rust workspace inside a git worktree — cargo build/test/clippy for nub-cli/nub-core/aube in a worktree off origin/main. Explains how worktrees share ONE cargo target dir for fast incremental builds, the cross-worktree artifact-contamination hazard that sharing creates (the phantom E0063: missing field on correct source), and the wrapper (scripts/rust-build.sh) that shares by default and auto-isolates the moment a worktree diverges a depended-on crate or runtime/. Auto-triggers…
Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Git worktrees. It works with Rust and Git. 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:
cargomakegitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, 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.
Rust Build loads about 4.4k tokens when it runs. Until then it costs about 178 tokens; SKILL.md has 2,251 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). 2,251 words, ~4,376 tokens.
.claude/skills/rust-build/SKILL.md (or your agent's skills folder).Cross-worktree cache reuse wants a shared target dir; correctness wants isolation. scripts/rust-build.sh resolves it — share by default, isolate automatically only when a worktree diverges a crate other crates link.
Drop-in for cargo, from any worktree (or the main tree):
scripts/rust-build.sh build -p nub-cli --profile fast
scripts/rust-build.sh test -p nub-cli --test integration
NUB_ALLOW_INCOMPLETE_RUNTIME=1 scripts/rust-build.sh clippy --all-targets --all-features -- -D warningsThat third line needs a staged runtime/ first, and opts out of the vendored-deps half because a lint ships nothing. The "--all-features needs a staged addon AND the vendored runtime deps" section below has the placeholder recipe and the two failure modes.
It prints which target dir it chose and why, then execs cargo with CARGO_TARGET_DIR set. Two default-on contention controls ride along:
taskpolicy -c utility, so interactive work preempts fleet builds; an uncontended build still gets all cores. NUB_BUILD_FG=1 opts out.CARGO_BUILD_JOBS = ncpu-4 unless the caller already chose (pre-set CARGO_BUILD_JOBS, NUB_BUILD_JOBS, or an explicit -j/--jobs — cargo's flag outranks the env var).These cover builds going THROUGH the wrapper (or make). Direct cargo invocations are clamped by a machine-global control: make qos-global installs scripts/rustc-qos.sh as the cargo rustc-wrapper in ~/.cargo/config.toml, so every rustc on the host compiles at utility QoS, at most TWO builds compile at a time (the rest queue first-come-first-served; make build-status shows the holders and the queue), and the compiling builds share NUB_RUSTC_LIMIT (default 6) rustc tokens (install-dev re-runs it, so it self-heals). NUB_BUILD_FG=1 opts a HUMAN's foreground build out of the clamp and the queue (and, through this wrapper, out of the tokens too) — never set it from an agent; NUB_BUILD_SLOTS=0 in a build's environment disables only the slot layer for that build. Toggling any of these does not invalidate fingerprints. Details: the rust-build-hygiene skill.
All worktrees default to ~/.cache/nub/shared-target. A fresh worktree reuses the crates.io dependency rlibs a sibling already compiled and recompiles only the ~3 workspace crates — ~5s instead of a ~3-min cold build.
Relocation does NOT defeat reuse. Cargo revalidates a relocated target dir in place: cloning a warm dir to a new path rebuilt 0 crates; an empty dir rebuilt all 13. (The "path is baked into fingerprints" claim is true of sccache, which keys on the rustc command line including absolute --out-dir / -L dependency= paths — not of cargo.) So sharing a live path buys convergence; a CoW clone buys a warm start, which is why the wrapper seeds a fresh private dir from the matching bucket instead of cold-starting.
Cargo names a crate's output by package id (name + version), not source content. Two worktrees whose source for the same depended-on crate differs — classically vendor/aube on divergent branches — write the same output slot and clobber each other. A dependent crate then links the stale rlib:
error[E0063]: missing field `lockfile_legacy_basenames` in initializer of `aube_util::Embedder`— a field that exists nowhere in your checkout. Only bites crates that other crates link; a divergent leaf binary (nub-cli) just rebuilds cleanly.
Sharers are grouped by the content of their depended-on crates, hashed into the bucket name (shared-target-<hash>):
runtime/ unmodified → share that content's bucket. Everyone in it agrees by construction. The common case: feature work in nub-cli, integration tests, docs.runtime/ → isolate to a private per-worktree target/ (removed with the worktree), CoW-seeded from the matching bucket so you rebuild only what differs. runtime/ is hashed for a different reason than the crates: a dev binary resolves runtime/*.cjs from the tree that compiled nub-core (baked CARGO_MANIFEST_DIR), so a shared-bucket binary loads whichever sharer compiled last — a worktree with edited runtime files would silently test a sibling's copy.Content, not merge-base: a merge-base proves only that this worktree made no local changes against its own base, so two worktrees whose bases straddle a nub-core/aube commit both pass while disagreeing on content. The key hashes the git index, which only matters on the shared branch (no local changes by definition), so it moves on rebase, never mid-edit.
The hashed set = every workspace/vendored crate except leaf artifacts nothing links — crates/nub-cli (bin), crates/nub-native (cdylib, own workspace), crates/nub-phantom (bin, own workspace) — plus runtime/. So: crates/nub-core, crates/nub-cache-key, crates/nub-phantom-core, crates/nub-phantom-scan, all of vendor/aube, and runtime/. nub-phantom-core/nub-phantom-scan are not leaves — nub-cli depends on both — and the pathspec :(exclude)crates/nub-phantom matches only that directory, not those siblings.
export CARGO_TARGET_DIR overrides the wrapper's resolution — it is how caching is LOST, not gained: you land in a cold dir, or a multi-tenant one you can clobber.
Never put an exported CARGO_TARGET_DIR in a dispatch prompt. A sub-agent cannot know whether the value is the warm bucket, a cold path, or a dir a sibling is mid-build in; the wrapper does, and it prints which it chose and why.
Pin one only when seeding cannot fire — a branch cut before seeding landed, or a filesystem without CoW:
grep -c seed scripts/rust-build.sh # 0 → this branch has no seeding; pinning may payWhen you must pin for a serial multi-phase epic, point the whole chain at ONE dedicated private target so deps compile cold once:
export CARGO_TARGET_DIR=~/.cache/nub/<epic>-targetshared-target — the shared dir is multi-tenant.For a orchestrator run, pinning buys nothing: every lane edits ONE worktree and the orchestrator builds that same worktree.
NUB_SHARED_TARGET relocates the target dir and the path is used exactly as given — not content-keyed, because a caller naming a path is asking for that path (make verify relies on this to reach $(CURDIR)/target). The value must be private to one checkout; two worktrees on one relocated path recreates the phantom-E0063 clobber. To relocate a cache several worktrees share, leave it unset and move ~/.cache/nub itself.git worktree remove <path> --force drops the worktree and its private target/; the shared dir is intentionally left in place.env!("CARGO_MANIFEST_DIR") bakes the compiling worktree's path into the cached build-script binary, which is cached per package id and survives into every sharing worktree. Symptom: failed to read /…/worktrees/<some-other-tree>/… naming a directory absent from your checkout. Fixed at the source; for a stale one, rm -rf <target-dir>/*/build/<crate>-* and rebuild. Note cargo clean -p <crate> from the repo ROOT is a silent no-op for the aube crates — not root workspace members, so it reports Removed 0 files and exits 0.vendor/aube/.cargo/config.toml sets RUST_TEST_THREADS = "1" because some aube-util tests mutate process env, and cargo discovers config from the CWD, not --manifest-path — so cargo test --manifest-path vendor/aube/Cargo.toml … from the root runs them in parallel and produces failures CI never sees. Run it as CI does: (cd vendor/aube && cargo test …).| Gate | Profile | CI line |
|---|---|---|
cargo check --all-targets | fast | 182 |
cargo clippy --all-targets --all-features | fast | 220 |
cargo test | default (dev) | 286, 790 |
fast and dev are different target subdirectories, so clippy artifacts do not serve cargo test.
Do not unify them: moving cargo test onto fast diverges from CI, and dropping fast from clippy drives a second full dependency build under dev (~26 GB of duplicated target/debug + target/fast). fast inherits dev — identical debug-assertions, overflow checks and opt-level, differing only in debuginfo, which no lint reads.
| Command | What it writes | Leaves target/fast/nub? |
|---|---|---|
cargo fmt --check | nothing | no |
cargo clippy --profile fast | .rmeta only — clippy type-checks, does not link | no |
cargo test | test harness binaries under target/debug/ | no |
cargo build -p nub-cli --profile fast | the linked CLI | yes |
So fmt + clippy + test can all be green while target/fast/nub is hours stale or absent — and it fails in the worst direction, because the old behavior usually still works, so the probe reads as a clean pass. Add an explicit build step whenever a gate run is followed by running the thing.
Bind the artifact to the source before trusting a fixture result. An mtime newer than your last edit is necessary and not sufficient — a concurrent build can overwrite the path mid-run. Prove it positively by exercising a behavior only your change produces, and re-hash afterwards (or copy the binary aside and probe the copy).
A cold build, --all-targets clippy or a full cargo test outlives the foreground timeout. Start
it with the harness's background mechanism and let the completion notification wake you. Do not
write a wait loop, and do not sleep on it: the harness already tracks it, so a poller is pure
waste and it can be WRONG in both directions.
Measured cost of getting this wrong: a loop polling pgrep -f "cargo|rustc" reported "still
building" for ten minutes AFTER the build had finished — pgrep -f matches the full command line
INCLUDING the environment, so every process with .cargo/bin in its PATH matched. If you must
ask whether a compiler is running, match the executable name exactly:
ps -Ao comm= | grep -cE '^(rustc|cargo)$' # 0 = idlecargo build -p nub-cli --profile fast --features nub-cli/build-jail-catalog-override then
cargo test -p nub-cli --profile fast <filter> leaves target/fast/nub built without the
feature. test rebuilt the bin under the default feature set and clobbered it. Nothing warns;
the binary just quietly becomes a different one.
So re-arm the binary after ANY bare cargo invocation on the same profile, before running a harness or a fixture against it:
cargo test -p nub-cli --profile fast <filter> # clobbers target/fast/nub
scripts/rust-build.sh build -p nub-cli --profile fast \
--features nub-cli/build-jail-catalog-override # re-arm before probingCost when missed: a build-jail catalog probe reported BROKEN-EVEN-WITH-EVERYTHING for a package
that installs fine, because the featureless binary refused the override. It was diagnosable only
because nub fails LOUD there ("NUB_BUILD_JAIL_CATALOG is set, but this binary was not built with
the build-jail-catalog-override feature… Refusing rather than running the compiled-in catalog
under an override's name"). A feature that degrades silently would have cost far more.
Related and distinct: --features nub-sandbox/build-jail-catalog-override enables it on the
sandbox crate ONLY, so anything gated inside nub-cli compiles out while the sandbox-side banner
still prints — the override looks live and half of it is absent. nub-cli forwards the feature
(crates/nub-cli/Cargo.toml), so the bare name and nub-cli/… are equivalent; the nub-sandbox/…
form is the wrong one.
cargo … | tail gives you the PIPE's status.| head -N additionally closes the pipe and SIGPIPE-kills cargo outright.cargo … > log 2>&1; echo EXIT=$?; tail log redirects correctly and still exits with tail's status, so a harness reports 0 while cargo returned 101.The habit that holds: redirect to a file, capture RC=$? immediately, and end the command with exit $RC so the shell's status IS cargo's. Read the log with Read/grep, never tail in the same command whose status you care about. Confirm the recorded RC= line before believing a gate passed.
--all-features needs a staged addon AND the vendored runtime deps--all-features turns on embed-runtime, whose build.rs demands a complete runtime stage. Two separate pieces are absent in a fresh worktree, and each fails differently:
| Missing | Failure |
|---|---|
runtime/addons/nub-native.node (gitignored) | cannot read entrypoint … for integrity hashing |
runtime/node_modules/ (the five vendored packages) | missing vendored runtime packages: … |
The vendored packages exist so a shipped binary can resolve its transpile helpers, which a lint never does. So for a lint, stage a placeholder addon and grant the opt-out rather than vendoring npm packages into your worktree — what CI's clippy job, make verify and scripts/remote-build.ts all do:
mkdir -p runtime/addons && printf 'placeholder-addon' > runtime/addons/nub-native.node
NUB_ALLOW_INCOMPLETE_RUNTIME=1 scripts/rust-build.sh clippy --all-targets --all-features -- -D warningsThe digest only needs bytes to hash — a real addon is not required to lint. Never set NUB_ALLOW_INCOMPLETE_RUNTIME for a build whose binary you intend to run, install or ship: that is the case the check exists to stop.
-p from the root cannot see themcrates/nub-native (panic-strategy split) and crates/nub-launcher (size-tuned release profile) each have their own [workspace], so cargo build -p nub-launcher from the root fails with package ID specification 'nub-launcher' did not match any packages. Build from inside the crate, or with --manifest-path. CI lints each separately.
nub-native with cd crates/nub-native, NEVER --manifest-pathcrates/nub-native/.cargo/config.toml sets target-dir = "../../target" so the addon lands in the repo-root target/<profile>/ that the Makefile and CI copy from. Cargo discovers config by walking up from the CWD, not from the --manifest-path directory — so cargo build --manifest-path crates/nub-native/Cargo.toml --release silently writes to crates/nub-native/target/, and the follow-on cp target/release/libnub_native.dylib runtime/addons/nub-native.node copies a stale artifact or fails.
cfg(test) firstA non-test build warns unused import: X for an import only mod tests consumes through use super::*. Deleting it turns one warning into N compile errors in the test target. Before removing a flagged import, grep the symbol in the same file: if the hits are past the #[cfg(test)] line, move the import into mod tests.
new-worktree.ts creates the worktree and points you at this wrapper. dev-loop covers the fast-profile incremental loop; this skill owns the target-dir decision. When a build fails with a symbol/field absent from your source, this is almost always the cause — rebuild through rust-build.sh and it isolates you.
© 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/rust-build of nubjs/nub.
Open the folder on GitHubat commit 568e73a
Rust Build 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 |
|---|---|---|---|---|---|---|
| Rust Build this skillnubjs/nub | 4.4k | — | ~4.4k | Automated safety check: Pass | MIT | |
| Worktrunk CLI Output Rulesmax-sixty/worktrunk | 8.9k | — | ~12k | Automated safety check: Pass | Custom licence | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Migrate Core Code to Submodulestinyhumansai/openhuman | 41k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Finishing A Development Branchfarm-fe/farm | 5.6k | 33 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Git Worktree Cleanuplobehub/lobehub | 83k | — | ~2.8k | Automated safety check: Pass | Custom licence |
max-sixty/worktrunk
CLI output standards for worktrunk: message functions, ANSI color nesting and the shell integration that changes directory after the wt command exits.
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
farm-fe/farm
A skill your agent uses when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for…
lobehub/lobehub
Audits stale Git worktrees and branches with a bundled script, classifies each one, and deletes only after you approve the exact candidates.
max-sixty/worktrunk
Adds Worktrunk-specific rules to the tend CI workflows: Codecov polling, Rust test commands, labels and review criteria for pull requests handled in CI.
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.
Categories
A skill your agent uses when building or testing the nub Rust workspace inside a git worktree — cargo build/test/clippy for nub-cli/nub-core/aube in a worktree off origin/main. Rust Build is an agent skill from nubjs/nub. Use when building or testing the nub Rust workspace inside a git worktree — cargo build/test/clippy for nub-cli/nub-core/aube in a worktree off origin/main.
Rust Build fits situations like: testing the nub Rust workspace inside a git worktree — cargo build/test/clippy for nub-cli/nub-core/aube in a worktree off origin/main; A spurious cargo compile error that names a field/symbol absent from your checkout; on worktree build contamination; on setting CARGOTARGETDIR for a worktree.
Run `npx skills add nubjs/nub --skill rust-build -a claude-code`. Or copy the skill folder (.claude/skills/rust-build in nubjs/nub) into .claude/skills/rust-build in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nubjs/nub --skill rust-build -a codex`. Or copy the skill folder (.claude/skills/rust-build in nubjs/nub) into .agents/skills/rust-build 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 rust-build -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rust-build, .gemini/skills/rust-build, .github/skills/rust-build and .opencode/skills/rust-build in your project.
Going by SKILL.md and its folder, Rust Build needs the command-line tools its instructions call (cargo, make and git).
SKILL.md contains no URLs. Its commands use git, 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.
Rust Build is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k 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 Rust Build: Worktrunk CLI Output Rules (max-sixty/worktrunk, 8.9k stars), Finishing a Development Branch (obra/superpowers, 296k stars), Migrate Core Code to Submodules (tinyhumansai/openhuman, 41k stars) and Finishing A Development Branch (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.