Brought to you by Allons-y Studio

Example output

Team Onboarding: Machine Setup

Everything you need installed before your first pull request.

This is a worked example of what @allons-y/skill-install-guide-builder writes. The same content also prints as a PDF with each platform in its own column. Written for an early-career audience.

Nothing here is fetched at page load, and nothing is stored anywhere but your own browser. Version numbers in the steps are pinned at build time, which is what the skill does rather than hardcoding them in its catalog.

Build your copy

Platforms to include

Print includes every platform you tick. The screen shows one at a time.

Showing
Tools

Install order

  1. Xcode Command Line Tools prerequisite
  2. Homebrew prerequisite
  3. VS Code
  4. Git
  5. GitHub CLI
  6. nvm
  7. uv
  8. Node.js
  9. Python
  10. Docker
  11. PostgreSQL

Steps

Xcode Command Line Tools prerequisite

Apple's compiler toolchain. Git ships inside it, and Homebrew requires it.

You did not pick this one. It is here because homebrew needs it first.

macOS

Done when a path ending in CommandLineTools or Xcode.app.
xcode-select -p

Homebrew prerequisite

The package manager most macOS developer tooling assumes exists.

You did not pick this one. It is here because postgres needs it first.

macOS

Done when a version number.
brew --version

Linux

Done when a version number.
brew --version

VS Code

The editor. It goes first because Git's Windows installer asks which editor to use.

macOS

Done when three lines: version, commit hash, architecture.
code --version

Windows

Done when three lines: version, commit hash, architecture.
code --version

Linux

Done when three lines: version, commit hash, architecture.
code --version

Extensions worth adding by name, because search results are full of near-duplicates: Python (Microsoft), ESLint, Prettier.

Git

Version control. Install it after your editor, before anything that clones.

macOS

Done when a version number.
git --version

Windows

Done when a version number.
git --version

Linux

Done when a version number.
git --version

GitHub CLI

GitHub from the terminal: authentication, pull requests, repository operations.

macOS

Done when your GitHub username, and 'Logged in to github.com'.
gh auth status

Windows

Done when your GitHub username, and 'Logged in to github.com'.
gh auth status

Linux

Done when your GitHub username, and 'Logged in to github.com'.
gh auth status

nvm

A Node version manager. Install this instead of installing Node directly, so a project needing a different Node version is a one-line change rather than a reinstall.

macOS

Done when an nvm version, then a Node version.
nvm --version
node --version

Windows

Done when an nvm version, then a Node version.
nvm version
node --version

Linux

Done when an nvm version, then a Node version.
nvm --version
node --version

uv

One tool covering Python interpreters, virtual environments and packages.

macOS

Done when a version number.
uv --version

Windows

Done when a version number.
uv --version

Linux

Done when a version number.
uv --version

Day to day: uv init starts a project, uv venv makes an environment, uv add <pkg> installs into it.

Node.js

The JavaScript runtime.

Handled by nvm

You installed nvm, so Node came with it. There is nothing to install here, and on Windows installing Node separately would actively break nvm. Just confirm the version.

macOS

Done when two version numbers.
node --version
npm --version

Windows

Done when two version numbers.
node --version
npm --version

Linux

Done when two version numbers.
node --version
npm --version

Python

The Python interpreter.

Handled by uv

You installed uv, which manages interpreters itself, so there is nothing to install from python.org. Installing one anyway leaves two Pythons on the machine, which is the top cause of 'it works in the terminal but not in my editor'.

macOS

Done when a version number.
python3 --version

Windows

Done when a version number.
py --version

Linux

Done when a version number.
python3 --version

Which word you type matters. py on Windows, python3 on macOS and Linux. Bare python opens the Microsoft Store on Windows and usually does not exist on macOS.

Docker

Containers. This one is a large download and wants a restart, so it is late on purpose.

macOS

Done when "Hello from Docker!" and a short explanation.
docker run hello-world

Windows

Done when "Hello from Docker!" and a short explanation.
docker run hello-world

Linux

Done when "Hello from Docker!" and a short explanation.
docker run hello-world

PostgreSQL

A client-server relational database. Two checks, not one: a version check only proves the client program exists.

macOS

Done when a version number, then a row of server version detail.
psql --version
psql -d postgres -c "select version();"

Windows

Done when a version number, then a row of server version detail.
psql --version
psql -d postgres -c "select version();"

Linux

Done when a version number, then a row of server version detail.
psql --version
psql -d postgres -c "select version();"

The first check proves the client exists. The second proves the server is running and reachable, which is the thing you actually need.

Check your work

Every check for what you selected, in one place. Run them in a new terminal.

macOS

  • Xcode Command Line Tools
    xcode-select -p
    a path ending in CommandLineTools or Xcode.app
  • Homebrew
    brew --version
    a version number
  • VS Code
    code --version
    three lines: version, commit hash, architecture
  • Git
    git --version
    a version number
  • GitHub CLI
    gh auth status
    your GitHub username, and 'Logged in to github.com'
  • nvm
    nvm --version
    node --version
    an nvm version, then a Node version
  • uv
    uv --version
    a version number
  • Node.js
    node --version
    npm --version
    two version numbers
  • Python
    python3 --version
    a version number
  • Docker
    docker run hello-world
    "Hello from Docker!" and a short explanation
  • PostgreSQL
    psql --version
    psql -d postgres -c "select version();"
    a version number, then a row of server version detail

