# Cursor Kiro Extension Publishing

> Publish a VS Code-compatible extension to Open VSX for Cursor and Kiro IDE using ovsx. Covers same VSIX as VS Marketplace, OVSX_PAT setup, namespace ownership verification, publish scripts, GitHub Actions, wrong-VSIX pitfalls, and cross-links between registries. Use when publishing to Open VSX, Cursor gallery, Kiro extension registry, or debugging `ovsx publish` failures. Pair with vscode-extension-publishing for packaging and VS Marketplace.

- Skill: `sergeyitaly/cursor-kiro-extension-publishing` (Agent Skill)
- Install (CLI): `npx skillmds@latest add sergeyitaly/cursor-kiro-extension-publishing`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sergeyitaly/cursor-kiro-extension-publishing/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: sergeyitaly (https://skillmd.com/u/sergeyitaly)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/sergeyitaly/cursor-kiro-extension-publishing

---


# Cursor & Kiro: Publish via Open VSX

**Cursor** and **Kiro IDE** install extensions from [Open VSX](https://open-vsx.org/) — not the Visual Studio Marketplace. There is **no separate Kiro marketplace** ([Kiro extension registry docs](https://kiro.dev/docs/editor/extension-registry/)). 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](https://marketplace.visualstudio.com/items?itemName=SerhiiVoinolovych.claude-skill-deployer&ssr=false#version-history) | VS Code | `publisher.name` from `package.json` |
| [Open VSX](https://open-vsx.org/extension/serhiivoinolovych/claude-skill-deployer) | **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

1. Sign in at [open-vsx.org](https://open-vsx.org/) (GitHub OAuth).
2. Create namespace **`serhiivoinolovych`** — must match `package.json` → `"publisher"`.
3. Profile → **Access Tokens** → create token → store as **`OVSX_PAT`** (env var or GitHub Actions secret). Never commit tokens.
4. First publish may need [Eclipse Foundation review](https://github.com/EclipseFdn/open-vsx.org/wiki/Publishing-Extensions).

### 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](https://github.com/eclipse-openvsx/openvsx/wiki/Namespace-Access)).

Claim ownership via the official form: [Claim namespace `serhiivoinolovych`](https://github.com/EclipseFdn/open-vsx.org/issues/new?template=claim-namespace-ownership.yml&namespace=serhiivoinolovych&title=Claiming%20namespace%20%60serhiivoinolovych%60)

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:

```powershell
cd extension
npm ci
npm run compile
npm test
npm run package
```

Confirm the VSIX name matches `package.json`:

```text
{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

```powershell
$env:OVSX_PAT = "<token-from-open-vsx.org>"
npm run publish:openvsx
```

Or manually:

```powershell
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:

```powershell
$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](https://marketplace.visualstudio.com/items?itemName=SerhiiVoinolovych.claude-skill-deployer&ssr=false#version-history) |
| Cursor / Kiro | [Open VSX listing](https://open-vsx.org/extension/serhiivoinolovych/claude-skill-deployer) — 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](https://github.com/EclipseFdn/open-vsx.org/issues); 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`**.

