[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7ED1ST3SSAP1YANN9SWZ6AV":3,"skill-same:01M7ED1ST3SSAP1YANN9SWZ6AV":82},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M7ED1ST3SSAP1YANN9SWZ6AV","performing-dynamic-analysis-of-android-app",null,"Performs runtime dynamic analysis of Android applications using Frida, Objection, and Android Debug Bridge to observe application behavior during execution, intercept function calls, modify runtime values, and identify vulnerabilities that static analysis misses. Use when testing Android apps for runtime security flaws, hooking sensitive methods, bypassing client-side protections, or analyzing obfuscated applications. Activates for requests involving Android dynamic analysis, runtime hooking, Frida Android instrumentation, or live app behavior analysis.","lza6\u002FArmor-piercing-system-prompts","lza6","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F128880206?v=4","01M7EB3K7WPX5T28EJ2NVHE6EG","Chinese-tingfeng","01M7EB3K97E1KQ16QWKJMFNGX8",11,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F03-逆向工程\u002Fperforming-dynamic-analysis-of-android-app\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: performing-dynamic-analysis-of-android-app\ndescription: 'Performs runtime dynamic analysis of Android applications using Frida,\n  Objection, and Android Debug Bridge to observe application behavior during execution,\n  intercept function calls, modify runtime values, and identify vulnerabilities that\n  static analysis misses. Use when testing Android apps for runtime security flaws,\n  hooking sensitive methods, bypassing client-side protections, or analyzing obfuscated\n  applications. Activates for requests involving Android dynamic analysis, runtime\n  hooking, Frida Android instrumentation, or live app behavior analysis.\n\n  '\ndomain: cybersecurity\nsubdomain: mobile-security\nauthor: mahipal\ntags:\n- mobile-security\n- android\n- frida\n- dynamic-analysis\n- owasp-mobile\n- penetration-testing\nversion: 1.0.0\nlicense: Apache-2.0\nnist_csf:\n- PR.PS-01\n- PR.AA-05\n- ID.RA-01\n- DE.CM-09\nmitre_attack:\n- T1059\n- T1056\n- T1036\n- T1078\n- T1027\n---\n# Performing Dynamic Analysis of Android App\n\n## When to Use\n\nUse this skill when:\n- Static analysis results need runtime validation on an actual Android device\n- The target app uses obfuscation (DexGuard, custom packers) that prevents effective static analysis\n- Testing requires observing actual API calls, decrypted data, or runtime-generated values\n- Assessing root detection, tamper detection, or anti-debugging implementations\n\n**Do not use** this skill on production environments without authorization -- dynamic instrumentation can alter app behavior and trigger security alerts.\n\n## Prerequisites\n\n- Rooted Android device or emulator (Genymotion, Android Studio AVD with writable system)\n- Frida server installed on device matching the architecture (arm64, x86_64)\n- Python 3.10+ with `frida-tools` and `objection` packages\n- ADB configured and device connected\n- Target APK installed on device\n\n## Workflow\n\n### Step 1: Setup Frida Server on Android Device\n\n```bash\n# Check device architecture\nadb shell getprop ro.product.cpu.abi\n# Output: arm64-v8a\n\n# Download matching Frida server from GitHub releases\n# https:\u002F\u002Fgithub.com\u002Ffrida\u002Ffrida\u002Freleases\n# Push to device\nadb push frida-server-16.x.x-android-arm64 \u002Fdata\u002Flocal\u002Ftmp\u002Ffrida-server\nadb shell chmod 755 \u002Fdata\u002Flocal\u002Ftmp\u002Ffrida-server\nadb shell \u002Fdata\u002Flocal\u002Ftmp\u002Ffrida-server &\n\n# Verify Frida connection\nfrida-ps -U\n```\n\n### Step 2: Enumerate Application Attack Surface\n\n```bash\n# List all packages\nfrida-ps -U -a\n\n# Attach Objection for high-level exploration\nobjection --gadget com.target.app explore\n\n# List activities, services, receivers\nandroid hooking list activities\nandroid hooking list services\nandroid hooking list receivers\n\n# List loaded classes\nandroid hooking list classes\nandroid hooking search classes com.target.app\n```\n\n### Step 3: Hook Sensitive Methods\n\n```bash\n# Hook all methods of a class\nandroid hooking watch class com.target.app.auth.LoginManager\n\n# Hook specific method with argument dumping\nandroid hooking watch class_method com.target.app.auth.LoginManager.authenticate --dump-args --dump-return\n\n# Hook crypto operations\nandroid hooking watch class javax.crypto.Cipher --dump-args\nandroid hooking watch class java.security.MessageDigest --dump-args\n\n# Hook network calls\nandroid hooking watch class okhttp3.OkHttpClient --dump-args\nandroid hooking watch class java.net.URL --dump-args\n```\n\n### Step 4: Write Custom Frida Scripts for Deep Analysis\n\n```javascript\n\u002F\u002F hook_crypto.js - Intercept encryption\u002Fdecryption operations\nJava.perform(function() {\n    var Cipher = Java.use(\"javax.crypto.Cipher\");\n\n    Cipher.doFinal.overload(\"[B\").implementation = function(input) {\n        var mode = this.getAlgorithm();\n        console.log(\"[Cipher] Algorithm: \" + mode);\n        console.log(\"[Cipher] Input: \" + bytesToHex(input));\n\n        var result = this.doFinal(input);\n        console.log(\"[Cipher] Output: \" + bytesToHex(result));\n        return result;\n    };\n\n    function bytesToHex(bytes) {\n        var hex = [];\n        for (var i = 0; i \u003C bytes.length; i++) {\n            hex.push((\"0\" + (bytes[i] & 0xFF).toString(16)).slice(-2));\n        }\n        return hex.join(\"\");\n    }\n});\n```\n\n```bash\n# Execute custom Frida script\nfrida -U -f com.target.app -l hook_crypto.js --no-pause\n```\n\n### Step 5: Bypass Root Detection\n\n```javascript\n\u002F\u002F root_bypass.js - Common root detection bypass\nJava.perform(function() {\n    \u002F\u002F Bypass RootBeer library\n    var RootBeer = Java.use(\"com.scottyab.rootbeer.RootBeer\");\n    RootBeer.isRooted.implementation = function() {\n        console.log(\"[RootBeer] isRooted() bypassed\");\n        return false;\n    };\n\n    \u002F\u002F Bypass generic file-based root checks\n    var File = Java.use(\"java.io.File\");\n    var originalExists = File.exists;\n    File.exists.implementation = function() {\n        var path = this.getAbsolutePath();\n        var rootPaths = [\"\u002Fsystem\u002Fapp\u002FSuperuser.apk\", \"\u002Fsystem\u002Fxbin\u002Fsu\",\n                         \"\u002Fsbin\u002Fsu\", \"\u002Fsystem\u002Fbin\u002Fsu\", \"\u002Fdata\u002Flocal\u002Fbin\u002Fsu\"];\n        if (rootPaths.indexOf(path) >= 0) {\n            console.log(\"[Root] Blocked check for: \" + path);\n            return false;\n        }\n        return originalExists.call(this);\n    };\n\n    \u002F\u002F Bypass SafetyNet\u002FPlay Integrity\n    try {\n        var SafetyNet = Java.use(\"com.google.android.gms.safetynet.SafetyNetApi\");\n        console.log(\"[SafetyNet] Class found - may need additional bypass\");\n    } catch(e) {}\n});\n```\n\n### Step 6: Analyze Network Communication at Runtime\n\n```javascript\n\u002F\u002F network_monitor.js - Monitor all HTTP requests\nJava.perform(function() {\n    \u002F\u002F Hook OkHttp3\n    try {\n        var OkHttpClient = Java.use(\"okhttp3.OkHttpClient\");\n        var Interceptor = Java.use(\"okhttp3.Interceptor\");\n        var Chain = Java.use(\"okhttp3.Interceptor$Chain\");\n\n        console.log(\"[OkHttp] Monitoring network requests...\");\n\n        var Request = Java.use(\"okhttp3.Request\");\n        Request.url.implementation = function() {\n            var url = this.url();\n            console.log(\"[OkHttp] URL: \" + url.toString());\n            return url;\n        };\n    } catch(e) {\n        console.log(\"[OkHttp] Not found, trying HttpURLConnection\");\n    }\n\n    \u002F\u002F Hook HttpURLConnection\n    var URL = Java.use(\"java.net.URL\");\n    URL.openConnection.overload().implementation = function() {\n        console.log(\"[URL] Opening: \" + this.toString());\n        return this.openConnection();\n    };\n});\n```\n\n### Step 7: Extract Decrypted Data and Secrets\n\n```bash\n# Using Objection for quick extraction\nobjection --gadget com.target.app explore\n\n# Dump Android Keystore entries\nandroid keystore list\nandroid keystore dump\n\n# Search heap for sensitive objects\nandroid heap search instances com.target.app.model.User\nandroid heap evaluate \u003Chandle> \"JSON.stringify(clazz)\"\n\n# Memory string search\nmemory search \"password\" --string\nmemory search \"api_key\" --string\n```\n\n## Key Concepts\n\n| Term | Definition |\n|------|-----------|\n| **Dynamic Instrumentation** | Modifying application behavior at runtime by injecting code into the running process |\n| **Method Hooking** | Replacing or wrapping function implementations to intercept arguments and return values |\n| **Frida Server** | Daemon running on the target device that receives instrumentation commands from the host |\n| **Dalvik\u002FART Runtime** | Android runtime environments; Frida hooks at the ART level for Java\u002FKotlin methods |\n| **Heap Inspection** | Examining live objects in the application's memory heap to extract runtime data |\n\n## Tools & Systems\n\n- **Frida**: Dynamic instrumentation toolkit for injecting JavaScript into native Android processes\n- **Objection**: Higher-level Frida wrapper with pre-built Android and iOS security testing commands\n- **frida-trace**: Automated method tracing utility for quick reconnaissance of app behavior\n- **Drozer**: Android security assessment framework for testing IPC and exported components\n- **Android Studio Profiler**: Runtime monitoring for CPU, memory, and network activity\n\n## Common Pitfalls\n\n- **Frida version mismatch**: The Frida server on the device must match the frida-tools version on the host. Version mismatches cause connection failures.\n- **Anti-Frida detection**: Some apps detect Frida by checking for the Frida server process, scanning memory for Frida signatures, or monitoring `\u002Fproc\u002Fself\u002Fmaps`. Use Frida Gadget injection or custom server builds.\n- **Obfuscated class names**: When ProGuard\u002FR8 is applied, class and method names are shortened (e.g., `a.b.c.d()`). Use `android hooking search classes` to discover actual runtime names.\n- **Multi-DEX apps**: Large apps split across multiple DEX files may not have all classes loaded at startup. Hook class loaders or use `Java.enumerateLoadedClasses()` after app is fully initialized.\n","# Performing Dynamic Analysis of Android App\n\n## When to Use\n\nUse this skill when:\n- Static analysis results need runtime validation on an actual Android device\n- The target app uses obfuscation (DexGuard, custom packers) that prevents effective static analysis\n- Testing requires observing actual API calls, decrypted data, or runtime-generated values\n- Assessing root detection, tamper detection, or anti-debugging implementations\n\n**Do not use** this skill on production environments without authorization -- dynamic instrumentation can alter app behavior and trigger security alerts.\n\n## Prerequisites\n\n- Rooted Android device or emulator (Genymotion, Android Studio AVD with writable system)\n- Frida server installed on device matching the architecture (arm64, x86_64)\n- Python 3.10+ with `frida-tools` and `objection` packages\n- ADB configured and device connected\n- Target APK installed on device\n\n## Workflow\n\n### Step 1: Setup Frida Server on Android Device\n\n```bash\n# Check device architecture\nadb shell getprop ro.product.cpu.abi\n# Output: arm64-v8a\n\n# Download matching Frida server from GitHub releases\n# https:\u002F\u002Fgithub.com\u002Ffrida\u002Ffrida\u002Freleases\n# Push to device\nadb push frida-server-16.x.x-android-arm64 \u002Fdata\u002Flocal\u002Ftmp\u002Ffrida-server\nadb shell chmod 755 \u002Fdata\u002Flocal\u002Ftmp\u002Ffrida-server\nadb shell \u002Fdata\u002Flocal\u002Ftmp\u002Ffrida-server &\n\n# Verify Frida connection\nfrida-ps -U\n```\n\n### Step 2: Enumerate Application Attack Surface\n\n```bash\n# List all packages\nfrida-ps -U -a\n\n# Attach Objection for high-level exploration\nobjection --gadget com.target.app explore\n\n# List activities, services, receivers\nandroid hooking list activities\nandroid hooking list services\nandroid hooking list receivers\n\n# List loaded classes\nandroid hooking list classes\nandroid hooking search classes com.target.app\n```\n\n### Step 3: Hook Sensitive Methods\n\n```bash\n# Hook all methods of a class\nandroid hooking watch class com.target.app.auth.LoginManager\n\n# Hook specific method with argument dumping\nandroid hooking watch class_method com.target.app.auth.LoginManager.authenticate --dump-args --dump-return\n\n# Hook crypto operations\nandroid hooking watch class javax.crypto.Cipher --dump-args\nandroid hooking watch class java.security.MessageDigest --dump-args\n\n# Hook network calls\nandroid hooking watch class okhttp3.OkHttpClient --dump-args\nandroid hooking watch class java.net.URL --dump-args\n```\n\n### Step 4: Write Custom Frida Scripts for Deep Analysis\n\n```javascript\n\u002F\u002F hook_crypto.js - Intercept encryption\u002Fdecryption operations\nJava.perform(function() {\n    var Cipher = Java.use(\"javax.crypto.Cipher\");\n\n    Cipher.doFinal.overload(\"[B\").implementation = function(input) {\n        var mode = this.getAlgorithm();\n        console.log(\"[Cipher] Algorithm: \" + mode);\n        console.log(\"[Cipher] Input: \" + bytesToHex(input));\n\n        var result = this.doFinal(input);\n        console.log(\"[Cipher] Output: \" + bytesToHex(result));\n        return result;\n    };\n\n    function bytesToHex(bytes) {\n        var hex = [];\n        for (var i = 0; i \u003C bytes.length; i++) {\n            hex.push((\"0\" + (bytes[i] & 0xFF).toString(16)).slice(-2));\n        }\n        return hex.join(\"\");\n    }\n});\n```\n\n```bash\n# Execute custom Frida script\nfrida -U -f com.target.app -l hook_crypto.js --no-pause\n```\n\n### Step 5: Bypass Root Detection\n\n```javascript\n\u002F\u002F root_bypass.js - Common root detection bypass\nJava.perform(function() {\n    \u002F\u002F Bypass RootBeer library\n    var RootBeer = Java.use(\"com.scottyab.rootbeer.RootBeer\");\n    RootBeer.isRooted.implementation = function() {\n        console.log(\"[RootBeer] isRooted() bypassed\");\n        return false;\n    };\n\n    \u002F\u002F Bypass generic file-based root checks\n    var File = Java.use(\"java.io.File\");\n    var originalExists = File.exists;\n    File.exists.implementation = function() {\n        var path = this.getAbsolutePath();\n        var rootPaths = [\"\u002Fsystem\u002Fapp\u002FSuperuser.apk\", \"\u002Fsystem\u002Fxbin\u002Fsu\",\n                         \"\u002Fsbin\u002Fsu\", \"\u002Fsystem\u002Fbin\u002Fsu\", \"\u002Fdata\u002Flocal\u002Fbin\u002Fsu\"];\n        if (rootPaths.indexOf(path) >= 0) {\n            console.log(\"[Root] Blocked check for: \" + path);\n            return false;\n        }\n        return originalExists.call(this);\n    };\n\n    \u002F\u002F Bypass SafetyNet\u002FPlay Integrity\n    try {\n        var SafetyNet = Java.use(\"com.google.android.gms.safetynet.SafetyNetApi\");\n        console.log(\"[SafetyNet] Class found - may need additional bypass\");\n    } catch(e) {}\n});\n```\n\n### Step 6: Analyze Network Communication at Runtime\n\n```javascript\n\u002F\u002F network_monitor.js - Monitor all HTTP requests\nJava.perform(function() {\n    \u002F\u002F Hook OkHttp3\n    try {\n        var OkHttpClient = Java.use(\"okhttp3.OkHttpClient\");\n        var Interceptor = Java.use(\"okhttp3.Interceptor\");\n        var Chain = Java.use(\"okhttp3.Interceptor$Chain\");\n\n        console.log(\"[OkHttp] Monitoring network requests...\");\n\n        var Request = Java.use(\"okhttp3.Request\");\n        Request.url.implementation = function() {\n            var url = this.url();\n            console.log(\"[OkHttp] URL: \" + url.toString());\n            return url;\n        };\n    } catch(e) {\n        console.log(\"[OkHttp] Not found, trying HttpURLConnection\");\n    }\n\n    \u002F\u002F Hook HttpURLConnection\n    var URL = Java.use(\"java.net.URL\");\n    URL.openConnection.overload().implementation = function() {\n        console.log(\"[URL] Opening: \" + this.toString());\n        return this.openConnection();\n    };\n});\n```\n\n### Step 7: Extract Decrypted Data and Secrets\n\n```bash\n# Using Objection for quick extraction\nobjection --gadget com.target.app explore\n\n# Dump Android Keystore entries\nandroid keystore list\nandroid keystore dump\n\n# Search heap for sensitive objects\nandroid heap search instances com.target.app.model.User\nandroid heap evaluate \u003Chandle> \"JSON.stringify(clazz)\"\n\n# Memory string search\nmemory search \"password\" --string\nmemory search \"api_key\" --string\n```\n\n## Key Concepts\n\n| Term | Definition |\n|------|-----------|\n| **Dynamic Instrumentation** | Modifying application behavior at runtime by injecting code into the running process |\n| **Method Hooking** | Replacing or wrapping function implementations to intercept arguments and return values |\n| **Frida Server** | Daemon running on the target device that receives instrumentation commands from the host |\n| **Dalvik\u002FART Runtime** | Android runtime environments; Frida hooks at the ART level for Java\u002FKotlin methods |\n| **Heap Inspection** | Examining live objects in the application's memory heap to extract runtime data |\n\n## Tools & Systems\n\n- **Frida**: Dynamic instrumentation toolkit for injecting JavaScript into native Android processes\n- **Objection**: Higher-level Frida wrapper with pre-built Android and iOS security testing commands\n- **frida-trace**: Automated method tracing utility for quick reconnaissance of app behavior\n- **Drozer**: Android security assessment framework for testing IPC and exported components\n- **Android Studio Profiler**: Runtime monitoring for CPU, memory, and network activity\n\n## Common Pitfalls\n\n- **Frida version mismatch**: The Frida server on the device must match the frida-tools version on the host. Version mismatches cause connection failures.\n- **Anti-Frida detection**: Some apps detect Frida by checking for the Frida server process, scanning memory for Frida signatures, or monitoring `\u002Fproc\u002Fself\u002Fmaps`. Use Frida Gadget injection or custom server builds.\n- **Obfuscated class names**: When ProGuard\u002FR8 is applied, class and method names are shortened (e.g., `a.b.c.d()`). Use `android hooking search classes` to discover actual runtime names.\n- **Multi-DEX apps**: Large apps split across multiple DEX files may not have all classes loaded at startup. Hook class loaders or use `Java.enumerateLoadedClasses()` after app is fully initialized.\n",{"name":5,"tags":24,"author":31,"domain":32,"license":15,"version":33,"nist_csf":34,"subdomain":25,"description":39,"mitre_attack":40},[25,26,27,28,29,30],"mobile-security","android","frida","dynamic-analysis","owasp-mobile","penetration-testing","mahipal","cybersecurity","1.0.0",[35,36,37,38],"PR.PS-01","PR.AA-05","ID.RA-01","DE.CM-09","Performs runtime dynamic analysis of Android applications using Frida, Objection, and Android Debug Bridge to observe application behavior during execution, intercept function calls, modify runtime values, and identify vulnerabilities that static analysis misses. Use when testing Android apps for runtime security flaws, hooking sensitive methods, bypassing client-side protections, or analyzing obfuscated applications. Activates for requests involving Android dynamic analysis, runtime hooking, Frida Android instrumentation, or live app behavior analysis.\n",[41,42,43,44,45],"T1059","T1056","T1036","T1078","T1027","main","d69096e239f2a89aabc2cd078c47664a9d3b1e11","03-逆向工程\u002Fperforming-dynamic-analysis-of-android-app",3,"https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts","https:\u002F\u002Fgithub.com\u002Flza6","个人vx：Tf00798\r\n个人✈：@TFGY999","2026-10-08 14:29:22",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add lza6\u002FArmor-piercing-system-prompts --skill performing-dynamic-analysis-of-android-app",{"tool":60,"command":61},"bunx","bunx skills add lza6\u002FArmor-piercing-system-prompts --skill performing-dynamic-analysis-of-android-app",{"tool":63,"command":64},"pnpm","pnpm dlx skills add lza6\u002FArmor-piercing-system-prompts --skill performing-dynamic-analysis-of-android-app","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F03-逆向工程\u002Fperforming-dynamic-analysis-of-android-app\u002FSKILL.md",true,[68,74,78],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fapi-reference.md","REFERENCE","参考文档",1415,"https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F03-逆向工程\u002Fperforming-dynamic-analysis-of-android-app\u002Freferences\u002Fapi-reference.md",{"path":75,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fstandards.md",2158,"https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F03-逆向工程\u002Fperforming-dynamic-analysis-of-android-app\u002Freferences\u002Fstandards.md",{"path":79,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fworkflows.md",2796,"https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F03-逆向工程\u002Fperforming-dynamic-analysis-of-android-app\u002Freferences\u002Fworkflows.md",[83,91,98,105,112,119],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":87,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":19},"01M7EXRM12046G0GM1WGMMFXCN","ci-cd-and-automation","Automates CI\u002FCD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate quality gates, configure test runners in CI, or establish deployment strategies.","MIT","https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F05-技能与代理开发\u002Fci-cd-and-automation\u002FSKILL.md",[],[],{"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":87,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":19},"01M7EXRFYYSJ3Y15AGPDDEWWQD","chrome-devtools","Uses Chrome DevTools via MCP for efficient debugging, troubleshooting and browser automation. Use when debugging web pages, automating browser interactions, analyzing performance, or inspecting network requests. This skill does not apply to `--slim` mode (MCP configuration).","https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F05-技能与代理开发\u002Fchrome-devtools\u002FSKILL.md",[],[],{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":87,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":19},"01M7EXR6EYPE4X5X1BTAE6QJRV","chrome-cdp","Drive a real Chrome via the Chrome DevTools Protocol (CDP). Ensures a\ndebuggable Chrome is running (launching it if needed) so the agent can\nnavigate, read page content, inspect the DOM, run JavaScript, and take\nscreenshots — without the user typing any launch command. Includes a\nfirst-class \"review a live running app\" flow: point Chrome at the app under\ndevelopment and inspect\u002Fscreenshot the REAL page (what a static-artifact tool\ncannot do). Backed by Glimpse and the chrome-devtools MCP server. Use when\nasked to \"use chrome\", \"open chrome\", \"drive my browser\", \"read the page in\nchrome\", \"review the running app\", \"screenshot the app\", or \"\u002Fchrome-cdp\".","https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F05-技能与代理开发\u002Fchrome-cdp\u002FSKILL.md",[],[],{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":19},"01M7EXR1Y7E79KQKG4J798XGH6","check-identity-pack","Run an AFP 100-point or AUSTRAC safe-harbour identity check over a set of documents, and report exactly what's missing. Use when the user asks to check identity documents, verify someone's ID for onboarding, or assess whether a document pack satisfies Australian identity requirements.","https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F05-技能与代理开发\u002Fcheck-identity-pack\u002FSKILL.md",[],[],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":87,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":19},"01M7EXQXW7C7PGREJW9ZZTZ16H","changelog","Auto-generates a changelog from git commits, sprint data, and design documents. Produces both internal and player-facing versions.","https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F05-技能与代理开发\u002Fchangelog\u002FSKILL.md",[],[],{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":87,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":19},"01M7EXQMH2ZME3ANN8Q8MEWPFB","cellxgene-census","Query the CZ CELLxGENE Census programmatically for versioned public single-cell and spatial transcriptomics data. Use when you need population-scale cell metadata, gene expression slices, Census summary counts, source H5AD URIs\u002Fdownloads, embeddings, spatial Census data, or reference atlas comparisons across organisms, tissues, diseases, assays, and cell types. For analyzing your own local single-cell data use scanpy, anndata, or scvi-tools.","https:\u002F\u002Fgithub.com\u002Flza6\u002FArmor-piercing-system-prompts\u002Fblob\u002Fmain\u002F05-技能与代理开发\u002Fcellxgene-census\u002FSKILL.md",[],[]]