vscode-debug-setuplisted
Install: claude install-skill hsinhan-h/hh-claude-skills
# VS Code Debug Setup
## Workflow
### Step 1 — Scan projects
```
Glob: **/*.csproj (exclude bin/ and obj/ directories)
```
Read each `.csproj` and classify:
- **Web project**: `Sdk` attribute is `Microsoft.NET.Sdk.Web`
- **Test project**: `PackageReference` contains `xunit`, `MSTest`, or `NUnit` (case-insensitive)
- **Class Library**: everything else — skip, no launch config needed
Also collect per project:
- `<TargetFramework>` value (e.g. `net9.0`)
- Project directory (path relative to workspace root)
- Project name (`.csproj` filename without extension)
### Step 2 — Read port settings
For each **web project**, read `{ProjectDir}/Properties/launchSettings.json`:
1. Find the first non-IIS-Express profile (`commandName` is not `"IISExpress"`)
2. Take `applicationUrl` — full value (e.g. `https://localhost:5001;http://localhost:5000`)
3. Also extract `{httpsUrl}` — the https-only portion (e.g. `https://localhost:5001`)
4. If `launchUrl` is present (e.g. `swagger`), record it for use in `uriFormat`
### Step 3 — Generate tasks.json
For each **web + test project**, one `"build: {ProjectName}"` task.
Add a `"build: solution"` task (`isDefault: true`) that builds the whole `.sln` (Glob `*.sln` to get the path).
For each **web project**, also add a `"watch: {ProjectName}"` background task using `dotnet watch` for hot reload.
See [REFERENCE.md § tasks.json](REFERENCE.md#tasksjson-template).
### Step 4 — Generate launch.json
For each **web project**, generate **two** launc