Communitygithub.com

Duanzhoutao/vscode-skill

Una habilidad portable de agente para configurar y operar IDEs de la familia VS Code (VS Code, VS Code Insiders, Cursor, VSCodium, Trae, Qoder, CodeBuddy) a través de CLIs de producto y archivos JSON estructurados.

¿Qué es vscode-skill?

Esta habilidad está diseñada para que agentes de IA (como Claude Code, Cursor o Codex) puedan configurar y operar IDEs basados en VS Code de forma programática y multiplataforma. Soporta VS Code, VS Code Insiders, Cursor, VSCodium, Trae, Qoder y CodeBuddy, utilizando sus respectivas CLI y archivos de configuración JSON. La habilidad puede leer y modificar configuraciones de usuario y proyecto, listar e instalar extensiones, gestionar intérpretes de Python, y trabajar con plantillas de tareas y lanzamiento. Su funcionamiento se basa en un script Python (`scripts/vscode_skill.py`) que actúa como puente, invocando comandos de PowerShell en Windows y utilizando directamente la CLI local en macOS y Linux. La configuración se resuelve mediante variables de entorno, un archivo de configuración JSON opcional y valores predeterminados, lo que permite que la habilidad se ejecute en cualquier máquina sin necesidad de editar rutas específicas.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add Duanzhoutao/vscode-skill

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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 PowerShell vscode-cli.ps1 (la implementación original, 11/11 pruebas pasan). En macOS y Linux, implementa info, ext list, settings path/get/set/smoke y python set-interpreter de forma nativa en Python; todo lo demás se ejecuta a través de la CLI local de code.

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: usa code / code.cmd.
  • vscode-insiders: usa code-insiders / code-insiders.cmd.
  • Cualquier slug de producto configurado como cursor, vscodium, trae-cn, qoder o codebuddy-cn: usa products.<slug>.cliPath, userDataPath y extensionsPath del 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.json y .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:

  1. Variable de entorno (mayor prioridad).
  2. Archivo de configuración en $VSCODE_SKILL_CONFIG si está definido, de lo contrario el predeterminado de la plataforma:
    • Windows: %APPDATA%\vscode-skill\config.json
    • macOS / Linux: $XDG_CONFIG_HOME/vscode-skill/config.json o ~/.config/vscode-skill/config.json
  3. Valores predeterminados integrados (menor prioridad).

Variables de entorno

VariablePropósitoPredeterminado
VSCODE_SKILL_HOMEUbicación de instalación de la habilidaddirectorio padre del script en ejecución
VSCODE_SKILL_CONFIGSobrescribe la ruta del archivo de configuraciónpredeterminado de plataforma anterior
VSCODE_SKILL_TEMPSobrescribe el directorio temporal para pruebas$TEMP/vscode-skill
VSCODE_SKILL_PRODUCTValor predeterminado de --Productauto
VSCODE_CODE_CLIRuta explícita a la CLI de VS Codedetectado automáticamente
VSCODE_INSIDERS_CLIRuta explícita a la CLI de VS Code Insidersdetectado automáticamente
VSCODE_EXTENSIONS_DIRSobrescribe el directorio de instalación de extensiones para cualquier productopredeterminado del producto o configuración
VSCODE_USER_DATASobrescribe 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.json de 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 set requiere --Apply explícito; sin él, el comando solo valida las entradas.
  • ext install llama a --install-extension de 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.defaultInterpreterPath apuntando 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):

ClaveBanderínTipo
editor.fontFamily--FontFamilycadena
editor.fontSize--FontSizeentero
editor.lineHeight--LineHeightnúmero
workbench.colorTheme--ColorThemecadena
workbench.iconTheme--IconThemecadena
workbench.productIconTheme--ProductIconThemecadena
editor.wordWrap--WordWrapcadena
editor.tabSize--TabSizeentero
editor.formatOnSave--FormatOnSavebooleano
files.autoSave--AutoSavecadena
editor.minimap.enabled--Minimapbooleano
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 de tasks.json para Node, TypeScript, Python, Go, Rust, Docker, Make.
  • launch-templates.md + templates/launch/*.json — 9 plantillas listas de launch.json para 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 open construye un URI vscode-remote://ssh-remote+<host><path> y ejecuta la CLI resuelta con --folder-uri.
  • wsl open construye un URI vscode-remote://wsl+<distro><path> de manera similar.
  • ssh smoke ejecuta ssh -V, ssh -G <host> y Test-NetConnection para 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

Skills relacionados