mobile-best-practices 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/SKILL.md +1 -1
- package/assets/commands/mobile-anr-crash-check.md +91 -0
- package/assets/commands/mobile-performance-check.md +86 -23
- package/assets/commands/mobile-security-audit.md +106 -21
- package/assets/commands/mobile-setup-android.md +103 -38
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -0
- package/dist/commands/init.js.map +1 -1
- package/package.json +4 -4
package/assets/SKILL.md
CHANGED
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
compatibility: Requires Python 3.x for BM25 search. Works with Claude Code and other skills-compatible agents.
|
|
6
6
|
metadata:
|
|
7
7
|
author: tungnk123
|
|
8
|
-
version: "1.6.
|
|
8
|
+
version: "1.6.1"
|
|
9
9
|
usage: "READER | AGENT | CLI"
|
|
10
10
|
invocation: "explicit-only — database is never searched automatically"
|
|
11
11
|
modes:
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Check mobile app for ANR, crash, and splash screen issues using the mobile-best-practices database
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Perform a comprehensive ANR, crash, and splash screen analysis of this mobile project.
|
|
6
|
+
|
|
7
|
+
**IMPORTANT**: You MUST run every `python3` search command below and base ALL findings exclusively on the database results. Do NOT rely on training data. Every recommendation must come from the database output.
|
|
8
|
+
|
|
9
|
+
## Step 1: Scan the Entire Project
|
|
10
|
+
|
|
11
|
+
Find all relevant source files:
|
|
12
|
+
- Android: `find . -name "*.kt" -o -name "*.kts" -o -name "*.xml" | grep -v build | grep -v .gradle`
|
|
13
|
+
- iOS: `find . -name "*.swift" | grep -v .build`
|
|
14
|
+
- Flutter: `find . -name "*.dart" | grep -v .dart_tool`
|
|
15
|
+
- React Native: `find . -name "*.tsx" -o -name "*.ts" -o -name "*.jsx" -o -name "*.js" | grep -v node_modules`
|
|
16
|
+
|
|
17
|
+
Read the actual source files to understand the current threading, lifecycle, and startup implementation.
|
|
18
|
+
|
|
19
|
+
## Step 2: Search the Database — ALL Entries Required
|
|
20
|
+
|
|
21
|
+
Run ALL of the following searches. Do NOT skip any. Use the results as the authoritative source:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# ANR: main thread blocking, IO on main thread
|
|
25
|
+
python3 ~/.mobile-best-practices/scripts/search.py "anr main thread blocking io" --domain performance -n 10
|
|
26
|
+
python3 ~/.mobile-best-practices/scripts/search.py "threading coroutine dispatcher main" --domain performance -n 10
|
|
27
|
+
python3 ~/.mobile-best-practices/scripts/search.py "strictmode blocking disk network" --domain antipattern -n 10
|
|
28
|
+
|
|
29
|
+
# ANR: coroutine misuse and async patterns
|
|
30
|
+
python3 ~/.mobile-best-practices/scripts/search.py "dispatcher io main coroutine scope" --domain antipattern -n 10
|
|
31
|
+
python3 ~/.mobile-best-practices/scripts/search.py "runblocking suspend main thread" --domain antipattern -n 10
|
|
32
|
+
python3 ~/.mobile-best-practices/scripts/search.py "broadcast receiver service timeout anr" --domain performance -n 10
|
|
33
|
+
|
|
34
|
+
# Crash: null safety and exception handling
|
|
35
|
+
python3 ~/.mobile-best-practices/scripts/search.py "null pointer exception crash handler" --domain antipattern -n 10
|
|
36
|
+
python3 ~/.mobile-best-practices/scripts/search.py "exception coroutine try catch" --domain antipattern -n 10
|
|
37
|
+
python3 ~/.mobile-best-practices/scripts/search.py "crash exception lifecycle fragment activity" --domain antipattern -n 10
|
|
38
|
+
|
|
39
|
+
# Crash: memory leaks and OOM
|
|
40
|
+
python3 ~/.mobile-best-practices/scripts/search.py "memory leak oom context activity static" --domain performance -n 10
|
|
41
|
+
python3 ~/.mobile-best-practices/scripts/search.py "context leak viewmodel livedata observer" --domain antipattern -n 10
|
|
42
|
+
python3 ~/.mobile-best-practices/scripts/search.py "bitmap large allocation heap oom" --domain performance -n 10
|
|
43
|
+
|
|
44
|
+
# Crash: lifecycle and state
|
|
45
|
+
python3 ~/.mobile-best-practices/scripts/search.py "lifecycle fragment backstack state crash" --domain antipattern -n 10
|
|
46
|
+
python3 ~/.mobile-best-practices/scripts/search.py "savedstate process death viewmodel" --domain antipattern -n 10
|
|
47
|
+
python3 ~/.mobile-best-practices/scripts/search.py "configuration change recreation state loss" --domain antipattern -n 10
|
|
48
|
+
|
|
49
|
+
# Splash: cold start and startup time
|
|
50
|
+
python3 ~/.mobile-best-practices/scripts/search.py "splash screen cold start startup time" --domain performance -n 10
|
|
51
|
+
python3 ~/.mobile-best-practices/scripts/search.py "application oncreate initialization blocking startup" --domain antipattern -n 10
|
|
52
|
+
python3 ~/.mobile-best-practices/scripts/search.py "baseline profile startup trace" --domain performance -n 10
|
|
53
|
+
|
|
54
|
+
# Splash: SplashScreen API and transition
|
|
55
|
+
python3 ~/.mobile-best-practices/scripts/search.py "splashscreen api android 12 windowsplashscreen" --domain performance -n 10
|
|
56
|
+
python3 ~/.mobile-best-practices/scripts/search.py "splash startup work deferred lazy init" --domain antipattern -n 10
|
|
57
|
+
|
|
58
|
+
# Platform-specific ANR/crash patterns
|
|
59
|
+
python3 ~/.mobile-best-practices/scripts/search.py "anr crash exception" --platform android -n 10
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Step 3: Cross-Reference Project Code Against Database Results
|
|
63
|
+
|
|
64
|
+
For each file scanned in Step 1:
|
|
65
|
+
1. Identify main thread operations (network calls, DB queries, file IO not on Dispatchers.IO)
|
|
66
|
+
2. Map coroutine dispatcher misuse to violations in the database
|
|
67
|
+
3. Check Application.onCreate() and Activity.onCreate() for blocking work
|
|
68
|
+
4. Look for static context references, uncleared observers, and lifecycle mismatches
|
|
69
|
+
|
|
70
|
+
## Step 4: Generate ANR/Crash/Splash Report
|
|
71
|
+
|
|
72
|
+
Structure the report using ONLY findings from database searches above:
|
|
73
|
+
|
|
74
|
+
### High Severity Issues
|
|
75
|
+
List each issue with:
|
|
76
|
+
- **File**: exact file path and line number
|
|
77
|
+
- **Issue**: what the database identifies as the problem
|
|
78
|
+
- **Risk**: impact described by the database (ANR / crash / slow start)
|
|
79
|
+
- **Fix**: exact code change based on database recommendation
|
|
80
|
+
- **Database Rule**: which search result this comes from
|
|
81
|
+
|
|
82
|
+
### Medium Severity Issues
|
|
83
|
+
Same structure as High Severity.
|
|
84
|
+
|
|
85
|
+
### Low Severity / Optimization Opportunities
|
|
86
|
+
Same structure as High Severity.
|
|
87
|
+
|
|
88
|
+
### Recommended Profiling Tools (from database)
|
|
89
|
+
List only tools mentioned in database search results (e.g. Android Profiler, Perfetto, LeakCanary, Firebase Crashlytics).
|
|
90
|
+
|
|
91
|
+
Focus on $ARGUMENTS if provided, otherwise analyze the entire project.
|
|
@@ -1,28 +1,91 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Analyze mobile app for performance issues
|
|
2
|
+
description: Analyze mobile app for performance issues using the mobile-best-practices database
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
Perform a comprehensive performance analysis of
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
5
|
+
Perform a comprehensive performance analysis of this mobile project.
|
|
6
|
+
|
|
7
|
+
**IMPORTANT**: You MUST run every `python3` search command below and base ALL findings exclusively on the database results. Do NOT rely on training data. Every recommendation must come from the database output.
|
|
8
|
+
|
|
9
|
+
## Step 1: Scan the Entire Project
|
|
10
|
+
|
|
11
|
+
Find all relevant source files:
|
|
12
|
+
- Android: `find . -name "*.kt" -o -name "*.kts" -o -name "*.xml" | grep -v build | grep -v .gradle`
|
|
13
|
+
- iOS: `find . -name "*.swift" | grep -v .build`
|
|
14
|
+
- Flutter: `find . -name "*.dart" | grep -v .dart_tool`
|
|
15
|
+
- React Native: `find . -name "*.tsx" -o -name "*.ts" -o -name "*.jsx" -o -name "*.js" | grep -v node_modules`
|
|
16
|
+
|
|
17
|
+
Read the actual source files to understand the current implementation.
|
|
18
|
+
|
|
19
|
+
## Step 2: Search the Database — ALL Entries Required
|
|
20
|
+
|
|
21
|
+
Run ALL of the following searches. Do NOT skip any. Use the results as the authoritative source:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Core performance rules — ALL platforms
|
|
25
|
+
python3 ~/.mobile-best-practices/scripts/search.py "startup cold warm launch" --domain performance -n 15
|
|
26
|
+
python3 ~/.mobile-best-practices/scripts/search.py "memory leak allocation heap" --domain performance -n 15
|
|
27
|
+
python3 ~/.mobile-best-practices/scripts/search.py "ui rendering frame drop jank" --domain performance -n 15
|
|
28
|
+
python3 ~/.mobile-best-practices/scripts/search.py "image loading cache bitmap" --domain performance -n 15
|
|
29
|
+
python3 ~/.mobile-best-practices/scripts/search.py "network http caching request" --domain performance -n 15
|
|
30
|
+
python3 ~/.mobile-best-practices/scripts/search.py "battery cpu wakelock background" --domain performance -n 15
|
|
31
|
+
python3 ~/.mobile-best-practices/scripts/search.py "list scroll lazy virtualize" --domain performance -n 15
|
|
32
|
+
python3 ~/.mobile-best-practices/scripts/search.py "database query index room" --domain performance -n 15
|
|
33
|
+
python3 ~/.mobile-best-practices/scripts/search.py "threading coroutine main dispatcher" --domain performance -n 15
|
|
34
|
+
python3 ~/.mobile-best-practices/scripts/search.py "apk size binary proguard shrink" --domain performance -n 10
|
|
35
|
+
|
|
36
|
+
# Android-specific performance
|
|
37
|
+
python3 ~/.mobile-best-practices/scripts/search.py "recomposition compose lambda" --domain performance --filter-platform android -n 15
|
|
38
|
+
python3 ~/.mobile-best-practices/scripts/search.py "derivedStateOf remember stable" --domain performance --filter-platform android -n 15
|
|
39
|
+
python3 ~/.mobile-best-practices/scripts/search.py "baseline profile startup trace" --domain performance --filter-platform android -n 10
|
|
40
|
+
python3 ~/.mobile-best-practices/scripts/search.py "viewmodel stateflow flow" --platform android -n 10
|
|
41
|
+
|
|
42
|
+
# iOS-specific performance
|
|
43
|
+
python3 ~/.mobile-best-practices/scripts/search.py "swiftui view body redraw" --domain performance --filter-platform ios -n 15
|
|
44
|
+
python3 ~/.mobile-best-practices/scripts/search.py "instruments time profiler" --domain performance --filter-platform ios -n 10
|
|
45
|
+
|
|
46
|
+
# Flutter-specific performance
|
|
47
|
+
python3 ~/.mobile-best-practices/scripts/search.py "widget rebuild const build" --domain performance --filter-platform flutter -n 15
|
|
48
|
+
python3 ~/.mobile-best-practices/scripts/search.py "flutter devtools timeline" --domain performance --filter-platform flutter -n 10
|
|
49
|
+
|
|
50
|
+
# React Native-specific performance
|
|
51
|
+
python3 ~/.mobile-best-practices/scripts/search.py "flatlist keyExtractor memo" --domain performance --filter-platform react-native -n 15
|
|
52
|
+
python3 ~/.mobile-best-practices/scripts/search.py "bridge hermes turbo module" --domain performance --filter-platform react-native -n 10
|
|
53
|
+
|
|
54
|
+
# Performance-related anti-patterns
|
|
55
|
+
python3 ~/.mobile-best-practices/scripts/search.py "performance anti-pattern slow blocking" --domain antipattern -n 15
|
|
56
|
+
python3 ~/.mobile-best-practices/scripts/search.py "memory leak context activity" --domain antipattern -n 10
|
|
57
|
+
|
|
58
|
+
# Platform-specific performance guidelines
|
|
59
|
+
python3 ~/.mobile-best-practices/scripts/search.py "performance optimize" --platform android -n 10
|
|
60
|
+
python3 ~/.mobile-best-practices/scripts/search.py "performance optimize" --platform ios -n 10
|
|
61
|
+
python3 ~/.mobile-best-practices/scripts/search.py "performance optimize" --platform flutter -n 10
|
|
62
|
+
python3 ~/.mobile-best-practices/scripts/search.py "performance optimize" --platform react-native -n 10
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Step 3: Cross-Reference Project Code Against Database Results
|
|
66
|
+
|
|
67
|
+
For each file scanned in Step 1:
|
|
68
|
+
1. Map patterns found in code to violations identified in the database results
|
|
69
|
+
2. Identify missing optimizations the database recommends
|
|
70
|
+
|
|
71
|
+
## Step 4: Generate Performance Report
|
|
72
|
+
|
|
73
|
+
Structure the report using ONLY findings from database searches above:
|
|
74
|
+
|
|
75
|
+
### Critical Issues (High Severity)
|
|
76
|
+
List each issue with:
|
|
77
|
+
- **File**: exact file path and line number
|
|
78
|
+
- **Issue**: what the database says is wrong
|
|
79
|
+
- **Fix**: exact code change based on database recommendation
|
|
80
|
+
- **Database Rule**: which search result this comes from
|
|
81
|
+
|
|
82
|
+
### Warnings (Medium Severity)
|
|
83
|
+
Same structure as Critical Issues.
|
|
84
|
+
|
|
85
|
+
### Optimization Opportunities (Low Severity)
|
|
86
|
+
Same structure as Critical Issues.
|
|
87
|
+
|
|
88
|
+
### Profiling Tools (from database)
|
|
89
|
+
List only tools mentioned in database search results.
|
|
27
90
|
|
|
28
91
|
Focus on $ARGUMENTS if provided, otherwise analyze the entire project.
|
|
@@ -1,26 +1,111 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Audit mobile app for security vulnerabilities
|
|
2
|
+
description: Audit mobile app for security vulnerabilities using the mobile-best-practices database
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
Perform a comprehensive security audit of
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
5
|
+
Perform a comprehensive security audit of this mobile project.
|
|
6
|
+
|
|
7
|
+
**IMPORTANT**: You MUST run every `python3` search command below and base ALL findings exclusively on the database results. Do NOT rely on training data. Every vulnerability and recommendation must come from the database output.
|
|
8
|
+
|
|
9
|
+
## Step 1: Scan the Entire Project
|
|
10
|
+
|
|
11
|
+
Find all relevant source files:
|
|
12
|
+
- Android: `find . -name "*.kt" -o -name "*.kts" -o -name "*.xml" -o -name "*.gradle" -o -name "*.json" -o -name "*.properties" | grep -v build | grep -v .gradle`
|
|
13
|
+
- iOS: `find . -name "*.swift" -o -name "*.plist" -o -name "*.entitlements" | grep -v .build`
|
|
14
|
+
- Flutter: `find . -name "*.dart" -o -name "*.yaml" -o -name "AndroidManifest.xml" -o -name "*.plist" | grep -v .dart_tool`
|
|
15
|
+
- React Native: `find . -name "*.tsx" -o -name "*.ts" -o -name "*.js" -o -name "*.json" | grep -v node_modules`
|
|
16
|
+
|
|
17
|
+
Read the actual source files to understand the current security implementation.
|
|
18
|
+
|
|
19
|
+
## Step 2: Search the Database — ALL Entries Required
|
|
20
|
+
|
|
21
|
+
Run ALL of the following searches. Do NOT skip any. Use the results as the authoritative source:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Authentication & session security
|
|
25
|
+
python3 ~/.mobile-best-practices/scripts/search.py "authentication token session jwt biometric" --domain security -n 15
|
|
26
|
+
python3 ~/.mobile-best-practices/scripts/search.py "oauth login credential" --domain security -n 15
|
|
27
|
+
python3 ~/.mobile-best-practices/scripts/search.py "session management logout token revoke" --domain security -n 10
|
|
28
|
+
|
|
29
|
+
# Data storage security
|
|
30
|
+
python3 ~/.mobile-best-practices/scripts/search.py "keystore keychain encrypted storage" --domain security -n 15
|
|
31
|
+
python3 ~/.mobile-best-practices/scripts/search.py "sharedpreferences userdefaults plaintext sensitive" --domain security -n 15
|
|
32
|
+
python3 ~/.mobile-best-practices/scripts/search.py "api key secret hardcoded credential" --domain security -n 15
|
|
33
|
+
python3 ~/.mobile-best-practices/scripts/search.py "encryption aes rsa cipher" --domain security -n 15
|
|
34
|
+
|
|
35
|
+
# Network security
|
|
36
|
+
python3 ~/.mobile-best-practices/scripts/search.py "ssl tls certificate pinning network" --domain security -n 15
|
|
37
|
+
python3 ~/.mobile-best-practices/scripts/search.py "https cleartext man-in-the-middle" --domain security -n 15
|
|
38
|
+
python3 ~/.mobile-best-practices/scripts/search.py "network security config trust anchor" --domain security -n 10
|
|
39
|
+
|
|
40
|
+
# Logging & data exposure
|
|
41
|
+
python3 ~/.mobile-best-practices/scripts/search.py "log logcat sensitive data leak" --domain security -n 15
|
|
42
|
+
python3 ~/.mobile-best-practices/scripts/search.py "crash report analytics pii" --domain security -n 10
|
|
43
|
+
python3 ~/.mobile-best-practices/scripts/search.py "clipboard screenshot task switcher" --domain security -n 10
|
|
44
|
+
|
|
45
|
+
# Code & binary security
|
|
46
|
+
python3 ~/.mobile-best-practices/scripts/search.py "root jailbreak detection bypass" --domain security -n 15
|
|
47
|
+
python3 ~/.mobile-best-practices/scripts/search.py "obfuscation proguard r8 minify" --domain security -n 10
|
|
48
|
+
python3 ~/.mobile-best-practices/scripts/search.py "tamper detection integrity" --domain security -n 10
|
|
49
|
+
python3 ~/.mobile-best-practices/scripts/search.py "reverse engineering decompile apk" --domain security -n 10
|
|
50
|
+
|
|
51
|
+
# Input & injection
|
|
52
|
+
python3 ~/.mobile-best-practices/scripts/search.py "input validation injection sql xss" --domain security -n 15
|
|
53
|
+
python3 ~/.mobile-best-practices/scripts/search.py "intent deeplink url scheme" --domain security -n 15
|
|
54
|
+
python3 ~/.mobile-best-practices/scripts/search.py "webview javascript interface" --domain security -n 15
|
|
55
|
+
|
|
56
|
+
# Permissions & privacy
|
|
57
|
+
python3 ~/.mobile-best-practices/scripts/search.py "permission runtime privacy gdpr" --domain security -n 15
|
|
58
|
+
python3 ~/.mobile-best-practices/scripts/search.py "location camera microphone background" --domain security -n 10
|
|
59
|
+
|
|
60
|
+
# Platform-specific security
|
|
61
|
+
python3 ~/.mobile-best-practices/scripts/search.py "android manifest exported broadcast" --domain security --filter-platform android -n 15
|
|
62
|
+
python3 ~/.mobile-best-practices/scripts/search.py "content provider sql injection cursor" --domain security --filter-platform android -n 10
|
|
63
|
+
python3 ~/.mobile-best-practices/scripts/search.py "ios ats app transport security" --domain security --filter-platform ios -n 15
|
|
64
|
+
python3 ~/.mobile-best-practices/scripts/search.py "keychain access group entitlements" --domain security --filter-platform ios -n 10
|
|
65
|
+
python3 ~/.mobile-best-practices/scripts/search.py "flutter dart secure storage plugin" --domain security --filter-platform flutter -n 15
|
|
66
|
+
python3 ~/.mobile-best-practices/scripts/search.py "react native async storage bridge" --domain security --filter-platform react-native -n 15
|
|
67
|
+
|
|
68
|
+
# OWASP Mobile Top 10 coverage
|
|
69
|
+
python3 ~/.mobile-best-practices/scripts/search.py "improper platform usage" --domain security -n 10
|
|
70
|
+
python3 ~/.mobile-best-practices/scripts/search.py "insecure data storage" --domain security -n 10
|
|
71
|
+
python3 ~/.mobile-best-practices/scripts/search.py "insufficient cryptography" --domain security -n 10
|
|
72
|
+
python3 ~/.mobile-best-practices/scripts/search.py "insecure authentication" --domain security -n 10
|
|
73
|
+
python3 ~/.mobile-best-practices/scripts/search.py "binary protection" --domain security -n 10
|
|
74
|
+
|
|
75
|
+
# Platform guidelines for security
|
|
76
|
+
python3 ~/.mobile-best-practices/scripts/search.py "security" --platform android -n 10
|
|
77
|
+
python3 ~/.mobile-best-practices/scripts/search.py "security" --platform ios -n 10
|
|
78
|
+
python3 ~/.mobile-best-practices/scripts/search.py "security" --platform flutter -n 10
|
|
79
|
+
python3 ~/.mobile-best-practices/scripts/search.py "security" --platform react-native -n 10
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Step 3: Cross-Reference Project Code Against Database Results
|
|
83
|
+
|
|
84
|
+
For each file scanned in Step 1:
|
|
85
|
+
1. Search for hardcoded secrets, API keys, and credentials
|
|
86
|
+
2. Map insecure patterns found in code to vulnerabilities identified in the database
|
|
87
|
+
3. Check Manifest/Info.plist/pubspec/package.json for misconfigurations
|
|
88
|
+
|
|
89
|
+
## Step 4: Generate Security Audit Report
|
|
90
|
+
|
|
91
|
+
Structure the report using ONLY findings from database searches above:
|
|
92
|
+
|
|
93
|
+
### High Severity Vulnerabilities
|
|
94
|
+
List each vulnerability with:
|
|
95
|
+
- **File**: exact file path and line number
|
|
96
|
+
- **Vulnerability**: what the database identifies as the issue
|
|
97
|
+
- **Risk**: impact described by the database
|
|
98
|
+
- **Remediation**: exact fix based on database recommendation
|
|
99
|
+
- **OWASP Category**: if applicable
|
|
100
|
+
- **Database Rule**: which search result this comes from
|
|
101
|
+
|
|
102
|
+
### Medium Severity Vulnerabilities
|
|
103
|
+
Same structure as High Severity.
|
|
104
|
+
|
|
105
|
+
### Low Severity / Best Practice Gaps
|
|
106
|
+
Same structure as High Severity.
|
|
107
|
+
|
|
108
|
+
### Security Checklist (from database)
|
|
109
|
+
Checklist items drawn directly from database search results, checked against the project.
|
|
25
110
|
|
|
26
111
|
Focus on $ARGUMENTS if provided, otherwise audit the entire project.
|
|
@@ -1,41 +1,106 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Set up a new Android project with best practices
|
|
2
|
+
description: Set up a new Android project with best practices using the mobile-best-practices database
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
Set up a new Android project following mobile development best practices
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
5
|
+
Set up a new Android project following mobile development best practices.
|
|
6
|
+
|
|
7
|
+
**IMPORTANT**: You MUST run every `python3` search command below and base ALL decisions exclusively on the database results. Do NOT rely on training data. Every architectural choice, dependency, and code template must come from the database output.
|
|
8
|
+
|
|
9
|
+
## Step 1: Determine App Type
|
|
10
|
+
|
|
11
|
+
App type from arguments: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
If not specified, ask the user for: app type (e-commerce, banking, social media, healthcare, delivery, fitness, education, chat), target Android min SDK, and any required features.
|
|
14
|
+
|
|
15
|
+
## Step 2: Search the Database — ALL Entries Required
|
|
16
|
+
|
|
17
|
+
Run ALL of the following searches. Do NOT skip any:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Reasoning: get product-type specific recommendations
|
|
21
|
+
python3 ~/.mobile-best-practices/scripts/search.py "$ARGUMENTS" --domain reasoning -n 5
|
|
22
|
+
python3 ~/.mobile-best-practices/scripts/search.py "android app type recommendation" --domain reasoning -n 5
|
|
23
|
+
|
|
24
|
+
# Architecture patterns
|
|
25
|
+
python3 ~/.mobile-best-practices/scripts/search.py "mvvm clean architecture repository" --domain architecture -n 10
|
|
26
|
+
python3 ~/.mobile-best-practices/scripts/search.py "mvi android unidirectional" --domain architecture -n 5
|
|
27
|
+
python3 ~/.mobile-best-practices/scripts/search.py "modularization multi-module feature" --domain architecture -n 5
|
|
28
|
+
|
|
29
|
+
# Code snippets — get ALL templates
|
|
30
|
+
python3 ~/.mobile-best-practices/scripts/search.py "viewmodel hilt stateflow" --domain snippet -n 10
|
|
31
|
+
python3 ~/.mobile-best-practices/scripts/search.py "repository datasource usecase" --domain snippet -n 10
|
|
32
|
+
python3 ~/.mobile-best-practices/scripts/search.py "compose screen navigation route" --domain snippet -n 10
|
|
33
|
+
python3 ~/.mobile-best-practices/scripts/search.py "room database dao entity" --domain snippet -n 10
|
|
34
|
+
python3 ~/.mobile-best-practices/scripts/search.py "retrofit okhttp service" --domain snippet -n 10
|
|
35
|
+
python3 ~/.mobile-best-practices/scripts/search.py "hilt module provides inject" --domain snippet -n 10
|
|
36
|
+
python3 ~/.mobile-best-practices/scripts/search.py "datastore preferences flow" --domain snippet -n 5
|
|
37
|
+
python3 ~/.mobile-best-practices/scripts/search.py "paging compose lazycolumn" --domain snippet -n 5
|
|
38
|
+
python3 ~/.mobile-best-practices/scripts/search.py "workmanager background sync" --domain snippet -n 5
|
|
39
|
+
python3 ~/.mobile-best-practices/scripts/search.py "theme material3 color scheme" --domain snippet -n 5
|
|
40
|
+
|
|
41
|
+
# Gradle dependencies — get ALL declarations
|
|
42
|
+
python3 ~/.mobile-best-practices/scripts/search.py "compose bom material3" --domain gradle -n 10
|
|
43
|
+
python3 ~/.mobile-best-practices/scripts/search.py "hilt dagger ksp" --domain gradle -n 10
|
|
44
|
+
python3 ~/.mobile-best-practices/scripts/search.py "room ksp database" --domain gradle -n 10
|
|
45
|
+
python3 ~/.mobile-best-practices/scripts/search.py "retrofit okhttp serialization" --domain gradle -n 10
|
|
46
|
+
python3 ~/.mobile-best-practices/scripts/search.py "coil image loading" --domain gradle -n 5
|
|
47
|
+
python3 ~/.mobile-best-practices/scripts/search.py "navigation compose" --domain gradle -n 5
|
|
48
|
+
python3 ~/.mobile-best-practices/scripts/search.py "paging3 compose" --domain gradle -n 5
|
|
49
|
+
python3 ~/.mobile-best-practices/scripts/search.py "junit mockk turbine testing" --domain gradle -n 10
|
|
50
|
+
python3 ~/.mobile-best-practices/scripts/search.py "datastore preferences" --domain gradle -n 5
|
|
51
|
+
python3 ~/.mobile-best-practices/scripts/search.py "workmanager" --domain gradle -n 5
|
|
52
|
+
|
|
53
|
+
# Android platform best practices
|
|
54
|
+
python3 ~/.mobile-best-practices/scripts/search.py "compose state lifecycle" --platform android -n 10
|
|
55
|
+
python3 ~/.mobile-best-practices/scripts/search.py "navigation type-safe serializable" --platform android -n 10
|
|
56
|
+
python3 ~/.mobile-best-practices/scripts/search.py "dependency injection hilt" --platform android -n 10
|
|
57
|
+
python3 ~/.mobile-best-practices/scripts/search.py "coroutine flow scope dispatcher" --platform android -n 10
|
|
58
|
+
python3 ~/.mobile-best-practices/scripts/search.py "version catalog toml" --platform android -n 5
|
|
59
|
+
|
|
60
|
+
# Anti-patterns to avoid from day one
|
|
61
|
+
python3 ~/.mobile-best-practices/scripts/search.py "android architecture anti-pattern" --domain antipattern --filter-platform android -n 15
|
|
62
|
+
python3 ~/.mobile-best-practices/scripts/search.py "compose recomposition god class" --domain antipattern --filter-platform android -n 10
|
|
63
|
+
python3 ~/.mobile-best-practices/scripts/search.py "memory leak context coroutine" --domain antipattern --filter-platform android -n 10
|
|
64
|
+
|
|
65
|
+
# Performance foundations
|
|
66
|
+
python3 ~/.mobile-best-practices/scripts/search.py "startup baseline profile" --domain performance --filter-platform android -n 10
|
|
67
|
+
python3 ~/.mobile-best-practices/scripts/search.py "compose lazy image cache" --domain performance --filter-platform android -n 10
|
|
68
|
+
|
|
69
|
+
# Security foundations
|
|
70
|
+
python3 ~/.mobile-best-practices/scripts/search.py "android keystore encrypted api key" --domain security --filter-platform android -n 10
|
|
71
|
+
python3 ~/.mobile-best-practices/scripts/search.py "network certificate pinning https" --domain security --filter-platform android -n 10
|
|
72
|
+
|
|
73
|
+
# Testing setup
|
|
74
|
+
python3 ~/.mobile-best-practices/scripts/search.py "unit test viewmodel coroutine turbine" --domain testing --filter-platform android -n 10
|
|
75
|
+
python3 ~/.mobile-best-practices/scripts/search.py "compose ui test espresso" --domain testing --filter-platform android -n 10
|
|
76
|
+
|
|
77
|
+
# UI patterns
|
|
78
|
+
python3 ~/.mobile-best-practices/scripts/search.py "compose scaffold navigation bottom" --domain ui --filter-platform android -n 10
|
|
79
|
+
python3 ~/.mobile-best-practices/scripts/search.py "material3 component theme" --domain ui --filter-platform android -n 10
|
|
80
|
+
|
|
81
|
+
# Project template
|
|
82
|
+
python3 ~/.mobile-best-practices/scripts/search.py "$ARGUMENTS android" --domain template -n 3
|
|
83
|
+
python3 ~/.mobile-best-practices/scripts/search.py "android compose mvvm" --domain template -n 3
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Step 3: Generate Project Structure
|
|
87
|
+
|
|
88
|
+
Using ONLY the database results above:
|
|
89
|
+
|
|
90
|
+
1. **Folder Structure** — based on architecture search results
|
|
91
|
+
2. **libs.versions.toml** — ALL dependencies from `gradle` domain results
|
|
92
|
+
3. **build.gradle.kts (app)** — using version catalog references from database
|
|
93
|
+
4. **Hilt Application class** — from snippet results
|
|
94
|
+
5. **DI modules** — from snippet results
|
|
95
|
+
6. **Base ViewModel** — from snippet results
|
|
96
|
+
7. **Repository template** — from snippet results
|
|
97
|
+
8. **Navigation graph** — from snippet results
|
|
98
|
+
9. **Theme setup** — from snippet results
|
|
99
|
+
10. **Network module** — from snippet results
|
|
100
|
+
11. **Database setup** — from snippet results
|
|
101
|
+
|
|
102
|
+
## Step 4: Apply Anti-Patterns Checklist
|
|
103
|
+
|
|
104
|
+
Before delivering, verify the project avoids ALL anti-patterns from the database results in Step 2.
|
|
105
|
+
|
|
106
|
+
Provide a complete, production-ready project structure with every file fully implemented.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+H/G"}
|
package/dist/commands/init.js
CHANGED
|
@@ -121,6 +121,7 @@ export async function initCommand(options) {
|
|
|
121
121
|
console.log(chalk.white(' • /mobile-best-practices - Main skill'));
|
|
122
122
|
console.log(chalk.white(' • /mobile-security-audit - Security vulnerability scan'));
|
|
123
123
|
console.log(chalk.white(' • /mobile-performance-check - Performance analysis'));
|
|
124
|
+
console.log(chalk.white(' • /mobile-anr-crash-check - ANR, crash & splash screen check'));
|
|
124
125
|
console.log(chalk.white(' • /mobile-setup-android - New Android project setup'));
|
|
125
126
|
}
|
|
126
127
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobile-best-practices",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "CLI to install Mobile Best Practices skill for AI coding assistants",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -16,15 +16,15 @@
|
|
|
16
16
|
"prepublishOnly": "npm run build"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"commander": "^12.1.0",
|
|
20
19
|
"chalk": "^5.3.0",
|
|
20
|
+
"commander": "^12.1.0",
|
|
21
21
|
"ora": "^8.1.1",
|
|
22
22
|
"prompts": "^2.4.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/node": "^22.0.0",
|
|
26
26
|
"@types/prompts": "^2.4.9",
|
|
27
|
-
"typescript": "^5.
|
|
27
|
+
"typescript": "^5.9.3"
|
|
28
28
|
},
|
|
29
29
|
"keywords": [
|
|
30
30
|
"mobile",
|
|
@@ -54,4 +54,4 @@
|
|
|
54
54
|
"bugs": {
|
|
55
55
|
"url": "https://github.com/tungnk123/mobile-best-practices/issues"
|
|
56
56
|
}
|
|
57
|
-
}
|
|
57
|
+
}
|