This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
These rules override all other instructions:
- NEVER commit directly to main - Always create a feature branch and submit a pull request
- Conventional commits - Format:
type(scope): description - GitHub Issues for TODOs - Use
ghCLI to manage issues, no local TODO files. Use conventional commit format for issue titles - Pull Request titles - Use conventional commit format (same as commits)
- Branch naming - Use format:
type/scope/short-description(e.g.,feat/ui/settings-dialog) - Working an issue - Always create a new branch from an updated main branch
- Check branch status before pushing - Verify the remote tracking branch still exists. If a PR was merged/deleted, create a new branch from main instead
- Microsoft coding guidelines - Follow Microsoft C# coding conventions and .NET library design guidelines
- WPF for all UI - All UI must be implemented using WPF (XAML/C#). No web-based technologies (HTML, JavaScript, WebView). Must use VS theme colors (
VsBrushes,VsColors) to properly support Light/Dark/Blue themes - Write tests - All new/refactored code requires tests where applicable
- Run validation before commits - Run
dotnet buildand verify no errors before committing - No co-authors - Do not add co-author information on commits or pull requests
- No "generated by" statements - Do not add generated-by statements on pull requests
gh issue list # List open issues
gh issue view <number> # View details
gh issue create --title "type(scope): description" --body "..."
gh issue close <number>| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
refactor |
Code change that neither fixes a bug nor adds a feature |
test |
Adding or updating tests |
chore |
Maintenance tasks |
perf |
Performance improvement |
ci |
CI/CD changes |
Solution & Project Structure:
- SLNX solution files only (no legacy .sln)
- Solution naming:
CodingWithCalvin.<ProjectFolder> - Primary project naming:
CodingWithCalvin.<ProjectFolder> - Additional project naming:
CodingWithCalvin.<ProjectFolder>.<Classifier>
Build Configuration:
- Configurations: Debug and Release
- Platform: AnyCPU (or x64 where required)
- Build Tools: Latest 17.* release
- VSSDK: Latest 17.* release
Target Frameworks:
- Main VSIX project: .NET Framework 4.8
- Library projects: .NET Standard 2.0 (may use SDK-style project format)
VSIX Manifest:
- Version range:
[17.0,19.0)— supports VS 2022 through VS 2026 - Architectures: AMD64 and ARM64
- Prerequisites: List Community edition only (captures Pro/Enterprise)
CI/CD:
- Build workflow: Automated build on push/PR (uses reusable workflow)
- Publish workflow: Automated marketplace publishing (uses reusable workflow)
- Marketplace config:
resources/extension.manifest.jsonfor automated publishing
Development Environment:
- Required extension: Extensibility Essentials 2022
Documentation:
- README should be exciting and use emojis
VS-VsixManifestDesigner is a Visual Studio 2022 extension that provides a visual designer for editing VSIX manifest files (source.extension.vsixmanifest). It offers a modern, user-friendly interface for managing extension metadata, dependencies, assets, and prerequisites.
# Build the solution
dotnet build src/CodingWithCalvin.VsixManifestDesigner/CodingWithCalvin.VsixManifestDesigner.csproj
# Build Release
dotnet build src/CodingWithCalvin.VsixManifestDesigner/CodingWithCalvin.VsixManifestDesigner.csproj -c Releasesrc/CodingWithCalvin.VsixManifestDesigner/
├── Editor/ # VS editor integration
│ ├── VsixManifestEditorFactory.cs
│ └── VsixManifestEditorPane.cs
├── Models/ # Data models
│ ├── Asset.cs
│ ├── Content.cs
│ ├── Dependency.cs
│ ├── InstallationTarget.cs
│ ├── Prerequisite.cs
│ ├── ProjectInfo.cs
│ └── VsixManifest.cs
├── ViewModels/ # MVVM ViewModels
│ ├── ManifestViewModel.cs
│ └── ViewModelBase.cs
├── Views/ # WPF Views (UserControls)
│ ├── ManifestDesignerControl.xaml # Main tabbed container
│ ├── MetadataView.xaml
│ ├── InstallationView.xaml
│ ├── DependenciesView.xaml
│ ├── PrerequisitesView.xaml
│ ├── AssetsView.xaml
│ └── ContentView.xaml
├── Dialogs/ # WPF Dialogs
│ ├── AddAssetDialog.xaml
│ ├── AddContentDialog.xaml
│ ├── AddDependencyDialog.xaml
│ └── ProjectPickerDialog.xaml
└── Services/ # Business logic
├── ManifestService.cs
└── SolutionService.cs
- C# / .NET Framework 4.8
- Visual Studio SDK (v17.0+)
- WPF for UI
- VSIX v3 package format
GitHub Actions workflows in .github/workflows/:
- build.yml - Triggered on push to main or PR. Builds and uploads VSIX artifact.
- publish.yml - Manual trigger to publish to VS Marketplace.
- Requires Visual Studio 2022 with "Visual Studio extension development" workload
- Install "Extensibility Essentials 2022" extension
- Open solution in Visual Studio
- Test by running in experimental VS instance (F5 from VS)