VS Code
Una habilidad portable para configurar y operar IDEs de la familia VS Code (VS Code, VS Code Insiders, Cursor, VSCodium, Trae, Qoder, CodeBuddy) a través de la CLI del producto y archivos de configuración JSON estructurados. Los valores predeterminados utilizan solo ubicaciones estándar; las rutas explícitas se obtienen de variables de entorno y un archivo de configuración, por lo que la habilidad puede ejecutarse en cualquier máquina sin necesidad de editar.
Nota de plataforma: Multiplataforma a través del puente Python
scripts/vscode_skill.py. En Windows, se redirige al controlador de PowerShellvscode-cli.ps1(la implementación original, 11/11 pruebas pasan). En macOS y Linux, implementainfo,ext list,settings path/get/set/smokeypython set-interpreterde forma nativa en Python; todo lo demás se ejecuta a través de la CLI local decode.
Inicio rápido
Multiplataforma (recomendado)
# Muestra el producto detectado, la ruta de la CLI y las ubicaciones clave
python scripts/vscode_skill.py info
# Lista las extensiones instaladas
python scripts/vscode_skill.py ext list
# Muestra la ruta de settings.json de usuario y las configuraciones principales actuales
python scripts/vscode_skill.py settings path
python scripts/vscode_skill.py settings get
# Cambia el tamaño de fuente en la configuración de usuario (escribe solo con --Apply)
python scripts/vscode_skill.py settings set \
--FontSize 16 --FontFamily "JetBrains Mono, Consolas, monospace" --Apply
# Configuraciones de ámbito de proyecto
python scripts/vscode_skill.py settings set \
--Scope project --ProjectPath /ruta/al/proyecto \
--FormatOnSave true --Apply
# Intérprete de Python para un proyecto
python scripts/vscode_skill.py python set-interpreter \
--ProjectPath /ruta/al/proyecto --VenvName .venv
Solo Windows (PowerShell)
Los mismos comandos funcionan directamente a través de vscode-cli.ps1 si prefieres PowerShell:
pwsh -File $PSScriptRoot\scripts\vscode-cli.ps1 info
pwsh -File $PSScriptRoot\scripts\vscode-cli.ps1 ssh open `
--HostName devbox --LinuxPath /home/usuario/proyecto
Valores de --Product:
auto(predeterminado): detecta VS Code, luego VS Code Insiders.vscode: usacode/code.cmd.vscode-insiders: usacode-insiders/code-insiders.cmd.- Cualquier slug de producto configurado como
cursor,vscodium,trae-cn,qoderocodebuddy-cn: usaproducts.<slug>.cliPath,userDataPathyextensionsPathdel archivo de configuración.
Establece el producto predeterminado explícitamente con VSCODE_SKILL_PRODUCT o a través del archivo de configuración (ver Configuración).
Productos compatibles con VS Code
La detección automática integrada es más robusta para VS Code y VS Code Insiders. Cursor, VSCodium, Trae, Qoder y CodeBuddy se manejan a través de la ruta de configuración genérica de producto, a menos que su CLI ya sea detectable a través de un envoltorio específico del entorno.
Esta habilidad solo cubre la superficie de configuración compatible con VS Code para productos derivados:
- Ajustes de usuario y proyecto, incluyendo
.vscode/settings.json. - Proyecto
.vscode/tasks.json,.vscode/launch.jsony.vscode/extensions.json. - Atajos de teclado, fragmentos de código, perfiles, extensiones, plantillas, selección de intérprete de Python y flujos de apertura remota donde la CLI del producto local lo admita.
No uses esta habilidad como soporte para chat de IA propietario, cuentas, configuraciones de modelos, tiendas de agentes, marketplaces específicos de producto, estado SQLite oculto, tokens o archivos internos de ejecución. Para Qoder y CodeBuddy en particular, limítate a la capa de editor/configuración compatible con VS Code, a menos que el usuario proporcione documentación oficial específica del producto y solicite un adaptador separado.
Configuración
Las rutas y preferencias por máquina se resuelven en este orden:
- Variable de entorno (mayor prioridad).
- Archivo de configuración en
$VSCODE_SKILL_CONFIGsi está definido, de lo contrario el predeterminado de la plataforma:- Windows:
%APPDATA%\vscode-skill\config.json - macOS / Linux:
$XDG_CONFIG_HOME/vscode-skill/config.jsono~/.config/vscode-skill/config.json
- Windows:
- Valores predeterminados integrados (menor prioridad).
Variables de entorno
| Variable | Propósito | Predeterminado |
|---|---|---|
VSCODE_SKILL_HOME | Ubicación de instalación de la habilidad | directorio padre del script en ejecución |
VSCODE_SKILL_CONFIG | Sobrescribe la ruta del archivo de configuración | predeterminado de plataforma anterior |
VSCODE_SKILL_TEMP | Sobrescribe el directorio temporal para pruebas | $TEMP/vscode-skill |
VSCODE_SKILL_PRODUCT | Valor predeterminado de --Product | auto |
VSCODE_CODE_CLI | Ruta explícita a la CLI de VS Code | detectado automáticamente |
VSCODE_INSIDERS_CLI | Ruta explícita a la CLI de VS Code Insiders | detectado automáticamente |
VSCODE_EXTENSIONS_DIR | Sobrescribe el directorio de instalación de extensiones para cualquier producto | predeterminado del producto o configuración |
VSCODE_USER_DATA | Sobrescribe el directorio de datos de usuario (raro) | predeterminado de plataforma |
Esquema del archivo de configuración
Copia config.example.json desde la raíz de la habilidad a tu ubicación de configuración y edítalo. Todas las claves son opcionales.
{
"product": "auto",
"tempDir": null,
"products": {
"vscode": {
"cliPath": "C:\Users\tu\scoop\apps\vscode\current\bin\code.cmd"
},
"vscode-insiders": {
"cliPath": "C:\Users\tu\scoop\apps\vscode-insiders\current\bin\code-insiders.cmd"
},
"cursor": {
"cliPath": "C:\Users\tu\AppData\Local\Programs\cursor\resources\app\bin\cursor.cmd",
"userDataPath": "C:\Users\tu\AppData\Roaming\Cursor\User",
"extensionsPath": "C:\Users\tu\.cursor\extensions"
},
"vscodium": {
"cliPath": "C:\Users\tu\scoop\apps\vscodium\current\bin\codium.cmd",
"userDataPath": "C:\Users\tu\AppData\Roaming\VSCodium\User",
"extensionsPath": "C:\Users\tu\.vscode-oss\extensions"
},
"trae-cn": {
"cliPath": "C:\Users\tu\AppData\Local\Programs\Trae CN\bin\trae-cn.cmd",
"userDataPath": "C:\Users\tu\AppData\Roaming\Trae CN\User",
"extensionsPath": "C:\Users\tu\.trae-cn\extensions"
},
"qoder": {
"cliPath": "C:\Users\tu\AppData\Local\Programs\Qoder\bin\qoder.cmd",
"userDataPath": "C:\Users\tu\AppData\Roaming\Qoder\User",
"extensionsPath": "C:\Users\tu\.qoder\extensions"
},
"codebuddy-cn": {
"cliPath": "C:\Users\tu\AppData\Local\Programs\CodeBuddy CN\bin\codebuddy.cmd",
"userDataPath": "C:\Users\tu\AppData\Roaming\CodeBuddy CN\User",
"extensionsPath": "C:\Users\tu\.codebuddycn\extensions"
}
},
"ssh": {
"defaultHost": "localhost",
"defaultUser": "tu"
},
"wsl": {
"defaultDistro": "Ubuntu-24.04"
}
}
Ejecuta pwsh -File scripts/init-config.ps1 para escribir un archivo de configuración inicial en la ubicación predeterminada.
Disciplina de ámbito
Antes de escribir cualquier estado del IDE, clasifícalo en uno de tres ámbitos y confirma con el usuario cuando sea ambiguo:
- Inspección de solo lectura:
info,ext list/locate,settings get/path. Siempre seguro. - Configuración de proyecto:
.vscode\settings.json,tasks.json,launch.json,extensions.json, fragmentos de proyecto. Digno de commit; no incluyas temas personales, fuentes, información de cuenta o rutas absolutas locales de la máquina. - Configuración de usuario / global:
settings.jsonde usuario,keybindings.json, fragmentos de usuario, ajustes de perfil, extensiones instaladas. Siempre indica el producto objetivo, archivo, clave, valor anterior (cuando sea legible), valor nuevo y ruta de reversión antes de aplicar.
Reglas:
settings setrequiere--Applyexplícito; sin él, el comando solo valida las entradas.ext installllama a--install-extensionde la CLI del producto. Si la galería falla, el script no reintenta silenciosamente con Open VSX; se imprime una advertencia clara y el llamador decide.- La configuración de proyecto escrita a través de esta habilidad nunca debe incluir
python.defaultInterpreterPathapuntando a un venv local de la máquina a menos que el proyecto esté destinado a ser reproducible en esa máquina específica.
Referencia de configuraciones
Rutas comunes de configuraciones de usuario:
- VS Code:
%APPDATA%\Code\User\settings.json - VS Code Insiders:
%APPDATA%\Code - Insiders\User\settings.json
Claves comunes (todas configurables a través de settings set):
| Clave | Banderín | Tipo |
|---|---|---|
editor.fontFamily | --FontFamily | cadena |
editor.fontSize | --FontSize | entero |
editor.lineHeight | --LineHeight | número |
workbench.colorTheme | --ColorTheme | cadena |
workbench.iconTheme | --IconTheme | cadena |
workbench.productIconTheme | --ProductIconTheme | cadena |
editor.wordWrap | --WordWrap | cadena |
editor.tabSize | --TabSize | entero |
editor.formatOnSave | --FormatOnSave | booleano |
files.autoSave | --AutoSave | cadena |
editor.minimap.enabled | --Minimap | booleano |
python.defaultInterpreterPath | (establecido a través de python set-interpreter) | cadena |
Para claves arbitrarias, pasa --SettingKey <clave> --SettingValue <valor>. Los valores se convierten: true/false → booleano, entero/flotante → número, {...} / [...] → JSON, de lo contrario cadena.
Los archivos JSON pueden usar el estilo JSON-con-Comentarios de VS Code; el analizador JSON estándar del script solo maneja JSON puro. Los archivos que contengan comentarios deben editarse a través del editor o una herramienta compatible con JSONC.
Comandos
pwsh -File scripts/vscode-cli.ps1 info
pwsh -File scripts/vscode-cli.ps1 ext list
pwsh -File scripts/vscode-cli.ps1 ext locate --Id ms-python.python
pwsh -File scripts/vscode-cli.ps1 ext install --Id ms-python.python
pwsh -File scripts/vscode-cli.ps1 ext install --Path D:\descargas\una-extension.vsix
pwsh -File scripts/vscode-cli.ps1 settings path
pwsh -File scripts/vscode-cli.ps1 settings get
pwsh -File scripts/vscode-cli.ps1 settings set --FontSize 16 --Apply
pwsh -File scripts/vscode-cli.ps1 settings set --Scope project --ProjectPath D:\proyectos\demo --FormatOnSave true --Apply
pwsh -File scripts/vscode-cli.ps1 settings smoke
pwsh -File scripts/vscode-cli.ps1 python make-venvs --ProjectPath D:\proyectos\demo
pwsh -File scripts/vscode-cli.ps1 python set-interpreter --ProjectPath D:\proyectos\demo --VenvName .venv
pwsh -File scripts/vscode-cli.ps1 python verify --ProjectPath D:\proyectos\demo --ExpectedVenvName .venv
pwsh -File scripts/vscode-cli.ps1 ssh smoke --HostName localhost
pwsh -File scripts/vscode-cli.ps1 ssh open --HostName devbox --LinuxPath /home/usuario/proyecto
pwsh -File scripts/vscode-cli.ps1 wsl list
pwsh -File scripts/vscode-cli.ps1 wsl open --Distro Ubuntu-24.04 --LinuxPath /home/usuario/proyecto
Orden de resolución de CLI: env explícito (VSCODE_CODE_CLI / VSCODE_INSIDERS_CLI) → config.products.<product>.cliPath → Get-Command code.cmd (PATH) → Get-Command code (PATH) → %LOCALAPPDATA%\Programs\Microsoft VS Code\bin\code.cmd (predeterminado de Windows). Los productos genéricos fallan claramente cuando products.<product>.cliPath está ausente; nunca se mapean silenciosamente a VS Code.
Plantillas y contenido incluido
La habilidad incluye contenido seleccionado bajo references/:
settings-index.md— 80 configuraciones más usadas con tipo, valor predeterminado, ámbito.settings-precedence.md— Modelo de precedencia de 11 capas + comportamiento de espacio de trabajo multi-raíz.tasks-templates.md+templates/tasks/*.json— 10 plantillas listas detasks.jsonpara Node, TypeScript, Python, Go, Rust, Docker, Make.launch-templates.md+templates/launch/*.json— 9 plantillas listas delaunch.jsonpara los mismos lenguajes más Chrome.extension-packs.md— 8 pilas seleccionadas (frontend-web, backend-python, backend-node, data-science, systems, devops, polyglot-baseline, ai-coding).keybindings-cheatsheet.md— 50 atajos más reasignados.
# Lista las plantillas de tareas disponibles
python scripts/vscode_skill.py tasks list
# Genera .vscode/tasks.json a partir de una plantilla (se niega a sobrescribir sin --Force)
python scripts/vscode_skill.py tasks init --Template python-pytest --ProjectPath /ruta/al/proyecto --Apply
# Misma forma para plantillas de lanzamiento
python scripts/vscode_skill.py launch init --Template python-current-file --ProjectPath /ruta/al/proyecto --Apply
# Pilas de extensiones seleccionadas
python scripts/vscode_skill.py extensions stacks
python scripts/vscode_skill.py extensions recommend --Stack frontend-web
python scripts/vscode_skill.py extensions install --Stack backend-python
python scripts/vscode_skill.py extensions pin --Stack polyglot-baseline --ProjectPath /ruta/al/proyecto
Perfiles, Sincronización de ajustes, Espacios de trabajo multi-raíz
# Inspecciona perfiles (solo lectura)
python scripts/vscode_skill.py profile list
python scripts/vscode_skill.py profile show --Profile <nombre>
# Verifica si el almacenamiento de sincronización de ajustes existe localmente (no lee cargas útiles)
python scripts/vscode_skill.py settings-sync status
# Ayudantes de espacio de trabajo multi-raíz
python scripts/vscode_skill.py workspace info --ProjectPath /ruta/al/proyecto
python scripts/vscode_skill.py workspace folder-settings-get --ProjectPath /ruta --Folder frontend
python scripts/vscode_skill.py workspace folder-settings-set --ProjectPath /ruta --Folder frontend --SettingKey editor.defaultFormatter --SettingValue dbaeumer.vscode-eslint --Apply
La Sincronización de ajustes nunca se habilita o deshabilita programáticamente — la habilidad solo informa si la carpeta de almacenamiento de sincronización existe. Habilítala/deshabilítala a través de la interfaz de Cuentas de VS Code para evitar fugas accidentales de datos.
Desarrollo remoto
ssh openconstruye un URIvscode-remote://ssh-remote+<host><path>y ejecuta la CLI resuelta con--folder-uri.wsl openconstruye un URIvscode-remote://wsl+<distro><path>de manera similar.ssh smokeejecutassh -V,ssh -G <host>yTest-NetConnectionpara confirmar la capa inferior; no garantiza que la extensión Remote-SSH esté instalada o que el servidor de VS Code se haya iniciado.
Para solución de problemas remotos más profundos, consulta Ayuda → Alternar herramientas de desarrollador, el canal de salida de la extensión Remote-SSH, o la entrada workspaceStorage del producto relevante.
Pruebas
El script incluido run_vscode_skill_tests.py ejecuta comprobaciones seguras de solo lectura de forma predeterminada:
python -X utf8 scripts/run_vscode_skill_tests.py --basic
Grupos opcionales (requieren el entorno correspondiente):
python -X utf8 scripts/run_vscode_skill_tests.py --include-python-venv
python -X utf8 scripts/run_vscode_skill_tests.py --include-ssh
python -X utf8 scripts/run_vscode_skill_tests.py --include-wsl
python -X utf8 scripts/run_vscode_skill_tests.py --include-ext-install
python -X utf8 scripts/run_vscode_skill_tests.py --include-settings-write
Salida de ejemplo ejecutando python -X utf8 scripts/run_vscode_skill_tests.py --basic:
✓ info detectó vscode en C:\ruta\a\code.cmd
✓ ext list encontró 42 extensiones (ms-python.python $version$)
✓ settings path devuelve una ruta válida
✓ settings get devuelve JSON válido (top-level $keycount$ keys)
✓ settings smoke: writeable check passed
Resultados: 5 pasaron, 0 fallaron en 1.2s