vscode-extensions

VS Code Extensions Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "vscode-extensions" with this command: npx skills add vamseeachanta/workspace-hub/vamseeachanta-workspace-hub-vscode-extensions

VS Code Extensions Skill

Master VS Code productivity with essential extensions, optimal settings, custom keybindings, and workspace configuration. This skill covers extension recommendations by category, settings sync, profiles, snippets, tasks, and debugging configurations.

When to Use This Skill

USE when:

  • Setting up a new development environment

  • Optimizing VS Code for specific languages/frameworks

  • Creating consistent team configurations

  • Building custom snippets and tasks

  • Configuring debugging for complex applications

  • Managing multiple project profiles

  • Automating repetitive editor tasks

DON'T USE when:

  • Need full IDE features (use JetBrains IDEs)

  • Working exclusively in terminal (use vim/neovim)

  • Resource-constrained environments (use lighter editors)

  • Pair programming with different editors (standardize first)

Prerequisites

Installation

macOS

brew install --cask visual-studio-code

Linux (Ubuntu/Debian)

sudo snap install code --classic

Or download from https://code.visualstudio.com/

Windows

winget install Microsoft.VisualStudioCode

Or download from https://code.visualstudio.com/

Verify installation

code --version

Open VS Code from terminal

code . # Open current directory code file.txt # Open file code --diff file1 file2 # Diff two files code --goto file:10:5 # Open file at line 10, column 5

CLI Extension Management

List installed extensions

code --list-extensions

Install extension

code --install-extension ms-python.python

Uninstall extension

code --uninstall-extension extension-id

Install multiple extensions from file

cat extensions.txt | xargs -L 1 code --install-extension

Export extensions list

code --list-extensions > extensions.txt

Install extensions on new machine

cat extensions.txt | xargs -L 1 code --install-extension

Core Capabilities

  1. Essential Extensions by Category

Create extensions installation script

cat > install-extensions.sh << 'EOF' #!/bin/bash

ABOUTME: Install curated VS Code extensions by category

ABOUTME: Run with category argument: ./install-extensions.sh python

install_base() { # Core productivity code --install-extension esbenp.prettier-vscode code --install-extension dbaeumer.vscode-eslint code --install-extension editorconfig.editorconfig code --install-extension streetsidesoftware.code-spell-checker code --install-extension usernamehw.errorlens code --install-extension gruntfuggly.todo-tree code --install-extension aaron-bond.better-comments code --install-extension christian-kohler.path-intellisense

# Git
code --install-extension eamodio.gitlens
code --install-extension mhutchie.git-graph

# Theme and icons
code --install-extension pkief.material-icon-theme
code --install-extension github.github-vscode-theme

}

install_python() { code --install-extension ms-python.python code --install-extension ms-python.vscode-pylance code --install-extension ms-python.black-formatter code --install-extension charliermarsh.ruff code --install-extension ms-python.debugpy code --install-extension njpwerner.autodocstring code --install-extension littlefoxteam.vscode-python-test-adapter }

install_javascript() { code --install-extension esbenp.prettier-vscode code --install-extension dbaeumer.vscode-eslint code --install-extension dsznajder.es7-react-js-snippets code --install-extension bradlc.vscode-tailwindcss code --install-extension prisma.prisma code --install-extension wallabyjs.quokka-vscode }

install_typescript() { install_javascript code --install-extension ms-vscode.vscode-typescript-next code --install-extension pmneo.tsimporter code --install-extension stringham.move-ts }

install_rust() { code --install-extension rust-lang.rust-analyzer code --install-extension serayuzgur.crates code --install-extension tamasfe.even-better-toml code --install-extension vadimcn.vscode-lldb }

install_go() { code --install-extension golang.go code --install-extension zxh404.vscode-proto3 }

install_docker() { code --install-extension ms-azuretools.vscode-docker code --install-extension ms-vscode-remote.remote-containers code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools code --install-extension redhat.vscode-yaml }

install_web() { code --install-extension ritwickdey.liveserver code --install-extension formulahendry.auto-rename-tag code --install-extension pranaygp.vscode-css-peek code --install-extension zignd.html-css-class-completion code --install-extension ecmel.vscode-html-css }

