{"slug":"dotnet-analyzer-config","title":"dotnet-analyzer-config","summary":"Use a repo-root `.editorconfig` to configure free .NET analyzer and style rules. Use when a .NET repo needs rule severity, code-style options, section layout, or analyzer ownership made explicit. Nested `.editorconfig` files are allowed when they serve a clear subtree-specific pu","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-27T21:00:28.558658Z","repo":{"url":"https://github.com/Postpartum-genushyacinthus29/dotnet-skills","stars":12,"forks":1,"license":"MIT","updatedAt":"2026-09-27T19:34:14Z"},"bodyHtml":"<hr>\n<h2>name: dotnet-analyzer-config\nversion: \"1.0.0\"\ncategory: \"Code Quality\"\ndescription: \"Use a repo-root <code>.editorconfig</code> to configure free .NET analyzer and style rules. Use when a .NET repo needs rule severity, code-style options, section layout, or analyzer ownership made explicit. Nested <code>.editorconfig</code> files are allowed when they serve a clear subtree-specific purpose.\"\ncompatibility: \"Requires a .NET SDK-based repository; respects the repo's <code>AGENTS.md</code> commands first.\"</h2>\n<h1>.NET Analyzer Configuration</h1>\n<h2>Trigger On</h2>\n<ul>\n<li>the repo needs a root <code>.editorconfig</code></li>\n<li>analyzer severity and style ownership are unclear</li>\n<li>the team wants one source of truth for rule configuration</li>\n</ul>\n<h2>Value</h2>\n<ul>\n<li>produce a concrete project delta: code, docs, config, tests, CI, or review artifact</li>\n<li>reduce ambiguity through explicit planning, verification, and final validation skills</li>\n<li>leave reusable project context so future tasks are faster and safer</li>\n</ul>\n<h2>Do Not Use For</h2>\n<ul>\n<li>choosing analyzers with no config change</li>\n<li>formatting-only execution with no config ownership question</li>\n</ul>\n<h2>Inputs</h2>\n<ul>\n<li>the nearest <code>AGENTS.md</code></li>\n<li>current <code>.editorconfig</code></li>\n<li>any <code>Directory.Build.props</code> overrides</li>\n</ul>\n<h2>Quick Start</h2>\n<ol>\n<li>Read the nearest <code>AGENTS.md</code> and confirm scope and constraints.</li>\n<li>Run this skill's <code>Workflow</code> through the <code>Ralph Loop</code> until outcomes are acceptable.</li>\n<li>Return the <code>Required Result Format</code> with concrete artifacts and verification evidence.</li>\n</ol>\n<h2>Workflow</h2>\n<ol>\n<li>Prefer one repo-root <code>.editorconfig</code> with <code>root = true</code>.</li>\n<li>Add nested <code>.editorconfig</code> files when a subtree has a clear scoped purpose, such as stricter rules, different generated-code handling, or a different policy for tests or legacy code.</li>\n<li>Keep severity in <code>.editorconfig</code>, not scattered through IDE settings.</li>\n<li>Write the file as real EditorConfig, not as a made-up <code>.NET</code> variant:\n<ul>\n<li>lowercase filename <code>.editorconfig</code></li>\n<li><code>root = true</code> in the preamble</li>\n<li>no inline comments</li>\n<li>forward slashes in globs</li>\n</ul>\n</li>\n<li>Keep bulk switches such as <code>EnableNETAnalyzers</code> in MSBuild files, not in <code>.editorconfig</code>.</li>\n<li>Treat <code>.globalconfig</code> as an exceptional case, not the normal repo setup.</li>\n</ol>\n<h2>Bootstrap When Missing</h2>\n<p>If analyzer configuration is requested but not structured yet:</p>\n<ol>\n<li>Detect current state:\n<ul>\n<li><code>rg --files -g '.editorconfig' -g '.globalconfig'</code></li>\n<li><code>rg -n \"EnableNETAnalyzers|AnalysisLevel|AnalysisMode\" -g '*.csproj' -g 'Directory.Build.*' .</code></li>\n</ul>\n</li>\n<li>Create or normalize one repo-root <code>.editorconfig</code> with <code>root = true</code>.</li>\n<li>Move rule severity into <code>.editorconfig</code> and keep bulk analyzer switches in project or MSBuild config.</li>\n<li>Add nested <code>.editorconfig</code> files only when a subtree really needs different scoped policy.</li>\n<li>Run <code>dotnet build SOLUTION_OR_PROJECT</code> and return <code>status: configured</code> or <code>status: improved</code>.</li>\n<li>If the repo intentionally uses another documented analyzer-config ownership model, return <code>status: not_applicable</code>.</li>\n</ol>\n<h2>Deliver</h2>\n<ul>\n<li>one explicit analyzer configuration ownership model</li>\n<li>a root <code>.editorconfig</code> layout that agents can extend safely</li>\n</ul>\n<h2>Validate</h2>\n<ul>\n<li>rule severity is reproducible in local and CI builds</li>\n<li>IDE-only settings do not silently override repo policy</li>\n<li>the default path is a root <code>.editorconfig</code>, not a surprise alternative</li>\n</ul>\n<h2>Ralph Loop</h2>\n<p>Use the Ralph Loop for every task, including docs, architecture, testing, and tooling work.</p>\n<ol>\n<li>Plan first (mandatory):\n<ul>\n<li>analyze current state</li>\n<li>define target outcome, constraints, and risks</li>\n<li>write a detailed execution plan</li>\n<li>list final validation skills to run at the end, with order and reason</li>\n</ul>\n</li>\n<li>Execute one planned step and produce a concrete delta.</li>\n<li>Review the result and capture findings with actionable next fixes.</li>\n<li>Apply fixes in small batches and rerun the relevant checks or review steps.</li>\n<li>Update the plan after each iteration.</li>\n<li>Repeat until outcomes are acceptable or only explicit exceptions remain.</li>\n<li>If a dependency is missing, bootstrap it or return <code>status: not_applicable</code> with explicit reason and fallback path.</li>\n</ol>\n<h3>Required Result Format</h3>\n<ul>\n<li><code>status</code>: <code>complete</code> | <code>clean</code> | <code>improved</code> | <code>configured</code> | <code>not_applicable</code> | <code>blocked</code></li>\n<li><code>plan</code>: concise plan and current iteration step</li>\n<li><code>actions_taken</code>: concrete changes made</li>\n<li><code>validation_skills</code>: final skills run, or skipped with reasons</li>\n<li><code>verification</code>: commands, checks, or review evidence summary</li>\n<li><code>remaining</code>: top unresolved items or <code>none</code></li>\n</ul>\n<p>For setup-only requests with no execution, return <code>status: configured</code> and exact next commands.</p>\n<h2>Load References</h2>\n<ul>\n<li><code>references/analyzer-config.md</code></li>\n<li><code>references/template.md</code></li>\n<li><code>references/rules.md</code></li>\n</ul>\n<h2>Example Requests</h2>\n<ul>\n<li>\"Make <code>.editorconfig</code> the source of truth.\"</li>\n<li>\"Write a proper root <code>.editorconfig</code> for this repo.\"</li>\n<li>\"Fix conflicting analyzer severities in this .NET repo.\"</li>\n</ul>\n","files":[{"path":"references/analyzer-config.md","sizeBytes":4650,"isText":true},{"path":"references/rules.md","sizeBytes":36357,"isText":true},{"path":"references/template.md","sizeBytes":12924,"isText":true},{"path":"SKILL.md","sizeBytes":4761,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-27T21:01:42.327474Z","sha256":"634DB377AD4D121B990C265BF39FC3566D9DFAA4FE57990C9603328EA352108D","sizeBytes":14441},"review":null,"source":{"repositoryUrl":"https://github.com/Postpartum-genushyacinthus29/dotnet-skills","path":"skills/dotnet-analyzer-config","license":"MIT","commit":"bfa4ebd86f6bd674800f209ebf72ca770c2f026b","subtreeSha":"79E48295C3473CA946CA4705F79560B7C7DC824B3B166F61F6BD61467CAD4108","lastSyncedAt":"2026-09-27T21:00:28.368219Z"},"reviewedAt":"2026-09-27T21:09:26.572716Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/Postpartum-genushyacinthus29/dotnet-skills/tree/main/skills/dotnet-analyzer-config"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install postpartum-genushyacinthus29-dotnet-skills@llmmart"},{"target":"git","command":"git clone https://github.com/Postpartum-genushyacinthus29/dotnet-skills.git"}]}