[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DAFD6QFD2NXGTJWC5Q8PEN":3,"skill-same:01M6DAFD6QFD2NXGTJWC5Q8PEN":58},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":14,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":43,"install":44,"resources":57},"01M6DAFD6QFD2NXGTJWC5Q8PEN","game-find-anticheat",null,"Use when asked to identify, map, locate, or analyze anti-cheat components in a game process or binary. Applies both to static pre-launch analysis and runtime behavioral identification.","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Flibrary\u002Fskills\u002Fgame-find-anticheat\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"game","find","game find anticheat","launch","components","analysis","analyze","process","use","behavioral","map","runtime","binary","cheat","2026-11-10 10:12:30",false,"---\nname: game-find-anticheat\ndescription: Use when asked to identify, map, locate, or analyze anti-cheat components in a game process or binary. Applies both to static pre-launch analysis and runtime behavioral identification.\n---\n\n# Anti-Cheat Identification\n\n## Overview\nSystematic identification of which anti-cheat system is present, what it monitors, and where its key logic lives. Work static-first, then live.\n\n## Known AC Signatures\n\n| Anti-Cheat | Strings \u002F Names | Kernel Driver | Key Imports |\n|---|---|---|---|\n| EasyAntiCheat | `EasyAntiCheat`, `EAC`, `eac_launcher` | `EasyAntiCheat.sys`, `EasyAntiCheat_EOS.sys` | NtQueryInformationProcess, ObRegisterCallbacks |\n| BattlEye | `BattlEye`, `BEService`, `BEClient` | `BEDaisy.sys` | MmGetSystemRoutineAddress |\n| Vanguard | `vanguard`, `vgc`, `vgk` | `vgk.sys` | kernel IOCTL-heavy |\n| FACEIT | `faceit`, `FACEITClient` | `faceit.sys` | NtSetInformationProcess |\n| PunkBuster | `PunkBuster`, `PnkBstr` | none (user-mode only) | socket, WSA* |\n| VAC (Steam) | `VAC`, `SteamService` | none | loaded via Steam |\n| Ricochet (CoD) | `ricochet`, `RICOCHET` | Activision kernel driver | |\n| nProtect | `GameGuard`, `nProtect` | `npggsvc.sys` | |\n\n## Pipeline\n\n### Phase 1 — Static Identification\n```python\n# Binary Ninja\nlist_strings_filter(pattern=\"EasyAntiCheat|BattlEye|vanguard|faceit|PunkBuster|ricochet|GameGuard\")\nlist_imports()      # look for: NtQuerySystemInformation, ObRegisterCallbacks,\n                    # MmGetSystemRoutineAddress, PsSetCreateProcessNotifyRoutine\nsearch_functions_by_name(\"anti\")\nsearch_functions_by_name(\"detect\")\nsearch_functions_by_name(\"cheat\")\n```\n\n### Phase 2 — Live Process Identification\n```javascript\n\u002F\u002F Frida: execute_in_session — find AC modules loaded in game\nconst acNames = ['eac','battleye','vanguard','ricochet','faceit','nprotect','gameguard'];\nProcess.enumerateModules()\n    .filter(m => acNames.some(s => m.name.toLowerCase().includes(s)))\n    .forEach(m => console.log(\"[AC MODULE]\", m.name, m.base, m.size.toString(16)));\n```\n\n### Phase 3 — Kernel Driver Detection\n```python\n# Cheat Engine MCP\nenum_modules()      # list all loaded modules including kernel drivers\n# Look for .sys files matching the AC driver table above\n```\n\nOr via Frida (requires elevated session):\n```javascript\n\u002F\u002F List kernel modules via NtQuerySystemInformation SystemModuleInformation\n\u002F\u002F Requires SYSTEM privileges — use HyperDbg for full kernel view\n```\n\n### Phase 4 — Map AC Logic\nOnce the AC module is identified:\n```python\n# Binary Ninja — select the AC DLL\nselect_binary(binary_path=\"EasyAntiCheat.dll\")\nlist_functions()\nsearch_functions_by_name(\"scan\")\nsearch_functions_by_name(\"init\")\ndecompile_function(name=\"init\")     # Ghidra — understand what it sets up\nget_xrefs_to(symbol=\"ObRegisterCallbacks\")   # find kernel callback setup\n```\n\n### Phase 5 — Behavioral Monitoring\n```javascript\n\u002F\u002F Frida: watch what the AC actually checks at runtime\nconst suspicious = [\n    \"IsDebuggerPresent\", \"CheckRemoteDebuggerPresent\",\n    \"NtQueryInformationProcess\", \"NtQuerySystemInformation\",\n    \"OpenProcess\", \"ReadProcessMemory\"\n];\nsuspicious.forEach(api => {\n    const addr = Module.getExportByName(null, api);\n    if (addr) Interceptor.attach(addr, {\n        onEnter(args) { console.log(\"[AC CALL]\", api, args[0]); }\n    });\n});\n```\n\n## Common Mistakes\n\n| Mistake | Fix |\n|---|---|\n| Only checking strings | AC obfuscates strings — check imports + live module list |\n| Missing kernel driver | Always enumerate kernel modules, not just user-mode |\n| Assuming single AC | Games stack multiple (e.g. VAC + custom) |\n| Checking static binary only | AC loads at runtime — static binary often has no AC code |\n| Stopping at identification | Map what it *monitors* — that's the useful intelligence |\n","# Anti-Cheat Identification\n\n## Overview\nSystematic identification of which anti-cheat system is present, what it monitors, and where its key logic lives. Work static-first, then live.\n\n## Known AC Signatures\n\n| Anti-Cheat | Strings \u002F Names | Kernel Driver | Key Imports |\n|---|---|---|---|\n| EasyAntiCheat | `EasyAntiCheat`, `EAC`, `eac_launcher` | `EasyAntiCheat.sys`, `EasyAntiCheat_EOS.sys` | NtQueryInformationProcess, ObRegisterCallbacks |\n| BattlEye | `BattlEye`, `BEService`, `BEClient` | `BEDaisy.sys` | MmGetSystemRoutineAddress |\n| Vanguard | `vanguard`, `vgc`, `vgk` | `vgk.sys` | kernel IOCTL-heavy |\n| FACEIT | `faceit`, `FACEITClient` | `faceit.sys` | NtSetInformationProcess |\n| PunkBuster | `PunkBuster`, `PnkBstr` | none (user-mode only) | socket, WSA* |\n| VAC (Steam) | `VAC`, `SteamService` | none | loaded via Steam |\n| Ricochet (CoD) | `ricochet`, `RICOCHET` | Activision kernel driver | |\n| nProtect | `GameGuard`, `nProtect` | `npggsvc.sys` | |\n\n## Pipeline\n\n### Phase 1 — Static Identification\n```python\n# Binary Ninja\nlist_strings_filter(pattern=\"EasyAntiCheat|BattlEye|vanguard|faceit|PunkBuster|ricochet|GameGuard\")\nlist_imports()      # look for: NtQuerySystemInformation, ObRegisterCallbacks,\n                    # MmGetSystemRoutineAddress, PsSetCreateProcessNotifyRoutine\nsearch_functions_by_name(\"anti\")\nsearch_functions_by_name(\"detect\")\nsearch_functions_by_name(\"cheat\")\n```\n\n### Phase 2 — Live Process Identification\n```javascript\n\u002F\u002F Frida: execute_in_session — find AC modules loaded in game\nconst acNames = ['eac','battleye','vanguard','ricochet','faceit','nprotect','gameguard'];\nProcess.enumerateModules()\n    .filter(m => acNames.some(s => m.name.toLowerCase().includes(s)))\n    .forEach(m => console.log(\"[AC MODULE]\", m.name, m.base, m.size.toString(16)));\n```\n\n### Phase 3 — Kernel Driver Detection\n```python\n# Cheat Engine MCP\nenum_modules()      # list all loaded modules including kernel drivers\n# Look for .sys files matching the AC driver table above\n```\n\nOr via Frida (requires elevated session):\n```javascript\n\u002F\u002F List kernel modules via NtQuerySystemInformation SystemModuleInformation\n\u002F\u002F Requires SYSTEM privileges — use HyperDbg for full kernel view\n```\n\n### Phase 4 — Map AC Logic\nOnce the AC module is identified:\n```python\n# Binary Ninja — select the AC DLL\nselect_binary(binary_path=\"EasyAntiCheat.dll\")\nlist_functions()\nsearch_functions_by_name(\"scan\")\nsearch_functions_by_name(\"init\")\ndecompile_function(name=\"init\")     # Ghidra — understand what it sets up\nget_xrefs_to(symbol=\"ObRegisterCallbacks\")   # find kernel callback setup\n```\n\n### Phase 5 — Behavioral Monitoring\n```javascript\n\u002F\u002F Frida: watch what the AC actually checks at runtime\nconst suspicious = [\n    \"IsDebuggerPresent\", \"CheckRemoteDebuggerPresent\",\n    \"NtQueryInformationProcess\", \"NtQuerySystemInformation\",\n    \"OpenProcess\", \"ReadProcessMemory\"\n];\nsuspicious.forEach(api => {\n    const addr = Module.getExportByName(null, api);\n    if (addr) Interceptor.attach(addr, {\n        onEnter(args) { console.log(\"[AC CALL]\", api, args[0]); }\n    });\n});\n```\n\n## Common Mistakes\n\n| Mistake | Fix |\n|---|---|\n| Only checking strings | AC obfuscates strings — check imports + live module list |\n| Missing kernel driver | Always enumerate kernel modules, not just user-mode |\n| Assuming single AC | Games stack multiple (e.g. VAC + custom) |\n| Checking static binary only | AC loads at runtime — static binary often has no AC code |\n| Stopping at identification | Map what it *monitors* — that's the useful intelligence |\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Flibrary\u002Fskills\u002Fgame-find-anticheat","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill game-find-anticheat",{"tool":50,"command":51},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill game-find-anticheat",{"tool":53,"command":54},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill game-find-anticheat","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Flibrary\u002Fskills\u002Fgame-find-anticheat\u002FSKILL.md",true,[],[59,80,110,137,151,167],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":33},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[66,67,68,69,70,71,72,73,74,27,75,76,77,78,79],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution","file",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":91,"publishedAt":33},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[92,93,94,95,96,25,97,98,99,100,101,102,103,104,27,105,106,107,108,109],"openmm md","how","decision","pick","linux","tool","stack","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do","MCP",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":122,"publishedAt":33},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[116,119],{"categoryNo":117,"categoryName":118,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":120,"categoryName":121,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000008","测试与质量",[123,124,125,126,127,128,129,130,131,132,93,133,134,135,136],"review","visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":33},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[139,144,145,146,147,148,149,150],"setup","report","project","installation","project setup","issues","state",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":158,"publishedAt":33},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[157],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[153,159,71,160,161,162,27,163,164,165,166],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":168,"name":144,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":33},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[144,146,107,173,148,174],"files","interactive"]