Deploy Windsurf extensions and configurations to teams. Windsurf, as a VS Code-based IDE, uses the standard extension deployment model.
vsce CLI for extension packaging (npm install -g @vscode/vsce)package.json
set -euo pipefail
# Install vsce
npm install -g @vscode/vsce
# Package extension as .vsix
cd my-windsurf-extension
vsce package
# Output: my-extension-1.0.0.vsix
{
"name": "my-windsurf-extension",
"displayName": "My Windsurf Extension",
"version": "1.0.0",
"engines": {
"vscode": "^1.85.0"
},
"activationEvents": ["onStartupFinished"],
"main": "./dist/extension.js",
"contributes": {
"commands": [{
"command": "myext.activate",
"title": "Activate My Extension"
}],
"configuration": {
"title": "My Extension",
"properties": {
"myext.apiKey": {
"type": "string",
"description": "API key for backend service"
}
}
}
},
"scripts": {
"build": "tsc -p ./",
"package": "vsce package",
"publish": "vsce publish"
}
}
# Install .vsix manually in Windsurf
# Extensions sidebar > "..." menu > "Install from VSIX..."
# Or via command line
code --install-extension my-extension-1.0.0.vsix
// .vscode/settings.json (commit to repo)
{
"myext.apiKey": "",
"editor.formatOnSave": true,
"windsurf.cascade.enabled": true
}
// .vscode/extensions.json (recommended extensions)
{
"recommendations": [
"publisher.my-windsurf-extension",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
# .github/workflows/publish.yml
name: Publish Extension
on:
push:
tags: ["v*"]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm ci && npm run build
- run: npx vsce package
- run: npx vsce publish
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}
| Issue | Cause | Solution |
|---|---|---|
| Package fails | Missing files | Check files field in package.json |
| Extension not loading | Wrong engine version | Match engines.vscode to Windsurf version |
| Settings not applied | Wrong scope | Use workspace vs user settings appropriately |
| Publish rejected | Invalid publisher | Create publisher at marketplace.visualstudio.com |
set -euo pipefail
npm run build && vsce package && code --install-extension *.vsix
For multi-environment setup, see windsurf-multi-env-setup.