AgentSkillsCN

Release Process Skill

实现 VS Code Marketplace 发布的全流程自动化。

SKILL.md
--- frontmatter
name: "Release Process Skill"
description: "Complete release automation for VS Code Marketplace publishing"

Release Process Skill

Classification: Master-Only Skill | Process Automation Activation: release, publish, marketplace, vsix, version bump, pre-release Inheritance: master-only (contains PAT handling, marketplace credentials)


Purpose

Comprehensive knowledge for releasing Alex Cognitive Architecture to VS Code Marketplace and managing version lifecycle.


Quick Reference

Release Commands

powershell
# From repo root
.\scripts\release-vscode.ps1 -BumpType patch              # Stable release
.\scripts\release-vscode.ps1 -BumpType minor -PreRelease  # Pre-release
.\scripts\release-vscode.ps1 -BumpType patch -DryRun      # Test without publishing

Manual Publishing

powershell
cd platforms/vscode-extension
npx vsce publish --pre-release  # Pre-release
npx vsce publish                # Stable release

PAT (Personal Access Token) Setup

⚠️ IMPORTANT: PATs expire frequently and may only work for a single publish session. Always create a fresh PAT before each release to avoid 401 errors.

Creating a New PAT

  1. Via Marketplace (Recommended):

  2. Via Azure DevOps:

    • Go to: https://dev.azure.com/
    • Click User Settings (gear icon) → Personal Access Tokens
    • Click "New Token"
    • Name: vsce-marketplace (or similar)
    • Organization: All accessible organizations
    • Expiration: Set appropriate duration (max 1 year)
    • Scopes: Select MarketplaceManage
    • Click Create, copy token

Storing the PAT

Option 1: Environment Variable (Session only)

powershell
$env:VSCE_PAT = "your-token-here"

Option 2: .env File (Persistent, gitignored)

code
# platforms/vscode-extension/.env
VSCE_PAT=your-token-here

Option 3: System Environment (Persistent)

powershell
[Environment]::SetEnvironmentVariable("VSCE_PAT", "your-token", "User")

PAT Troubleshooting

ErrorCauseSolution
401 UnauthorizedPAT expired or invalidCreate new PAT
401 UnauthorizedWrong scopeEnsure "Marketplace (Manage)" scope
403 ForbiddenNot publisher ownerCheck publisher membership
Token not found.env not loadedCheck file path, run preflight

Version Strategy

Semantic Versioning

code
MAJOR.MINOR.PATCH
  │     │     └── Bug fixes, docs
  │     └──────── New features, non-breaking
  └────────────── Breaking changes

Pre-Release vs Stable

TypeFlagVisibilityUse Case
Pre-release--pre-releaseOpt-in onlyBeta testing
Stable(none)EveryoneProduction ready

VS Code Marketplace Rule: Pre-release versions must use the --pre-release flag, NOT semver suffixes like -beta.1.

Version Files to Update

When bumping version, these files need synchronization:

  1. platforms/vscode-extension/package.jsonversion field
  2. platforms/vscode-extension/.github/copilot-instructions.md**Version**: line
  3. CHANGELOG.md → New ## [X.Y.Z] section

The release-vscode.ps1 script handles all of these automatically.


Release Workflow

Automated (Recommended)

code
┌─────────────────────────────────────────────────────────────────┐
│  .\scripts\release-vscode.ps1 -BumpType patch -PreRelease       │
└─────────────────────────────────────────────────────────────────┘
         │
         ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│ 0. PAT Check    │───▶│ 1a. Sync Heir   │───▶│ 1b. Preflight   │
│ - Load .env     │    │ - build-pkg.ps1 │    │ - Version sync  │
│ - Validate      │    │ - Master→Heir   │    │ - Build/Lint    │
│                 │    │                 │    │ - Manifest check│
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │
         ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│ 2. Version Bump │───▶│ 3. CHANGELOG    │───▶│ 4. Git Commit   │
│ - package.json  │    │ - Add entry     │    │ - Commit        │
│ - heir version  │    │ - Date stamp    │    │ - Tag           │
│                 │    │                 │    │ - Push          │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │
         ▼
┌─────────────────┐
│ 5. Publish      │
│ - vsce publish  │
│ - --pre-release │
└─────────────────┘

Definition of Done Verification

Before publishing, verify ALL 8 criteria from ROADMAP-UNIFIED.md:

#CriterionValidation Method
1Builds cleannpm run compile exits 0 with zero errors
2No dead codeAll imports resolve, no orphaned modules
3Counts match realitySlash commands, tools, skills, trifectas in docs = actual code
4F5 smoke test passesExtension activates, welcome view renders, 3 random commands work
5Version alignedpackage.json = CHANGELOG = copilot-instructions
6Heir sync cleansync-architecture.js runs with 0 errors, no contamination
7No non-functional featuresIf in UI/command palette, it works. If broken, removed.
8CHANGELOG documents deltaEvery user-visible change has a line item

Pattern: Use regression checklist as DoD tracker:

  • Create alex_docs/operations/VXXX-REGRESSION-CHECKLIST.md
  • Track verification status for each criterion
  • Document evidence (commit hashes, test counts, sync output)
  • Automated tests provide objective quality signal (test count = confidence metric)

Quality Gate: If ANY criterion fails, DO NOT publish. Fix first.

Manual Checklist

If not using the script:

  • Run preflight: .\scripts\release-preflight.ps1 -Package
  • Bump version in package.json
  • Update heir copilot-instructions.md version
  • Add CHANGELOG entry
  • Commit: git commit -m "chore: release vX.Y.Z"
  • Tag: git tag vX.Y.Z
  • Push: git push && git push --tags
  • Publish: npx vsce publish [--pre-release]

Preflight Checks

The release-preflight.ps1 script validates:

CheckWhat It Does
PATVerifies VSCE_PAT is available in env or .env
Version Syncpackage.json = CHANGELOG = Master instructions = heir instructions
BUILD-MANIFESTChecks heir was synced recently (warns if > 24h old)
README Skill CountVerifies documented skill count matches actual
ROADMAP VersionWarns if ROADMAP-UNIFIED.md version differs
Buildnpm run compile succeeds
Lintnpm run lint passes
Testsnpm test passes (can skip with -SkipTests)
Git StatusShows uncommitted changes
Git TagsWarns if tag already exists
PackageCreates VSIX (with -Package flag)

File Structure

code
Alex_Plug_In/
├── scripts/
│   ├── release-preflight.ps1    # Pre-release validation
│   ├── release-vscode.ps1       # Full release automation
│   └── build-extension-package.ps1  # Heir sync
├── platforms/vscode-extension/
│   ├── package.json             # Version source of truth
│   ├── .env                     # PAT storage (gitignored)
│   ├── .github/
│   │   └── copilot-instructions.md  # Heir version
│   └── *.vsix                   # Built packages
└── CHANGELOG.md                 # Version history

Common Issues

"The pre-release version is not valid"

Cause: Used semver suffix like 3.7.4-beta.1

Solution: Use plain version 3.7.4 with --pre-release flag

"401 Unauthorized"

Cause: PAT expired, invalid, or wrong scope

Solution:

  1. Create new PAT at marketplace.visualstudio.com/manage/publishers
  2. Ensure "Marketplace (Manage)" scope
  3. Update .env or environment variable

"Version already exists"

Cause: Trying to publish same version twice

Solution: Bump version first, or delete existing version from marketplace

Build succeeds but publish fails

Cause: Often network or auth issues

Solution:

  1. Check internet connection
  2. Verify PAT is valid
  3. Try npx vsce login <publisher-name> first

Links