install_data() { code --install-extension ms-toolsai.jupyter code --install-extension mechatroner.rainbow-csv code --install-extension randomfractalsinc.vscode-data-preview code --install-extension mtxr.sqltools code --install-extension cweijan.vscode-database-client2 }

install_remote() { code --install-extension ms-vscode-remote.remote-ssh code --install-extension ms-vscode-remote.remote-containers code --install-extension ms-vscode-remote.remote-wsl code --install-extension ms-vscode.remote-explorer }

install_ai() { code --install-extension github.copilot code --install-extension github.copilot-chat code --install-extension continue.continue }

Main

case "$1" in base) install_base ;; python) install_base && install_python ;; javascript|js) install_base && install_javascript ;; typescript|ts) install_base && install_typescript ;; rust) install_base && install_rust ;; go) install_base && install_go ;; docker) install_base && install_docker ;; web) install_base && install_web ;; data) install_base && install_data ;; remote) install_remote ;; ai) install_ai ;; all) install_base && install_python && install_typescript && install_docker && install_remote ;; *) echo "Usage: $0 {base|python|javascript|typescript|rust|go|docker|web|data|remote|ai|all}" exit 1 ;; esac

echo "Extensions installed successfully!" EOF chmod +x install-extensions.sh

  1. Settings Configuration

// settings.json - User settings // Location: ~/.config/Code/User/settings.json (Linux) // ~/Library/Application Support/Code/User/settings.json (macOS) // %APPDATA%\Code\User\settings.json (Windows) { // Editor appearance "editor.fontSize": 14, "editor.fontFamily": "'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, monospace", "editor.fontLigatures": true, "editor.lineHeight": 1.6, "editor.letterSpacing": 0.5, "editor.cursorBlinking": "smooth", "editor.cursorSmoothCaretAnimation": "on", "editor.smoothScrolling": true,

// Editor behavior
"editor.lineNumbers": "relative",
"editor.rulers": [80, 120],
"editor.wordWrap": "off",
"editor.minimap.enabled": false,
"editor.renderWhitespace": "boundary",
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": "active",
"editor.stickyScroll.enabled": true,
"editor.inlineSuggest.enabled": true,

// Code formatting
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
    "source.fixAll": "explicit",
    "source.organizeImports": "explicit"
},

// Tab and indentation
"editor.tabSize": 4,
"editor.insertSpaces": true,
"editor.detectIndentation": true,
"editor.trimAutoWhitespace": true,

// Search and navigation
"editor.quickSuggestions": {
    "other": true,
    "comments": false,
    "strings": true
},
"editor.suggestSelection": "first",
"editor.acceptSuggestionOnEnter": "on",
"editor.snippetSuggestions": "top",

// Files
"files.autoSave": "onFocusChange",
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
"files.exclude": {
    "**/.git": true,
    "**/.DS_Store": true,
    "**/node_modules": true,
    "**/__pycache__": true,
    "**/.pytest_cache": true,
    "**/venv": true,
    "**/.venv": true
},
"files.watcherExclude": {
    "**/node_modules/**": true,
    "**/.git/objects/**": true
},

// Search
"search.exclude": {
    "**/node_modules": true,
    "**/dist": true,
    "**/build": true,
    "**/coverage": true,
    "**/.next": true
},
"search.useIgnoreFiles": true,
"search.smartCase": true,

// Terminal
"terminal.integrated.fontSize": 13,
"terminal.integrated.fontFamily": "'JetBrains Mono', 'MesloLGS NF', monospace",
"terminal.integrated.cursorStyle": "line",
"terminal.integrated.defaultProfile.osx": "zsh",
"terminal.integrated.defaultProfile.linux": "bash",
"terminal.integrated.scrollback": 10000,

// Git
"git.autofetch": true,
"git.confirmSync": false,
"git.enableSmartCommit": true,
"git.openRepositoryInParentFolders": "always",
"gitlens.currentLine.enabled": true,
"gitlens.hovers.currentLine.over": "line",

