Install
$ agentstack add skill-kelvinkosbab-appbootstrapai-android-coroutines-pro ✓ 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
Review Kotlin coroutines and Flow code for correctness. This is the deep-review companion to the always-on android-coroutines-best-practices.md rule — the rule steers while writing; this skill audits what was written. The Android sibling of swift-concurrency-pro. Report only genuine problems; don't nitpick.
Review process:
- Check scope and dispatcher discipline using
references/structured-concurrency.md— every coroutine's lifetime tied to a real lifecycle, dispatchers injected. - Check cancellation cooperation using
references/cancellation.md—CancellationExceptiondiscipline, CPU-loop checkpoints, cleanup paths. - Check exception propagation using
references/exceptions.md—launchvsasyncsemantics, supervisor boundaries, handler placement. - Check Flow construction and exposure using
references/flows.md— cold/hot boundaries,stateIn/shareInconfiguration, operator semantics. - Check the tests using
references/testing.md— virtual time, dispatcher substitution, Turbine discipline.
If doing a partial review, load only the relevant reference files.
Core Instructions
- Every coroutine needs an owner. The first question for any
launch/async: which scope, why that scope, and what cancels it. "Nothing cancels it" is a finding. - Cancellation is the invariant most code silently breaks. Trace every broad
catchand everyrunCatchingaround suspend code — swallowedCancellationExceptioncorrupts structured concurrency at a distance. - Distinguish bug classes from style. A swallowed cancellation or a deferred
asyncexception is correctness; a missingflowOnthat happens to run on the right dispatcher anyway is a latent risk; name which is which. - Flow exposure is API design. What a ViewModel/repository exposes (
StateFlowvsSharedFlowvs coldFlow, replay, sharing policy) determines consumer behavior — review it like a public interface. - Suspend under a non-suspending lock is a deadlock pattern (
synchronized/ReentrantLockaround suspension points) — always flag. - Assume Kotlin 2.x, kotlinx.coroutines 1.8+, Hilt for injection. Dispatchers arrive via qualified injection (
@IoDispatcher), never hardcoded at use sites.
Output Format
Organize findings by file. For each issue: file/line, the violated principle, brief before/after. Skip clean files. End with a prioritized summary — correctness (cancellation/exceptions/leaks) first, then structure, then style.
Example finding:
SyncRepository.kt
Line 58: runCatching around suspend call swallows cancellation.
// Before — cancellation is caught as failure; the coroutine keeps running "successfully"
val result = runCatching { api.sync() }
// After — rethrow cancellation; catch only what you can handle
val result = try {
Result.success(api.sync())
} catch (e: CancellationException) {
throw e
} catch (e: IOException) {
Result.failure(e)
}
References
references/structured-concurrency.md— scope-to-lifecycle mapping,repeatOnLifecycle, dispatcher injection,GlobalScope/runBlockingbans, job hierarchy review.references/cancellation.md— cooperation checkpoints (ensureActive/yield),CancellationExceptiondiscipline,NonCancellablecleanup,withTimeoutedges.references/exceptions.md—launchvsasyncpropagation,coroutineScopevssupervisorScope,CoroutineExceptionHandlerplacement, rethrow patterns.references/flows.md— cold vs hot,stateIn/shareIn+WhileSubscribed(5_000),flowOnplacement,callbackFlow/awaitClose,collectLatest/flatMapLatest/conflatesemantics.references/testing.md—runTest,StandardTestDispatchervsUnconfinedTestDispatcher,MainDispatcherRule, Turbine,backgroundScopeforstateIn, virtual-time control.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: kelvinkosbab
- Source: kelvinkosbab/AppBootstrapAI
- 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.