agentleFS
JetBrainsKnown publisherJetBrains/rider-skills/skills/navigating-code/SKILL.md

navigating-code

Skill40 starsChanged 30 days agoApache-2.0View on GitHub

Use when you must know where a symbol is used or implemented in a solution open in Rider — .NET/C#, F#, VB, C++, Unity, Unreal Engine, XAML, Razor, or mixed-language projects. Trigger before changing a method, property, field, type or interface, when you trace callers, when you look for the classes that implement an interface or the overrides of a virtual member, and whenever you would otherwise grep for an identifier. Do not use for plain text (strings, comments, config keys, log messages) or to find a file by name.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Call through execute_tool: the first token is the tool name, then --flag value pairs.

    line 23
  2. Very specific:

    If your client lists the Rider tools directly, call find_usages and find_implementations by name with the same arguments.

    line 30
  3. Very specific:

    You do not know the file: call search_symbol first, then pass its filePath.

    line 35
  4. Distinctive:

    Ask about several symbols at once: When you need the usages or implementations of several symbols, issue all the calls in one turn, not one …

    line 52

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Navigating Code

Rider answers "who uses this?" and "who implements this?" from its reference index. One call replaces a grep-and-read loop, and it skips same-name symbols, comments and strings that grep returns.

Pick the tool

QuestionToolRequired flags
Where is a symbol declared?search_symbol--q
Who uses / calls / reads / writes this symbol?find_usages--filePath + --symbolName or --line
Which .NET classes implement this interface or derive from this class?find_implementations--filePath + --symbolName or --line
Which .NET members override or implement this virtual, abstract or interface member?find_implementations--filePath + --symbolName or --line
Where does this text occur (strings, comments, config)?search_text / search_regex--q

Call through execute_tool: the first token is the tool name, then --flag value pairs.

execute_tool(command="find_usages --filePath API/Services/OrderService.cs --symbolName OrderService.Submit")
execute_tool(command="find_implementations --filePath Domain/IPaymentGateway.cs --symbolName IPaymentGateway")

If your client lists the Rider tools directly, call find_usages and find_implementations by name with the same arguments.

Identify the symbol

  • You know the declaring file: pass --filePath and --symbolName as Name or Type.Member.
  • You do not know the file: call search_symbol first, then pass its filePath.
  • Overloads, or a symbol you see at a call site: pass --filePath and --line of that declaration or usage, plus --symbolName (or --column) to pick the symbol on the line. This works in any file that mentions the symbol.
  • C++: pass --line together with --symbolName as Type::Member. The qualifier picks the member on the line, such as the constructor in AMyActor::AMyActor(). Without --line, a qualified C++ name does not resolve. find_implementations does not support C++ yet, so it returns an error for a C++ symbol.

Read the result

  • find_usages returns {symbol, declarations, files: [{file, usages: [{line, column, text, kinds, member}]}], total, more, note}. text is the source line, so do not open the file only to see the call. kinds tells how the symbol is used (for example Invocation, Read, Write). member names the caller.
  • find_implementations returns {symbol, declarations, implementations: [{symbol, file, line, column}], total, more, note}. The list is recursive: it holds indirect inheritors and overrides too.
  • A note means that the IDE is still indexing, so the list can be incomplete. Say so, or retry later.
  • more=true means that --limit (default 100) cut the list. Narrow with --paths '["src/Api/**"]' before you raise the limit.

Rules

  1. Prefer these tools to grep for identifiers. Grep finds text, not references: it misses usages through aliases, nameof, XAML/Razor bindings and C++ macros, and it adds same-name symbols.
  2. Fix the input, then retry. "not declared in" means the file does not declare the symbol: pass the declaring file from search_symbol, or pass --line. "has N overloads" lists the line of each overload: pass --line of the one you mean. Do not retry with the same arguments.
  3. Fall back to text search only when the tool cannot answer. The cases are a timeout (the tools stop after 60 seconds), a file outside the solution, a language that Rider does not parse, and find_implementations on a C++ symbol. Then say that the result comes from text search.
  4. Ask about several symbols at once. When you need the usages or implementations of several symbols, issue all the calls in one turn, not one call per turn.
  5. Use the counts. total answers "how many callers?" without reading the files. Read a usage only when you need the code around it.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.