// Workbench
"workbench.startupEditor": "none",
"workbench.editor.enablePreview": false,
"workbench.editor.tabCloseButton": "right",
"workbench.colorTheme": "GitHub Dark Default",
"workbench.iconTheme": "material-icon-theme",
"workbench.tree.indent": 20,
"workbench.tree.renderIndentGuides": "always",

// Breadcrumbs
"breadcrumbs.enabled": true,
"breadcrumbs.filePath": "on",

// Explorer
"explorer.confirmDelete": false,
"explorer.confirmDragAndDrop": false,
"explorer.compactFolders": false,
"explorer.sortOrder": "type",

// Zen Mode
"zenMode.hideLineNumbers": false,
"zenMode.centerLayout": true,

// Extensions
"errorLens.enabled": true,
"errorLens.enabledDiagnosticLevels": ["error", "warning"],
"todo-tree.general.tags": ["TODO", "FIXME", "BUG", "HACK", "XXX", "NOTE"],

// Telemetry
"telemetry.telemetryLevel": "off"

}

  1. Language-Specific Settings

// settings.json - Language-specific overrides { // Python "[python]": { "editor.defaultFormatter": "ms-python.black-formatter", "editor.formatOnSave": true, "editor.tabSize": 4, "editor.codeActionsOnSave": { "source.organizeImports": "explicit" } }, "python.analysis.typeCheckingMode": "basic", "python.analysis.autoImportCompletions": true, "python.terminal.activateEnvironment": true, "python.testing.pytestEnabled": true, "python.testing.unittestEnabled": false, "ruff.organizeImports": true,

// JavaScript/TypeScript
"[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2
},
"[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2
},
"[typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2
},
"[javascriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2
},
"typescript.preferences.importModuleSpecifier": "relative",
"typescript.updateImportsOnFileMove.enabled": "always",

// JSON
"[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2
},
"[jsonc]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2
},

// YAML
"[yaml]": {
    "editor.defaultFormatter": "redhat.vscode-yaml",
    "editor.tabSize": 2,
    "editor.autoIndent": "advanced"
},
"yaml.schemas": {
    "https://json.schemastore.org/github-workflow.json": ".github/workflows/*.yml"
},

// Markdown
"[markdown]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.wordWrap": "on",
    "editor.quickSuggestions": {
        "other": true,
        "comments": false,
        "strings": true
    }
},
"markdown.preview.fontSize": 14,

// HTML/CSS
"[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2
},
"[css]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2
},
"[scss]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2
},

// Go
"[go]": {
    "editor.defaultFormatter": "golang.go",
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
        "source.organizeImports": "always"
    }
},
"go.lintTool": "golangci-lint",
"go.testOnSave": true,

// Rust
"[rust]": {
    "editor.defaultFormatter": "rust-lang.rust-analyzer",
    "editor.formatOnSave": true
},
"rust-analyzer.checkOnSave.command": "clippy",

// Shell
"[shellscript]": {
    "editor.defaultFormatter": "foxundermoon.shell-format",
    "editor.tabSize": 4
}

}

  1. Keybindings Configuration

// keybindings.json // Location: ~/.config/Code/User/keybindings.json (Linux) [ // Navigation { "key": "ctrl+shift+e", "command": "workbench.view.explorer" }, { "key": "ctrl+shift+g", "command": "workbench.view.scm" }, { "key": "ctrl+shift+f", "command": "workbench.view.search" }, { "key": "ctrl+shift+d", "command": "workbench.view.debug" }, { "key": "ctrl+shift+x", "command": "workbench.view.extensions" },

// Terminal
{
    "key": "ctrl+`",
    "command": "workbench.action.terminal.toggleTerminal"
},
{
    "key": "ctrl+shift+`",
    "command": "workbench.action.terminal.new"
},
{
    "key": "ctrl+shift+c",
    "command": "workbench.action.terminal.openNativeConsole"
},

// Editor navigation
{
    "key": "ctrl+tab",
    "command": "workbench.action.nextEditor"
},
{
    "key": "ctrl+shift+tab",
    "command": "workbench.action.previousEditor"
},
{
    "key": "alt+left",
    "command": "workbench.action.navigateBack"
},
{
    "key": "alt+right",
    "command": "workbench.action.navigateForward"
},

