bench-setup

star 603

Set up the nu-validator benchmark environment — initialise the validator submodule, ensure Docker is running, populate the gitignored raw snapshots via yarn bench:update. Also covers Docker / nu-runner troubleshooting. Use when bench commands fail with "no snapshots found", "Docker daemon not reachable", port 28888 conflicts, or healthcheck timeouts; or when refreshing the bench after a long break. Trigger keywords: bench setup, bench Docker, validator submodule, no snapshots found, Docker daemon not reachable, healthcheck times out, port 28888, yarn bench:update first time, bench install, fresh clone bench.

markuplint By markuplint schedule Updated 6/11/2026

name: bench-setup metadata: internal: true description: > Set up the nu-validator benchmark environment — initialise the validator submodule, ensure Docker is running, populate the gitignored raw snapshots via yarn bench:update. Also covers Docker / nu-runner troubleshooting. Use when bench commands fail with "no snapshots found", "Docker daemon not reachable", port 28888 conflicts, or healthcheck timeouts; or when refreshing the bench after a long break. Trigger keywords: bench setup, bench Docker, validator submodule, no snapshots found, Docker daemon not reachable, healthcheck times out, port 28888, yarn bench:update first time, bench install, fresh clone bench.

nu-validator Bench Setup Skill

Get the bench runnable on this machine, or recover when it isn't. Once this skill's checks pass, drop into bench-triage for actual coverage work.

Prerequisites

  • Docker Desktop / Engine (macOS / Linux; WSL2 on Windows). The bench does not install Docker for you.
  • Node 22+ (already required by the monorepo).
  • The validator submodule checked out:
    git submodule update --init tests/external/validator
    

Fresh-clone bootstrap

Raw snapshot trees are gitignored. Populate them once:

git submodule update --init tests/external/validator
yarn bench:update

This pulls the nu-validator Docker image (ghcr.io/validator/validator), runs both tools across all fixtures, and writes the snapshot trees, diffs, and generated spec. Takes ~2 minutes at default concurrency.

Routine refresh after dev sync

git submodule update --remote tests/external/validator
yarn bench:update

Review snapshots/diff/summary.md and snapshots/diff/*.json in the PR. The raw snapshot trees stay local-only.

Markuplint rule change (skip the Docker leg)

yarn bench:update:ml

Only re-runs the markuplint side; reuses existing nu snapshots.

Commands reference

The yarn bench:* scripts are defined in the root package.json; their flags (--target, --filter, --concurrency, etc.) are parsed in the corresponding tests/external/bench/*.ts entry — read those when unsure. The non-derivable bit: nu output is only deterministic at --concurrency 1.

Troubleshooting

Symptom Likely cause and fix
Docker daemon not reachable Start Docker Desktop / the daemon. The bench does not install or start Docker.
docker pull failed docker login ghcr.io if behind authenticated pulls, otherwise check connectivity.
Healthcheck times out nu-validator takes 10–30 s to come up cold. If > 60 s, docker logs ml-nu-validator.
Port 28888 already allocated Stop the conflicting container, or edit DEFAULT_PORT in bench/docker.ts.
yarn bench:verify / yarn bench:compare "no snapshots found" Raw trees are gitignored on a fresh clone. Run yarn bench:update.
One or two snapshot files flip between runs Expected nu parallelism flicker. Rerun with --concurrency 1 when reproducibility matters.
Unexpected diffs after a submodule bump Check meta.json for image-digest / markuplint-version changes.
Install via CLI
npx skills add https://github.com/markuplint/markuplint --skill bench-setup
Repository Details
star Stars 603
call_split Forks 65
navigation Branch main
article Path SKILL.md
More from Creator