
Resharper Clt
- 16 installs
- 466 repo stars
- Updated July 25, 2026
- managedcode/dotnet-skills
Helps with ai & agent building tasks.
About
resharper-clt is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- resharper-clt
- AI & Agent Building
- AI-coding skill
Resharper Clt by the numbers
- 16 all-time installs (skills.sh)
- +1 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #11,068 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/managedcode/dotnet-skills --skill resharper-cltAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 16 |
|---|---|
| repo stars | ★ 466 |
| Last updated | July 25, 2026 |
| Repository | managedcode/dotnet-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
ReSharper Command Line Tools
Trigger On
- the repo uses or wants ReSharper Command Line Tools
- the team wants
jb inspectcodeorjb cleanupcode - the user asks for stronger C# inspections, cleanup profiles, or ReSharper-based CI gates
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
- replacing tests with inspection output
- ad-hoc formatting-only work when the repo intentionally standardizes on another formatter
- repos that do not want JetBrains settings or CLT-based gates in their workflow
Inputs
- the nearest
AGENTS.md - the target
.sln,.csproj, or bounded file set - repo-root
.editorconfig - solution shared settings such as
YourSolution.sln.DotSettings
Quick Start
1. Read the nearest AGENTS.md and confirm scope and constraints. 2. Run this skill's Workflow through the Ralph Loop until outcomes are acceptable. 3. Return the Required Result Format with concrete artifacts and verification evidence.
Workflow
1. Prefer solution-level runs when possible so ReSharper can resolve references and apply full inspections. 2. Build the solution before jb cleanupcode when working at solution scope. 3. Use jb inspectcode first to surface issues before editing anything broad. 4. Treat surfaced issues as mandatory fixes when this gate is enabled for the repo; do not just dump a report and stop. 5. Use jb cleanupcode with an explicit cleanup profile:
Built-in: Full CleanupBuilt-in: Reformat CodeBuilt-in: Reformat & Apply Syntax Style- or a checked-in custom profile
6. Keep durable ReSharper settings in the team-shared solution layer and commit the solution .DotSettings file when policy changes. 7. Re-run jb inspectcode after cleanup or fixes, then run the repo's normal quality pass and tests.
Bootstrap When Missing
If ReSharper Command Line Tools are not available yet:
1. Detect current state:
rg --files -g '.config/dotnet-tools.json' -g '*.sln.DotSettings'dotnet tool list --localdotnet tool list --globalcommand -v jb
2. Choose the install path deliberately:
- preferred repo-local install for reproducible CI:
dotnet new tool-manifest(if missing)dotnet tool install JetBrains.ReSharper.GlobalTools- global fallback:
dotnet tool install --global JetBrains.ReSharper.GlobalTools
3. Verify the installed commands resolve correctly:
jb inspectcode --helpjb cleanupcode --help
4. Record exact commands in AGENTS.md, for example:
dotnet build MySolution.sln -c Releasejb inspectcode MySolution.sln -o=artifacts/inspectcode.sarifjb cleanupcode MySolution.sln --profile="Built-in: Full Cleanup"
5. If the repo needs stable settings, save them into the solution team-shared layer and commit YourSolution.sln.DotSettings. 6. Run jb inspectcode once, fix or triage the surfaced issues, rerun it, and return status: configured or status: improved. 7. If the repo intentionally excludes ReSharper CLT from its toolchain, return status: not_applicable.
Deliver
- explicit
jb inspectcodeandjb cleanupcodecommands - durable ReSharper settings in shared solution config
- a quality gate that surfaces issues which are then fixed, not ignored
Validate
- the target solution or project builds before solution-wide cleanup
jb inspectcodeoutput is reviewed and acted on- cleanup profiles and shared settings are explicit
- tests and the wider quality pass still run after ReSharper-driven fixes
Ralph Loop
Use the Ralph Loop for every task, including docs, architecture, testing, and tooling work.
1. 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
2. Execute one planned step and produce a concrete delta. 3. Review the result and capture findings with actionable next fixes. 4. Apply fixes in small batches and rerun the relevant checks or review steps. 5. Update the plan after each iteration. 6. Repeat until outcomes are acceptable or only explicit exceptions remain. 7. If a dependency is missing, bootstrap it or return status: not_applicable with explicit reason and fallback path.
Required Result Format
status:complete|clean|improved|configured|not_applicable|blockedplan: concise plan and current iteration stepactions_taken: concrete changes madevalidation_skills: final skills run, or skipped with reasonsverification: commands, checks, or review evidence summaryremaining: top unresolved items ornone
For setup-only requests with no execution, return status: configured and exact next commands.
Load References
- references/resharper-clt.md
- references/commands.md
- references/config.md
Example Requests
- "Add ReSharper CLI inspections to this .NET repo."
- "Run InspectCode and fix what it finds."
- "Set up CleanupCode with a shared profile."
- "Use JetBrains ReSharper command line tools in CI."
{
"version": "1.0.0",
"category": "Code Quality"
}
ReSharper Command Line Tools Commands
jb inspectcode
Run code inspections and produce a report of issues.
Basic Usage
jb inspectcode <solution|project> [options]Common Options
| Option | Description |
|---|---|
-o, --output | Output file path |
-f, --format | Output format: Sarif (default), Xml, Html, Text |
--severity | Minimum severity to report: ERROR, WARNING, SUGGESTION, HINT |
--include | Glob pattern for files to include |
--exclude | Glob pattern for files to exclude |
--project | Project name filter within the solution |
--properties | MSBuild properties (e.g., Configuration=Release) |
--dotSettings | Path to custom settings file |
--caches-home | Path to cache directory |
--no-build | Skip building the solution before inspection |
--build | Force build before inspection |
--verbosity | Output verbosity: OFF, FATAL, ERROR, WARN, INFO, VERBOSE, TRACE |
Examples
Basic inspection with SARIF output (default since 2024.1):
jb inspectcode MySolution.sln -o=artifacts/inspectcode.sarifXML output format:
jb inspectcode MySolution.sln -f=Xml -o=artifacts/inspectcode.xmlHTML report:
jb inspectcode MySolution.sln -f=Html -o=artifacts/inspectcode.htmlFilter by severity (only errors and warnings):
jb inspectcode MySolution.sln --severity=WARNING -o=artifacts/inspectcode.sarifInclude only specific files:
jb inspectcode MySolution.sln --include="src/**/*.cs" -o=artifacts/inspectcode.sarifExclude test files:
jb inspectcode MySolution.sln --exclude="**/*Tests*/**" -o=artifacts/inspectcode.sarifInspect specific project only:
jb inspectcode MySolution.sln --project=MyProject -o=artifacts/inspectcode.sarifWith explicit MSBuild configuration:
jb inspectcode MySolution.sln --properties:Configuration=Release -o=artifacts/inspectcode.sarifUse custom settings file:
jb inspectcode MySolution.sln --dotSettings=custom.DotSettings -o=artifacts/inspectcode.sarifCI-friendly with cache control:
jb inspectcode MySolution.sln --caches-home=.cache/resharper -o=artifacts/inspectcode.sarifSeverity Levels
| Level | Description |
|---|---|
ERROR | Critical issues that likely cause runtime errors |
WARNING | Issues that may cause problems or violate best practices |
SUGGESTION | Improvements that could enhance code quality |
HINT | Minor suggestions and style preferences |
---
jb cleanupcode
Apply code cleanup and reformatting based on a profile.
Basic Usage
jb cleanupcode <solution|project|files> [options]Common Options
| Option | Description |
|---|---|
--profile | Cleanup profile name (required for predictable results) |
--include | Glob pattern for files to include |
--exclude | Glob pattern for files to exclude |
--properties | MSBuild properties (e.g., Configuration=Release) |
--dotSettings | Path to custom settings file |
--caches-home | Path to cache directory |
--no-build | Skip building the solution before cleanup |
--verbosity | Output verbosity |
--disable-settings-layers | Disable specific settings layers |
Built-in Profiles
| Profile | Description |
|---|---|
Built-in: Full Cleanup | Complete cleanup including code style, formatting, and optimizations |
Built-in: Reformat Code | Only reformat without code changes |
Built-in: Reformat & Apply Syntax Style | Reformat and apply syntax style preferences |
Examples
Full cleanup on entire solution:
jb cleanupcode MySolution.sln --profile="Built-in: Full Cleanup"Reformat only (no code changes):
jb cleanupcode MySolution.sln --profile="Built-in: Reformat Code"Reformat with syntax style:
jb cleanupcode MySolution.sln --profile="Built-in: Reformat & Apply Syntax Style"Cleanup specific files:
jb cleanupcode MySolution.sln --profile="Built-in: Full Cleanup" --include="src/**/*.cs"Exclude generated files:
jb cleanupcode MySolution.sln --profile="Built-in: Full Cleanup" --exclude="**/*.g.cs;**/*.Designer.cs"Use custom cleanup profile from settings:
jb cleanupcode MySolution.sln --profile="MyCustomProfile"With explicit build configuration:
jb cleanupcode MySolution.sln --profile="Built-in: Full Cleanup" --properties:Configuration=ReleaseCI-friendly with cache:
jb cleanupcode MySolution.sln --profile="Built-in: Full Cleanup" --caches-home=.cache/resharperImportant Notes
- Always build the solution before solution-wide cleanup so binary references resolve correctly.
- Use
--no-buildonly when you are certain the solution is already built. - Custom profiles must be defined in a
.DotSettingsfile. - Changes are applied in-place; use version control to review and revert if needed.
---
Combined CI Workflow
Typical CI sequence:
# Build first
dotnet build MySolution.sln -c Release
# Inspect before cleanup
jb inspectcode MySolution.sln -o=artifacts/inspectcode-before.sarif
# Apply cleanup
jb cleanupcode MySolution.sln --profile="Built-in: Full Cleanup"
# Inspect after cleanup
jb inspectcode MySolution.sln -o=artifacts/inspectcode-after.sarif
# Run tests
dotnet test MySolution.sln -c Release --no-buildExit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| Non-zero | Failure (check output for details) |
Note: jb inspectcode returns 0 even when issues are found. Parse the output file to determine if issues exist.
ReSharper DotSettings Configuration
Settings Layer Hierarchy
ReSharper uses a layered settings system. From lowest to highest priority:
| Layer | File Pattern | Scope | Commit to VCS |
|---|---|---|---|
| Global | %APPDATA%\JetBrains\... | User machine | No |
| Solution Team-Shared | SolutionName.sln.DotSettings | Team/repo | Yes |
| Solution Personal | SolutionName.sln.DotSettings.user | User only | No |
| Project Team-Shared | ProjectName.csproj.DotSettings | Project team | Yes |
| Project Personal | ProjectName.csproj.DotSettings.user | User only | No |
For repository policy, use the Solution Team-Shared layer: YourSolution.sln.DotSettings.
---
File Structure
.DotSettings files are XML with a specific namespace:
<wpf:ResourceDictionary xml:space="preserve"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml"
xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<!-- Settings go here -->
</wpf:ResourceDictionary>---
Common Settings Categories
Inspection Severity
Control the severity level of specific inspections:
<!-- Disable an inspection -->
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedMember_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<!-- Set to warning -->
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConvertToAutoProperty/@EntryIndexedValue">WARNING</s:String>
<!-- Set to error -->
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=PossibleNullReferenceException/@EntryIndexedValue">ERROR</s:String>Severity values:
| Value | Meaning |
|---|---|
DO_NOT_SHOW | Disabled |
HINT | Hint (lowest) |
SUGGESTION | Suggestion |
WARNING | Warning |
ERROR | Error (highest) |
Code Formatting
Indentation and braces:
<!-- Use tabs instead of spaces -->
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INDENT_STYLE/@EntryValue">TAB</s:String>
<!-- Indent size -->
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/INDENT_SIZE/@EntryValue">4</s:Int64>
<!-- Brace style -->
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/BRACES_FOR_IFELSE/@EntryValue">REQUIRED_FOR_MULTILINE</s:String>Naming Rules
<!-- Private field naming: _camelCase -->
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IO/@EntryIndexedValue">IO</s:String>
<!-- Type naming conventions -->
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue"><Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /></s:String>File Header Template
<s:String x:Key="/Default/CodeStyle/FileHeader/FileHeaderText/@EntryValue">// Copyright (c) MyCompany. All rights reserved.
// Licensed under the MIT License.</s:String>---
Custom Cleanup Profiles
Define custom cleanup profiles in .DotSettings:
<!-- Define a custom profile -->
<s:String x:Key="/Default/CodeCleanup/Profiles/=MyCustomProfile/@EntryIndexedValue"><Profile name="MyCustomProfile">
<CSReformatCode>True</CSReformatCode>
<CSOptimizeUsings>
<OptimizeUsings>True</OptimizeUsings>
<EmbraceInRegion>False</EmbraceInRegion>
<RegionName></RegionName>
</CSOptimizeUsings>
<CSShortenReferences>True</CSShortenReferences>
<CSReorderTypeMembers>False</CSReorderTypeMembers>
</Profile></s:String>Use the custom profile:
jb cleanupcode MySolution.sln --profile="MyCustomProfile"---
Excluding Files and Folders
Generated Code
Mark paths as generated code (skipped by many inspections):
<s:Boolean x:Key="/Default/CodeInspection/GeneratedCode/GeneratedFileMasks/=*_002Eg_002Ecs/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/GeneratedCode/GeneratedFileMasks/=*_002EDesigner_002Ecs/@EntryIndexedValue">True</s:Boolean>Skip Entire Folders
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGeneratedCode_002Ecs/@EntryIndexedValue">ExplicitlyExcluded</s:String>Suppress Warnings in Code
In-code suppression (add to the generated .DotSettings when appropriate):
// ReSharper disable once UnusedMember.Global
public void SomeMethod() { }
// ReSharper disable UnusedMember.Global
// ... multiple members
// ReSharper restore UnusedMember.Global---
Complete Example
Minimal team-shared settings file:
<wpf:ResourceDictionary xml:space="preserve"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml"
xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<!-- File header -->
<s:String x:Key="/Default/CodeStyle/FileHeader/FileHeaderText/@EntryValue">// Copyright (c) MyCompany. All rights reserved.</s:String>
<!-- Treat possible null reference as error -->
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=PossibleNullReferenceException/@EntryIndexedValue">ERROR</s:String>
<!-- Mark generated files -->
<s:Boolean x:Key="/Default/CodeInspection/GeneratedCode/GeneratedFileMasks/=*_002Eg_002Ecs/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/GeneratedCode/GeneratedFileMasks/=*_002EDesigner_002Ecs/@EntryIndexedValue">True</s:Boolean>
<!-- Private field prefix -->
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue"><Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /></s:String>
</wpf:ResourceDictionary>---
EditorConfig Integration
ReSharper respects .editorconfig for many settings. Prefer .editorconfig for settings that should apply to all tools:
# .editorconfig
root = true
[*.cs]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
# ReSharper-specific
resharper_csharp_braces_for_ifelse = required_for_multiline
resharper_csharp_braces_for_for = required_for_multilineUse .DotSettings for settings not covered by .editorconfig or for ReSharper-specific features like inspection severities and custom cleanup profiles.
---
CLI Settings Override
Override settings from the command line:
# Use a custom settings file
jb inspectcode MySolution.sln --dotSettings=ci-strict.DotSettings -o=artifacts/inspectcode.sarif
# Disable specific settings layers
jb cleanupcode MySolution.sln --profile="Built-in: Full Cleanup" --disable-settings-layers=SolutionPersonal---
Best Practices
1. Commit YourSolution.sln.DotSettings to version control. 2. Never commit .DotSettings.user files (add to .gitignore). 3. Keep cleanup profiles in the team-shared layer. 4. Document the expected profile in AGENTS.md. 5. Use .editorconfig for cross-tool settings. 6. Use .DotSettings for ReSharper-specific inspection and cleanup configuration. 7. Review settings changes in pull requests like any other code.
JetBrains ReSharper Command Line Tools
What This Skill Uses
This skill standardizes on the free official JetBrains package JetBrains.ReSharper.GlobalTools, exposed through the jb command.
Primary commands:
jb inspectcodejb cleanupcode
Use this skill when the repo intentionally wants stronger ReSharper inspections and cleanup than the default SDK analyzers alone.
Official Docs
- ReSharper Command Line Tools:
- https://www.jetbrains.com/help/resharper/ReSharper_Command_Line_Tools.html
- CleanupCode:
- https://www.jetbrains.com/help/resharper/CleanupCode.html
- InspectCode:
- https://www.jetbrains.com/help/resharper/InspectCode.html
Installation Paths
Preferred repo-local install for reproducible CI:
dotnet new tool-manifest
dotnet tool install JetBrains.ReSharper.GlobalTools
dotnet tool restoreGlobal fallback:
dotnet tool install --global JetBrains.ReSharper.GlobalToolsVerify the commands:
jb inspectcode --help
jb cleanupcode --helpShared Settings
If the repo uses ReSharper CLI as a real gate, keep durable settings in the solution team-shared layer and commit the resulting file:
YourSolution.sln.DotSettings
This is where cleanup profiles and many inspection settings become durable for the rest of the team.
Do not rely on user-specific settings files for repo policy.
InspectCode
Use InspectCode to surface problems that must then be fixed.
Basic run:
jb inspectcode YourSolution.sln -o=artifacts/inspectcode.sarifImportant details from the official docs:
- starting with ReSharper 2024.1, SARIF is the default output format
- XML is still available through
-f="xml" - output path is controlled through
-oor--output
Examples:
jb inspectcode YourSolution.sln -o=artifacts/inspectcode.sarif
jb inspectcode YourSolution.sln -f=Html -o=artifacts/inspectcode.html
jb inspectcode YourSolution.sln -f=Xml -o=artifacts/inspectcode.xmlUse InspectCode before and after cleanup or code fixes so you can prove the issue count actually moved in the right direction.
CleanupCode
Use CleanupCode to apply a selected cleanup profile over a solution, project, or bounded file set.
Solution-wide run:
jb cleanupcode YourSolution.sln --profile="Built-in: Full Cleanup"Focused reformat-only run:
jb cleanupcode YourSolution.sln --profile="Built-in: Reformat Code"Useful profile options from the official docs:
Built-in: Full CleanupBuilt-in: Reformat CodeBuilt-in: Reformat & Apply Syntax Style
Useful scope controls:
--include--exclude
Example:
jb cleanupcode YourSolution.sln --profile="Built-in: Reformat & Apply Syntax Style" --include="src/**/*.cs"Important official note:
- build the solution first when running solution-wide cleanup, otherwise binary references may not resolve correctly
Recommended Flow
1. Build the solution in Release. 2. Run jb inspectcode. 3. Fix or clean up the surfaced issues. 4. Run jb cleanupcode with an explicit profile. 5. Run jb inspectcode again. 6. Run the repo's analyzers and tests.
Gate Policy
If the repo enables ReSharper CLI as a quality gate:
- surfaced issues are not informational only
- the task is not done while the agreed blocking issues remain
- cleanup must be followed by tests and broader verification
Do not stop at generating a SARIF file.