setup-wsl-dev-environment
About
This skill automates the setup of a comprehensive WSL2 development environment on Windows. It installs and configures essential tools like Git, SSH, Node.js, Python, and shell customization while managing cross-platform paths. Use it when provisioning a new Windows machine, setting up WSL2 for the first time, or adding development tools to an existing WSL installation.
Quick Install
Claude Code
Recommendednpx 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-environmentCopy and paste this command in Claude Code to install this skill
Documentation
name: setup-wsl-dev-environment description: > Configura un entorno de desarrollo WSL2 en Windows, incluyendo configuración de shell, herramientas esenciales, Git, claves SSH, Node.js, Python y gestión de rutas multiplataforma. Usar al configurar una nueva máquina Windows para desarrollo, al configurar WSL2 por primera vez, al añadir herramientas de desarrollo a una instalación WSL existente, o al establecer flujos de trabajo multiplataforma que combinen WSL y herramientas de Windows. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: general complexity: intermediate language: multi tags: wsl, windows, linux, development, setup locale: es source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16
Configurar el Entorno de Desarrollo WSL
Configura un entorno de desarrollo WSL2 completo para trabajo multiplataforma.
Cuándo Usar
- Al configurar una nueva máquina Windows para desarrollo
- Al configurar WSL2 por primera vez
- Al añadir herramientas de desarrollo a una instalación WSL existente
- Al establecer flujos de trabajo multiplataforma (WSL + herramientas de Windows)
Entradas
- Requerido: Windows 10/11 con soporte para WSL2
- Opcional: Distribución de Linux preferida (por defecto: Ubuntu)
- Opcional: Lenguajes a configurar (Node.js, Python, R)
- Opcional: Herramientas adicionales (Docker, tmux, fzf)
Procedimiento
Paso 1: Instalar WSL2
En PowerShell (Administrador):
wsl --install
wsl --set-default-version 2
Reiniciar si se solicita. Ubuntu se instala por defecto.
Esperado: Tras el reinicio, wsl --list --verbose muestra la distribución ejecutándose bajo la versión 2 de WSL. El comando wsl abre una shell de Linux.
En caso de fallo: Si la instalación de WSL2 falla, habilita manualmente las características de Windows "Virtual Machine Platform" y "Windows Subsystem for Linux" mediante optionalfeatures.exe. En versiones antiguas de Windows 10, puede ser necesaria una actualización del kernel de Microsoft.
Paso 2: Configurar los Límites de Recursos de WSL
Crear ~/.wslconfig en el directorio home de Windows:
[wsl2]
memory=8GB
processors=4
localhostForwarding=true
Esperado: El archivo .wslconfig existe en el directorio home del usuario de Windows (p.ej., C:\Users\Nombre\.wslconfig). Tras ejecutar wsl --shutdown y reiniciar WSL, los límites de recursos se aplican.
En caso de fallo: Si la configuración no tiene efecto, verifica que el archivo está en la ubicación correcta (home de Windows, no home de WSL). Ejecuta wsl --shutdown y vuelve a abrir WSL para que los cambios surtan efecto.
Paso 3: Actualizar e Instalar Esenciales
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
Crear alias útiles:
echo 'alias fd="fdfind"' >> ~/.bashrc
Esperado: Todos los paquetes se instalan sin errores. Comandos como git --version, jq --version, rg --version y tree se ejecutan correctamente.
En caso de fallo: Si apt install falla, ejecuta primero sudo apt update para actualizar las listas de paquetes. Para paquetes no encontrados, verifica que la versión de Ubuntu los soporte o instálalos desde fuentes alternativas (p.ej., snap, cargo, o descarga manual).
Paso 4: Configurar 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
Esperado: git config --list muestra el nombre de usuario, correo, rama por defecto (main), autocrlf (input) y configuración del editor correctos.
En caso de fallo: Si los ajustes no se aplican, verifica que usaste --global (no --local, que solo aplica al repositorio actual). Comprueba que ~/.gitconfig contiene las entradas esperadas.
Paso 5: Configurar Claves SSH
ssh-keygen -t ed25519 -C "[email protected]"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
# Añadir a GitHub: Settings > SSH and GPG keys
Prueba: ssh -T [email protected]
Esperado: ssh -T [email protected] devuelve "Hi username! You've successfully authenticated." El par de claves SSH existe en ~/.ssh/id_ed25519 y ~/.ssh/id_ed25519.pub.
En caso de fallo: Si la autenticación falla, verifica que la clave pública fue añadida a GitHub (Settings > SSH and GPG keys). Comprueba que ssh-agent está en ejecución y la clave está cargada con ssh-add -l. Si el agente no está en ejecución, añade eval "$(ssh-agent -s)" a ~/.bashrc.
Paso 6: Instalar Node.js (vía nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
Esperado: node --version y npm --version devuelven las versiones LTS actuales. nvm ls muestra la versión instalada marcada como predeterminada.
En caso de fallo: Si nvm no se encuentra tras la instalación, ejecuta source ~/.bashrc o abre una nueva terminal. Si el script de instalación falla, descárgalo y ejecútalo manualmente tras revisar su contenido.
Paso 7: Instalar Python (vía pyenv)
# Instalar dependencias de compilación
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
# Añadir a ~/.bashrc
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv install 3.12
pyenv global 3.12
Esperado: python --version devuelve Python 3.12.x. pyenv versions muestra la versión instalada configurada como global.
En caso de fallo: Si pyenv install falla con errores de compilación, asegúrate de que todas las dependencias del comando apt install fueron instaladas. Las librerías faltantes (especialmente libssl-dev o zlib1g-dev) son la causa más común de errores en la compilación de Python.
Paso 8: Configurar el Shell
Añadir a ~/.bashrc:
# Historial
export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTCONTROL=ignoredups:erasedups
shopt -s histappend
# Alias de navegación
alias ll='ls -alF'
alias la='ls -A'
alias ..='cd ..'
alias ...='cd ../..'
# Rutas de desarrollo
export DEV_HOME="/mnt/d/dev/p"
alias dev='cd $DEV_HOME'
# Funciones
mkcd() { mkdir -p "$1" && cd "$1"; }
# Adiciones al PATH
export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Esperado: Tras ejecutar source ~/.bashrc, todos los alias (ll, la, .., dev) funcionan, la función mkcd crea y entra en directorios, y $DEV_HOME apunta al directorio de desarrollo.
En caso de fallo: Si los alias no están disponibles, verifica que las adiciones fueron añadidas a ~/.bashrc (no a ~/.bash_profile o ~/.profile). Ejecuta source ~/.bashrc para recargar sin abrir una nueva terminal.
Paso 9: Configurar Claude Code CLI
# Añadir Claude CLI al PATH (tras la instalación)
echo 'export PATH="$HOME/.claude/local/node_modules/.bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# Verificar
which claude
Esperado: which claude devuelve la ruta al binario de Claude Code CLI (p.ej., ~/.claude/local/node_modules/.bin/claude). Ejecutar claude --version imprime la versión instalada.
En caso de fallo: Si claude no se encuentra, verifica que la exportación del PATH fue añadida a ~/.bashrc y recargada. Comprueba que Claude Code está realmente instalado en ~/.claude/local/. Si no está instalado, sigue primero las instrucciones de instalación de Claude Code.
Paso 10: Referencia de Rutas Multiplataforma
| Windows | WSL |
|---|---|
C:\Users\Name | /mnt/c/Users/Name |
D:\dev\projects | /mnt/d/dev/projects |
%APPDATA% | /mnt/c/Users/Name/AppData/Roaming |
Abrir el Explorador de Windows desde WSL: explorer.exe .
Esperado: La tabla de conversión de rutas se entiende y se prueba: el acceso a rutas de Windows desde WSL funciona (p.ej., ls /mnt/c/Users/), y explorer.exe . abre el Explorador de Windows en el directorio WSL actual.
En caso de fallo: Si /mnt/c/ no es accesible, verifica que el automontaje de WSL está configurado. Comprueba /etc/wsl.conf para los ajustes [automount]. Ejecuta wsl --shutdown y reinicia si los puntos de montaje están obsoletos.
Validación
- WSL2 ejecutándose con la distribución correcta
- Git configurado con la identidad correcta
- Clave SSH añadida a GitHub y conexión verificada
- Node.js instalado y funcionando
- Python instalado y funcionando
- Alias y funciones del shell funcionan
- Claude Code CLI accesible
Errores Comunes
- Acceso lento a archivos en
/mnt/: Almacena los proyectos de acceso frecuente en el sistema de archivos de WSL (~/) para mejor rendimiento. Usa/mnt/para proyectos compartidos con herramientas de Windows. - Finales de línea:
core.autocrlf=inputpreviene problemas con CRLF. Configura los editores para usar LF. - Problemas de permisos: Los archivos en
/mnt/pueden mostrar permisos incorrectos. Añadir a/etc/wsl.conf:[automount]\noptions = "metadata,umask=22,fmask=11" - Windows Defender: Excluye los directorios de WSL del análisis en tiempo real para mejor rendimiento.
Habilidades Relacionadas
configure-git-repository- configuración detallada de repositorios Gitconfigure-mcp-server- la configuración de MCP requiere el entorno WSLwrite-claude-md- configurar el asistente de IA para proyectos
GitHub Repository
Related Skills
executing-plans
DesignUse the executing-plans skill when you have a complete implementation plan to execute in controlled batches with review checkpoints. It loads and critically reviews the plan, then executes tasks in small batches (default 3 tasks) while reporting progress between each batch for architect review. This ensures systematic implementation with built-in quality control checkpoints.
requesting-code-review
DesignThis skill dispatches a code-reviewer subagent to analyze code changes against requirements before proceeding. It should be used after completing tasks, implementing major features, or before merging to main. The review helps catch issues early by comparing the current implementation with the original plan.
connect-mcp-server
DesignThis skill provides a comprehensive guide for developers to connect MCP servers to Claude Code using HTTP, stdio, or SSE transports. It covers installation, configuration, authentication, and security for integrating external services like GitHub, Notion, and custom APIs. Use it when setting up MCP integrations, configuring external tools, or working with Claude's Model Context Protocol.
web-cli-teleport
DesignThis skill helps developers choose between Claude Code Web and CLI interfaces based on task analysis, then enables seamless session teleportation between these environments. It optimizes workflow by managing session state and context when switching between web, CLI, or mobile. Use it for complex projects requiring different tools at various stages.
