Use when semantic refactoring is needed in Rider-supported solutions and projects, including .NET/C#, F#, VB, C++, Unity, Unreal Engine, XAML, Razor, and other GameDev or mixed-language projects. Trigger when edits must update declarations and usages across IDE-resolved references — rename symbols, move types or namespaces, safe-delete unused code, extract interface/base class/method, change signatures, or reorganize namespaces. Do not use for file-only moves, config keys, strings, comments, pr…
Use when semantic refactoring is needed in Rider-supported solutions and projects, including .NET/C#, F#, VB, C++, Unity, Unreal Engine, XAML, Razor, and other GameDev or mixed-language projects.
Trigger when edits must update declarations and usages across IDE-resolved references — rename symbols, move types or namespaces, safe-delete unused code, extract interface/base class/method, change signatures, or reorganize namespaces.
Do not use for file-only moves, config keys, strings, comments, prose-only edits, generated output, or logic changes with unchanged names/signatures.
Stronger alternatives
This repository is archived — consider an actively maintained alternative.
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Claude CodeNot declared
CursorNot declared
CodexNot declared
GitHub CopilotNot declared
WindsurfNot declared
Gemini CLINot declared
ClineNot declared
OpenCodeNot declared
Repository health
Stars20
LicenseLICENSE
Default branchmaster
Open issues1
Status
Archived
Skill metadata
Parsed from SKILL.md frontmatter.
Allowed toolsexecute_tool
More metadata
author
JetBrains
Package contents
Files included with this skill beyond the listing page.
skill mdSKILL.md5,491 B
docsSUMMARY.md608 B
History
First seen on skills.sh
First recorded snapshot · 5 installs
SKILL.md
Code Refactoring
Rider/ReSharper semantic refactorings on a solution open in Rider. Each tool resolves the target through the IDE index and rewrites every reference — nameof, <see cref>, XAML/Razor bindings, C++/Unreal — in one call. Always prefer the tool over a text edit: grep-and-replace looks done but silently misses these and leaves the solution broken.
Invoke a tool
Call through execute_tool — the first token is the exact tool name, then --flag value pairs. Map each refactor to exactly one tool and issue it directly; the required flags are below, so no lookup is needed first.
Change a method signature (add/remove/reorder params)
changeapisignature
--filePath --methodName --parameters
Move a type to another namespace
movetypeto_namespace
--filePath --typeName --targetNamespace
Sync namespaces to folders
reorganize_namespaces
--scope
Delete a symbol only if unused
safe_delete
--filePath --symbolName
Extract an interface
extract_interface
--filePath --typeName --interfaceName --members
Extract a base class
extractbaseclass
--filePath --typeName --baseClassName --members
Extract a method (C# only)
extract_method
--filePath --startLine --endLine --methodName
--symbolName/--typeName accept Name or Type.Member. Every tool also takes --preview true (analysis only, no writes) — add it first for public-API or many-call-site changes, then re-issue without it to apply.
changeapisignature: always pass a bare--methodName (a qualified Type.Member can report "not found") and--declaringType <FullyQualifiedType> on the very first call — don't wait for an ambiguous_method error; the method is usually on an interface/impl pair, and --declaringType is harmless when it isn't. --parameters is a single-quoted JSON array = the complete new parameter list in order: an existing name is kept/moved, an omitted one is removed, a new name needs type (and optional defaultValue inserted at call sites). Disambiguate remaining overloads with --currentSignature '["int","string"]' (the CURRENT parameter types).
extractinterface/extractbase_class--members is a single-quoted JSON array of member names, e.g. '["IsMatch","Merge"]' — not a comma-separated list.
A multi-part request ("rename Xand move it to Y") is one tool per step, in sequence — never folded into one call.
Only for a tool not in the table, or a genuinely unclear parameter, read reference/tools/<tool>.md once (index: reference/tools.md). There is no --describe.
Rules
Use the tool; never hand-edit or fall back before a real call has run.Missing required parameters: … (add them from the table), Tool '<x>' not found (wrong name — copy from the table), and conflict/ambiguous responses are all fixable input mistakes — correct the argument and retry. Fall back to a text edit only if execute_tool isn't in your toolset, or a call actually ran and failed in a way no input change can fix.
Trust the success signal — never verify, never build. On success the response's touched/affects/files counts are the confirmation. Do not re-read files, re-run grep/rg, diff the tree, or run the build/tests "to catch fallout" — a build never changes an already-applied refactor, it only burns tokens. Build or test only if the user explicitly asked. The one thing worth surfacing: a count of 1 for a type/method/property/field/namespace (declaration only, no callers).
Don't retry blindly — change an argument between calls. Flags are camelCase; pass real values or omit optional ones (no ""/"/"/fake-path placeholders), and copy paths and names verbatim from search* / getsymbol_info.
Library / external symbols can't be refactored — surface to the user; the change must be made upstream.
Conflicts, ambiguity, limits
A non-empty conflicts list means no files changed (except reorganize_namespaces, whose conflicts are advisory and still apply). An ambiguous/candidates list means the name matched several symbols — narrow it (Type.Member, or the current overload types). Full conflict-kind handling, escalation thresholds, and known gaps (strings/comments, <see cref>, file-not-moved, call-site reflow) are in [reference/conflicts.md](reference/conflicts.md) — read it only when a response actually contains conflicts.