Skillsvscode-extensions
V

vscode-extensions

VS Code productivity optimization with essential extensions, settings sync, profiles, keybindings, snippets, and workspace configuration

vamseeachanta
6 stars
1.2k downloads
Updated 5d ago

Readme

vscode-extensions follows the SKILL.md standard. Use the install command to add it to your agent stack.

---
name: vscode-extensions
version: 1.0.0
description: VS Code productivity optimization with essential extensions, settings sync, profiles, keybindings, snippets, and workspace configuration
author: workspace-hub
category: devtools
type: skill
capabilities:
  - extension_management
  - settings_configuration
  - profile_management
  - keybinding_customization
  - snippet_creation
  - workspace_settings
  - task_automation
  - debugging_configuration
  - theme_customization
  - remote_development
tools:
  - code
  - code-insiders
  - codium
tags: [vscode, ide, extensions, productivity, editor, development, settings, profiles]
platforms: [linux, macos, windows]
related_skills:
  - cli-productivity
  - git-advanced
  - docker
---

# 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

```bash
# 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

```bash
# 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

```bash
# 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
```

### 2. Settings Configuration

```jsonc
// 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"
}
```

### 3. Language-Specific Settings

```jsonc
// 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
    }
}
```

### 4. Keybindings Configuration

```jsonc
// 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 && !editorReadonly"
    },
    {
        "key": "alt+down",
        "command": "editor.action.moveLinesDownAction",
        "when": "editorTextFocus && !editorReadonly"
    },
    {
        "key": "shift+alt+up",
        "command": "editor.action.copyLinesUpAction",
        "when": "editorTextFocus && !editorReadonly"
    },
    {
        "key": "shift+alt+down",
        "command": "editor.action.copyLinesDownAction",
        "when": "editorTextFocus && !editorReadonly"
    },
    {
        "key": "ctrl+shift+k",
        "command": "editor.action.deleteLines",
        "when": "editorTextFocus && !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 && editorTextFocus && !editorReadonly"
    },
    {
        "key": "f2",
        "command": "editor.action.rename",
        "when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
    },
    {
        "key": "f12",
        "command": "editor.action.revealDefinition",
        "when": "editorHasDefinitionProvider && editorTextFocus"
    },
    {
        "key": "alt+f12",
        "command": "editor.action.peekDefinition",
        "when": "editorHasDefinitionProvider && editorTextFocus"
    },
    {
        "key": "shift+f12",
        "command": "editor.action.goToReferences",
        "when": "editorHasReferenceProvider && editorTextFocus"
    },

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

    // Comments
    {
        "key": "ctrl+/",
        "command": "editor.action.commentLine",
        "when": "editorTextFocus && !editorReadonly"
    },
    {
        "key": "shift+alt+a",
        "command": "editor.action.blockComment",
        "when": "editorTextFocus && !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"
    }
]
```

### 5. Custom Snippets

```jsonc
// 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"
    }
}
```

```jsonc
// 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"
    }
}
```

### 6. Workspace Configuration

```jsonc
// .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"
    ]
}
```

```jsonc
// .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": []
}
```

```jsonc
// .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.*$"
                }
            }
        }
    ]
}
```

```jsonc
// .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"]
        }
    ]
}
```

### 7. Profile Management

```bash
# 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

```jsonc
// 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

```jsonc
// 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
}
```

```jsonc
// .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

```bash
# 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
```

### 2. Performance Optimization

```jsonc
{
    // 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
    }
}
```

### 3. Team Consistency

```jsonc
// .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**
```bash
# 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**
```bash
# Profile startup
code --prof-startup

# Disable extensions
code --disable-extensions

# Check extension impact
# Help -> Startup Performance
```

**Issue: IntelliSense not working**
```bash
# Restart language server
# Cmd/Ctrl+Shift+P -> "Restart Extension Host"

# Clear workspace cache
rm -rf .vscode/.ropeproject
rm -rf __pycache__
```

**Issue: Settings not applying**
```bash
# 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](https://code.visualstudio.com/docs)
- [VS Code Keybindings Reference](https://code.visualstudio.com/docs/getstarted/keybindings)
- [Extension Marketplace](https://marketplace.visualstudio.com/vscode)
- [Snippet Guide](https://code.visualstudio.com/docs/editor/userdefinedsnippets)
- [Tasks Documentation](https://code.visualstudio.com/docs/editor/tasks)
- [Debugging Guide](https://code.visualstudio.com/docs/editor/debugging)

---

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

Install

Requires askill CLI v1.0+

Metadata

LicenseUnknown
Version-
Updated5d ago
Publishervamseeachanta

Tags

ci-cddatabasegithubgithub-actionslintingtesting