Skip to content

Latest commit

 

History

History
152 lines (120 loc) · 5.83 KB

File metadata and controls

152 lines (120 loc) · 5.83 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Critical Rules

These rules override all other instructions:

  1. NEVER commit directly to main - Always create a feature branch and submit a pull request
  2. Conventional commits - Format: type(scope): description
  3. GitHub Issues for TODOs - Use gh CLI to manage issues, no local TODO files. Use conventional commit format for issue titles
  4. Pull Request titles - Use conventional commit format (same as commits)
  5. Branch naming - Use format: type/scope/short-description (e.g., feat/ui/settings-dialog)
  6. Working an issue - Always create a new branch from an updated main branch
  7. 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
  8. Microsoft coding guidelines - Follow Microsoft C# coding conventions and .NET library design guidelines
  9. 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
  10. Write tests - All new/refactored code requires tests where applicable
  11. Run validation before commits - Run dotnet build and verify no errors before committing
  12. No co-authors - Do not add co-author information on commits or pull requests
  13. No "generated by" statements - Do not add generated-by statements on pull requests

GitHub CLI Commands

gh issue list                    # List open issues
gh issue view <number>           # View details
gh issue create --title "type(scope): description" --body "..."
gh issue close <number>

Conventional Commit Types

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

VSIX Development Rules

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.json for automated publishing

Development Environment:

  • Required extension: Extensibility Essentials 2022

Documentation:

  • README should be exciting and use emojis

Project Overview

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 Commands

# Build the solution
dotnet build src/CodingWithCalvin.VsixManifestDesigner/CodingWithCalvin.VsixManifestDesigner.csproj

# Build Release
dotnet build src/CodingWithCalvin.VsixManifestDesigner/CodingWithCalvin.VsixManifestDesigner.csproj -c Release

Architecture

src/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

Technology Stack

  • C# / .NET Framework 4.8
  • Visual Studio SDK (v17.0+)
  • WPF for UI
  • VSIX v3 package format

CI/CD

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.

Development Setup

  • 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)