[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DBR2W7GYVW7RR0CXHHNNJX":3,"skill-same:01M6DBR2W7GYVW7RR0CXHHNNJX":69},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6DBR2W7GYVW7RR0CXHHNNJX","re-ensure",null,"Bring up the reverse-engineering MCP backends (IDA \u002F Ghidra) on demand so mcp__ida-pro-mcp \u002F mcp__ghidra-mcp calls \"just work\" without manually opening the GUI apps. Use when asked to start\u002Fensure the RE stack, or before a batch of RE tool calls. Cold-starts ONLY the requested backend, prefers an already-running GUI IDA on :13337, and reports that Binary Ninja (Personal) cannot run headless.","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\u002Fre-ensure\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"re ensure","just","binary","binary ninja","reports","up","only","backend","use","work","MCP","tool","stack","ghidra","reverse-engineering","engineering","start","batch","run","personal","2026-11-10 10:12:30",false,"---\nname: re-ensure\ndescription: Bring up the reverse-engineering MCP backends (IDA \u002F Ghidra) on demand so mcp__ida-pro-mcp \u002F mcp__ghidra-mcp calls \"just work\" without manually opening the GUI apps. Use when asked to start\u002Fensure the RE stack, or before a batch of RE tool calls. Cold-starts ONLY the requested backend, prefers an already-running GUI IDA on :13337, and reports that Binary Ninja (Personal) cannot run headless.\n---\n\n# re-ensure Skill\n\nExplicit, on-demand bring-up of the reverse-engineering MCP backends. The RE MCPs\nare **bridge proxies** — each `mcp__\u003Cx>__*` call forwards over a local socket to a\nplugin\u002Fserver that must be running:\n\n| MCP bridge | backend port(s) | headless launch? |\n|---|---|---|\n| `mcp__ida-pro-mcp` | GUI **:13337** (preferred) or headless idalib **:8745** | yes (idalib_server) |\n| `mcp__ghidra-mcp` | GhidraMCP headless **:8089** | yes (true no-GUI) |\n| `mcp__binary-ninja-mcp` | BN GUI plugin **:9009** | **NO** — Personal license has no headless; open the GUI manually |\n\nIf the backend isn't running the bridge connects to nothing and the call fails\n(\"not reachable\" \u002F \"connection refused\" \u002F `list_instances → []`).\n\n## You usually don't need this skill\n\nA **PreToolUse hook** (`~\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002F`) already auto-launches the\nright backend the moment you invoke a matching RE tool and its port is down. This\nskill is for **explicit** control: \"make sure Ghidra is up before I start\", or\nbringing up a backend ahead of a batch so the first real call doesn't have to wait.\n\n## Mechanism (the launcher)\n\n`C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py` wraps the\nre-harness (`C:\u002FUsers\u002FPrekzursil\u002F.local\u002Fopt\u002Fre-harness\u002Fre_launch.py`):\n\n```bash\n# Probe all backends (no launch) — fast, safe, prints SUCCESS\u002FFAILED + free RAM.\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py probe\n\n# Cold-start ONE backend on-demand (detached; idempotent; prefers existing).\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py ensure ghidra\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py ensure ida\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py ensure bn    # -> manual hint (no headless)\n\n# Bring up every LAUNCHABLE backend (IDA + Ghidra). Heavier — only when asked.\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py ensure all\n```\n\n`ensure` kicks a **detached** `re_launch.py` (which itself spawns the heavy server\ndetached, polls it ready, registers it) and briefly waits for the port. It prints a\nterminal-state marker per backend:\n\n- `SUCCESS:re-ensure \u003Cx> already-up …` \u002F `… now listening …`\n- `STARTING:re-ensure \u003Cx> cold-start launched …` — analysis still running in the background\n- `MANUAL:re-ensure binary-ninja-mcp …` — open the BN GUI yourself\n- `FAILED:re-ensure …` — launcher couldn't start\n\n## Poll until ready (cold-start can take 1–3 min)\n\nA backend's **port** binds quickly, but full MCP readiness (idalib auto-analysis \u002F\nGhidra program open) can take minutes. After `STARTING`, poll `probe` until UP\nrather than firing a doomed call. Because this can exceed 60s, run the poll in the\nbackground (longrun \u002F `run_in_background`), per the >60s rule — never a blocking\nforeground sleep loop:\n\n```bash\n# bounded poll: stop as soon as ghidra:8089 listens (or give up after ~3 min)\nfor i in $(seq 1 36); do\n  if python -c \"import socket,sys; s=socket.socket(); sys.exit(0 if s.connect_ex(('127.0.0.1',8089))==0 else 1)\"; then\n    echo \"ghidra UP\"; break\n  fi\n  sleep 5\ndone\n```\n\nInspect a stuck launch via the logs:\n`~\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fstate\u002F\u003Ctool>-spawn.log` and the re-harness\n`~\u002F.local\u002Fopt\u002Fre-harness\u002Fstate\u002F\u003Ctool>.log`.\n\n## Safety \u002F RAM\n\n- **On-demand & single-backend** — IDA and Ghidra are heavy; `ensure \u003Ctool>` starts\n  only that one. Use `ensure all` only when you really want both.\n- **Never duplicates the live GUI IDA** — if `:13337` is up, IDA is treated as up and\n  no headless server is started.\n- **OOM guard** — the auto-launch hook refuses to launch when free RAM is below\n  `min_free_ram_mb` (default 2048) and tells you to free memory or launch manually.\n  `ensure` is explicit, so it still launches; check `probe` (it prints `free_ram_mb`)\n  first if RAM is tight.\n- **Never touches port 13337 \u002F the GUI** beyond probing; teardown stays the\n  re-harness's job (`re_launch.py \u003Ctool> --teardown`, registry-gated).\n- **Binary Ninja** cannot be headless-launched on a Personal license — `ensure bn`\n  reports the manual step (open GUI, load binary, start the MCP plugin on :9009).\n\n## Configuration\n\n`~\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fbackends.json` — ports per backend, the pre-loaded\n`binary` (default: the BC `libnative-lib.so` for 15.4.1), `min_free_ram_mb`,\n`brief_wait_seconds`, and `deny_while_starting` \u002F `deny_when_unlaunchable` (set\nfalse for inject-only, never-block behavior). Disable everything with\n`RE_AUTOLAUNCH=off` or a `.disabled` file in that directory.\n\n## Verify\n\n```bash\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Ftest_autolaunch.py   # unit\u002Fdecision\u002Ffail-open tests\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py probe  # live backend status\n```\n","# re-ensure Skill\n\nExplicit, on-demand bring-up of the reverse-engineering MCP backends. The RE MCPs\nare **bridge proxies** — each `mcp__\u003Cx>__*` call forwards over a local socket to a\nplugin\u002Fserver that must be running:\n\n| MCP bridge | backend port(s) | headless launch? |\n|---|---|---|\n| `mcp__ida-pro-mcp` | GUI **:13337** (preferred) or headless idalib **:8745** | yes (idalib_server) |\n| `mcp__ghidra-mcp` | GhidraMCP headless **:8089** | yes (true no-GUI) |\n| `mcp__binary-ninja-mcp` | BN GUI plugin **:9009** | **NO** — Personal license has no headless; open the GUI manually |\n\nIf the backend isn't running the bridge connects to nothing and the call fails\n(\"not reachable\" \u002F \"connection refused\" \u002F `list_instances → []`).\n\n## You usually don't need this skill\n\nA **PreToolUse hook** (`~\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002F`) already auto-launches the\nright backend the moment you invoke a matching RE tool and its port is down. This\nskill is for **explicit** control: \"make sure Ghidra is up before I start\", or\nbringing up a backend ahead of a batch so the first real call doesn't have to wait.\n\n## Mechanism (the launcher)\n\n`C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py` wraps the\nre-harness (`C:\u002FUsers\u002FPrekzursil\u002F.local\u002Fopt\u002Fre-harness\u002Fre_launch.py`):\n\n```bash\n# Probe all backends (no launch) — fast, safe, prints SUCCESS\u002FFAILED + free RAM.\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py probe\n\n# Cold-start ONE backend on-demand (detached; idempotent; prefers existing).\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py ensure ghidra\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py ensure ida\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py ensure bn    # -> manual hint (no headless)\n\n# Bring up every LAUNCHABLE backend (IDA + Ghidra). Heavier — only when asked.\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py ensure all\n```\n\n`ensure` kicks a **detached** `re_launch.py` (which itself spawns the heavy server\ndetached, polls it ready, registers it) and briefly waits for the port. It prints a\nterminal-state marker per backend:\n\n- `SUCCESS:re-ensure \u003Cx> already-up …` \u002F `… now listening …`\n- `STARTING:re-ensure \u003Cx> cold-start launched …` — analysis still running in the background\n- `MANUAL:re-ensure binary-ninja-mcp …` — open the BN GUI yourself\n- `FAILED:re-ensure …` — launcher couldn't start\n\n## Poll until ready (cold-start can take 1–3 min)\n\nA backend's **port** binds quickly, but full MCP readiness (idalib auto-analysis \u002F\nGhidra program open) can take minutes. After `STARTING`, poll `probe` until UP\nrather than firing a doomed call. Because this can exceed 60s, run the poll in the\nbackground (longrun \u002F `run_in_background`), per the >60s rule — never a blocking\nforeground sleep loop:\n\n```bash\n# bounded poll: stop as soon as ghidra:8089 listens (or give up after ~3 min)\nfor i in $(seq 1 36); do\n  if python -c \"import socket,sys; s=socket.socket(); sys.exit(0 if s.connect_ex(('127.0.0.1',8089))==0 else 1)\"; then\n    echo \"ghidra UP\"; break\n  fi\n  sleep 5\ndone\n```\n\nInspect a stuck launch via the logs:\n`~\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fstate\u002F\u003Ctool>-spawn.log` and the re-harness\n`~\u002F.local\u002Fopt\u002Fre-harness\u002Fstate\u002F\u003Ctool>.log`.\n\n## Safety \u002F RAM\n\n- **On-demand & single-backend** — IDA and Ghidra are heavy; `ensure \u003Ctool>` starts\n  only that one. Use `ensure all` only when you really want both.\n- **Never duplicates the live GUI IDA** — if `:13337` is up, IDA is treated as up and\n  no headless server is started.\n- **OOM guard** — the auto-launch hook refuses to launch when free RAM is below\n  `min_free_ram_mb` (default 2048) and tells you to free memory or launch manually.\n  `ensure` is explicit, so it still launches; check `probe` (it prints `free_ram_mb`)\n  first if RAM is tight.\n- **Never touches port 13337 \u002F the GUI** beyond probing; teardown stays the\n  re-harness's job (`re_launch.py \u003Ctool> --teardown`, registry-gated).\n- **Binary Ninja** cannot be headless-launched on a Personal license — `ensure bn`\n  reports the manual step (open GUI, load binary, start the MCP plugin on :9009).\n\n## Configuration\n\n`~\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fbackends.json` — ports per backend, the pre-loaded\n`binary` (default: the BC `libnative-lib.so` for 15.4.1), `min_free_ram_mb`,\n`brief_wait_seconds`, and `deny_while_starting` \u002F `deny_when_unlaunchable` (set\nfalse for inject-only, never-block behavior). Disable everything with\n`RE_AUTOLAUNCH=off` or a `.disabled` file in that directory.\n\n## Verify\n\n```bash\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Ftest_autolaunch.py   # unit\u002Fdecision\u002Ffail-open tests\npython C:\u002FUsers\u002FPrekzursil\u002F.claude\u002Fhooks\u002Fre-autolaunch\u002Fautolaunch.py probe  # live backend status\n```\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Fskills\u002Fre-ensure","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill re-ensure",{"tool":61,"command":62},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill re-ensure",{"tool":64,"command":65},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill re-ensure","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fre-ensure\u002FSKILL.md",true,[],[70,91,115,142,156,170],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":44},"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",[],[77,78,79,80,81,82,83,84,85,32,86,87,88,89,90],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution","file",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":98,"publishedAt":44},"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",[97],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[99,100,101,102,103,104,35,36,105,106,107,108,109,110,32,111,112,113,114,34],"openmm md","how","decision","pick","linux","analyze","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":127,"publishedAt":44},"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",[121,124],{"categoryNo":122,"categoryName":123,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":125,"categoryName":126,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[128,129,130,131,132,133,134,135,136,137,100,138,139,140,141],"review","visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":44},"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",[],[144,149,150,151,152,153,154,155],"setup","report","project","installation","project setup","issues","state",{"skillNo":157,"name":40,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":162,"publishedAt":44},"01M6DF6X6C2XB0P6GX76P7TTYV","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",[161],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[40,163,82,164,165,166,32,167,33,168,169],"start issue","issue","ready","work on issue","user","work on","development",{"skillNo":171,"name":149,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":44},"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",[],[149,151,113,176,153,177],"files","interactive"]