// Line manipulation
{
    "key": "alt+up",
    "command": "editor.action.moveLinesUpAction",
    "when": "editorTextFocus &#x26;&#x26; !editorReadonly"
},
{
    "key": "alt+down",
    "command": "editor.action.moveLinesDownAction",
    "when": "editorTextFocus &#x26;&#x26; !editorReadonly"
},
{
    "key": "shift+alt+up",
    "command": "editor.action.copyLinesUpAction",
    "when": "editorTextFocus &#x26;&#x26; !editorReadonly"
},
{
    "key": "shift+alt+down",
    "command": "editor.action.copyLinesDownAction",
    "when": "editorTextFocus &#x26;&#x26; !editorReadonly"
},
{
    "key": "ctrl+shift+k",
    "command": "editor.action.deleteLines",
    "when": "editorTextFocus &#x26;&#x26; !editorReadonly"
},

// Selection
{
    "key": "ctrl+l",
    "command": "expandLineSelection",
    "when": "editorTextFocus"
},
{
    "key": "ctrl+d",
    "command": "editor.action.addSelectionToNextFindMatch",
    "when": "editorFocus"
},
{
    "key": "ctrl+shift+l",
    "command": "editor.action.selectHighlights",
    "when": "editorFocus"
},

// Multi-cursor
{
    "key": "ctrl+alt+up",
    "command": "editor.action.insertCursorAbove",
    "when": "editorTextFocus"
},
{
    "key": "ctrl+alt+down",
    "command": "editor.action.insertCursorBelow",
    "when": "editorTextFocus"
},

// Code actions
{
    "key": "ctrl+.",
    "command": "editor.action.quickFix",
    "when": "editorHasCodeActionsProvider &#x26;&#x26; editorTextFocus &#x26;&#x26; !editorReadonly"
},
{
    "key": "f2",
    "command": "editor.action.rename",
    "when": "editorHasRenameProvider &#x26;&#x26; editorTextFocus &#x26;&#x26; !editorReadonly"
},
{
    "key": "f12",
    "command": "editor.action.revealDefinition",
    "when": "editorHasDefinitionProvider &#x26;&#x26; editorTextFocus"
},
{
    "key": "alt+f12",
    "command": "editor.action.peekDefinition",
    "when": "editorHasDefinitionProvider &#x26;&#x26; editorTextFocus"
},
{
    "key": "shift+f12",
    "command": "editor.action.goToReferences",
    "when": "editorHasReferenceProvider &#x26;&#x26; editorTextFocus"
},

// Formatting
{
    "key": "shift+alt+f",
    "command": "editor.action.formatDocument",
    "when": "editorTextFocus &#x26;&#x26; !editorReadonly"
},
{
    "key": "ctrl+k ctrl+f",
    "command": "editor.action.formatSelection",
    "when": "editorHasDocumentSelectionFormattingProvider &#x26;&#x26; editorTextFocus &#x26;&#x26; !editorReadonly"
},

// Comments
{
    "key": "ctrl+/",
    "command": "editor.action.commentLine",
    "when": "editorTextFocus &#x26;&#x26; !editorReadonly"
},
{
    "key": "shift+alt+a",
    "command": "editor.action.blockComment",
    "when": "editorTextFocus &#x26;&#x26; !editorReadonly"
},

// Fold/unfold
{
    "key": "ctrl+shift+[",
    "command": "editor.fold",
    "when": "editorTextFocus"
},
{
    "key": "ctrl+shift+]",
    "command": "editor.unfold",
    "when": "editorTextFocus"
},
{
    "key": "ctrl+k ctrl+0",
    "command": "editor.foldAll"
},
{
    "key": "ctrl+k ctrl+j",
    "command": "editor.unfoldAll"
},

// Sidebar
{
    "key": "ctrl+b",
    "command": "workbench.action.toggleSidebarVisibility"
},
{
    "key": "ctrl+shift+b",
    "command": "workbench.action.toggleAuxiliaryBar"
},

