This guide covers Linux-side setup for this repository (native Linux or WSL Ubuntu). It is intentionally operational and concise; machine-specific history is excluded.
For Windows host setup, use docs/windows-dev-environment-setup.md.
For project install/run, use README.md.
| Requirement | Minimum |
|---|---|
| OS | Ubuntu 22.04+ (or compatible Debian-based distro) |
| Kernel | 6.2+ (required for Claude Code sandbox support) |
| RAM | 4 GB+ (8 GB recommended) |
| Node.js | LTS (installed via nvm) |
Check kernel:
uname -rIf using WSL and kernel is too old, update from Windows admin PowerShell:
wsl --update
wsl --shutdownFrom repo root:
bash scripts/setup/install-pipeline-deps.shThis script installs:
- nvm + Node.js
- npm dependencies
- pandoc + typst tooling
- Claude Code CLI
- shellcheck (shell script linter)
- WSL cursor wrapper when applicable
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
nvm install # reads version from .nvmrc (Node 24)
nvm alias default 24The project includes a .nvmrc file pinning the Node.js major version. Running nvm install or nvm use in the repo root picks up this version automatically.
sudo apt-get update
sudo apt-get install -y pandocInstall Typst via package manager, release binary, or cargo:
typst --versionnpm install -g @anthropic-ai/claude-code
claude /loginIf cursor is not available in native Ubuntu terminal, use the wrapper installed by install-pipeline-deps.sh, or create an equivalent script in ~/.local/bin.
From repo root:
bash scripts/setup/install-mcp.shThen:
- restart Cursor
- in Claude Code, run
/mcpand complete OAuth for Vercel/GitHub
Details: docs/mcp-setup.md.
mkdir -p ~/dev
cd ~/dev
git clone https://github.com/praeducer/paulprae-com.git
cd paulprae-com
npm install
cp .env.local.example .env.localThen follow README.md for data inputs and pipeline execution.
uname -r
node --version
npm --version
which node
which claude
claude --version
pandoc --version
typst --version
shellcheck --versionFrom repo root:
npm run lint
npm run format:check
npm testSource nvm explicitly in command context:
source ~/.nvm/nvm.sh && node --versionAvoid hardcoded PATH overrides in shell startup files that prepend Windows paths ahead of nvm paths.
Ensure ~/.local/bin is on PATH and wrapper script exists.
On Ubuntu/Debian, sh is dash (not bash). Husky runs hooks via sh -e, so sourcing nvm.sh (which requires bash) silently fails, leaving npx missing from PATH.
The project's pre-commit hook uses POSIX-safe PATH detection instead of sourcing nvm.sh. If you still see code 127:
-
Run the setup script to create husky's global init file:
bash scripts/setup/install-pipeline-deps.sh
This creates
~/.config/husky/init.shwhich adds nvm-managed Node.js to PATH before any hook runs. -
Verify manually:
sh -e .husky/pre-commit
Update to kernel 6.2+ (WSL: wsl --update) and restart WSL.