Goal
Get the machine to a verified baseline for standard Sails Rust work: rustup, Rust toolchains, Wasm targets, cargo-sails, and the latest official gear binary.
Sequence
- Detect whether the builder is on
macOS,Linux, orWindows. - If
rustupis missing, install it with the official bootstrap for that platform. - Install or update the
stableandnightlytoolchains, then addwasm32-unknown-unknownandwasm32v1-none. - Install the Sails Rust CLI with
cargo install sails-cli --locked, which providescargo-sailsand the standard greenfield bootstrap commandcargo sails new <project-name>. - Install the latest official
gearrelease binary fromhttps://get.gear.rs/(see Commands below for platform-specific download). - Verify the toolchain with
rustup show,cargo sails --version, andgear --version. - Route back into
../sails-new-app/SKILL.md,../ship-sails-app/SKILL.md,../sails-gtest/SKILL.md, or../sails-local-smoke/SKILL.mddepending on the builder's next task.
Commands
macOS or Linux
command -v rustup >/dev/null 2>&1 || curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
# After fresh install, restart the shell or source the env so cargo/rustc resolve:
. "${HOME}/.cargo/env"
rustup toolchain install stable
rustup toolchain install nightly
rustup default stable
rustup target add wasm32-unknown-unknown --toolchain stable
rustup target add wasm32-unknown-unknown --toolchain nightly
rustup target add wasm32v1-none --toolchain stable
rustup target add wasm32v1-none --toolchain nightly
cargo install sails-cli --locked
# Install gear binary from official releases (auto-detect architecture)
GEAR_VERSION="v1.10.0"
case "$(uname -s)-$(uname -m)" in
Darwin-arm64) GEAR_ARCH="aarch64-apple-darwin" ;;
Darwin-x86_64) GEAR_ARCH="x86_64-apple-darwin" ;;
Linux-x86_64) GEAR_ARCH="x86_64-unknown-linux-gnu" ;;
Linux-aarch64) GEAR_ARCH="aarch64-unknown-linux-gnu" ;;
*) echo "Unsupported platform: $(uname -s)-$(uname -m)"; exit 1 ;;
esac
mkdir -p "${HOME}/.local/bin"
curl -sSf "https://get.gear.rs/gear-${GEAR_VERSION}-${GEAR_ARCH}.tar.xz" | tar -xJ -C "${HOME}/.local/bin"
export PATH="${HOME}/.local/bin:${PATH}"
rustup show
cargo sails --version
cargo sails --help
gear --version
Windows
if (-not (Get-Command rustup -ErrorAction SilentlyContinue)) {
winget install Rustlang.Rustup
}
rustup toolchain install stable
rustup toolchain install nightly
rustup default stable
rustup target add wasm32-unknown-unknown --toolchain stable
rustup target add wasm32-unknown-unknown --toolchain nightly
rustup target add wasm32v1-none --toolchain stable
rustup target add wasm32v1-none --toolchain nightly
cargo install sails-cli --locked
# Install gear binary from official releases
$GearVersion = "v1.10.0"
$GearDest = "$env:USERPROFILE\AppData\Local\Programs\gear\bin"
New-Item -ItemType Directory -Force -Path $GearDest | Out-Null
Invoke-WebRequest -Uri "https://get.gear.rs/gear-$GearVersion-x86_64-pc-windows-msvc.zip" -OutFile "$env:TEMP\gear.zip"
Expand-Archive -Path "$env:TEMP\gear.zip" -DestinationPath $GearDest -Force
$env:PATH = "$GearDest;$env:PATH"
rustup show
cargo sails --version
cargo sails --help
gear --version
Guardrails
- Keep this skill self-contained. Do not depend on a sibling
gearcheckout or machine-local scripts outside this skill directory. Thegearbinary is downloaded directly fromhttps://get.gear.rs/official releases. Thescripts/install-gear.shandscripts/install-gear.ps1helpers in this skill directory are available as an alternative when a more flexible install is needed (e.g., custom tags or targets). - Prefer the latest official
gearrelease binary over building the node from source unless the user asks for a specific tag or source build. - Treat base package-manager bootstrap as outside scope. If host tools such as
curl,tar,xz, orwingetare missing, install them with the platform package manager, then continue. - Do not assume
Node.js,npm, orsails-js-cliare part of this skill. Install JS tooling separately only when the active workflow actually needs it. - Do not pin an arbitrary nightly date unless the target repository already requires one through a toolchain file or a failing build.