Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Integrate VS Code extensions with Cursor IDE: compatibility, Open VSX registry, VSIX installation, conflict resolution, and essential extensions. Triggers on "cursor extensions", "cursor vscode extensions", "cursor plugins", "cursor marketplace", "open vsx", "vsix install".
.claude/skills/jeremylongshore-cursor-extension-integration/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 54% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 86% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 29% | 0% |
Add extensions only when their publisher, permissions, data flow, compatibility, and maintenance risk are understood for the target repository.
| Condition | Safe response | |---|---| | Extension conflicts or degrades editor behavior | Disable/remove it in the test profile and retain diagnostics. | | Extension requests unapproved access | Do not install; seek security review or an approved alternative. | | Update changes permissions | Hold update until the new permissions are reviewed. |
Test a formatter extension in a disposable profile against a sample repository, verify it does not transmit code or conflict with existing formatting, and then document the approved version. Remove it rather than disabling security controls if it conflicts.
Integrate VS Code extensions with Cursor IDE. Covers the Open VSX Registry, VSIX installation for Microsoft-exclusive extensions, conflict resolution with AI features, and recommended extension stacks.
Cursor uses the Open VSX Registry instead of Microsoft's VS Code Marketplace. This is because Microsoft's marketplace terms restrict access to VS Code products only.
Impact: Most popular extensions are on Open VSX. Some Microsoft-published extensions are not.
| Extension | Category | |-----------|----------| | ESLint | Linting | | Prettier | Formatting | | GitLens | Git visualization | | Docker | Container management | | Python | Python language support | | Pylance | Python analysis (community build) | | Go | Go language support | | Rust Analyzer | Rust language support | | Tailwind CSS IntelliSense | CSS utilities | | Auto Rename Tag | HTML/JSX editing | | Error Lens | Inline error display | | TODO Highlight | Comment highlighting | | Thunder Client | API testing |
| Extension | Reason | Workaround | |-----------|--------|------------| | GitHub Copilot | Microsoft exclusive | Use Cursor's built-in AI (better integration) | | Live Share | Microsoft exclusive | Use other collaboration tools | | Remote - SSH | Microsoft exclusive | Install via VSIX | | C# Dev Kit | Microsoft exclusive | Install via VSIX | | IntelliCode | Microsoft exclusive | Cursor's Tab replaces this |
Cmd+Shift+X → search extension name → InstallFor extensions not on Open VSX:
.vsix file)Cmd+Shift+P > Extensions: Install from VSIX....vsix filebash# Install from Open VSX cursor --install-extension dbaeumer.vscode-eslint # Install from VSIX file cursor --install-extension ~/Downloads/extension.vsix # List installed extensions cursor --list-extensions # Uninstall cursor --uninstall-extension dbaeumer.vscode-eslint
| Extension | Conflict | Resolution | |-----------|----------|------------| | GitHub Copilot | Duplicate Tab/ghost text suggestions | Disable Copilot. Cursor's built-in AI is better integrated | | TabNine | Duplicate inline completions | Disable TabNine | | Codeium | Duplicate inline completions | Disable Codeium | | IntelliCode | Duplicate completions | Disable IntelliCode | | Vim | Ctrl+K/L/I keybinding conflicts | Remap AI shortcuts (see below) |
json// keybindings.json [ { "key": "ctrl+l", "command": "aichat.focus", "when": "!vim.active || vim.mode == 'Normal'" }, { "key": "ctrl+k", "command": "cursor.edit", "when": "editorTextFocus && vim.mode == 'Normal'" }, { "key": "ctrl+i", "command": "composer.open", "when": "!vim.active || vim.mode == 'Normal'" } ]
Cmd+K Cmd+S > search for the conflicting shortcut > see which commands are bound > reassign or disable.
Required:
dbaeumer.vscode-eslint # Linting
esbenp.prettier-vscode # Formatting
bradlc.vscode-tailwindcss # Tailwind CSS (if using)
Recommended:
formulahendry.auto-rename-tag # HTML/JSX tag renaming
usernamehw.errorlens # Inline error display
wix.vscode-import-cost # Import size display
christian-kohler.path-intellisense # Path autocompleteRequired:
ms-python.python # Python language support
charliermarsh.ruff # Fast Python linter
Recommended:
ms-python.debugpy # Python debugger
njpwerner.autodocstring # Docstring generator
ms-toolsai.jupyter # Jupyter notebook supportGo:
golang.go # Official Go extension
Rust:
rust-lang.rust-analyzer # Rust language server
tamasfe.even-better-toml # TOML config files ms-azuretools.vscode-docker # Docker support
redhat.vscode-yaml # YAML validation
hashicorp.terraform # Terraform HCL support
ms-kubernetes-tools.vscode-kubernetes-tools # KubernetesExtensions affect editor performance. Audit regularly:
Cmd+Shift+P > Developer: Show Running Extensions| Extension | Issue | Fix | |-----------|-------|-----| | GitLens | High CPU on large repos | Disable for repos > 100K commits | | Prettier (on save) | Slow on large files | Configure file size limit | | TypeScript | High memory on large projects | Increase tsserver.maxTsServerMemory | | Spell checker | CPU on large files | Exclude generated files |
json// .vscode/settings.json (per project) { "extensions.ignoreRecommendations": true }
Or right-click an extension > Disable (Workspace) to disable only for the current project.
Cursor does not sync extensions between machines automatically like VS Code Settings Sync. To transfer:
bash# Export extension list cursor --list-extensions > cursor-extensions.txt # On new machine, reinstall all while read ext; do cursor --install-extension "$ext"; done < cursor-extensions.txt
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 19,843 | 11,900 | -40% | 1 | 1 | 0% | 3,379 | 3,788 | +12% | 0 | 0 | — |
case-02 | fail→pass | 24,121 | 18,301 | -24% | 1 | 1 | 0% | 2,032 | 3,121 | +54% | 0 | 0 | — |
case-03 | fail→pass | 8,224 | 6,557 | -20% | 1 | 1 | 0% | 1,598 | 2,965 | +86% | 0 | 0 | — |
case-04 | pass→pass | 10,094 | 9,032 | -11% | 1 | 1 | 0% | 1,908 | 3,156 | +65% | 0 | 0 | — |
case-05 | pass→pass | 6,056 | 4,143 | -32% | 1 | 1 | 0% | 1,128 | 2,332 | +107% | 0 | 0 | — |
case-06 | pass→pass | 4,120 | 4,243 | +3% | 1 | 1 | 0% | 807 | 2,553 | +216% | 0 | 0 | — |
case-07 | fail→pass | 9,279 | 6,795 | -27% | 1 | 1 | 0% | 1,555 | 2,828 | +82% | 0 | 0 | — |
case-08 | fail→fail | 12,785 | 11,611 | -9% | 1 | 1 | 0% | 2,298 | 3,622 | +58% | 0 | 0 | — |
case-09 | pass→pass | 9,279 | 6,481 | -30% | 1 | 1 | 0% | 1,686 | 2,812 | +67% | 0 | 0 | — |
case-10 | pass→pass | 8,788 | 8,010 | -9% | 1 | 1 | 0% | 1,423 | 2,914 | +105% | 0 | 0 | — |
case-11 | pass→pass | 12,948 | 9,941 | -23% | 1 | 1 | 0% | 2,235 | 3,070 | +37% | 0 | 0 | — |
case-12 | pass→pass | 12,616 | 16,573 | +31% | 1 | 1 | 0% | 1,351 | 2,324 | +72% | 0 | 0 | — |
case-13 | pass→pass | 10,532 | 5,507 | -48% | 1 | 1 | 0% | 1,833 | 2,726 | +49% | 0 | 0 | — |
case-14 | pass→pass | 6,191 | 3,037 | -51% | 1 | 1 | 0% | 1,116 | 2,191 | +96% | 0 | 0 | — |
case-15 | pass→pass | 11,477 | 9,433 | -18% | 1 | 1 | 0% | 1,898 | 2,746 | +45% | 0 | 0 | — |
case-16 | fail→pass | 16,165 | 12,290 | -24% | 1 | 1 | 0% | 2,006 | 2,585 | +29% | 0 | 0 | — |
case-17 | pass→pass | 6,265 | 1,915 | -69% | 1 | 1 | 0% | 999 | 1,944 | +95% | 0 | 0 | — |
case-18 | pass→pass | 4,581 | 2,251 | -51% | 1 | 1 | 0% | 837 | 2,017 | +141% | 0 | 0 | — |
case-19 | pass→pass | 10,610 | 9,189 | -13% | 1 | 1 | 0% | 1,809 | 3,307 | +83% | 0 | 0 | — |
case-20 | pass→pass | 4,355 | 3,063 | -30% | 1 | 1 | 0% | 738 | 2,224 | +201% | 0 | 0 | — |
case-21 | pass→pass | 8,886 | 7,269 | -18% | 1 | 1 | 0% | 1,786 | 3,221 | +80% | 0 | 0 | — |
case-22 | pass→pass | 9,739 | 6,848 | -30% | 1 | 1 | 0% | 1,782 | 2,870 | +61% | 0 | 0 | — |
case-23 | pass→pass | 11,179 | 11,084 | -1% | 1 | 1 | 0% | 1,994 | 3,697 | +85% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +22 percentage points is the difference between those two pass rates over the 23 comparable cases.
The publisher has shipped newer versions since this run, so these numbers describe v1, not the version currently listed.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.