← ClaudeAtlas

debt-taxonomy-dotnetlisted

.NET / C# suppression mechanisms, safe-removal recipes, NuGet package-manager variance, and upgrade-tier examples for crew's debt lane. Apply when stack detection (debt-taxonomy) finds a .NET project.
johantor/zion · ★ 1 · Code & Development · score 67
Install: claude install-skill johantor/zion
# Debt taxonomy — .NET / C# Apply this skill when `debt-taxonomy` stack detection finds a .NET project (`*.csproj`, `*.sln`, `Directory.Packages.props`, `global.json`). The rubric, the justified-suppression filter, the blast-radius gate and the upgrade workflow are in the core skill; this skill supplies the .NET rows they consume. ## Suppression mechanisms One row per mechanism: its scope, where a keep-decision lives, what a grep-only pass reads as "likely stale" (audit's `stale` scope never builds — `/crew:debt` proves a candidate with `dotnet build` of the affected project), and how a worker removes it. .NET is the weaker stack for justifications: only the `SuppressMessage` family has a native slot, so the rest rely on project-level policy. | Mechanism | Scope | Justification slot | Stale signal (grep-only) | Removal | |---|---|---|---|---| | `#pragma warning disable CS####` … `restore` | Block | **None native.** A trailing `// reason` on the `disable` line is the convention and is read as the justification; a bare `disable` is unjustified | The surrounded lines have no trigger for the diagnostic (a `CS8602` block over a line with no `.` member access; `CS0168` over a line with no declaration), or `restore` is missing or far from `disable` | Delete both the `disable` and the matching `restore` | | `[SuppressMessage("category", "id", Justification = "…")]` | Member/type | The `Justification` param, e.g. `Justification = "validated by the ASP.NET model binder"` | The memb