// Panels
{
    "key": "ctrl+j",
    "command": "workbench.action.togglePanel"
},

// Files
{
    "key": "ctrl+n",
    "command": "workbench.action.files.newUntitledFile"
},
{
    "key": "ctrl+w",
    "command": "workbench.action.closeActiveEditor"
},
{
    "key": "ctrl+shift+w",
    "command": "workbench.action.closeAllEditors"
},

// Git (GitLens)
{
    "key": "ctrl+shift+g b",
    "command": "gitlens.toggleFileBlame"
},
{
    "key": "ctrl+shift+g h",
    "command": "gitlens.showQuickFileHistory"
},

// Custom productivity
{
    "key": "ctrl+shift+o",
    "command": "workbench.action.gotoSymbol"
},
{
    "key": "ctrl+t",
    "command": "workbench.action.showAllSymbols"
}

]

  1. Custom Snippets

// snippets/python.json // Location: ~/.config/Code/User/snippets/python.json { "Python Main Block": { "prefix": "main", "body": [ "def main():", " ${1:pass}", "", "", "if name == "main":", " main()" ], "description": "Python main block" }, "Python Class": { "prefix": "class", "body": [ "class ${1:ClassName}:", " """${2:Class description.}"""", "", " def init(self, ${3:args}):", " ${4:pass}", "", " def ${5:method}(self):", " ${6:pass}" ], "description": "Python class definition" }, "Python Dataclass": { "prefix": "dataclass", "body": [ "from dataclasses import dataclass", "", "", "@dataclass", "class ${1:ClassName}:", " """${2:Description.}"""", "", " ${3:field}: ${4:str}" ], "description": "Python dataclass" }, "Python Type Hints": { "prefix": "typed", "body": [ "def ${1:function_name}(", " ${2:param}: ${3:str}", ") -> ${4:None}:", " """${5:Description.}"""", " ${6:pass}" ], "description": "Typed function signature" }, "Python Pytest Test": { "prefix": "test", "body": [ "def test_${1:name}():", " # Arrange", " ${2:pass}", "", " # Act", " ${3:result = None}", "", " # Assert", " assert ${4:result is not None}" ], "description": "Pytest test function" }, "ABOUTME Comment": { "prefix": "aboutme", "body": [ "# ABOUTME: ${1:Brief description of file purpose}", "# ABOUTME: ${2:Additional detail about what the file does}" ], "description": "ABOUTME file header comment" } }

// snippets/typescript.json { "React Functional Component": { "prefix": "rfc", "body": [ "interface ${1:ComponentName}Props {", " ${2:prop}: ${3:string};", "}", "", "export function ${1:ComponentName}({ ${2:prop} }: ${1:ComponentName}Props) {", " return (", " <div>", " ${4:content}", " </div>", " );", "}" ], "description": "React Functional Component with TypeScript" }, "React useState Hook": { "prefix": "usestate", "body": [ "const [${1:state}, set${1/(.*)/${1:/capitalize}/}] = useState<${2:string}>(${3:''});" ], "description": "React useState hook with TypeScript" }, "React useEffect Hook": { "prefix": "useeffect", "body": [ "useEffect(() => {", " ${1:// effect}", "", " return () => {", " ${2:// cleanup}", " };", "}, [${3:dependencies}]);" ], "description": "React useEffect hook" }, "TypeScript Interface": { "prefix": "interface", "body": [ "interface ${1:InterfaceName} {", " ${2:property}: ${3:type};", "}" ], "description": "TypeScript interface" }, "TypeScript Type": { "prefix": "type", "body": [ "type ${1:TypeName} = {", " ${2:property}: ${3:type};", "};" ], "description": "TypeScript type alias" }, "Async Function": { "prefix": "asyncfn", "body": [ "async function ${1:functionName}(${2:params}): Promise<${3:void}> {", " try {", " ${4:// implementation}", " } catch (error) {", " console.error(error);", " throw error;", " }", "}" ], "description": "Async function with error handling" } }

  1. Workspace Configuration

// .vscode/settings.json - Project-specific settings { // Project-specific formatters "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true,

