{"slug":"dotnet-reportgenerator","title":"dotnet-reportgenerator","summary":"Use the open-source free `ReportGenerator` tool for turning .NET coverage outputs into HTML, Markdown, Cobertura, badges, and merged reports. Use when raw coverage files are not readable enough for CI or human review.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-27T21:00:38.595152Z","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-reportgenerator\nversion: \"1.0.0\"\ncategory: \"Testing\"\ndescription: \"Use the open-source free <code>ReportGenerator</code> tool for turning .NET coverage outputs into HTML, Markdown, Cobertura, badges, and merged reports. Use when raw coverage files are not readable enough for CI or human review.\"\ncompatibility: \"Requires coverage artifacts such as Cobertura, OpenCover, or lcov; respects the repo's <code>AGENTS.md</code> commands first.\"</h2>\n<h1>ReportGenerator for .NET</h1>\n<h2>Trigger On</h2>\n<ul>\n<li>the repo uses or wants <code>ReportGenerator</code></li>\n<li>CI needs human-readable coverage reports</li>\n<li>multiple coverage files must be merged</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>raw coverage collection with no reporting need</li>\n</ul>\n<h2>Inputs</h2>\n<ul>\n<li>the nearest <code>AGENTS.md</code></li>\n<li>existing coverage artifacts</li>\n<li>desired output formats</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>Keep collection and rendering separate: Coverlet collects, ReportGenerator renders.</li>\n<li>Prefer the local or manifest-based .NET tool for reproducible CI runs.</li>\n<li>Choose output formats deliberately:\n<ul>\n<li><code>HtmlSummary</code></li>\n<li><code>Cobertura</code></li>\n<li><code>MarkdownSummaryGithub</code></li>\n<li>badges</li>\n</ul>\n</li>\n<li>Merge multiple reports only when the repo really needs a consolidated view.</li>\n</ol>\n<h2>Bootstrap When Missing</h2>\n<p>If <code>ReportGenerator</code> is not configured yet:</p>\n<ol>\n<li>Detect current state:\n<ul>\n<li><code>rg --files -g '.config/dotnet-tools.json'</code></li>\n<li><code>dotnet tool list --local</code></li>\n<li><code>dotnet tool list --global</code></li>\n<li><code>command -v reportgenerator</code></li>\n</ul>\n</li>\n<li>Prefer local tool installation for reproducible CI:\n<ul>\n<li><code>dotnet new tool-manifest</code> (if missing)</li>\n<li><code>dotnet tool install dotnet-reportgenerator-globaltool</code></li>\n</ul>\n</li>\n<li>Add one explicit render command to <code>AGENTS.md</code> and CI, for example:\n<ul>\n<li><code>dotnet tool run reportgenerator -reports:\"**/coverage.cobertura.xml\" -targetdir:\"artifacts/coverage\" -reporttypes:\"HtmlSummary;Cobertura\"</code></li>\n</ul>\n</li>\n<li>Run the report command once and return <code>status: configured</code> or <code>status: improved</code>.</li>\n<li>If raw coverage outputs are already sufficient and no rendered artifacts are needed, return <code>status: not_applicable</code>.</li>\n</ol>\n<h2>Deliver</h2>\n<ul>\n<li>readable coverage artifacts for humans and CI systems</li>\n<li>explicit report-generation commands</li>\n</ul>\n<h2>Validate</h2>\n<ul>\n<li>report inputs match the generated coverage format</li>\n<li>generated reports land in a stable artifact path</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/reportgenerator.md</code></li>\n<li><code>references/commands.md</code></li>\n<li><code>references/formats.md</code></li>\n</ul>\n<h2>Example Requests</h2>\n<ul>\n<li>\"Render coverage as HTML in CI.\"</li>\n<li>\"Merge multiple Coverlet reports.\"</li>\n</ul>\n","files":[{"path":"references/commands.md","sizeBytes":3351,"isText":true},{"path":"references/formats.md","sizeBytes":4806,"isText":true},{"path":"references/reportgenerator.md","sizeBytes":1219,"isText":true},{"path":"SKILL.md","sizeBytes":4166,"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:03:12.820877Z","sha256":"B6A39B84BC22B9EF59C2C9644B32F55772B1F02E4A5EE5B5148BEBFF2063656B","sizeBytes":5817},"review":null,"source":{"repositoryUrl":"https://github.com/Postpartum-genushyacinthus29/dotnet-skills","path":"skills/dotnet-reportgenerator","license":"MIT","commit":"bfa4ebd86f6bd674800f209ebf72ca770c2f026b","subtreeSha":"29DD713D0FC564DFCE68A410F09FAB3AB68318B1C57055464B39E61D11F0C287","lastSyncedAt":"2026-09-27T21:00:28.368219Z"},"reviewedAt":"2026-09-27T21:13:26.633401Z","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-reportgenerator"},{"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"}]}