Skip to content

ci(vscode): add extension CI + Marketplace publish workflows - #61

Draft
platzhersh wants to merge 1 commit into
mainfrom
claude/vscode-extension-ci-publish
Draft

ci(vscode): add extension CI + Marketplace publish workflows#61
platzhersh wants to merge 1 commit into
mainfrom
claude/vscode-extension-ci-publish

Conversation

@platzhersh

Copy link
Copy Markdown
Owner

Summary

Brings the VS Code extension under CI and makes it publishable — the last open Phase 3D item. Until now, nothing built/linted/tested vscode-extension/ on PRs (every prior extension PR was only validated locally), and the extension was never packaged or published.

CI — vscode-extension-ci.yml

A path-filtered Node workflow (runs only when vscode-extension/** changes) that does npm ci → lint → compile → unit tests → a vsce package smoke test, and uploads the built .vsix as an artifact. Kept separate from the Python ci.yml so the toolchains don't mix.

Publish — vscode-extension-publish.yml

Manual (workflow_dispatch) publish that packages and publishes to:

  • VS Code Marketplace — gated on the VSCE_PAT secret
  • Open VSX — gated on the OVSX_PAT secret

Each publish step is skipped if its secret is absent (secrets are read at job level so the step if: guards actually work). A dry_run input packages without publishing. Manual (not release-triggered) so it isn't tied to the Python semantic-release cadence and can't double-publish an unchanged version.

Icon

icon.png (128×128) derived from the project logo — a rounded square with the brand blue/orange diagonal split and the two white dots from logo.svg. Generated by scripts/generate-icon.py using only the Python stdlib (no Pillow/cairosvg, since none are available), kept in-repo for reproducibility, and wired via the package.json icon field.

Packaging cleanup

.vscodeignore now excludes compiled tests (out/test/**) and scripts/; the packaged .vsix drops from 27 → 23 files (~41 KB).

Maintainer prerequisites (one-time, can't be automated here)

To actually publish, the repo owner needs to:

  1. Create the platzhersh publisher on the VS Code Marketplace (and optionally Open VSX).
  2. Add a VSCE_PAT secret (and optionally OVSX_PAT).
  3. Bump version in vscode-extension/package.json, then run the publish workflow.

Verification

  • Both workflow YAMLs parse cleanly; vsce package succeeds locally (23 files, 41 KB, icon included).
  • Extension compile + lint + all 5 test suites pass (detector 21, autocomplete 35, templateTree 128, validation 33, opt 17).

Completes Phase 3D (Marketplace publication) from PRD-0015.

https://claude.ai/code/session_016Lgp3PJ5ebGMVzWiddxbA5


Generated by Claude Code

Brings the VS Code extension under CI and makes it publishable — the last
open Phase 3D item. Until now nothing built/lint/tested vscode-extension/
on PRs, and the extension wasn't packaged or published.

- vscode-extension-ci.yml: path-filtered Node job (npm ci, lint, compile,
  unit tests, and a `vsce package` smoke test) on PRs/pushes touching
  vscode-extension/**; uploads the built .vsix as an artifact
- vscode-extension-publish.yml: manual (workflow_dispatch) publish that
  packages and publishes to the VS Code Marketplace (gated on VSCE_PAT) and
  Open VSX (gated on OVSX_PAT), with a dry_run option. Secrets are read at
  job level so the step `if:` guards work; absent secret => step skipped
- icon.png: 128x128 marketplace icon derived from the project logo,
  generated by scripts/generate-icon.py (pure stdlib, no image libraries);
  wired via the package.json `icon` field
- .vscodeignore: stop shipping compiled tests (out/test/**) and scripts/;
  the packaged .vsix drops from 27 to 23 files
- README: document the CI, icon generation, and manual publish flow

Publishing prerequisites (maintainer, one-time): create the `platzhersh`
Marketplace publisher and add VSCE_PAT (and optionally OVSX_PAT) secrets.

https://claude.ai/code/session_016Lgp3PJ5ebGMVzWiddxbA5
@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 08eb5a03-d76e-433d-905f-815b4948c03f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/vscode-extension-ci-publish

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants