Install
$ agentstack add skill-josephsanjaya-skills-android-startup-optimizer ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Android Startup Performance Optimizer
Follow this structured workflow to diagnose, measure, and optimize Android application startup performance. Prioritize asynchronous lazy initialization and platform-native telemetry.
Android Vitals Thresholds
| Type | Target | Impact | |------|--------|--------| | Cold Start | `.
- Activity.onCreate(): Audit complex layout inflation, synchronous database/file access, heavy initial composition, or bitmap decoding on the main thread.
Implementation Patterns
// BAD: blocking Application.onCreate()
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
Firebase.initialize(this)
MobileAds.initialize(this) // blocks main thread
val config = File(filesDir, "config.json").readText() // disk I/O on main thread
}
}
// GOOD: async + lazy application initialization
class MyApp : Application() {
val container: AppContainer by lazy { AppContainerImpl(this) }
private val applicationScope = CoroutineScope(SupervisorJob() + Dispatchers.Default)
override fun onCreate() {
super.onCreate()
applicationScope.launch {
Firebase.initialize(this@MyApp)
MobileAds.initialize(this@MyApp)
}
}
}
// GOOD: Lazy Hilt injection in ViewModel
@HiltViewModel
class MainViewModel @Inject constructor(
private val userRepository: UserRepository, // eager — needed immediately
private val analyticsTracker: Lazy, // lazy — deferred instantiation
) : ViewModel()
// GOOD: App Startup library initializer
class AdMobInitializer : Initializer {
override fun create(context: Context) {
Executors.newSingleThreadExecutor().execute { MobileAds.initialize(context) }
}
override fun dependencies() = emptyList>>()
}
Success Metrics
| Metric | Target | Tool | |--------|--------|------| | Cold Start p50 |
- Never recommend using
lifecycleScopeinsideApplication.onCreate(). You should recommend a customCoroutineScope(SupervisorJob() + Dispatchers.Default)instead. - For Android 15+, you must recommend the
ApplicationStartInfoAPI for telemetry and theProfilingManagerAPI for system-triggered field traces. - For Android 16+, you should recommend getStartComponent() on
ApplicationStartInfofor component-specific optimizations. - You must only wrap Hilt/Dagger dependencies in
Lazyif they are not immediately needed.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: JosephSanjaya
- Source: JosephSanjaya/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.