원클릭으로
github-actions-vscode-ci
CI pipeline patterns for VS Code extensions using GitHub Actions
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
CI pipeline patterns for VS Code extensions using GitHub Actions
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Pattern for VS Code tree views that consume optional services with graceful degradation
Patterns for building dashboard webviews with tabs and visualizations
{what this skill teaches agents}
Lightweight YAML frontmatter extraction from markdown files without external dependencies
Pattern for coordinating VS Code status bar updates with tree view and data provider refresh cycles
Pattern for building Node.js API clients with TTL-based caching and no external dependencies
| name | github-actions-vscode-ci |
| description | CI pipeline patterns for VS Code extensions using GitHub Actions |
| domain | devops |
| confidence | low |
| source | earned |
VS Code extensions have unique CI requirements compared to standard Node.js projects. The test runner (@vscode/test-electron) launches a real VS Code instance, which needs a display server on Linux CI runners.
VS Code extension tests using @vscode/test-electron require a virtual framebuffer on headless Linux CI. Wrap the test command with xvfb-run -a to provide a virtual X display:
- name: Run tests
run: xvfb-run -a npm test
The -a flag auto-selects a free display number, avoiding conflicts.
Add a concurrency group keyed to github.ref so duplicate runs on the same branch cancel in-progress jobs:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
This saves CI minutes when pushing multiple commits to a PR in quick succession.
Always use npm ci in CI pipelines. It installs from package-lock.json exactly, is faster, and ensures reproducible builds. It also removes node_modules first, preventing stale dependency issues.
Order CI steps from fastest to slowest: lint → compile → test. Lint catches style issues in seconds; no point compiling if lint fails. Compilation catches type errors; no point running tests if types are broken.
npm install in CI — non-deterministic; may resolve different versions than lockfile.continue-on-error: true on test steps — hides real failures; use if: always() on artifact upload instead.# Complete VS Code extension CI workflow
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- run: npm ci
- run: npm run lint
- run: npm run compile
- name: Run tests
run: xvfb-run -a npm test
- uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
path: out/test/
if-no-files-found: ignore
retention-days: 30