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)
- 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
- Publish workflow: Automated marketplace publishing
- Marketplace config:
publish.manifest.jsonfor automated publishing
Development Environment:
- Required extension: Extensibility Essentials 2022
- Helper library: Community.VisualStudio.Toolkit (where applicable)
Documentation:
- README should be exciting and use emojis
This is a Visual Studio extension that adds a right-click context menu command to open solution files, project files, or individual files in Notepad++. It targets .NET Framework 4.8 and uses the VS SDK.
# Build the solution
dotnet build src/CodingWithCalvin.OpenInNotepadPlusPlus/CodingWithCalvin.OpenInNotepadPlusPlus.csproj
# Build Release
dotnet build src/CodingWithCalvin.OpenInNotepadPlusPlus/CodingWithCalvin.OpenInNotepadPlusPlus.csproj -c ReleaseDebug by pressing F5 in Visual Studio - this launches the VS Experimental Instance (/rootsuffix Exp).
The extension has a simple structure:
- OpenInNotepadPlusPlusPackage.cs - The VS package entry point, registers the command and settings page
- Commands/OpenExecutableCommand.cs - Handles the context menu command, gets the selected path and launches Notepad++
- Helpers/ProjectHelpers.cs - Resolves file paths from Solution Explorer selection (handles solutions, projects, project items, and unloaded projects)
- Dialogs/SettingsDialogPage.cs - Options page for configuring the Notepad++ executable path
- VSCommandTable.vsct - Defines the context menu command placement
Path resolution in ProjectHelpers.GetSelectedPath() handles three selection types:
ProjectItem- usesFileNames[1]Project- usesFullNamewith fallback toUniqueNamefor unloaded projectsSolution- usesFullName
The extension auto-detects Notepad++ in the default install location but allows custom paths via Tools > Options.
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.
Install the Extensibility Essentials 2022 extension for Visual Studio.