Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Vscode Settings

CSecurity

VS Code configuration, extensions, keybindings, and workspace optimization. Use when user mentions "vscode", "vs code", "vscode settings", "vscode extensions", "keybindings", "code editor", "workspace settings", "settings.json", "launch.json", "tasks.json", "vscode snippets", "devcontainer", "remote development", or customizing their VS Code setup.

207 stars
0 votes
0 copies
0 views
Added 9/4/2026
developmentjavascripttypescriptpythonrustgojavashellbashreactvue

Works with

cursorvscodeterminalcli

Security Analysis

C71/100
criticalAccesses sensitive system or user directories
mediumInstalls packages at runtime which could introduce malicious dependencies

Scanned 9/4/2026

Install to Claude Code

$npx -y skills add NeverSight/skills_feed --skill vscode-settings --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Vscode Settings?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Vscode Settings
[![Security: C — Skills Directory](https://www.skillsdirectory.com/api/skills/neversight-vscode-settings/badge)](https://www.skillsdirectory.com/skills/neversight-vscode-settings)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: vscode-settings
description: VS Code configuration, extensions, keybindings, and workspace optimization. Use when user mentions "vscode", "vs code", "vscode settings", "vscode extensions", "keybindings", "code editor", "workspace settings", "settings.json", "launch.json", "tasks.json", "vscode snippets", "devcontainer", "remote development", or customizing their VS Code setup.
---

# VS Code Settings

## Settings Hierarchy

Settings resolve in this order (later overrides earlier):

1. **Default settings** - built-in VS Code defaults
2. **User settings** - `~/.config/Code/User/settings.json` (Linux), `~/Library/Application Support/Code/User/settings.json` (macOS), `%APPDATA%\Code\User\settings.json` (Windows)
3. **Workspace settings** - `.vscode/settings.json` in workspace root
4. **Folder settings** - per-folder overrides in multi-root workspaces

Commit `.vscode/settings.json`, `extensions.json`, `tasks.json`, and `launch.json` to version control. Add user-specific paths to `.gitignore` if needed.

## Essential settings.json Configurations

### Editor

```jsonc
{
  "editor.fontSize": 14,
  "editor.fontFamily": "'JetBrains Mono', 'Fira Code', monospace",
  "editor.fontLigatures": true,
  "editor.tabSize": 2,
  "editor.insertSpaces": true,
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.organizeImports": "explicit"
  },
  "editor.bracketPairColorization.enabled": true,
  "editor.guides.bracketPairs": "active",
  "editor.inlineSuggest.enabled": true,
  "editor.stickyScroll.enabled": true,
  "editor.linkedEditing": true,
  "editor.wordWrap": "on",
  "editor.minimap.enabled": false,
  "editor.cursorBlinking": "smooth",
  "editor.cursorSmoothCaretAnimation": "on",
  "editor.renderWhitespace": "boundary"
}
```

### Files and Search

```jsonc
{
  "files.autoSave": "onFocusChange",
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true,
  "files.trimFinalNewlines": true,
  "files.exclude": {
    "**/.git": true,
    "**/.DS_Store": true,
    "**/node_modules": true,
    "**/__pycache__": true
  },
  "search.exclude": {
    "**/node_modules": true,
    "**/dist": true,
    "**/coverage": true,
    "**/.next": true,
    "**/build": true
  },
  "files.watcherExclude": {
    "**/node_modules/**": true,
    "**/.git/objects/**": true
  }
}
```

### Terminal

```jsonc
{
  "terminal.integrated.fontSize": 13,
  "terminal.integrated.fontFamily": "'JetBrains Mono', monospace",
  "terminal.integrated.defaultProfile.osx": "zsh",
  "terminal.integrated.defaultProfile.linux": "bash",
  "terminal.integrated.defaultProfile.windows": "PowerShell",
  "terminal.integrated.scrollback": 10000,
  "terminal.integrated.env.osx": {
    "FIG_NEW_SESSION": "1"
  },
  "terminal.integrated.shellArgs.osx": ["-l"],
  "terminal.integrated.cursorStyle": "line",
  "terminal.integrated.copyOnSelection": true
}
```

## Keybinding Customization

Keybindings live in `keybindings.json`. Open with `Cmd+K Cmd+S` (macOS) or `Ctrl+K Ctrl+S` (Windows/Linux).

### Structure

```jsonc
[
  {
    "key": "ctrl+shift+d",
    "command": "editor.action.duplicateSelection"
  },
  {
    "key": "ctrl+shift+k",
    "command": "editor.action.deleteLines",
    "when": "editorTextFocus && !editorReadonly"
  }
]
```

### When Clauses

Common context keys for conditional bindings:

- `editorTextFocus` - cursor is in an editor
- `editorHasSelection` - text is selected
- `editorLangId == 'typescript'` - specific language
- `resourceExtname == '.json'` - specific file extension
- `inDebugMode` - debugger is active
- `sideBarVisible` - sidebar is open
- `terminalFocus` - terminal has focus

Combine with `&&`, `||`, `!`:

```jsonc
{
  "key": "ctrl+enter",
  "command": "workbench.action.terminal.sendSequence",
  "args": { "text": "\n" },
  "when": "terminalFocus && !terminalTextSelected"
}
```

### Key Chords

Two-part shortcuts:

```jsonc
{
  "key": "ctrl+k ctrl+c",
  "command": "editor.action.addCommentLine"
}
```

## Must-Have Extensions

### Recommended Extensions File

Create `.vscode/extensions.json` in your project:

```json
{
  "recommendations": [
    "dbaeumer.vscode-eslint",
    "esbenp.prettier-vscode",
    "bradlc.vscode-tailwindcss",
    "ms-python.python"
  ],
  "unwantedRecommendations": []
}
```

### By Category

**Languages & Frameworks**: `ms-python.python`, `ms-python.vscode-pylance`, `golang.go`, `rust-lang.rust-analyzer`, `bradlc.vscode-tailwindcss`, `prisma.prisma`, `svelte.svelte-vscode`, `vue.volar`

**Git**: `eamodio.gitlens`, `mhutchie.git-graph`, `github.vscode-pull-request-github`

**Testing**: `vitest.explorer`, `ms-vscode.test-adapter-converter`, `hbenl.vscode-test-explorer`

**Productivity**: `usernamehw.errorlens`, `christian-kohler.path-intellisense`, `streetsidesoftware.code-spell-checker`, `mikestead.dotenv`, `yzhang.markdown-all-in-one`, `gruntfuggly.todo-tree`

**AI**: `github.copilot`, `github.copilot-chat`, `continue.continue`

**Formatting & Linting**: `dbaeumer.vscode-eslint`, `esbenp.prettier-vscode`, `stylelint.vscode-stylelint`, `editorconfig.editorconfig`

## Custom Snippets

### User Snippets

Open via `Cmd+Shift+P` > "Snippets: Configure Snippets". Choose a language or global scope.

`~/.config/Code/User/snippets/typescript.json`:

```json
{
  "Arrow Function": {
    "prefix": "af",
    "body": ["const ${1:name} = (${2:params}) => {", "  $0", "};"],
    "description": "Arrow function"
  },
  "Console Log Variable": {
    "prefix": "clv",
    "body": "console.log('${1:var}:', $1);",
    "description": "Log variable with label"
  },
  "Try Catch": {
    "prefix": "tc",
    "body": [
      "try {",
      "  $1",
      "} catch (error) {",
      "  ${2:console.error(error);}",
      "}"
    ]
  }
}
```

### Tabstops and Variables

- `$1`, `$2` - tab stops (cursor positions in order)
- `$0` - final cursor position
- `${1:default}` - placeholder with default text
- `${1|one,two,three|}` - choice list
- `$TM_FILENAME`, `$TM_DIRECTORY`, `$CURRENT_YEAR` - built-in variables
- `${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}` - variable transforms

### Project Snippets

Place in `.vscode/*.code-snippets` for project-scoped snippets:

```json
{
  "Component Template": {
    "scope": "typescriptreact",
    "prefix": "comp",
    "body": [
      "interface ${1:Component}Props {",
      "  $2",
      "}",
      "",
      "export function ${1:Component}({ $3 }: ${1:Component}Props) {",
      "  return (",
      "    <div>",
      "      $0",
      "    </div>",
      "  );",
      "}"
    ]
  }
}
```

## tasks.json

### Build Tasks

```jsonc
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build",
      "type": "npm",
      "script": "build",
      "group": { "kind": "build", "isDefault": true },
      "problemMatcher": ["$tsc"]
    },
    {
      "label": "lint",
      "type": "shell",
      "command": "npx eslint . --ext .ts,.tsx",
      "problemMatcher": ["$eslint-stylish"]
    },
    {
      "label": "test",
      "type": "shell",
      "command": "npx vitest run",
      "group": { "kind": "test", "isDefault": true }
    }
  ]
}
```

### Problem Matchers

Define custom problem matchers for non-standard output:

```jsonc
{
  "label": "custom-build",
  "type": "shell",
  "command": "make build",
  "problemMatcher": {
    "owner": "custom",
    "fileLocation": ["relative", "${workspaceFolder}"],
    "pattern": {
      "regexp": "^(.+):(\\d+):(\\d+):\\s+(error|warning):\\s+(.+)$",
      "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5
    }
  }
}
```

### Compound Tasks

Run multiple tasks together:

```jsonc
{
  "label": "build-and-test",
  "dependsOn": ["build", "test"],
  "dependsOrder": "sequence",
  "problemMatcher": []
}
```

## launch.json

### Node.js

```jsonc
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Node: Current File",
      "type": "node",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "skipFiles": ["<node_internals>/**"]
    },
    {
      "name": "Node: Attach",
      "type": "node",
      "request": "attach",
      "port": 9229,
      "restart": true
    }
  ]
}
```

### Python

```jsonc
{
  "name": "Python: Current File",
  "type": "debugpy",
  "request": "launch",
  "program": "${file}",
  "console": "integratedTerminal",
  "justMyCode": true,
  "env": { "PYTHONDONTWRITEBYTECODE": "1" }
}
```

### Go

```jsonc
{
  "name": "Go: Launch Package",
  "type": "go",
  "request": "launch",
  "mode": "auto",
  "program": "${workspaceFolder}",
  "env": {},
  "args": []
}
```

### Browser (Chrome)

```jsonc
{
  "name": "Chrome: Launch",
  "type": "chrome",
  "request": "launch",
  "url": "http://localhost:3000",
  "webRoot": "${workspaceFolder}/src",
  "sourceMaps": true
}
```

## Multi-Root Workspaces

Create a `.code-workspace` file:

```json
{
  "folders": [
    { "name": "Frontend", "path": "./packages/frontend" },
    { "name": "Backend", "path": "./packages/backend" },
    { "name": "Shared", "path": "./packages/shared" }
  ],
  "settings": {
    "files.exclude": { "**/node_modules": true }
  },
  "extensions": {
    "recommendations": ["dbaeumer.vscode-eslint"]
  }
}
```

Per-folder settings override workspace settings. Open with `code project.code-workspace`.

## Dev Containers

### devcontainer.json

```jsonc
// .devcontainer/devcontainer.json
{
  "name": "Node.js Dev",
  "image": "mcr.microsoft.com/devcontainers/typescript-node:20",
  "features": {
    "ghcr.io/devcontainers/features/docker-in-docker:2": {},
    "ghcr.io/devcontainers/features/github-cli:1": {}
  },
  "forwardPorts": [3000, 5432],
  "postCreateCommand": "npm install",
  "customizations": {
    "vscode": {
      "extensions": [
        "dbaeumer.vscode-eslint",
        "esbenp.prettier-vscode"
      ],
      "settings": {
        "editor.formatOnSave": true
      }
    }
  }
}
```

### With Dockerfile

```jsonc
{
  "name": "Custom Dev",
  "build": {
    "dockerfile": "Dockerfile",
    "context": "..",
    "args": { "NODE_VERSION": "20" }
  },
  "remoteUser": "node",
  "mounts": [
    "source=${localEnv:HOME}/.ssh,target=/home/node/.ssh,type=bind,readonly"
  ]
}
```

### Docker Compose

```jsonc
{
  "name": "Full Stack",
  "dockerComposeFile": "docker-compose.yml",
  "service": "app",
  "workspaceFolder": "/workspace",
  "shutdownAction": "stopCompose"
}
```

## Remote Development

**SSH**: Install "Remote - SSH" extension. Configure `~/.ssh/config`, then `Cmd+Shift+P` > "Remote-SSH: Connect to Host". VS Code installs its server on the remote automatically.

**WSL**: Install "WSL" extension. Run `code .` from a WSL terminal, or use `Cmd+Shift+P` > "WSL: Connect to WSL".

**Tunnels**: Run `code tunnel` on a remote machine to create a persistent tunnel. Connect from any browser at `vscode.dev` or from the desktop app via "Remote - Tunnels" extension. No SSH required.

## Extension Authoring Basics

Scaffold a new extension:

```bash
npm install -g yo generator-code
yo code
```

Minimal `package.json` contribution points:

```json
{
  "contributes": {
    "commands": [{
      "command": "myext.helloWorld",
      "title": "Hello World"
    }],
    "keybindings": [{
      "command": "myext.helloWorld",
      "key": "ctrl+shift+h"
    }],
    "configuration": {
      "title": "My Extension",
      "properties": {
        "myext.enable": { "type": "boolean", "default": true }
      }
    }
  }
}
```

Register in `src/extension.ts`:

```typescript
import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
  const disposable = vscode.commands.registerCommand('myext.helloWorld', () => {
    vscode.window.showInformationMessage('Hello World!');
  });
  context.subscriptions.push(disposable);
}

export function deactivate() {}
```

Debug with `F5` (launches Extension Development Host). Publish with `vsce publish`.

## Profiles

Create profiles for different workflows: `Cmd+Shift+P` > "Profiles: Create Profile".

Use cases:
- **Frontend** - Tailwind, ESLint, Prettier, browser debug configs
- **Python** - Pylance, Ruff, Jupyter, Python debug configs
- **Writing** - Markdown extensions, zen mode defaults, spell checker
- **Minimal** - No extensions, clean UI for demos/screencasts

Export/import profiles as `.code-profile` files or share via GitHub Gist.

Switch profiles via the gear icon in the bottom-left or `Cmd+Shift+P` > "Profiles: Switch Profile".

## Settings Sync

Enable via `Cmd+Shift+P` > "Settings Sync: Turn On". Syncs:

- Settings, keybindings, snippets, extensions, UI state, profiles

Sign in with GitHub or Microsoft account. Choose what to sync in Settings Sync preferences.

For teams, commit `.vscode/settings.json` and `.vscode/extensions.json` instead of relying on sync. Keep personal preferences (theme, font size) in user settings only.

## Productivity Tips

**Multi-cursor**: `Alt+Click` to add cursors. `Cmd+D` to select next occurrence. `Cmd+Shift+L` to select all occurrences. `Cmd+Alt+Up/Down` to add cursors above/below.

**Emmet**: Type abbreviations and press `Tab` in HTML/JSX. `div.container>ul>li*3` expands to full markup. Works in JSX with `"emmet.includeLanguages": { "javascriptreact": "html" }`.

**Breadcrumbs**: Enable with `"breadcrumbs.enabled": true`. Navigate file path and symbol hierarchy at the top of the editor.

**Zen Mode**: `Cmd+K Z` to enter. Hides all UI chrome for focused editing. Configure with `"zenMode.hideLineNumbers"`, `"zenMode.centerLayout"`.

**Quick Open**: `Cmd+P` to open files by name. Add `:` for go-to-line, `@` for go-to-symbol, `#` for workspace symbol search.

**Command Palette**: `Cmd+Shift+P` for all commands. Type partial matches.

**Side-by-side editing**: `Cmd+\` to split. Drag tabs between groups. `Cmd+1/2/3` to focus groups.

**Timeline view**: Built-in local file history in the Explorer sidebar. Compare previous versions without Git.

**Sticky scroll**: Shows nested scope context at the top of the editor. Enable with `"editor.stickyScroll.enabled": true`.

## Project-Specific Formatter/Linter Configuration

### Per-Language Formatters

```jsonc
// .vscode/settings.json
{
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2
  },
  "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff",
    "editor.tabSize": 4,
    "editor.formatOnSave": true
  },
  "[go]": {
    "editor.defaultFormatter": "golang.go",
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.organizeImports": "explicit"
    }
  },
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[markdown]": {
    "editor.wordWrap": "on",
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "files.trimTrailingWhitespace": false
  }
}
```

### ESLint + Prettier Coexistence

```jsonc
{
  "eslint.validate": ["javascript", "typescript", "javascriptreact", "typescriptreact"],
  "prettier.requireConfig": true,
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  }
}
```

Order matters: Prettier formats first (on save), then ESLint fixes remaining issues (code action on save). Use `eslint-config-prettier` to disable ESLint rules that conflict with Prettier.

### Ruff for Python

```jsonc
{
  "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff",
    "editor.codeActionsOnSave": {
      "source.fixAll.ruff": "explicit",
      "source.organizeImports.ruff": "explicit"
    }
  }
}
```

Attribution

NeverSightNeverSight
View sourceMore from NeverSight →
SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

281612 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2132 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →