agentsclimarketplace

Mobile security

Skill ShieldNet-360/secure-vibe/dist/agent-skills/.agents/skills/mobile-security

SecureVibe — prevention-first security for AI-written code. Signed SKILL.md knowledge that makes AI coding assistants write secure code at generation time, plus a deterministic CI gate. Offline · keyless · Ed25519-signed. By ShieldNet360.

Install
npx -y skills add ShieldNet-360/secure-vibe --skill mobile-security

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Android and iOS hardening: exported components, ATS, keychain, certificate pinning, root/jailbreak detection — Applies to: when generating Android (Kotlin / Java) app code or manifests; when generating iOS (Swift / Objective-C) app code; when generating React Native / Flutter native modules

SKILL.md

4.2 KB, 884 tokens by cl100k_base, as published. Nobody here has run it

<!-- Native skill bundle for agent-skills (cross-tool convention). Generated by `secure-vibe dev regenerate`. --> <!-- Do not edit by hand; the source of truth is skills/mobile-security/SKILL.md. -->

Mobile Application Security

Android and iOS hardening: exported components, ATS, keychain, certificate pinning, root/jailbreak detection

ALWAYS

  • Android: every <activity>, <service>, <receiver>, <provider> in AndroidManifest.xml either has android:exported="false" or explicitly declares an intent filter and is intentionally exported. As of Android 12 (API 31), android:exported is required when an intent-filter is declared.
  • Android: store secrets in the Android Keystore (KeyStore / EncryptedSharedPreferences with MasterKey). Never in plain SharedPreferences, plain files, or BuildConfig.
  • iOS: store secrets in the Keychain with kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly or stricter. Don't store in UserDefaults, plist, or files.
  • iOS: keep App Transport Security (ATS) enabled in Info.plist. If an exception is required, scope it to a specific host with NSExceptionDomains.
  • Validate the server's TLS certificate with certificate pinning (public key pinning preferred) for backends you control. Use OkHttp.CertificatePinner on Android, URLSessionDelegate didReceiveChallenge on iOS, or your framework's pinning module.
  • Obfuscate / shrink release builds (Android R8 / ProGuard with proguard-rules.pro; iOS bitcode + Swift symbol stripping). Strip debug logs from release builds.
  • Detect rooted / jailbroken devices for high-risk apps (banking, payment, enterprise) and reduce sensitivity (block payments, refuse to attach to a managed profile). Use the Play Integrity API on Android and DeviceCheck / AppAttest on iOS as the authoritative attestation.

NEVER

  • Ship API keys, signing keys, or backend secrets in source / resources / strings.xml / BuildConfig / Info.plist. Issue short-lived, device-scoped tokens from a backend instead.
  • Set android:allowBackup="true" for apps that store credentials — the backed-up data is readable on developer machines. Use android:fullBackupContent to exclude sensitive paths.
  • Set android:debuggable="true" in release builds, or <application android:networkSecurityConfig> that allows cleartext to arbitrary hosts.
  • Disable ATS app-wide on iOS (NSAllowsArbitraryLoads=true). If you must weaken it, scope per-host.
  • Implement custom TLS / certificate handling that returns "trust all" (X509TrustManager.checkServerTrusted empty body, URLSessionDelegate always-trust). This is the #1 Android security finding shipped to production.
  • Pass user input to WebView.loadUrl / WKWebView.load without scheme validation; never enable WebSettings.setAllowFileAccessFromFileURLs(true) or setUniversalAccessFromFileURLs(true).
  • Implement biometric auth without BiometricPrompt's setUserAuthenticationRequired(true) binding the key — biometric "true" alone proves nothing without a cryptographic challenge.
  • Log full request/response bodies including Authorization headers — e.g. an OkHttp HttpLoggingInterceptor left at Level.BODY (or URLSession / Alamofire debug logging) in a release build. The dump lands in Logcat / oslog, readable by adb logcat on any USB-debuggable device (no root) and by log aggregation. Gate body + header logging to debug builds and redact Authorization / Cookie / token / PII fields.

KNOWN FALSE POSITIVES

  • Public read-only IDs (analytics public key, public DSN) embedded in the binary are not secrets; they're meant to be there.
  • The default debuggable=true on debug variants is normal — the rule applies to release builds.
  • Custom URL schemes (myapp://) for OAuth callbacks are expected; ensure the corresponding intent filter is restricted and the state parameter is verified.

What ships with it: 1 file

1.1 KB alongside SKILL.md

Keep looking

Skills are one crate of 326,970. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.