[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DD89ZB2J5F4WG4YPRVC40D":3,"skill-same:01M6DD89ZB2J5F4WG4YPRVC40D":64},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":14,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M6DD89ZB2J5F4WG4YPRVC40D","bc-update-survival",null,"Use when a Battle Cats (EN, jp.co.ponos.battlecatsen) update relinks lib\u002Fx86_64\u002Flibnative-lib.so and your pinned RVAs go stale — the toolpack that RETIRES hardcoded offsets. AOB wildcard-signature resolver (author a byte pattern that wildcards only the reloc-sensitive bytes, then re-locate the function by pattern via offline .so scan or live `frida search_memory`\u002FMemory.scan — survives relink where a fixed RVA does not); ghidriff one-command cross-version .so diff that AUTO-PORTS the whole offset table old→new; and a per-version-bump update-triage (extract + sha-compare + diff APK\u002FDAT\u002F.so). Ships a SHADOW-mode drift gate (observe + log only, never blocks). Use before trusting any bc-drive \u002F battlecats-event-unlock offset after a version bump. NOT for save-file edits (bcsfe-save-roundtrip) or live UI driving (bc-drive).","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\u002Fplatform\u002Frouting\u002Ffixtures\u002Fhome\u002F.claude\u002Fskills\u002Fbc-update-survival\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"update","bc update survival","only","memory","jp","drift","scan","observe","bump","en","log","search","never","auto","diff","version","use","ports","APK","file","2026-11-10 10:12:30",false,"---\nname: bc-update-survival\ndescription: Use when a Battle Cats (EN, jp.co.ponos.battlecatsen) update relinks lib\u002Fx86_64\u002Flibnative-lib.so and your pinned RVAs go stale — the toolpack that RETIRES hardcoded offsets. AOB wildcard-signature resolver (author a byte pattern that wildcards only the reloc-sensitive bytes, then re-locate the function by pattern via offline .so scan or live `frida search_memory`\u002FMemory.scan — survives relink where a fixed RVA does not); ghidriff one-command cross-version .so diff that AUTO-PORTS the whole offset table old→new; and a per-version-bump update-triage (extract + sha-compare + diff APK\u002FDAT\u002F.so). Ships a SHADOW-mode drift gate (observe + log only, never blocks). Use before trusting any bc-drive \u002F battlecats-event-unlock offset after a version bump. NOT for save-file edits (bcsfe-save-roundtrip) or live UI driving (bc-drive).\n---\n\n# bc-update-survival — survive BC updates automatically\n\nBattle Cats ships an update, `lib\u002Fx86_64\u002Flibnative-lib.so` is recompiled and\n**relinked**, and every hardcoded RVA in your offset tables (`bc-drive`,\n`battlecats-event-unlock`) is now wrong. **Acting on a stale offset is the worst\nfailure mode** — a call to the wrong address crashes BC or trips the HGT anti-\ntamper trap. This toolpack re-derives the offsets automatically instead.\n\nThe core idea: a function's **opcodes are stable across an update even when its\naddress moves**. Pin functions by a wildcard **byte signature (AOB)** — fixing\nthe opcodes, wildcarding the bytes that move on relink (rel32 call\u002Fjump\ndisplacements, RIP-relative `disp32`, reloc'd immediates) — and re-locate them\nby pattern after every update. A signature survives; an RVA does not.\n\n## Files\n- `aob_resolver.py` — the AOB signature engine: parse\u002Fmatch, author (single-\n  version heuristic **or** robust cross-version byte-diff), offline `.so` scan,\n  live Frida `Memory.scan`, and a SHADOW drift gate.\n- `ghidriff_port.py` — cross-version `.so` diff + **auto-port the offset table**\n  (AOB re-scan, primary; ghidriff function-matching, cross-check) + the\n  version-bump `triage` orchestration (handles `.apk` inputs).\n- `SKILL.md` — this file.\n\n## BC ground truth (EN 15.4.1)\n- `lib\u002Fx86_64\u002Flibnative-lib.so` has **imagebase 0x0**, so **RVA == file offset**\n  (per `battlecats-event-unlock`). `--imagebase 0` (the default) is exact for BC;\n  runtime address = `module.base + RVA`.\n\n### The offset table (single source of truth)\n### aob_resolver.py — author & resolve signatures\n### Author a bullet-proof cross-version sig by byte-diffing the SAME function in\n### two versions (needs the addr in both, e.g. from a ghidriff match). Wildcards\n### EXACTLY the bytes that differ -> matches both by construction. No disassembler.\n### Author a single-version sig at an RVA (capstone if importable, else a\n### conservative rel32\u002FRIP-disp32 heuristic; extends until unique).\n### Resolve one signature (or a whole table) against a .so -> RVA(s).\n### List every match (uniqueness check).\n### Emit a Frida agent that Memory.scan's the live module for a table's sigs.\n### Live resolution (Frida `search_memory`)\n","# bc-update-survival — survive BC updates automatically\n\nBattle Cats ships an update, `lib\u002Fx86_64\u002Flibnative-lib.so` is recompiled and\n**relinked**, and every hardcoded RVA in your offset tables (`bc-drive`,\n`battlecats-event-unlock`) is now wrong. **Acting on a stale offset is the worst\nfailure mode** — a call to the wrong address crashes BC or trips the HGT anti-\ntamper trap. This toolpack re-derives the offsets automatically instead.\n\nThe core idea: a function's **opcodes are stable across an update even when its\naddress moves**. Pin functions by a wildcard **byte signature (AOB)** — fixing\nthe opcodes, wildcarding the bytes that move on relink (rel32 call\u002Fjump\ndisplacements, RIP-relative `disp32`, reloc'd immediates) — and re-locate them\nby pattern after every update. A signature survives; an RVA does not.\n\n## Files\n- `aob_resolver.py` — the AOB signature engine: parse\u002Fmatch, author (single-\n  version heuristic **or** robust cross-version byte-diff), offline `.so` scan,\n  live Frida `Memory.scan`, and a SHADOW drift gate.\n- `ghidriff_port.py` — cross-version `.so` diff + **auto-port the offset table**\n  (AOB re-scan, primary; ghidriff function-matching, cross-check) + the\n  version-bump `triage` orchestration (handles `.apk` inputs).\n- `SKILL.md` — this file.\n\n## BC ground truth (EN 15.4.1)\n- `lib\u002Fx86_64\u002Flibnative-lib.so` has **imagebase 0x0**, so **RVA == file offset**\n  (per `battlecats-event-unlock`). `--imagebase 0` (the default) is exact for BC;\n  runtime address = `module.base + RVA`.\n\n### The offset table (single source of truth)\n### aob_resolver.py — author & resolve signatures\n### Author a bullet-proof cross-version sig by byte-diffing the SAME function in\n### two versions (needs the addr in both, e.g. from a ghidriff match). Wildcards\n### EXACTLY the bytes that differ -> matches both by construction. No disassembler.\n### Author a single-version sig at an RVA (capstone if importable, else a\n### conservative rel32\u002FRIP-disp32 heuristic; extends until unique).\n### Resolve one signature (or a whole table) against a .so -> RVA(s).\n### List every match (uniqueness check).\n### Emit a Frida agent that Memory.scan's the live module for a table's sigs.\n### Live resolution (Frida `search_memory`)\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5","platform\u002Frouting\u002Ffixtures\u002Fhome\u002F.claude\u002Fskills\u002Fbc-update-survival","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill bc-update-survival",{"tool":56,"command":57},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill bc-update-survival",{"tool":59,"command":60},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill bc-update-survival","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Fplatform\u002Frouting\u002Ffixtures\u002Fhome\u002F.claude\u002Fskills\u002Fbc-update-survival\u002FSKILL.md",true,[],[65,85,116,143,157,173],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":39},"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",[],[72,73,74,75,76,77,78,79,80,35,81,82,83,84,38],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution",{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":96,"publishedAt":39},"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",[91],{"categoryNo":92,"categoryName":93,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[97,98,99,100,101,102,103,104,105,106,107,108,109,110,35,111,112,113,114,115],"openmm md","how","decision","pick","linux","analyze","tool","stack","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do","MCP",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":128,"publishedAt":39},"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",[122,125],{"categoryNo":123,"categoryName":124,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":126,"categoryName":127,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000008","测试与质量",[129,130,131,132,133,134,135,136,137,138,98,139,140,141,142],"review","visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":39},"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",[],[145,150,151,152,153,154,155,156],"setup","report","project","installation","project setup","issues","state",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":164,"publishedAt":39},"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",[163],{"categoryNo":92,"categoryName":93,"taxonomyType":94,"taxonomyTypeDesc":95},[159,165,77,166,167,168,35,169,170,171,172],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":174,"name":150,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":39},"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",[],[150,152,113,179,154,180],"files","interactive"]