Dotnet-skills dotnet-quality-ci
Set up or refine open-source .NET code-quality gates for CI: formatting, `.editorconfig`, SDK analyzers, third-party analyzers, coverage, mutation testing, architecture tests, and security scanning. Use when a .NET repo needs an explicit quality stack in `AGENTS.md`, docs, or pipeline YAML.
install
source · Clone the upstream repo
git clone https://github.com/managedcode/dotnet-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/managedcode/dotnet-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/catalog/Tools/Quality-CI/skills/dotnet-quality-ci" ~/.claude/skills/managedcode-dotnet-skills-dotnet-quality-ci && rm -rf "$T"
manifest:
catalog/Tools/Quality-CI/skills/dotnet-quality-ci/SKILL.mdsource content
.NET Quality CI
Trigger On
- adding or tightening .NET code-quality gates in CI
- choosing analyzers, coverage, mutation, or architecture-test tooling for a .NET repo
- standardizing
,.editorconfig
, and warning policydotnet format
Value
- produce a concrete project delta: code, docs, config, tests, CI, or review artifact
- reduce ambiguity through explicit planning, verification, and final validation skills
- leave reusable project context so future tasks are faster and safer
Do Not Use For
- non-.NET repositories
- generic CI/CD guidance with no .NET quality stack decisions
- framework-specific test authoring with no quality-gate change
Inputs
- the nearest
AGENTS.md - the current repo-root
and MSBuild props.editorconfig - the current CI workflow and package references
- the active test runner model: VSTest or Microsoft.Testing.Platform
Quick Start
- Read the nearest
and confirm scope and constraints.AGENTS.md - Run this skill's
through theWorkflow
until outcomes are acceptable.Ralph Loop - Return the
with concrete artifacts and verification evidence.Required Result Format
Workflow
- Start with the repo-native baseline:
- repo-root
.editorconfig dotnet format --verify-no-changes- SDK analyzers with explicit
,EnableNETAnalyzers
, and warning policyAnalysisLevel
- repo-root
- Add third-party analyzers only where they close a real gap:
StyleCopAnalyzersRoslynatorMeziantou.Analyzer- framework analyzers such as xUnit, MSTest, or TUnit analyzers
- Separate quality gates by purpose:
- formatting and style
- correctness and static analysis
- coverage and reports
- architecture rules
- security scanning
- mutation testing
- For complexity, use a composite approach:
- CA1502 thresholding
- maintainability limits in
AGENTS.md - architecture tests
- coverage and mutation where risk justifies it
- Make ownership explicit in
and CI:AGENTS.md- which command formats
- which command analyzes
- which command measures coverage
- which runner model the tests use
- After any .NET code change, the repo's quality pass must be runnable by agents:
- format
- build
- analyze
- focused tests
- broader tests
- coverage and report generation when configured
- extra configured gates only when the repo actually enabled them
- Route tool-specific setup through dedicated skills where possible:
dotnet-formatdotnet-code-analysisdotnet-analyzer-config- analyzer-pack skills such as
,dotnet-stylecop-analyzers
, anddotnet-roslynatordotnet-meziantou-analyzer - frontend asset quality skills in mixed
plus Node repos such as.NET
,dotnet-eslint
,dotnet-stylelint
,dotnet-htmlhint
,dotnet-webhint
,dotnet-biome
,dotnet-sonarjs
, anddotnet-metalintdotnet-chous - coverage/reporting skills such as
anddotnet-coverletdotnet-reportgenerator - architecture/security skills such as
,dotnet-netarchtest
, anddotnet-archunitnetdotnet-codeql
- Avoid overlapping tools with conflicting ownership. If you add an opinionated formatter, define whether it replaces or complements
.dotnet format
Bootstrap When Missing
If a quality gate is requested but not configured, use this activation path:
- Detect current state in
,.csproj
,Directory.Build.*
, tool manifests, and CI workflow files..editorconfig - Choose exactly one owner command per gate category (format, analyze, test, coverage, architecture, security, mutation).
- Install the minimal required package or tool and commit checked-in config files.
- Wire the gate into both
and CI with explicit commands.AGENTS.md - Run a first verify pass, fix actionable failures, and rerun.
- Return
if newly enabled and passing, orstatus: configured
if issues remain but baseline improved.status: improved - Return
only when the gate is explicitly out of scope for this repo.status: not_applicable
Deliver
- a documented .NET quality baseline
- CI commands that are explicit and reproducible
- analyzer and coverage choices that match the repo's runner model
- a documented post-change quality pass for agents and CI
- tool selection that stays open-source and free by default, with caveats called out explicitly
Validate
- repo-root
is the default source of truth for per-rule severity.editorconfig - formatting, analyzer, and coverage commands are runner-compatible
- added tools cover distinct gaps instead of duplicating each other
- complexity and architecture policy are explicit, not implied
- .NET code changes are expected to pass more than tests alone when quality gates are configured
- any licensing or hosting caveat is documented before the tool becomes a default gate
Ralph Loop
Use the Ralph Loop for every task, including docs, architecture, testing, and tooling work.
- Plan first (mandatory):
- analyze current state
- define target outcome, constraints, and risks
- write a detailed execution plan
- list final validation skills to run at the end, with order and reason
- Execute one planned step and produce a concrete delta.
- Review the result and capture findings with actionable next fixes.
- Apply fixes in small batches and rerun the relevant checks or review steps.
- Update the plan after each iteration.
- Repeat until outcomes are acceptable or only explicit exceptions remain.
- If a dependency is missing, bootstrap it or return
with explicit reason and fallback path.status: not_applicable
Required Result Format
:status
|complete
|clean
|improved
|configured
|not_applicableblocked
: concise plan and current iteration stepplan
: concrete changes madeactions_taken
: final skills run, or skipped with reasonsvalidation_skills
: commands, checks, or review evidence summaryverification
: top unresolved items orremainingnone
For setup-only requests with no execution, return
status: configured and exact next commands.
Load References
references/editorconfig-and-ci.mdreferences/quality-toolchain.mdreferences/workflows.mdreferences/checklist.md
Example Requests
- "Define the best OSS CI stack for this .NET repo."
- "Add .NET analyzers, coverage, and mutation testing guidance."
- "Make
and CI agree in our .NET solution.".editorconfig