Cursor & Kiro: Publish via Open VSX
Cursor and Kiro IDE install extensions from Open VSX — not the Visual Studio Marketplace. There is no separate Kiro marketplace (Kiro extension registry docs). One Open VSX publish covers both.
Use vscode-extension-publishing first to build and validate the .vsix (npm run package, manifest, tests). This skill covers the second upload to Open VSX.
1. Same package, two registries
| Registry | Editors | Extension listing |
|---|---|---|
| Visual Studio Marketplace | VS Code | publisher.name from package.json |
| Open VSX | Cursor, Kiro, VSCodium, Gitpod | publisher / name → namespace/extension |
Upload the same {name}-{version}.vsix to both. Bump package.json → version once per release; both registries reject duplicate versions.
2. Find the extension folder
Same as VS Code publishing: run ovsx / publish scripts from the directory whose package.json has "engines": { "vscode": ... } and "contributes" (often extension/, not repo root).
3. One-time Open VSX setup
- Sign in at open-vsx.org (GitHub OAuth).
- Create namespace
serhiivoinolovych— must matchpackage.json→"publisher". - Profile → Access Tokens → create token → store as
OVSX_PAT(env var or GitHub Actions secret). Never commit tokens. - First publish may need Eclipse Foundation review.
Verify namespace (remove unverified warning)
Creating a namespace makes you a contributor, not an owner. Extensions show verified only when the namespace has an owner (Namespace Access).
Claim ownership via the official form: Claim namespace serhiivoinolovych
Fastest path when also on VS Marketplace: Option 1 — VS Code publisher with repo in package.json; include Marketplace publisher + extension URLs in Claim evidence.
Publishing works while unverified; Cursor/Kiro may show a warning banner until ownership is approved.
4. Pre-publish checklist
From the extension directory, after vscode-extension-publishing release gate:
cd extension
npm ci
npm run compile
npm test
npm run package
Confirm the VSIX name matches package.json:
{name}-{version}.vsix # e.g. claude-skill-deployer-1.0.20.vsix
Remove stale .vsix files with different names/versions in extension/ before publishing — scripts may pick the wrong file if the expected name is missing.
5. Publish to Open VSX
$env:OVSX_PAT = "<token-from-open-vsx.org>"
npm run publish:openvsx
Or manually:
npx ovsx publish claude-skill-deployer-1.0.20.vsix -p $env:OVSX_PAT
Project script scripts/publish-openvsx.js publishes {package.json name}-{version}.vsix only (falls back to newest matching prefix with a warning).
Publish both registries in one release:
$env:VSCE_PAT = "<azure-devops-marketplace-pat>"
$env:OVSX_PAT = "<open-vsx-pat>"
npm run publish:all
Always confirm the version bump with the user before publishing — both registries are one-way for that semver.
6. GitHub Actions (optional)
Workflow target both runs vsce publish and ovsx publish after npm run package. Secrets: VSCE_PAT, OVSX_PAT. Tag push v* or manual dispatch.
See repo extension/PUBLISHING.md, diagram/00-extension-registries.md, and skill cursor-kiro-extension-publishing for full cross-links and agent guidance.
7. Install paths (for users)
| Editor | Install from |
|---|---|
| VS Code | VS Marketplace listing |
| Cursor / Kiro | Open VSX listing — Extensions → search display name |
Install .vsix via VS Code / Cursor / Kiro → Extensions → Install from VSIX… — not Visual Studio's VSIX Installer.
Kiro can use synced skill files (.kiro/skills/) without the extension UI; Open VSX install is needed for the full manager sidebar in Kiro IDE.
8. Common errors
| Error | Cause / fix |
|---|---|
OVSX_PAT is not set |
Export token before npm run publish:openvsx. |
| Wrong extension published | Old .vsix with different name in folder — delete stale files; run npm run package; verify {name}-{version}.vsix. |
| Version already exists | Bump package.json version; publish same version to both registries in one release. |
| Unverified namespace | Claim ownership on EclipseFdn/open-vsx.org; republish after approval. |
| Extension installs in VS but not Cursor | Cursor uses Open VSX — publish there, not Marketplace-only. |
9. Hand-offs
- Package, test, VS Marketplace, manifest,
.vscodeignore→vscode-extension-publishing. - Cross-platform scripts (PS5.1 vs bash) →
cross-platform-scripting. - CI workflow failures →
ci-pipeline-debug/ci-preflight. - Record namespace/PAT quirks via
self-learning.