<< All versions
Skill v1.0.1
currentAutomated scan100/100pardeike/decompilerserver/decompiler-mcp
+3 new
──Details
PublishedOctober 26, 2026 at 01:18 AM
Content Hashsha256:cf97681f209881d5...
Git SHA42c3f9106c20
Bump Typepatch
──Files
Files (1 file, 5.7 KB)
SKILL.md5.7 KBactive
SKILL.md · 65 lines · 5.7 KB
version: "1.0.1" name: decompiler-mcp description: Use when working with the DecompilerServer MCP server to inspect, search, decompile, analyze, or compare .NET assemblies, especially foreign code such as Unity/RimWorld assemblies, third-party DLLs, game binaries, or version-to-version assembly diffs. Prefer this skill when choosing the right DecompilerServer tool sequence and avoiding premature shell fallbacks.
DecompilerServer MCP
Use DecompilerServer as the primary source of truth for loaded .NET assemblies. Do not guess member IDs or fall back to shell scans after one failed symbol lookup; use the discovery and diagnostic tools first.
Default Workflow
- Load or confirm context:
load_assemblywithassemblyPath, orgameDirplusassemblyFilefor Unity layouts.statusfor readiness and the current context. Uselist_contexts(includeRegistered: true, limit, cursor, filter)only to discover registered aliases. PassingcontextAliasactivates a registered alias on demand.- Use
get_server_statsonly when cache, index, or performance diagnostics matter.
- Discover symbols:
- Use
search_symbolsfirst for fragments or when unsure whether a name is a type or member. - Use
resolve_member_idfirst for fully-qualified or XML-doc-like guesses such asNamespace.Type.Member,Namespace.Type:Member, orM:Namespace.Type.Member. - Use
search_typeswhen looking only for types. - Use
search_memberswhen looking only for methods, fields, properties, or events.
- Inspect type surface:
- Use
list_membersafter resolving a type (get_members_of_typeis its compatibility alias). - Prefer
mode: "signatures"for orientation andmode: "full"only when extra metadata is needed. - Generated members and accessors are hidden by default; use
includeCompilerGenerated: truewhen those are the subject of inspection.
- Read code:
- Use
get_decompiled_sourcefor complete focused source. - Use
plan_chunkingandget_source_slicefor large types or methods. - Batch source defaults to 50 lines per member (
maxLinesPerMember). Partial entries havehasMoreandnextStartLine; continue with a source slice. Outertruncatedincludes partial members;budgetTruncatedspecifically means the total character cap was reached.
- Analyze relationships:
- Use
find_callers,find_callees, andfind_usagesfor call/use questions. - Callers/usages default to
scope: "assembly"; usescope: "workspace"for all currently loaded contexts. InspectsearchedContexts; deferred aliases are not activated by that query. - Callees link exact members in other loaded contexts with
resolution: "workspace"; external targets retain referenced assembly identity. - Use
find_base_types,find_derived_types,get_overrides, andget_implementationsfor inheritance questions. - Type metadata outlines have addressable child IDs and
limit/cursorpaging;maxDepth: 0omits children, and larger values show the direct member level. - Use
get_ilbefore proposing transpiler anchors;suggest_transpiler_targetsshould be treated as a real-IL hint list, not a substitute for reading IL.
- Compare versions:
- Use
compare_contextsfor structural alias-level overview. - Use
compare_symbolsfor type/member drill-down. - Use
compare_symbolswithcompareMode: "body"only for method bodies.
Recovery Rules
- If it returns
context_not_loadedormember_context_mismatch, follow the assembly-loading hint and retry the canonical ID in its owning context. Do not search the MVID or kind suffix as a symbol. - If it returns
ambiguous_member, choose a candidate ID or supply the parameter types. - If a member-based tool returns
type_not_found, callsearch_typesorsearch_symbolswith the type fragment. - If it returns
member_not_found, inspecterror.details.candidatesand call the suggestedget_members_of_typeorsearch_symbols. - If
search_symbolsreturnsdiagnostic.code: "member_guess_unresolved", the type resolved but the member guess did not; inspect the returned direct members or call the suggestedlist_members. - If it returns
wrong_symbol_kind, switch to the tool for the actual kind instead of retrying the same call. - If a
memberIdcontains an MVID, follow-up calls normally do not needcontextAlias. - Use explicit
contextAliaswhen working from human-entered symbols or when multiple versions are loaded and no canonicalmemberIdhas been resolved yet.
Tool Choice Bias
- Output is compact by default. Complete source is in
data.code; omitted source language means C#. Source slices retainstartLine,endLine, andtotalLines. Use structured ILinstructions, and useerror.details/error.hintsfor recovery. Ordinary member summaries identify symbols withdeclaringType+name; type summaries retainfullName. - Extended output is a user startup configuration (
DECOMPILER_RESPONSE_MODE=extended), not a tool argument or an agent-controlled setting.
search_symbolsbeats broad shell search for unknown names.resolve_member_idbeatssearch_symbolsfor fully-qualified stale method guesses because its errors return typed candidates.list_membersbeats guessing conventional method names.get_source_slicebeats dumping huge source into context when line ranges are enough.get_ilbeats external IL tools for first-pass opcode inspection; uselimit/cursororstartOffset/endOffsetfor large methods.find_calleesreturns callee-shaped fields. PrefertargetMemberId,symbol,opcode,offset, andresolutionover legacyinMember/inTypealiases.- Shell tools are a last resort for files outside loaded assemblies or for validating packaging/runtime environment, not for ordinary symbol exploration.