
Claude Skills by mrc4tt
github.com/mrc4ttClean up the local workspace after a dev branch has been merged into main. Verifies the current dev branch is fully merged into origin/main, then switches to main, pulls the latest, deletes the local dev branch, and deletes the remote dev branch if it still exists. STOPS and warns the user if the current branch is not yet merged. Triggers: cleanup workspace, cleanup branch, delete merged branch, finish dev branch, post-merge cleanup
Convert an existing find-XXXX SKILL.md into a preprocessor Python script, updating configs/<GAMEVER>.yaml and removing the old SKILL.md. Covers xref-string-based and LLM_DECOMPILE-based discovery patterns.
Create an Agent SKILL.md fallback for an existing find-XXXX finder that relies on a fragile discovery foundation — above all LLM_DECOMPILE (patterns C/D/E), which matches the decompiled shape of a predecessor function against a stored reference and breaks when a symbol is inlined or de-inlined in a way the reference does not cover. The generated fallback coexists with the preprocessor and runs only when it returns failure, recovering every target robustly by decompiling the predecessor and fo...
Create a new cpp_tests entry for validating a C++ interface vtable layout against binary reference YAMLs. Creates the .cpp test file in cpp_tests/ and appends a configs/<GAMEVER>.yaml entry under cpp_tests:. Use when a user asks to add vtable layout validation for a new hl2sdk_cs2 interface class.
Create a GitHub pull request from staged task changes or an already-committed current branch. Deliver source/config/ reference changes together with their computed source-owned `bin_artifacts` closure. PR validation routing is owned by the default-branch trusted workflow; snapshots, gamedata, and manifests are Release-derived only.
Create a new find-XXXX preprocessor Python script from scratch (no existing SKILL.md), add configs/<GAMEVER>.yaml skill and symbol entries. Covers xref-string-based and LLM_DECOMPILE-based discovery patterns. Use when a GitHub issue or user instruction specifies a new function to find.
Batch-dump vtables from IDA Pro MCP by searching mangled symbol patterns, then write a merged YAML file beside the binary. Use this skill when you need to find and export all vtables matching a name pattern (e.g., all GameSystem vtables) in one shot. Triggers: dump vtables, batch vtable dump, export vtables, dump all vtables matching pattern
Agent fallback for BotAdd_CommandHandler (auto-generated, category: func). Locate CCSBotManager::BotAddCommand in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: BotAdd_CommandHandler, CCSBotManager::BotAddCommand
Agent fallback for BotKill_CommandHandler (auto-generated, category: func). Locate CCSBotManager::BotKillCommand in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: BotKill_CommandHandler, CCSBotManager::BotKillCommand
Locate BotProfile::Aggression in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::Aggression" (symbol BotProfile_Aggression). This is a VIRTUAL function - resolve the BotProfile::Aggression vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - never assume identical indices. Trigger: BotProfile_Aggression, B...
Locate BotProfile::AttackDelay in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::AttackDelay" (symbol BotProfile_AttackDelay). This is a VIRTUAL function - resolve the BotProfile::AttackDelay vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - never assume identical indices. Trigger: BotProfile_AttackDel...
Locate BotProfile::Cost in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::Cost" (symbol BotProfile_Cost). This is a VIRTUAL function - resolve the BotProfile::Cost vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - never assume identical indices. Trigger: BotProfile_Cost, BotProfile::Cost
Locate BotProfile::Difficulty in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::Difficulty" (symbol BotProfile_Difficulty). This is a VIRTUAL function - resolve the BotProfile::Difficulty vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - never assume identical indices. Trigger: BotProfile_Difficulty, B...
Locate BotProfile::LookAngleDampingAttacking in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::LookAngleDampingAttacking" (symbol BotProfile_LookAngleDampingAttacking). This is a VIRTUAL function - resolve the BotProfile::LookAngleDampingAttacking vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - never...
Locate BotProfile::LookAngleMaxAccelAttacking in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::LookAngleMaxAccelAttacking" (symbol BotProfile_LookAngleMaxAccelAttacking). This is a VIRTUAL function - resolve the BotProfile::LookAngleMaxAccelAttacking vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - n...
Locate BotProfile::LookAngleStiffnessAttacking in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::LookAngleStiffnessAttacking" (symbol BotProfile_LookAngleStiffnessAttacking). This is a VIRTUAL function - resolve the BotProfile::LookAngleStiffnessAttacking vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms...
Locate BotProfile::ReactionTime in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::ReactionTime" (symbol BotProfile_ReactionTime). This is a VIRTUAL function - resolve the BotProfile::ReactionTime vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - never assume identical indices. Trigger: BotProfile_React...
Locate BotProfile::Skill in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::Skill" (symbol BotProfile_Skill). This is a VIRTUAL function - resolve the BotProfile::Skill vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - never assume identical indices. Trigger: BotProfile_Skill, BotProfile::Skill
Locate BotProfile::Teamwork in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::Teamwork" (symbol BotProfile_Teamwork). This is a VIRTUAL function - resolve the BotProfile::Teamwork vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - never assume identical indices. Trigger: BotProfile_Teamwork, BotProfile:...
Locate BotProfile::WeaponPref in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::WeaponPref" (symbol BotProfile_WeaponPref). This is a VIRTUAL function - resolve the BotProfile::WeaponPref vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - never assume identical indices. Trigger: BotProfile_WeaponPref, B...
Locate BotProfile::WeaponPrefCount in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BotProfile::WeaponPrefCount" (symbol BotProfile_WeaponPrefCount). This is a VIRTUAL function - resolve the BotProfile::WeaponPrefCount vtable via RTTI and identify the slot, then emit the slot. Verify by xrefs from expected call sites. vtable slots commonly differ between platforms - never assume identical indices. Trigger: BotP...
Locate BuyState::m_doneBuying, exposed as BuyState::DoneBuying, in the loaded CS2 server binary. Emit a structmember offset, never a function or vtable slot. Trigger: BuyState_DoneBuying, BuyState::DoneBuying
Locate BuyState::m_isInitialDelay, exposed as BuyState::InitialDelay, in the loaded CS2 server binary. Emit a structmember offset, never a function or vtable slot. Trigger: BuyState_InitialDelay, BuyState::InitialDelay
Locate BuyState::OnUpdate in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "BuyState::OnUpdate" (symbol BuyState_OnUpdate). This is a non-virtual function - emit a byte signature (func_sig), not an offset. Locate it via cross-references, distinctive constants/strings in its body, or callers of related symbols; verify by decompilation before committing to a candidate. Trigger: BuyState_OnUpdate, BuyState::OnUpdate
Agent fallback for CAM_Command_CommandHandler (auto-generated, category: func). Locate CAM_Command_CommandHandler in the CS2 client module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CAM_Command_CommandHandler, CAM_Command_CommandHandler
Find and identify the CAttributeList_SetOrAddAttributeValueByName function in CS2 server binary using IDA Pro MCP. Use this skill when reverse engineering CS2 server.dll or libserver.so to locate the econ attribute-list workhorse that sets an existing float attribute by name or appends a new one. Resolved via a durable caller anchor: the weapon paint-kit/wear/seed/kill-eater applier function, which is itself located by the literal econ keyvalue-system strings "set item texture prefab" / "set ...
Agent fallback for CBaseAnimGraph_GetAnimationController-decompiles (auto-generated, category: func). Locate CBaseAnimGraph::GetAnimationController in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseAnimGraph_GetAnimationController-decompiles, CBaseAnimGraph::GetAnimationController
Agent fallback for CBaseAnimGraph_GetAnimationController (auto-generated, category: func). Locate CBaseAnimGraph::GetAnimationController in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseAnimGraph_GetAnimationController, CBaseAnimGraph::GetAnimationController
Find and identify the CGameSceneNode::GetSkeletonInstance virtual function's vtable slot, plus the CBaseAnimGraph::m_skeletonInstance and CSkeletonInstance::m_animationController struct member offsets, in the CS2 server binary using IDA Pro MCP. Use this skill when reverse engineering server.dll or libserver.so to locate the scene-node accessor that returns a node's CSkeletonInstance* (or null if the node isn't a skinned model), and the two related struct-member offsets used by CounterStrikeS...
Agent fallback for CBaseCombatCharacter_OnKilled (auto-generated, category: func). Locate CBaseCombatCharacter::OnKilled in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseCombatCharacter_OnKilled, CBaseCombatCharacter::OnKilled
Agent fallback for CBaseEntity_Activate (auto-generated, category: vfunc). Locate CBaseEntity::Activate in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_Activate, CBaseEntity::Activate
Agent fallback for CBaseEntity_AddChangeAccessorPath (auto-generated, category: vfunc). Locate CBaseEntity::AddChangeAccessorPath in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_AddChangeAccessorPath, CBaseEntity::AddChangeAccessorPath
Agent fallback for CBaseEntity_CollisionRulesChanged (auto-generated, category: vfunc). Locate CBaseEntity::CollisionRulesChanged in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_CollisionRulesChanged, CBaseEntity::CollisionRulesChanged
Agent fallback for CBaseEntity_DispatchSpawn-decompiles (auto-generated, category: func). Locate CBaseEntity::DispatchSpawn in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_DispatchSpawn-decompiles, CBaseEntity::DispatchSpawn
Agent fallback for CBaseEntity_DrawDebugTextOverlays (auto-generated, category: vfunc). Locate CBaseEntity::DrawDebugTextOverlays in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_DrawDebugTextOverlays, CBaseEntity::DrawDebugTextOverlays
Agent fallback for CBaseEntity_EmitSoundFilter (auto-generated, category: func). Locate CBaseEntity::EmitSoundFilter in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_EmitSoundFilter, CBaseEntity::EmitSoundFilter
Locate CBaseEntity_EmitSoundFilter_SoundName in CS2 server.dll / libserver.so via IDA Pro MCP and emit a fresh, minimal-unique signature or offset for the local gamedata entry "CBaseEntity_EmitSoundFilter_SoundName" (symbol CBaseEntity_EmitSoundFilter_SoundName). The gamedata consumer stores a BYTE SIGNATURE for this entry - ALWAYS emit the func schema (func_sig), never vfunc fields. The function may be virtual; locating it via the owning class vtable (RTTI) is a fine strategy, but once found...
Agent fallback for CBaseEntity_FullEdictChanged (auto-generated, category: vfunc). Locate CBaseEntity::FullEdictChanged in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_FullEdictChanged, CBaseEntity::FullEdictChanged
Find and identify the CBaseEntity_GetChangeAccessorPathInfo_1 virtual function in CS2 binary using IDA Pro MCP. Use this skill when reverse engineering CS2 server.dll or libserver.so to locate the second GetChangeAccessorPathInfo override by scanning CBaseEntity vtable slots near the known CBaseEntity_GetChangeAccessorPathInfo_2 slot for an implementation identical to CBaseEntity_GetChangeAccessorPathInfo_2. Trigger: CBaseEntity_GetChangeAccessorPathInfo_1
Agent fallback for CBaseEntity_GetChangeAccessorPathInfo_2 (auto-generated, category: vfunc). Locate CBaseEntity::GetChangeAccessorPathInfo_2 in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_GetChangeAccessorPathInfo_2, CBaseEntity::GetChangeAccessorPathInfo_2
Agent fallback for CBaseEntity_GetEyeAngles (auto-generated, category: vfunc). Locate CBaseEntity::GetEyeAngles in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_GetEyeAngles, CBaseEntity::GetEyeAngles
Agent fallback for CBaseEntity_GetHammerUniqueId (auto-generated, category: vfunc). Locate CBaseEntity::GetHammerUniqueId in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_GetHammerUniqueId, CBaseEntity::GetHammerUniqueId
Agent fallback for CBaseEntity_GetScriptDescInternal (auto-generated, category: func). Locate CBaseEntity::GetScriptDescInternal in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_GetScriptDescInternal, CBaseEntity::GetScriptDescInternal
Agent fallback for CBaseEntity_ModifyOrAppendCriteria (auto-generated, category: vfunc). Locate CBaseEntity::ModifyOrAppendCriteria in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_ModifyOrAppendCriteria, CBaseEntity::ModifyOrAppendCriteria
Agent fallback for CBaseEntity_NetworkStateChanged-inlined (auto-generated, category: vfunc). Locate CBaseEntity::NetworkStateChanged in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_NetworkStateChanged-inlined, CBaseEntity::NetworkStateChanged
Agent fallback for CBaseEntity_NetworkStateChanged-noinline (auto-generated, category: vfunc). Locate CBaseEntity::NetworkStateChanged in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_NetworkStateChanged-noinline, CBaseEntity::NetworkStateChanged
Agent fallback for CBaseEntity_NetworkStateChangedLog (auto-generated, category: vfunc). Locate CBaseEntity::NetworkStateChangedLog in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_NetworkStateChangedLog, CBaseEntity::NetworkStateChangedLog
Agent fallback for CBaseEntity_OnRestore (auto-generated, category: vfunc). Locate CBaseEntity::OnRestore in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_OnRestore, CBaseEntity::OnRestore
Agent fallback for CBaseEntity_OnSetDormant (auto-generated, category: vfunc). Locate CBaseEntity::OnSetDormant in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_OnSetDormant, CBaseEntity::OnSetDormant
Agent fallback for CBaseEntity_OnTakeDamage (auto-generated, category: vfunc). Locate CBasePlayerPawn::OnTakeDamage in the CS2 server module via IDA Pro MCP and emit a fresh, minimal-unique artifact. The deterministic preprocessor could not resolve this symbol on the current gamever - your job is the re-sign. Trigger: CBaseEntity_OnTakeDamage, CBasePlayerPawn::OnTakeDamage