[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DBDG3MQ2ZAW60G4HREE7P9":3,"skill-same:01M6DBDG3MQ2ZAW60G4HREE7P9":56},{"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":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":14,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":41,"install":42,"resources":55},"01M6DBDG3MQ2ZAW60G4HREE7P9","game-frida-trace",null,"Use when asked to trace, intercept, hook, or monitor function calls in a live process using Frida dynamic instrumentation. Applies to game processes, anti-cheat DLLs, or any running Windows\u002FAndroid process.","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\u002Fskills\u002Fgame-frida-trace\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"frida","game","trace","game frida trace","android","windows","monitor","process","use","instrumentation","live","cheat","2026-11-10 10:12:30",false,"---\nname: game-frida-trace\ndescription: Use when asked to trace, intercept, hook, or monitor function calls in a live process using Frida dynamic instrumentation. Applies to game processes, anti-cheat DLLs, or any running Windows\u002FAndroid process.\n---\n\n# Frida Dynamic Tracing\n\n## Overview\nLive process instrumentation via Frida MCP. The pipeline is always: enumerate → attach → hook → collect.\n\n**Always enumerate devices first.** Sessions fail silently if device_id is wrong.\n\n## Quick Reference\n\n| Step | MCP tool | Key params |\n|---|---|---|\n| List devices | `enumerate_devices` | — |\n| Find process | `get_process_by_name` | `name` |\n| List all processes | `list_processes` | `device_id` |\n| Attach | `create_interactive_session` | `pid`, `device_id` |\n| Simple hook | `create_simple_hook` | `session_id`, `module`, `function` |\n| Custom script | `execute_in_session` | `session_id`, `script` |\n| Spawn + attach | `spawn_process` | `program`, `device_id` |\n| Kill | `kill_process` | `pid`, `device_id` |\n\n## Workflow\n\n### 1. Find the Target\n```python\nenumerate_devices()                         # → pick device_id (usually \"local\")\nget_process_by_name(name=\"game.exe\")        # → pid\n# or\nlist_processes(device_id=\"local\")           # → browse all\n```\n\n### 2. Attach\n```python\ncreate_interactive_session(pid=1234, device_id=\"local\")\n# → returns session_id — store this\n```\n\n### 3a. Simple Hook (named export — fastest path)\n```python\ncreate_simple_hook(\n    session_id=\"...\",\n    module=\"kernel32.dll\",\n    function=\"CreateFileW\"\n)\n# Logs every call with args + return value automatically\n```\n\n### 3b. Custom Script (offset from RE tools)\n```javascript\n\u002F\u002F execute_in_session(session_id, script=\u003Cbelow>)\n\u002F\u002F Use RVA from Binary Ninja \u002F Ghidra when no export name exists\nconst base = Process.getModuleByName(\"game.exe\").base;\nconst target = base.add(0x1A2B0);   \u002F\u002F RVA from Binary Ninja analysis\n\nInterceptor.attach(target, {\n    onEnter(args) {\n        console.log(\"[CALL] arg0:\", args[0].readUtf8String());\n        console.log(\"[CALL] arg1:\", args[1]);\n    },\n    onLeave(retval) {\n        console.log(\"[RET]\", retval.toInt32());\n    }\n});\n```\n\n## Common Scenarios\n\n**Trace all exports of an anti-cheat DLL:**\n```javascript\nconst mod = Process.getModuleByName(\"EasyAntiCheat.dll\");\nmod.enumerateExports().forEach(e => {\n    try {\n        Interceptor.attach(e.address, {\n            onEnter() { console.log(\"[EAC]\", e.name); }\n        });\n    } catch(_) {}   \u002F\u002F some exports may be non-hookable\n});\n```\n\n**Enumerate loaded modules in target:**\n```javascript\nProcess.enumerateModules().forEach(m =>\n    console.log(m.name.padEnd(40), m.base, m.size.toString(16))\n);\n```\n\n**Read memory at known offset:**\n```javascript\nconst base = Process.getModuleByName(\"game.exe\").base;\nconst ptr  = base.add(0xDEAD0);\nconsole.log(\"string:\", ptr.readUtf8String());\nconsole.log(\"int32: \", ptr.readS32());\n```\n\n**Hook Windows API to detect anti-debug calls:**\n```javascript\n[\"IsDebuggerPresent\",\"CheckRemoteDebuggerPresent\",\"NtQueryInformationProcess\"]\n.forEach(api => {\n    const addr = Module.getExportByName(null, api);\n    if (addr) Interceptor.attach(addr, {\n        onEnter() { console.log(\"[ANTI-DEBUG]\", api); },\n        onLeave(ret) { ret.replace(0); }   \u002F\u002F spoof return — remove if just tracing\n    });\n});\n```\n\n## Common Mistakes\n\n| Mistake | Fix |\n|---|---|\n| Wrong device_id | Always call `enumerate_devices` first |\n| Script errors kill session | Test incrementally in `execute_in_session` |\n| Hooking stripped functions by name | Use RVA from Binary Ninja instead |\n| Attaching before process loads target DLL | Use `spawn_process` then attach, or wait |\n| Hooking inlined functions | Inlined code has no hookable address — find the caller instead |\n","# Frida Dynamic Tracing\n\n## Overview\nLive process instrumentation via Frida MCP. The pipeline is always: enumerate → attach → hook → collect.\n\n**Always enumerate devices first.** Sessions fail silently if device_id is wrong.\n\n## Quick Reference\n\n| Step | MCP tool | Key params |\n|---|---|---|\n| List devices | `enumerate_devices` | — |\n| Find process | `get_process_by_name` | `name` |\n| List all processes | `list_processes` | `device_id` |\n| Attach | `create_interactive_session` | `pid`, `device_id` |\n| Simple hook | `create_simple_hook` | `session_id`, `module`, `function` |\n| Custom script | `execute_in_session` | `session_id`, `script` |\n| Spawn + attach | `spawn_process` | `program`, `device_id` |\n| Kill | `kill_process` | `pid`, `device_id` |\n\n## Workflow\n\n### 1. Find the Target\n```python\nenumerate_devices()                         # → pick device_id (usually \"local\")\nget_process_by_name(name=\"game.exe\")        # → pid\n# or\nlist_processes(device_id=\"local\")           # → browse all\n```\n\n### 2. Attach\n```python\ncreate_interactive_session(pid=1234, device_id=\"local\")\n# → returns session_id — store this\n```\n\n### 3a. Simple Hook (named export — fastest path)\n```python\ncreate_simple_hook(\n    session_id=\"...\",\n    module=\"kernel32.dll\",\n    function=\"CreateFileW\"\n)\n# Logs every call with args + return value automatically\n```\n\n### 3b. Custom Script (offset from RE tools)\n```javascript\n\u002F\u002F execute_in_session(session_id, script=\u003Cbelow>)\n\u002F\u002F Use RVA from Binary Ninja \u002F Ghidra when no export name exists\nconst base = Process.getModuleByName(\"game.exe\").base;\nconst target = base.add(0x1A2B0);   \u002F\u002F RVA from Binary Ninja analysis\n\nInterceptor.attach(target, {\n    onEnter(args) {\n        console.log(\"[CALL] arg0:\", args[0].readUtf8String());\n        console.log(\"[CALL] arg1:\", args[1]);\n    },\n    onLeave(retval) {\n        console.log(\"[RET]\", retval.toInt32());\n    }\n});\n```\n\n## Common Scenarios\n\n**Trace all exports of an anti-cheat DLL:**\n```javascript\nconst mod = Process.getModuleByName(\"EasyAntiCheat.dll\");\nmod.enumerateExports().forEach(e => {\n    try {\n        Interceptor.attach(e.address, {\n            onEnter() { console.log(\"[EAC]\", e.name); }\n        });\n    } catch(_) {}   \u002F\u002F some exports may be non-hookable\n});\n```\n\n**Enumerate loaded modules in target:**\n```javascript\nProcess.enumerateModules().forEach(m =>\n    console.log(m.name.padEnd(40), m.base, m.size.toString(16))\n);\n```\n\n**Read memory at known offset:**\n```javascript\nconst base = Process.getModuleByName(\"game.exe\").base;\nconst ptr  = base.add(0xDEAD0);\nconsole.log(\"string:\", ptr.readUtf8String());\nconsole.log(\"int32: \", ptr.readS32());\n```\n\n**Hook Windows API to detect anti-debug calls:**\n```javascript\n[\"IsDebuggerPresent\",\"CheckRemoteDebuggerPresent\",\"NtQueryInformationProcess\"]\n.forEach(api => {\n    const addr = Module.getExportByName(null, api);\n    if (addr) Interceptor.attach(addr, {\n        onEnter() { console.log(\"[ANTI-DEBUG]\", api); },\n        onLeave(ret) { ret.replace(0); }   \u002F\u002F spoof return — remove if just tracing\n    });\n});\n```\n\n## Common Mistakes\n\n| Mistake | Fix |\n|---|---|\n| Wrong device_id | Always call `enumerate_devices` first |\n| Script errors kill session | Test incrementally in `execute_in_session` |\n| Hooking stripped functions by name | Use RVA from Binary Ninja instead |\n| Attaching before process loads target DLL | Use `spawn_process` then attach, or wait |\n| Hooking inlined functions | Inlined code has no hookable address — find the caller instead |\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Fskills\u002Fgame-frida-trace","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill game-frida-trace",{"tool":48,"command":49},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill game-frida-trace",{"tool":51,"command":52},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill game-frida-trace","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fgame-frida-trace\u002FSKILL.md",true,[],[57,78,108,135,149,165],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":31},"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",[],[64,65,66,67,68,69,70,71,72,27,73,74,75,76,77],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution","file",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":89,"publishedAt":31},"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",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[90,91,92,93,94,95,96,97,98,99,100,101,102,24,27,103,104,105,106,107],"openmm md","how","decision","pick","linux","analyze","tool","stack","open","NVIDIA","gpu","license","workflow","free","molecular dynamics","local","do","MCP",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":120,"publishedAt":31},"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",[114,117],{"categoryNo":115,"categoryName":116,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":118,"categoryName":119,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000008","测试与质量",[121,122,123,124,125,126,127,128,129,130,91,131,132,133,134],"review","visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":31},"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",[],[137,142,143,144,145,146,147,148],"setup","report","project","installation","project setup","issues","state",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":156,"publishedAt":31},"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",[155],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},[151,157,69,158,159,160,27,161,162,163,164],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":166,"name":142,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":31},"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",[],[142,144,105,171,146,172],"files","interactive"]