Comprehensive guide for creating VS Code extensions from scratch, including project scaffolding, API usage, activation events, and packaging. Use when user wants to create/build/generate/develop a VS Code extension or plugin, asks about VS Code extension development, needs help with VS Code Extension API, discusses extension architecture, wants to add commands/webviews/language support, or mentions scaffolding a VS Code project.
View on GitHubkjgarza/marketplace-claude
senior-software-developer
plugins/senior-software-developer/skills/vscode-extension-builder/SKILL.md
January 20, 2026
Select agents to install to:
npx add-skill https://github.com/kjgarza/marketplace-claude/blob/main/plugins/senior-software-developer/skills/vscode-extension-builder/SKILL.md -a claude-code --skill vscode-extension-builderInstallation paths:
.claude/skills/vscode-extension-builder/# VS Code Extension Builder Build professional VS Code extensions with proper architecture, best practices, and complete tooling support. ## Quick Start For immediate extension creation: 1. **Initialize**: Run `npx --package yo --package generator-code -- yo code` 2. **Choose type**: New Extension (TypeScript) 3. **Fill details**: Name, identifier, description 4. **Develop**: Open in VS Code, press F5 to debug 5. **Test**: Run commands in Extension Development Host 6. **Package**: Run `vsce package` when ready For detailed guidance, follow the workflow below. ## Extension Types Choose the type that matches your needs: - **Command Extension**: Add commands to Command Palette (simplest, most common) - **Language Support**: Syntax highlighting, IntelliSense, formatting - **Webview Extension**: Custom UI panels with HTML/CSS/JS - **Tree View**: Custom sidebar views with hierarchical data - **Debugger**: Add debugging support for languages - **Theme**: Color themes, file icon themes - **Snippet Provider**: Code snippets for languages ## Core Workflow ### 1. Gather Requirements Ask user about: - **Purpose**: What should the extension do? - **Type**: Which extension type? (command, language, webview, etc.) - **Features**: Specific functionality needed - **UI**: Commands, views, panels, status bar items? - **Activation**: When should it activate? ### 2. Choose Extension Type & Architecture Based on requirements, select appropriate pattern: **Simple Command Extension** (most common): - Single responsibility - Command Palette integration - Quick to build **Language Extension**: - Syntax highlighting (TextMate grammar) - Language server for IntelliSense - Complex but powerful **Webview Extension**: - Custom UI needed - Rich interactions - More complex state management See [extension-anatomy.md](references/extension-anatomy.md) for detailed structure. ### 3. Initialize Project **Option A: Use Yeoman Generator (Recommended)** ```bash npx --package yo --package