Skip to main content

Release Process

Overview

This project uses trunk-based development with automated release management. All changes go directly to main via pull requests, and release-please handles version bumping, changelog generation, and GitHub releases automatically.

How Releases Work

When you merge a PR to main:

  1. release-please analyzes commits using conventional commit messages
  2. Updates the Release PR with version bumps and changelog entries
  3. You decide when to merge the Release PR
  4. Merging creates a GitHub Release with the changelog
  5. Extension publishing is a separate manual step

The Release PR

The Release PR is not a branch cut or deployment. It is a staging mechanism containing only version metadata changes:

  • Updated package.json version
  • Updated extension/templates/package.template.json version
  • Updated CHANGELOG.md

Your actual code changes are already on main from your feature PRs. The Release PR accumulates version and changelog updates until you are ready to release.

Version Calculation

Release-please determines the version bump from commit prefixes:

Commit PrefixVersion BumpExample
feat:Minor1.0.0 → 1.1.0
fix:Patch1.0.0 → 1.0.1
feat!: or BREAKING CHANGE:Major1.0.0 → 2.0.0
docs:, chore:, refactor:No bumpGrouped in changelog

For Contributors

Write commits using conventional commit format. This enables automated changelog generation and version bumping.

# Features (triggers minor version bump)
git commit -m "feat: add new prompt for code review"

# Bug fixes (triggers patch version bump)
git commit -m "fix: resolve parsing error in instruction files"

# Documentation (no version bump, appears in changelog)
git commit -m "docs: update installation guide"

# Breaking changes (triggers major version bump)
git commit -m "feat!: redesign configuration schema"

For more details, see the commit message instructions.

For Maintainers

Reviewing the Release PR

The Release PR titled "chore(main): release X.Y.Z" updates automatically as PRs merge. When ready to release:

  1. Review the accumulated changelog in the PR
  2. Verify version bump is appropriate for the changes
  3. Merge the Release PR
  4. A GitHub Release is created automatically with the changelog

Release Cadence

Releases are on-demand. Merge the Release PR when:

  • A meaningful set of changes has accumulated
  • A critical fix needs immediate release
  • A scheduled release milestone is reached

There is no requirement to release after every PR merge.

Extension Publishing

VS Code extension publishing is manual via GitHub Actions workflow dispatch.

Publishing Steps

  1. Navigate to Actions → Stable Marketplace Publish in the repository (see release-marketplace-stable.yml for workflow details)
  2. Select Run workflow
  3. Choose the main branch
  4. Optionally specify a version (defaults to package.json version)
  5. Optionally enable dry-run mode to package without publishing
  6. Click Run workflow

The workflow packages the extension and publishes to the VS Code Marketplace using Azure OIDC authentication.

When to Publish

Publish the extension after merging a Release PR that includes extension-relevant changes:

  • New prompts, instructions, or custom agents
  • Bug fixes affecting extension behavior
  • Updated extension metadata or documentation

Documentation-only releases may not require an extension publish.

Version Quick Reference

ActionResult
Merge feature PR to mainRelease PR updates with new changelog entry
Merge Release PRGitHub Release created, tag applied
Run publish workflowExtension published to marketplace
Merge docs-only PRChangelog updated, no version bump

Extension Channels and Maturity

The VS Code extension is published to two channels with different stability expectations.

Extension Channels

ChannelStabilityIncluded Maturity LevelsAudience
StableProduction-readystable onlyAll users
Pre-releaseEarly accessstable, preview, experimentalEarly adopters

Maturity Levels

Each prompt, instruction, agent, and skill can set maturity in collections/*.collection.yml under items[]:

LevelDescriptionIncluded In
stableProduction-ready, fully testedStable, Pre-release
previewFeature-complete but may have rough edgesPre-release only
experimentalEarly development, may change significantlyPre-release only
deprecatedScheduled for removal, excluded from all buildsNeither

Maturity Lifecycle

Contributor Guidelines

GuidelineAction
New contributionsSet stable on collection items unless explicitly targeting early adopters
Experimental workSet experimental on collection items for proof-of-concept or rapidly evolving artifacts
Preview promotionsSet preview on collection items when core functionality is complete
Stable promotionsSet stable on collection items after production validation
DeprecationSet deprecated on collection items before removal to provide transition time. Move the artifact file to .github/deprecated/{type}/ so the build system excludes it from all downstream surfaces automatically. See AI Artifacts Architecture for the full deprecation policy.

🤖 Crafted with precision by ✨Copilot following brilliant human instruction, then carefully refined by our team of discerning human reviewers.