// Python project
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
"python.testing.pytestPath": "${workspaceFolder}/.venv/bin/pytest",
"python.testing.pytestArgs": ["tests"],
"python.analysis.extraPaths": ["${workspaceFolder}/src"],

// File associations
"files.associations": {
    "*.env.*": "dotenv",
    "Dockerfile.*": "dockerfile"
},

// Search exclusions
"search.exclude": {
    "**/node_modules": true,
    "**/.venv": true,
    "**/dist": true,
    "**/coverage": true
},

// Ruler for this project
"editor.rulers": [88, 120],

// Custom dictionary words
"cSpell.words": [
    "pytest",
    "asyncio",
    "pydantic"
]

}

// .vscode/extensions.json - Recommended extensions { "recommendations": [ "ms-python.python", "ms-python.vscode-pylance", "ms-python.black-formatter", "charliermarsh.ruff", "esbenp.prettier-vscode", "dbaeumer.vscode-eslint", "eamodio.gitlens", "usernamehw.errorlens" ], "unwantedRecommendations": [] }

// .vscode/tasks.json - Build and run tasks { "version": "2.0.0", "tasks": [ { "label": "Run Tests", "type": "shell", "command": "pytest", "args": ["tests/", "-v", "--cov=src"], "group": { "kind": "test", "isDefault": true }, "presentation": { "reveal": "always", "panel": "new" }, "problemMatcher": [] }, { "label": "Lint", "type": "shell", "command": "ruff", "args": ["check", "src/"], "group": "build", "presentation": { "reveal": "silent", "panel": "shared" }, "problemMatcher": { "owner": "ruff", "fileLocation": ["relative", "${workspaceFolder}"], "pattern": { "regexp": "^(.+):(\d+):(\d+): (\w+) (.+)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } }, { "label": "Format", "type": "shell", "command": "black", "args": ["src/", "tests/"], "group": "build", "presentation": { "reveal": "silent" } }, { "label": "Build Docker", "type": "shell", "command": "docker", "args": ["build", "-t", "${workspaceFolderBasename}:latest", "."], "group": "build", "presentation": { "reveal": "always" } }, { "label": "Start Dev Server", "type": "shell", "command": "python", "args": ["-m", "uvicorn", "src.main:app", "--reload"], "isBackground": true, "problemMatcher": { "pattern": { "regexp": "." }, "background": { "activeOnStart": true, "beginsPattern": "^.Uvicorn running.$", "endsPattern": "^.Application startup complete.$" } } } ] }

// .vscode/launch.json - Debug configurations { "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "debugpy", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${workspaceFolder}" }, { "name": "Python: FastAPI", "type": "debugpy", "request": "launch", "module": "uvicorn", "args": ["src.main:app", "--reload", "--port", "8000"], "jinja": true, "justMyCode": true, "env": { "PYTHONPATH": "${workspaceFolder}" } }, { "name": "Python: pytest", "type": "debugpy", "request": "launch", "module": "pytest", "args": ["tests/", "-v", "-s"], "console": "integratedTerminal" }, { "name": "Node: Current File", "type": "node", "request": "launch", "program": "${file}", "console": "integratedTerminal" }, { "name": "Node: npm start", "type": "node", "request": "launch", "runtimeExecutable": "npm", "runtimeArgs": ["run", "dev"], "console": "integratedTerminal" }, { "name": "Attach to Docker", "type": "debugpy", "request": "attach", "connect": { "host": "localhost", "port": 5678 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/app" } ] } ], "compounds": [ { "name": "Full Stack", "configurations": ["Python: FastAPI", "Node: npm start"] } ] }

  1. Profile Management

Create profiles for different workflows

Settings -> Profiles -> Create Profile

Export profile

code --profile Python --export-default-profile > python-profile.json

Import profile

code --profile Python --import-profile python-profile.json

Switch profiles via command palette

Cmd/Ctrl+Shift+P -> Profiles: Switch Profile

Profile examples:

- "Python" - Python extensions and settings

- "Web" - JavaScript/TypeScript/React

- "DevOps" - Docker, Kubernetes, YAML

