[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7B98B0S3C2DPZXBEFMYASMT":3,"skill-same:01M7B98B0S3C2DPZXBEFMYASMT":95},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":15,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":13,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M7B98B0S3C2DPZXBEFMYASMT","reverse-engineering-rust-malware",null,"Reverse engineers Rust-compiled malware using IDA Pro and Ghidra, covering techniques for non-null-terminated fat-pointer strings, monomorphized\u002Fduplicated generic code, Result\u002FOption unwrap chains, crate dependency extraction, and Rust-specific control flow and calling conventions. Use when analyzing Rust-based malware samples (e.g. BlackCat\u002FALPHV, Hive, Buer Loader) or attack artifacts in an authorized, controlled environment.","vikasvardhanv\u002Fjerry_skills","vikasvardhanv","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F99010657?v=4","01M7B2B0VN78W7529RQX5BR6DZ","01M7B2B0WDNTXJHRK3QNPNWRP6",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fcurated_premium_skills\u002FAnthropic-Cybersecurity-Skills\u002Fskills\u002Freverse-engineering-rust-malware\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fcurated_premium_skills\u002FAnthropic-Cybersecurity-Skills\u002Fskills\u002Freverse-engineering-rust-malware\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: reverse-engineering-rust-malware\ndescription: Reverse engineers Rust-compiled malware using IDA Pro and Ghidra, covering\n  techniques for non-null-terminated fat-pointer strings, monomorphized\u002Fduplicated\n  generic code, Result\u002FOption unwrap chains, crate dependency extraction, and Rust-specific\n  control flow and calling conventions. Use when analyzing Rust-based malware samples\n  (e.g. BlackCat\u002FALPHV, Hive, Buer Loader) or attack artifacts in an authorized, controlled\n  environment.\ndomain: cybersecurity\nsubdomain: malware-analysis\ntags:\n- rust\n- reverse-engineering\n- malware-analysis\n- ghidra\n- ida-pro\n- binary-analysis\n- rust-malware\nversion: '1.0'\nauthor: mahipal\nlicense: Apache-2.0\nnist_csf:\n- DE.AE-02\n- RS.AN-03\n- ID.RA-01\n- DE.CM-01\nmitre_attack:\n- T1027\n- T1055\n- T1140\n- T1497\n---\n# Reverse Engineering Rust Malware\n\n## Overview\n\nRust has become increasingly popular for malware development due to its cross-compilation, memory safety guarantees, and the complexity it introduces for reverse engineers. Rust binaries contain the entire standard library statically linked, producing large binaries with extensive boilerplate code. Key challenges include non-null-terminated strings (Rust uses fat pointers with pointer+length), monomorphization generating duplicated generic code, complex error handling (Result\u002FOption unwrap chains), and unfamiliar calling conventions. Decompiling Rust to C produces unhelpful output compared to C\u002FC++ binaries. Tools like Ghidra scripts for crate extraction, and training focused on Rust-specific patterns (2024-2025) help address these challenges. Notable Rust malware includes BlackCat\u002FALPHV ransomware, Hive ransomware variants, and Buer Loader.\n\n\n## When to Use\n\n- When performing authorized security testing that involves reverse engineering rust malware\n- When analyzing malware samples or attack artifacts in a controlled environment\n- When conducting red team exercises or penetration testing engagements\n- When building detection capabilities based on offensive technique understanding\n\n## Prerequisites\n\n- IDA Pro 8.0+ or Ghidra 11.0+\n- Rust toolchain for reference compilation\n- Python 3.9+ for helper scripts\n- Understanding of Rust memory model (ownership, borrowing)\n- Familiarity with Rust string types (String, &str, CString)\n\n## Workflow\n\n### Step 1: Identify and Parse Rust Binary Metadata\n\n```python\n#!\u002Fusr\u002Fbin\u002Fenv python3\n\"\"\"Analyze Rust malware binary metadata and extract crate dependencies.\"\"\"\nimport re\nimport sys\nimport json\n\n\ndef identify_rust_binary(data):\n    \"\"\"Check if binary is Rust-compiled and extract version info.\"\"\"\n    indicators = {\n        \"rust_panic_strings\": bool(re.search(rb'panicked at', data)),\n        \"rust_unwrap\": bool(re.search(rb'called.*unwrap.*on.*None', data)),\n        \"core_panic\": bool(re.search(rb'core::panicking', data)),\n        \"std_rt\": bool(re.search(rb'std::rt::lang_start', data)),\n        \"cargo_path\": bool(re.search(rb'\\.cargo[\u002F\\\\]registry', data)),\n        \"rustc_version\": None,\n    }\n\n    version = re.search(rb'rustc\\s+(\\d+\\.\\d+\\.\\d+)', data)\n    if version:\n        indicators[\"rustc_version\"] = version.group(1).decode()\n\n    is_rust = sum(1 for v in indicators.values() if v) >= 2\n    return is_rust, indicators\n\n\ndef extract_crates(data):\n    \"\"\"Extract Rust crate (dependency) names from binary strings.\"\"\"\n    crate_pattern = re.compile(\n        rb'(?:crates\\.io-[a-f0-9]+\u002F|\\.cargo\u002Fregistry\u002Fsrc\u002F[^\u002F]+\u002F)'\n        rb'([\\w-]+)-(\\d+\\.\\d+\\.\\d+)'\n    )\n    crates = {}\n    for match in crate_pattern.finditer(data):\n        name = match.group(1).decode()\n        version = match.group(2).decode()\n        crates[name] = version\n\n    # Also check for common malware-relevant crates\n    suspicious_crates = {\n        \"reqwest\": \"HTTP client\",\n        \"hyper\": \"HTTP library\",\n        \"tokio\": \"Async runtime\",\n        \"aes\": \"AES encryption\",\n        \"chacha20\": \"ChaCha20 encryption\",\n        \"rsa\": \"RSA encryption\",\n        \"ring\": \"Crypto library\",\n        \"base64\": \"Base64 encoding\",\n        \"winapi\": \"Windows API bindings\",\n        \"winreg\": \"Registry access\",\n        \"sysinfo\": \"System information\",\n        \"screenshots\": \"Screen capture\",\n        \"clipboard\": \"Clipboard access\",\n        \"keylogger\": \"Key logging\",\n    }\n\n    capabilities = []\n    for crate_name, description in suspicious_crates.items():\n        if crate_name in crates:\n            capabilities.append({\n                \"crate\": crate_name,\n                \"version\": crates[crate_name],\n                \"capability\": description,\n            })\n\n    return crates, capabilities\n\n\ndef extract_rust_strings(data):\n    \"\"\"Extract strings handling Rust's non-null-terminated format.\"\"\"\n    # Rust strings are stored as pointer+length, but string literals\n    # are often in .rodata as contiguous sequences\n    strings = []\n    ascii_pattern = re.compile(rb'[\\x20-\\x7e]{8,500}')\n    for match in ascii_pattern.finditer(data):\n        s = match.group().decode('ascii')\n        # Filter for malware-relevant strings\n        keywords = ['http', 'socket', 'encrypt', 'decrypt', 'shell',\n                    'exec', 'cmd', 'upload', 'download', 'persist',\n                    'registry', 'mutex', 'pipe', 'inject']\n        if any(kw in s.lower() for kw in keywords):\n            strings.append(s)\n\n    return strings\n\n\nif __name__ == \"__main__\":\n    if len(sys.argv) \u003C 2:\n        print(f\"Usage: {sys.argv[0]} \u003Crust_binary>\")\n        sys.exit(1)\n\n    with open(sys.argv[1], 'rb') as f:\n        data = f.read()\n\n    is_rust, indicators = identify_rust_binary(data)\n    print(f\"[{'+'if is_rust else '-'}] Rust binary: {is_rust}\")\n    print(json.dumps(indicators, indent=2, default=str))\n\n    crates, capabilities = extract_crates(data)\n    print(f\"\\n[+] Crates ({len(crates)}):\")\n    for name, ver in sorted(crates.items()):\n        print(f\"  {name} v{ver}\")\n\n    if capabilities:\n        print(f\"\\n[!] Suspicious capabilities:\")\n        for cap in capabilities:\n            print(f\"  {cap['crate']} -> {cap['capability']}\")\n\n    strings = extract_rust_strings(data)\n    if strings:\n        print(f\"\\n[+] Suspicious strings ({len(strings)}):\")\n        for s in strings[:20]:\n            print(f\"  {s}\")\n```\n\n## Validation Criteria\n\n- Binary correctly identified as Rust-compiled with version info\n- Crate dependencies extracted revealing malware capabilities\n- Rust-specific string extraction handles fat pointer format\n- Main entry point and core logic functions identified\n- Encryption, networking, and persistence code located\n\n## References\n\n- [Binary Defense - Extracting Secrets from Rust Malware](https:\u002F\u002Fbinarydefense.com\u002Fresources\u002Fblog\u002Fdigging-through-rust-to-find-gold-extracting-secrets-from-rust-malware)\n- [Ghidra Extension for Rust Analysis](https:\u002F\u002Fcir.nii.ac.jp\u002Fcrid\u002F1050302237609671296)\n- [Fuzzing Labs - Reversing Modern Binaries](https:\u002F\u002Ffuzzinglabs.com\u002Freversing-modern-binaries\u002F)\n- [Bishop Fox - Rust for Malware Development](https:\u002F\u002Fbishopfox.com\u002Fblog\u002Frust-for-malware-development)\n","# Reverse Engineering Rust Malware\n\n## Overview\n\nRust has become increasingly popular for malware development due to its cross-compilation, memory safety guarantees, and the complexity it introduces for reverse engineers. Rust binaries contain the entire standard library statically linked, producing large binaries with extensive boilerplate code. Key challenges include non-null-terminated strings (Rust uses fat pointers with pointer+length), monomorphization generating duplicated generic code, complex error handling (Result\u002FOption unwrap chains), and unfamiliar calling conventions. Decompiling Rust to C produces unhelpful output compared to C\u002FC++ binaries. Tools like Ghidra scripts for crate extraction, and training focused on Rust-specific patterns (2024-2025) help address these challenges. Notable Rust malware includes BlackCat\u002FALPHV ransomware, Hive ransomware variants, and Buer Loader.\n\n\n## When to Use\n\n- When performing authorized security testing that involves reverse engineering rust malware\n- When analyzing malware samples or attack artifacts in a controlled environment\n- When conducting red team exercises or penetration testing engagements\n- When building detection capabilities based on offensive technique understanding\n\n## Prerequisites\n\n- IDA Pro 8.0+ or Ghidra 11.0+\n- Rust toolchain for reference compilation\n- Python 3.9+ for helper scripts\n- Understanding of Rust memory model (ownership, borrowing)\n- Familiarity with Rust string types (String, &str, CString)\n\n## Workflow\n\n### Step 1: Identify and Parse Rust Binary Metadata\n\n```python\n#!\u002Fusr\u002Fbin\u002Fenv python3\n\"\"\"Analyze Rust malware binary metadata and extract crate dependencies.\"\"\"\nimport re\nimport sys\nimport json\n\n\ndef identify_rust_binary(data):\n    \"\"\"Check if binary is Rust-compiled and extract version info.\"\"\"\n    indicators = {\n        \"rust_panic_strings\": bool(re.search(rb'panicked at', data)),\n        \"rust_unwrap\": bool(re.search(rb'called.*unwrap.*on.*None', data)),\n        \"core_panic\": bool(re.search(rb'core::panicking', data)),\n        \"std_rt\": bool(re.search(rb'std::rt::lang_start', data)),\n        \"cargo_path\": bool(re.search(rb'\\.cargo[\u002F\\\\]registry', data)),\n        \"rustc_version\": None,\n    }\n\n    version = re.search(rb'rustc\\s+(\\d+\\.\\d+\\.\\d+)', data)\n    if version:\n        indicators[\"rustc_version\"] = version.group(1).decode()\n\n    is_rust = sum(1 for v in indicators.values() if v) >= 2\n    return is_rust, indicators\n\n\ndef extract_crates(data):\n    \"\"\"Extract Rust crate (dependency) names from binary strings.\"\"\"\n    crate_pattern = re.compile(\n        rb'(?:crates\\.io-[a-f0-9]+\u002F|\\.cargo\u002Fregistry\u002Fsrc\u002F[^\u002F]+\u002F)'\n        rb'([\\w-]+)-(\\d+\\.\\d+\\.\\d+)'\n    )\n    crates = {}\n    for match in crate_pattern.finditer(data):\n        name = match.group(1).decode()\n        version = match.group(2).decode()\n        crates[name] = version\n\n    # Also check for common malware-relevant crates\n    suspicious_crates = {\n        \"reqwest\": \"HTTP client\",\n        \"hyper\": \"HTTP library\",\n        \"tokio\": \"Async runtime\",\n        \"aes\": \"AES encryption\",\n        \"chacha20\": \"ChaCha20 encryption\",\n        \"rsa\": \"RSA encryption\",\n        \"ring\": \"Crypto library\",\n        \"base64\": \"Base64 encoding\",\n        \"winapi\": \"Windows API bindings\",\n        \"winreg\": \"Registry access\",\n        \"sysinfo\": \"System information\",\n        \"screenshots\": \"Screen capture\",\n        \"clipboard\": \"Clipboard access\",\n        \"keylogger\": \"Key logging\",\n    }\n\n    capabilities = []\n    for crate_name, description in suspicious_crates.items():\n        if crate_name in crates:\n            capabilities.append({\n                \"crate\": crate_name,\n                \"version\": crates[crate_name],\n                \"capability\": description,\n            })\n\n    return crates, capabilities\n\n\ndef extract_rust_strings(data):\n    \"\"\"Extract strings handling Rust's non-null-terminated format.\"\"\"\n    # Rust strings are stored as pointer+length, but string literals\n    # are often in .rodata as contiguous sequences\n    strings = []\n    ascii_pattern = re.compile(rb'[\\x20-\\x7e]{8,500}')\n    for match in ascii_pattern.finditer(data):\n        s = match.group().decode('ascii')\n        # Filter for malware-relevant strings\n        keywords = ['http', 'socket', 'encrypt', 'decrypt', 'shell',\n                    'exec', 'cmd', 'upload', 'download', 'persist',\n                    'registry', 'mutex', 'pipe', 'inject']\n        if any(kw in s.lower() for kw in keywords):\n            strings.append(s)\n\n    return strings\n\n\nif __name__ == \"__main__\":\n    if len(sys.argv) \u003C 2:\n        print(f\"Usage: {sys.argv[0]} \u003Crust_binary>\")\n        sys.exit(1)\n\n    with open(sys.argv[1], 'rb') as f:\n        data = f.read()\n\n    is_rust, indicators = identify_rust_binary(data)\n    print(f\"[{'+'if is_rust else '-'}] Rust binary: {is_rust}\")\n    print(json.dumps(indicators, indent=2, default=str))\n\n    crates, capabilities = extract_crates(data)\n    print(f\"\\n[+] Crates ({len(crates)}):\")\n    for name, ver in sorted(crates.items()):\n        print(f\"  {name} v{ver}\")\n\n    if capabilities:\n        print(f\"\\n[!] Suspicious capabilities:\")\n        for cap in capabilities:\n            print(f\"  {cap['crate']} -> {cap['capability']}\")\n\n    strings = extract_rust_strings(data)\n    if strings:\n        print(f\"\\n[+] Suspicious strings ({len(strings)}):\")\n        for s in strings[:20]:\n            print(f\"  {s}\")\n```\n\n## Validation Criteria\n\n- Binary correctly identified as Rust-compiled with version info\n- Crate dependencies extracted revealing malware capabilities\n- Rust-specific string extraction handles fat pointer format\n- Main entry point and core logic functions identified\n- Encryption, networking, and persistence code located\n\n## References\n\n- [Binary Defense - Extracting Secrets from Rust Malware](https:\u002F\u002Fbinarydefense.com\u002Fresources\u002Fblog\u002Fdigging-through-rust-to-find-gold-extracting-secrets-from-rust-malware)\n- [Ghidra Extension for Rust Analysis](https:\u002F\u002Fcir.nii.ac.jp\u002Fcrid\u002F1050302237609671296)\n- [Fuzzing Labs - Reversing Modern Binaries](https:\u002F\u002Ffuzzinglabs.com\u002Freversing-modern-binaries\u002F)\n- [Bishop Fox - Rust for Malware Development](https:\u002F\u002Fbishopfox.com\u002Fblog\u002Frust-for-malware-development)\n",{"name":5,"tags":24,"author":32,"domain":33,"license":14,"version":34,"nist_csf":35,"subdomain":27,"description":7,"mitre_attack":40},[25,26,27,28,29,30,31],"rust","reverse-engineering","malware-analysis","ghidra","ida-pro","binary-analysis","rust-malware","mahipal","cybersecurity","1.0",[36,37,38,39],"DE.AE-02","RS.AN-03","ID.RA-01","DE.CM-01",[41,42,43,44],"T1027","T1055","T1140","T1497","main","1eb986d0b0ecc180291597e08eb5a58288843536","skills\u002Fcurated_premium_skills\u002FAnthropic-Cybersecurity-Skills\u002Fskills\u002Freverse-engineering-rust-malware","https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills","https:\u002F\u002Fgithub.com\u002Fvikasvardhanv","2026-08-25 13:16:33",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add vikasvardhanv\u002Fjerry_skills --skill reverse-engineering-rust-malware",{"tool":57,"command":58},"bunx","bunx skills add vikasvardhanv\u002Fjerry_skills --skill reverse-engineering-rust-malware",{"tool":60,"command":61},"pnpm","pnpm dlx skills add vikasvardhanv\u002Fjerry_skills --skill reverse-engineering-rust-malware","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fcurated_premium_skills\u002FAnthropic-Cybersecurity-Skills\u002Fskills\u002Freverse-engineering-rust-malware\u002FSKILL.md",true,[65,71,75,81,85,89],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"assets\u002Ftemplate.md","ASSET","资产文件",413,"https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fcurated_premium_skills\u002FAnthropic-Cybersecurity-Skills\u002Fskills\u002Freverse-engineering-rust-malware\u002Fassets\u002Ftemplate.md",{"path":72,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":15},"LICENSE","许可证",11255,{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fapi-reference.md","REFERENCE","参考文档",1694,"https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fcurated_premium_skills\u002FAnthropic-Cybersecurity-Skills\u002Fskills\u002Freverse-engineering-rust-malware\u002Freferences\u002Fapi-reference.md",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fstandards.md",301,"https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fcurated_premium_skills\u002FAnthropic-Cybersecurity-Skills\u002Fskills\u002Freverse-engineering-rust-malware\u002Freferences\u002Fstandards.md",{"path":86,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fworkflows.md",460,"https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fcurated_premium_skills\u002FAnthropic-Cybersecurity-Skills\u002Fskills\u002Freverse-engineering-rust-malware\u002Freferences\u002Fworkflows.md",{"path":90,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Fagent.py","SCRIPT","脚本",6553,"https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fcurated_premium_skills\u002FAnthropic-Cybersecurity-Skills\u002Fskills\u002Freverse-engineering-rust-malware\u002Fscripts\u002Fagent.py",[96,104,111,118,125,132],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":100,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":19},"01M7BESR1CJ3H5SP9XM8KYJZ9W","syllabus","Generates a curated supplementary reading list from any course syllabus using Consensus academic search. Grill-me intake (syllabus input format + course audience + year range) plus a grouping forcing-options checkpoint before any search runs — so the reading list matches the course's level and recency need. Parses the syllabus to extract topics and learning outcomes, searches Consensus for recent peer-reviewed papers per topic, and produces a professionally formatted .docx with clickable Consensus links, plain-language summaries calibrated to audience level, and Bloom-higher-order discussion questions tied to course learning goals. Use when the user uploads a syllabus, course outline, or curriculum document and wants supplementary readings (e.g., 'create a reading list from this syllabus', 'find recent papers for my course') — even casual mentions with a syllabus attached should trigger this skill.","MIT","https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002FSKILL.md",[],[],{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":100,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":19},"01M7BES1YA6R97W7QPMFFM1PED","pulse","Multi-source recency research skill that takes the pulse of any topic across Reddit, Hacker News, the open web, and optionally X\u002FTwitter within a configurable recent window (default 30 days). Forcing intake clarifies topic specificity, angle (trend\u002Fsentiment\u002Fproblems\u002Fopportunities\u002Fcomparison), time window, and platform scope before searching. Returns a synthesized briefing with citations, engagement metrics, and cross-platform pattern analysis. Use when the user requests multi-source recency intelligence on a topic (e.g., 'pulse on [topic]', 'what's happening with [topic]', 'what are people saying about [topic]', 'current conversation about [topic]', 'take the pulse of [topic]', 'trending: [topic]', 'find me info on [topic]'), and for competitor research, trend discovery, tool comparisons, and audience sentiment analysis.","https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002Fpulse\u002Fskills\u002Fpulse\u002FSKILL.md",[],[],{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":100,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":19},"01M7BERNHYGY035AR00VRT03KE","patent","Patent prior-art and landscape intelligence skill — not generic patent help. Commits to one of five sub-use-cases via forcing intake (novelty search \u002F freedom-to-operate \u002F competitive landscape \u002F acquisition diligence \u002F litigation prior-art) before any search runs. Searches Google Patents, Espacenet, USPTO, and optionally Lens.org for citation-graph signals. Output is an editable Word document (.docx) with verdict, ranked closest art (claim-text extracted), CPC-class-aware landscape, family-resolved hits, geographic coverage, FTO flags where applicable, strategy recommendations, and full audit log. Use when the user asks for patent searching or analysis (e.g., 'prior art search for [invention]', 'freedom to operate analysis for [product]'). Produces search signal, not legal advice — always recommends consulting a patent attorney before filing or licensing decisions. Trademark, copyright, and trade-secret questions are out of scope.","https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002Fpatent\u002Fskills\u002Fpatent\u002FSKILL.md",[],[],{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":100,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":19},"01M7BERCK1EAKTWW7R436WAR0J","notebooklm","Browser automation skill for controlling Google's NotebookLM. Use when the user wants anything done in NotebookLM (e.g., 'open NotebookLM', 'check my [name] notebook', 'ask my notebook about X', 'add [source] to NotebookLM', 'generate a Video Overview from my notebook', 'use NotebookLM Studio'). Handles reading and querying notebooks, adding sources (URLs, text, files, YouTube links, synthesized content), generating Studio outputs (Audio\u002FVideo Overviews, Mind Maps, Reports incl. Briefing Doc\u002FStudy Guide\u002FFAQ, Flashcards, Quiz, slide decks, infographics — discover the exact set from the live Studio panel; the UI evolves fast), and creating new notebooks. Requires browser automation environment — fails gracefully when unavailable.","https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002Fnotebooklm\u002Fskills\u002Fnotebooklm\u002FSKILL.md",[],[],{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":100,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":19},"01M7BEQZAZAQRTXFJRY7RHV3TY","litreview","Academic literature orientation skill that searches papers via free keyless APIs (PubMed E-utilities + OpenAlex) by default — with the Consensus MCP as an optional enhancement lane when connected — builds a strategic search plan using PICO (default) or SPIDER \u002F Decomposition \u002F hybrid as fallbacks, and synthesizes findings into a formatted Word (.docx) research guide. Grill-me intake (research question specificity + framework hint + tentative depth) before the recon search; a second forcing checkpoint after Phase 2 confirms framework + sub-areas + depth before searches consume budget. Configurable depth (5\u002F10\u002F20 queries) controls coverage vs. speed. Output is a 'launching pad' — an orientation guide that lets a researcher dive in confidently, not a finished review. Use when the user starts literature-oriented research (e.g., 'litreview on [topic]', 'literature review on [topic]', 'I'm starting a literature review on X', 'I'm writing a paper on X', 'help me research X', 'I'm doing research on X', 'can you help me research X'). Do NOT use for single one-off paper searches wanting a quick list — that's a plain PubMed\u002FOpenAlex (or Consensus) query.","https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002Flitreview\u002Fskills\u002Flitreview\u002FSKILL.md",[],[],{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":100,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"publishedAt":19},"01M7BEQKJ45K31QK5VRAQSVJCJ","grants","NIH grant research skill for clinical researchers. Grill-me intake (research idea + career stage + preliminary data + environment + submission posture + known institute targets) locks down the funding strategy before any search runs. Runs a 5-facet Consensus positioning analysis (with draft Significance\u002FInnovation language), maps the research to the right NIH institutes and study sections via RePORTER, finds NOSIs and funded overlap, and produces an editable Word document (.docx) with budget\u002Fscope-aware mechanism recommendations, submission timelines, and a mandatory program officer recommendation. Use when the user asks about research funding or makes any grant-related request (e.g., 'grants for [topic]', 'find grants for my research idea', 'what grants match my research', 'help me find NIH funding', 'grant opportunities for my research'). NIH-only scope — non-NIH funders (PCORI, DOD CDMRP, VA, foundations) are out of scope and flagged at intake.","https:\u002F\u002Fgithub.com\u002Fvikasvardhanv\u002Fjerry_skills\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002Fgrants\u002Fskills\u002Fgrants\u002FSKILL.md",[],[]]