- Complete VS Code extension with React-based kanban board UI - MCP integration for real-time Task Master synchronization - Professional CI/CD workflows for marketplace publishing - Comprehensive configuration system with user preferences - ShadCN UI components with VS Code theme integration - Drag-and-drop task management with status transitions - AI-powered task features via MCP protocol - Robust error handling and connection management - Multi-registry publishing (VS Code Marketplace + Open VSX) - Security audit completed with hardcoded paths removed BREAKING CHANGE: Extension requires publisher setup and marketplace keys Publisher and extension naming decisions required: - Update publisher field from placeholder 'DavidMaliglowka' - Choose unique extension name (currently 'taskr-kanban') - Select appropriate extension icon - Configure CI secrets (VSCE_PAT, OVSX_PAT) for publishing See apps/extension/docs/ for detailed setup instructions
5.8 KiB
VS Code Extension CI/CD Setup
This document explains the CI/CD setup for the Task Master VS Code extension.
🔄 Workflows Overview
1. Extension CI (extension-ci.yml)
Triggers:
- Push to
mainornextbranches (only when extension files change) - Pull requests to
mainornext(only when extension files change)
What it does:
- ✅ Lints and type-checks the extension code
- 🔨 Builds the extension (
pnpm run build) - 📦 Creates a clean package (
pnpm run package) - 🧪 Runs tests with VS Code test framework
- 📋 Creates a test VSIX package to verify packaging works
- 💾 Uploads build artifacts for inspection
2. Extension Release (extension-release.yml)
Triggers:
- Push to
mainbranch (only when extension files change AND version changes) - Manual trigger with
workflow_dispatch(with optional force publish)
What it does:
- 🔍 Checks if the extension version changed
- 🧪 Runs full test suite (lint, typecheck, tests)
- 🔨 Builds and packages the extension
- 📤 Publishes to VS Code Marketplace
- 🌍 Publishes to Open VSX Registry (for VSCodium, Gitpod, etc.)
- 🏷️ Creates a GitHub release with the VSIX file
- 📊 Uploads release artifacts
🔑 Required Secrets
To use the release workflow, you need to set up these GitHub repository secrets:
VSCE_PAT (VS Code Marketplace Personal Access Token)
- Go to Azure DevOps
- Sign in with your Microsoft account
- Create a Personal Access Token:
- Name: VS Code Extension Publishing
- Organization: All accessible organizations
- Expiration: Custom (recommend 1 year)
- Scopes: Custom defined → Marketplace → Manage
- Copy the token and add it to GitHub Secrets as
VSCE_PAT
OVSX_PAT (Open VSX Registry Personal Access Token)
- Go to Open VSX Registry
- Sign in with your GitHub account
- Go to your User Settings
- Create a new Access Token:
- Description: VS Code Extension Publishing
- Scopes: Leave default (full access)
- Copy the token and add it to GitHub Secrets as
OVSX_PAT
GITHUB_TOKEN (automatically provided)
This is automatically available in GitHub Actions - no setup required.
🚀 Publishing Process
Automatic Publishing (Recommended)
- Make changes to the extension code
- Update version in both:
apps/extension/package.jsonapps/extension/package.publish.json
- Commit and push to
mainbranch - CI automatically triggers and publishes if version changed
Manual Publishing
- Go to Actions tab in GitHub
- Select Extension Release workflow
- Click Run workflow
- Check "Force publish even without version changes" if needed
- Click Run workflow
📋 Version Management
Version Sync Checklist
When updating the extension version, ensure these fields match in both files:
package.json and package.publish.json:
{
"version": "1.0.2", // ⚠️ MUST MATCH
"publisher": "DavidMaliglowka", // ⚠️ MUST MATCH
"displayName": "Task Master Kanban", // ⚠️ MUST MATCH
"description": "...", // ⚠️ MUST MATCH
"engines": { "vscode": "^1.93.0" }, // ⚠️ MUST MATCH
"categories": [...], // ⚠️ MUST MATCH
"contributes": { ... } // ⚠️ MUST MATCH
}
Version Detection Logic
The release workflow only publishes when:
- Extension files changed in the push, AND
- Version field changed in
package.jsonorpackage.publish.json
🔍 Monitoring Builds
CI Status
- Green ✅: Extension builds and tests successfully
- Red ❌: Build/test failures - check logs for details
- Yellow 🟡: Partial success - some jobs may have warnings
Release Status
- Published 🎉: Extension live on VS Code Marketplace
- Skipped ℹ️: No version changes detected
- Failed ❌: Check logs - often missing secrets or build issues
Artifacts
Both workflows upload artifacts that you can download:
- CI: Test results, built files, and VSIX package
- Release: Final VSIX package and build artifacts (90-day retention)
🛠️ Troubleshooting
Common Issues
"VSCE_PAT is not set" Error
- Ensure
VSCE_PATsecret is added to repository - Check token hasn't expired
- Verify token has Marketplace > Manage permissions
"OVSX_PAT is not set" Error
- Ensure
OVSX_PATsecret is added to repository - Check token hasn't expired
- Verify you're signed in to Open VSX Registry with GitHub
"Version not changed" Skipped Release
- Update version in both
package.jsonANDpackage.publish.json - Ensure files are committed and pushed
- Use manual trigger with force publish if needed
Build Failures
- Check extension code compiles locally:
cd apps/extension && pnpm run build - Verify tests pass locally:
pnpm run test - Check for TypeScript errors:
pnpm run check-types
Packaging Failures
- Ensure clean package builds:
pnpm run package - Check vsix-build structure is correct
- Verify package.publish.json has correct fields
📁 File Structure Impact
The CI workflows respect the 3-file packaging system:
- Development: Uses
package.jsonfor dependencies and scripts - Release: Uses
package.publish.jsonfor clean marketplace package - Build: Uses
package.mjsto createvsix-build/for final packaging
This ensures clean, conflict-free publishing to both VS Code Marketplace and Open VSX Registry! 🚀
🌍 Dual Registry Publishing
Your extension will be automatically published to both:
- VS Code Marketplace - For official VS Code users
- Open VSX Registry - For Cursor, Windsurf, VSCodium, Gitpod, Eclipse Theia, and other compatible editors