setup-wsl-dev-environment
À propos
Cette compétence automatise la configuration d'un environnement de développement WSL2 sous Windows, en paramétrant les réglages du shell, les outils de base, Git, les clés SSH et les environnements d'exécution de langages comme Node.js et Python. Elle est conçue pour initialiser une nouvelle machine Windows/WSL, ajouter des outils à une configuration existante ou établir des workflows multiplateformes. Les développeurs l'utilisent pour mettre en place rapidement un environnement de développement standardisé et productif.
Installation rapide
Claude Code
Recommandénpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/setup-wsl-dev-environmentCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
Set Up WSL Dev Env
WSL2 dev env → cross-platform work.
Use When
- New Windows machine → dev setup
- First WSL2 config
- Add dev tools → existing WSL
- WSL + Windows tool workflows
In
- Required: Windows 10/11 w/ WSL2
- Optional: Linux distro (default: Ubuntu)
- Optional: Langs (Node, Python, R)
- Optional: Extra tools (Docker, tmux, fzf)
Do
Step 1: Install WSL2
PowerShell (Admin):
wsl --install
wsl --set-default-version 2
Reboot if asked. Ubuntu = default.
Got: wsl --list --verbose → distro under WSL v2. wsl → Linux shell.
If err: Install fails → enable "Virtual Machine Platform" + "Windows Subsystem for Linux" via optionalfeatures.exe. Old Win10 → kernel update from MS.
Step 2: WSL Resource Limits
~/.wslconfig in Windows home:
[wsl2]
memory=8GB
processors=4
localhostForwarding=true
Got: .wslconfig in Windows home (e.g. C:\Users\Name\.wslconfig). After wsl --shutdown + restart → limits applied.
If err: No effect → file in wrong dir (Windows home, not WSL home). wsl --shutdown + reopen.
Step 3: Update + Essentials
sudo apt update && sudo apt upgrade -y
sudo apt install -y \
build-essential \
curl \
wget \
git \
git-lfs \
vim \
htop \
tree \
jq \
ripgrep \
fd-find \
unzip \
zip
Aliases:
echo 'alias fd="fdfind"' >> ~/.bashrc
Got: All install. git --version, jq --version, rg --version, tree work.
If err: apt install fails → sudo apt update first. Pkg not found → check Ubuntu ver, alt sources (snap, cargo, manual).
Step 4: Git
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git config --global init.defaultBranch main
git config --global core.autocrlf input
git config --global color.ui auto
git config --global core.editor vim
Got: git config --list → name, email, branch (main), autocrlf (input), editor.
If err: Not applied → used --local not --global. Check ~/.gitconfig.
Step 5: SSH Keys
ssh-keygen -t ed25519 -C "[email protected]"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
# Add to GitHub: Settings > SSH and GPG keys
Test: ssh -T [email protected]
Got: ssh -T [email protected] → "Hi username! You've successfully authenticated." Keys at ~/.ssh/id_ed25519{,.pub}.
If err: Auth fails → pubkey added to GitHub? ssh-agent running? ssh-add -l → key loaded? Add eval "$(ssh-agent -s)" → ~/.bashrc.
Step 6: Node.js (nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
Got: node --version + npm --version → LTS. nvm ls → default marked.
If err: nvm not found → source ~/.bashrc or new term. Script fails → review + run manually.
Step 7: Python (pyenv)
# Install build dependencies
sudo apt install -y make libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev libncursesw5-dev xz-utils \
tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
curl https://pyenv.run | bash
# Add to ~/.bashrc
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv install 3.12
pyenv global 3.12
Got: python --version → 3.12.x. pyenv versions → set global.
If err: Build err → missing deps from apt install. libssl-dev | zlib1g-dev = most common cause.
Step 8: Shell
~/.bashrc:
# History
export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTCONTROL=ignoredups:erasedups
shopt -s histappend
# Navigation aliases
alias ll='ls -alF'
alias la='ls -A'
alias ..='cd ..'
alias ...='cd ../..'
# Development paths
export DEV_HOME="/mnt/d/dev/p"
alias dev='cd $DEV_HOME'
# Functions
mkcd() { mkdir -p "$1" && cd "$1"; }
# PATH additions
export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Got: After source ~/.bashrc → aliases (ll, la, .., dev) work, mkcd creates+enters, $DEV_HOME set.
If err: Aliases missing → check appended to ~/.bashrc (not ~/.bash_profile | ~/.profile). source ~/.bashrc.
Step 9: Claude Code CLI
# Add Claude CLI to PATH (after installation)
echo 'export PATH="$HOME/.claude/local/node_modules/.bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# Verify
which claude
Got: which claude → path (e.g. ~/.claude/local/node_modules/.bin/claude). claude --version → ver.
If err: Not found → PATH export in ~/.bashrc + sourced? Installed at ~/.claude/local/? Else install first.
Step 10: Cross-Platform Paths
| Windows | WSL |
|---|---|
C:\Users\Name | /mnt/c/Users/Name |
D:\dev\projects | /mnt/d/dev/projects |
%APPDATA% | /mnt/c/Users/Name/AppData/Roaming |
Explorer from WSL: explorer.exe .
Got: Path table understood + tested (ls /mnt/c/Users/, explorer.exe . opens current dir).
If err: /mnt/c/ inaccessible → automount config? /etc/wsl.conf [automount]. wsl --shutdown + restart.
Check
- WSL2 running w/ correct distro
- Git config'd w/ identity
- SSH key on GitHub + verified
- Node.js works
- Python works
- Shell aliases + funcs work
- Claude Code CLI accessible
Traps
- Slow
/mnt/access: Hot projects → WSL fs (~/)./mnt/only for Windows-shared. - Line endings:
core.autocrlf=inputprevents CRLF. Editors → LF. - Permissions:
/mnt/shows wrong perms →/etc/wsl.conf[automount]\noptions = "metadata,umask=22,fmask=11". - Windows Defender: Exclude WSL dirs from real-time scan.
→
configure-git-repository— Git repo setupconfigure-mcp-server— MCP needs WSL envwrite-claude-md— configure AI assistant
Dépôt GitHub
Compétences associées
llamaguard
AutreLlamaGuard est le modèle de Meta, doté de 7 à 8 milliards de paramètres, conçu pour modérer les entrées et sorties des LLM selon six catégories de sécurité comme la violence et les discours haineux. Il offre une précision de 94 à 95 % et peut être déployé avec vLLM, Hugging Face ou Amazon SageMaker. Utilisez cette compétence pour intégrer facilement le filtrage de contenu et des garde-fous de sécurité dans vos applications d'IA.
cost-optimization
AutreCette compétence de Claude aide les développeurs à optimiser les coûts du cloud grâce au redimensionnement des ressources, aux stratégies d'étiquetage et à l'analyse des dépenses. Elle fournit un cadre pour réduire les dépenses cloud et mettre en œuvre une gouvernance des coûts sur AWS, Azure et GCP. Utilisez-la lorsque vous devez analyser les coûts d'infrastructure, redimensionner les ressources ou respecter des contraintes budgétaires.
quantizing-models-bitsandbytes
AutreCette compétence quantifie les LLMs en précision 8 bits ou 4 bits à l'aide de bitsandbytes, permettant une réduction de 50 à 75 % de la mémoire utilisée avec une perte de précision minime. Elle est idéale pour exécuter des modèles plus volumineux sur une mémoire GPU limitée ou pour accélérer l'inférence, prenant en charge des formats comme INT8, NF4 et FP4. La compétence s'intègre à HuggingFace Transformers et permet l'entraînement QLoRA ainsi que l'utilisation d'optimiseurs en 8 bits.
dispatching-parallel-agents
AutreCette compétence Claude déploie plusieurs agents pour enquêter et résoudre simultanément 3 problèmes indépendants ou plus. Elle est conçue pour des scénarios impliquant des défaillances non liées qui peuvent être résolues sans état partagé ni dépendances. La capacité fondamentale est la résolution de problèmes en parallèle, en assignant un agent par domaine problématique indépendant afin de maximiser l'efficacité.