Windows

  • VS Code
    code --version
    three lines: version, commit hash, architecture
  • Git
    git --version
    a version number
  • GitHub CLI
    gh auth status
    your GitHub username, and 'Logged in to github.com'
  • nvm
    nvm version
    node --version
    an nvm version, then a Node version
  • uv
    uv --version
    a version number
  • Node.js
    node --version
    npm --version
    two version numbers
  • Python
    py --version
    a version number
  • Docker
    docker run hello-world
    "Hello from Docker!" and a short explanation
  • PostgreSQL
    psql --version
    psql -d postgres -c "select version();"
    a version number, then a row of server version detail

Linux

  • Homebrew
    brew --version
    a version number
  • VS Code
    code --version
    three lines: version, commit hash, architecture
  • Git
    git --version
    a version number
  • GitHub CLI
    gh auth status
    your GitHub username, and 'Logged in to github.com'
  • nvm
    nvm --version
    node --version
    an nvm version, then a Node version
  • uv
    uv --version
    a version number
  • Node.js
    node --version
    npm --version
    two version numbers
  • Python
    python3 --version
    a version number
  • Docker
    docker run hello-world
    "Hello from Docker!" and a short explanation
  • PostgreSQL
    psql --version
    psql -d postgres -c "select version();"
    a version number, then a row of server version detail

When it goes wrong

Indexed by what is on your screen, not by topic. Use your browser's find (Ctrl/Cmd+F) and paste the error text.

The install dialog fails partway through

macOS Xcode Command Line Tools

Remove the partial install and start again: sudo rm -rf /Library/Developer/CommandLineTools, then re-run xcode-select --install.

zsh: command not found: brew

macOS Linux Homebrew

The Next steps block was skipped. Re-run the installer to print it again, run those lines, then open a new terminal.

An install takes an hour and prints compiler output

macOS Homebrew

Prebuilt bottles only exist for recent macOS versions. On an older one Homebrew builds from source. It usually still works, but budget the time.

'code' is not recognized

Windows VS Code

Add to PATH was unchecked during install. Re-run the installer; it preserves your other settings.

zsh: command not found: code

macOS VS Code

The shell command was never installed. Cmd+Shift+P, then Shell Command: Install 'code' command in PATH.

Your commits show up on GitHub as someone else, or as no one

macOS Windows Linux Git

user.email does not match a verified email on your GitHub account. Nothing errors when this is wrong, which is why it goes unnoticed. Fix it with git config --global user.email and check github.com/settings/emails.

Filename too long

Windows Git

Run git config --global core.longpaths true. This bites on Node projects in particular.

You clicked past one of the four screens that mattered

Windows Git

Re-run the installer. It is safe, and it preserves the settings you already made.

which nvm finds nothing

macOS Linux nvm

This is expected. nvm is a shell function, not a binary, so which cannot see it. Use command -v nvm instead: it prints nvm when things are working.

nvm: command not found

macOS Linux nvm

You are still in the terminal you ran the installer in. Open a new one.

nvm use succeeds but node --version is unchanged

Windows nvm

An older Node install is still on your PATH. Uninstall it from Add or remove programs, then run nvm use lts again in an administrator terminal.

exit status 1: Access is denied

Windows nvm

nvm use needs an administrator terminal. Right-click your terminal and choose Run as administrator.

Code runs in the terminal but the editor shows import errors

macOS Windows Linux uv

The editor is pointed at a different Python. In VS Code, run Python: Select Interpreter from the command palette and choose the one inside your project's .venv folder.

npm cannot be loaded because running scripts is disabled on this system

Windows Node.js

Run Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned, then Get-ExecutionPolicy -Scope CurrentUser to confirm. On a managed laptop the change is sometimes silently overridden; if so, use Command Prompt instead of PowerShell, where npm works unchanged.

EACCES: permission denied when installing a global package

macOS Linux Node.js

Do not reach for sudo npm install -g. It creates root-owned files in your home directory that break later installs in confusing ways. Use a version manager instead, which puts everything under your own account.

Typing python opens the Microsoft Store

Windows Python

That is a stub Microsoft ships. Use py instead. To remove the stub permanently: Settings → Apps → Advanced app settings → App execution aliases, and turn off python.exe and python3.exe.

It reports Python 2

macOS Linux Python

You reached a system Python. Use python3.

SSL: CERTIFICATE_VERIFY_FAILED

macOS Python

Install Certificates.command was never run. Open the Python folder in Applications and double-click it.

Cannot connect to the Docker daemon

macOS Windows Linux Docker

Docker is installed but not running. On macOS and Windows, launch Docker Desktop and wait for it to finish starting. On Linux, sudo systemctl start docker.

An image runs but is noticeably slow

macOS Docker

On Apple Silicon, x86 images run under emulation. Look for an arm64 tag of the image, or accept the slower run.

database "yourname" does not exist

macOS Windows Linux PostgreSQL

psql with no arguments tries to connect to a database named after your OS user. Nothing is wrong. Use psql -d postgres instead.

could not connect to server: Connection refused

macOS Linux PostgreSQL

The server is not running. macOS: brew services start postgresql@18. Linux: sudo systemctl start postgresql.

Port 5432 is already in use

macOS Windows Linux PostgreSQL

Something else has it, usually an older Postgres install or a Docker container. The error does not say which. docker ps first, then look for an existing service.

How this page was made

The dependency graph driving the install order is scripts/order-tools.js, imported directly at build time, so this demo cannot show an order the skill would not produce. Run it yourself:

node scripts/order-tools.js postgres node docker --os macos

The prose is an authored example, the way real output is: the skill writes it from references/tool-catalog.md, which holds source material and traps rather than finished steps.