- "Minimal" - Basic editing only

- "Writing" - Markdown, spell check

Integration Examples

Git Workflow Integration

// settings.json - Git integration { "git.autofetch": true, "git.confirmSync": false, "git.enableSmartCommit": true, "git.postCommitCommand": "push", "git.fetchOnPull": true, "git.pruneOnFetch": true,

// GitLens settings
"gitlens.views.repositories.branches.layout": "tree",
"gitlens.views.commits.files.layout": "tree",
"gitlens.codeLens.enabled": true,
"gitlens.codeLens.recentChange.enabled": true,
"gitlens.currentLine.enabled": true,
"gitlens.hovers.currentLine.over": "line",
"gitlens.blame.format": "${author|10} ${date}",
"gitlens.blame.heatmap.enabled": true

}

Remote Development

// settings.json - Remote development { // SSH "remote.SSH.remotePlatform": { "server1": "linux", "server2": "linux" }, "remote.SSH.defaultExtensions": [ "ms-python.python", "ms-python.vscode-pylance" ],

// Containers
"dev.containers.defaultExtensions": [
    "ms-python.python",
    "eamodio.gitlens"
],

// WSL
"remote.WSL.fileWatcher.polling": true

}

// .devcontainer/devcontainer.json { "name": "Python Dev", "image": "mcr.microsoft.com/devcontainers/python:3.12", "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": {} }, "customizations": { "vscode": { "extensions": [ "ms-python.python", "ms-python.vscode-pylance", "ms-python.black-formatter", "charliermarsh.ruff" ], "settings": { "python.defaultInterpreterPath": "/usr/local/bin/python" } } }, "postCreateCommand": "pip install -e '.[dev]'", "forwardPorts": [8000] }

Best Practices

  1. Extension Management

Keep extensions minimal

Review periodically

code --list-extensions | wc -l

Disable per-workspace for unused extensions

Settings -> Extensions -> Disable (Workspace)

Use extension packs wisely

Create custom packs for teams

  1. Performance Optimization

{ // Reduce file watching "files.watcherExclude": { "/node_modules/": true, "/.git/objects/": true, "/venv/": true },

// Reduce search scope
"search.exclude": {
    "**/node_modules": true,
    "**/dist": true
},

// Disable heavy features if needed
"editor.minimap.enabled": false,
"editor.codeLens": false,

// Limit suggestions
"editor.quickSuggestions": {
    "other": true,
    "comments": false,
    "strings": false
}

}

  1. Team Consistency

// .vscode/settings.json - Committed to repo { // Consistent formatting "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode",

// Consistent tab settings
"editor.tabSize": 2,
"editor.insertSpaces": true,

// Consistent line endings
"files.eol": "\n"

}

Troubleshooting

Common Issues

Issue: Extensions not loading

Check extension host logs

Help -> Toggle Developer Tools -> Console

Reinstall extension

code --uninstall-extension extension-id code --install-extension extension-id

Reset VS Code

rm -rf ~/.config/Code/CachedData

Issue: Slow startup

Profile startup

code --prof-startup

Disable extensions

code --disable-extensions

Check extension impact

Help -> Startup Performance

Issue: IntelliSense not working

Restart language server

Cmd/Ctrl+Shift+P -> "Restart Extension Host"

Clear workspace cache

rm -rf .vscode/.ropeproject rm -rf pycache

Issue: Settings not applying

Check settings precedence:

1. Workspace settings (.vscode/settings.json)

2. User settings (settings.json)

3. Default settings

View effective settings

Cmd/Ctrl+Shift+P -> "Preferences: Open Settings (JSON)"

Version History

Version Date Changes

1.0.0 2026-01-17 Initial release with comprehensive VS Code configuration

Resources

  • VS Code Documentation

  • VS Code Keybindings Reference

  • Extension Marketplace

  • Snippet Guide

  • Tasks Documentation

  • Debugging Guide

This skill provides production-ready VS Code configurations for maximum developer productivity across multiple languages and frameworks.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

cli-productivity

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python-docx

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python-scientific-computing

No summary provided by upstream source.

Repository SourceNeeds Review