Agent Skillsmidudev/autoskills › android-coroutines-flow

android-coroutines-flow

GitHub

指导在Android中使用协程、Flow和结构化并发构建异步管道。涵盖作用域管理、调度器注入、生命周期感知收集及取消安全处理,确保代码正确性与可维护性。

packages/autoskills/skills-registry/android-coroutines-flow/SKILL.md midudev/autoskills

触发场景

Android Flow数据流处理 修复协程作用域问题 ViewModel中的结构化并发实现

安装

npx skills add midudev/autoskills --skill android-coroutines-flow -g -y
更多选项

非标准路径

npx skills add https://github.com/midudev/autoskills/tree/main/packages/autoskills/skills-registry/android-coroutines-flow -g -y

不安装直接使用

npx skills use midudev/autoskills@android-coroutines-flow

指定 Agent (Claude Code)

npx skills add midudev/autoskills --skill android-coroutines-flow -a claude-code -g -y

安装 repo 全部 skill

npx skills add midudev/autoskills --all -g -y

预览 repo 内 skill

npx skills add midudev/autoskills --list

SKILL.md

Frontmatter
{
    "name": "android-coroutines-flow",
    "metadata": {
        "tags": [
            "android",
            "coroutines",
            "flow",
            "async"
        ],
        "owners": [
            "@android-agent-skills\/maintainers"
        ],
        "version": "0.1.0",
        "category": "foundations",
        "triggers": {
            "exclude": [
                "play release notes",
                "xml layout spacing",
                "hilt module graph only"
            ],
            "include": [
                "android flow collection",
                "fix coroutine scope in android",
                "structured concurrency in viewmodel",
                "flow retry caching android",
                "dispatcher cleanup in android"
            ]
        },
        "test_targets": [
            "examples\/orbittasks-compose",
            "examples\/orbittasks-xml",
            "benchmarks\/triggers.jsonl"
        ]
    },
    "description": "Use coroutines, Flow, structured concurrency, dispatchers, and cancellation-safe Android async pipelines."
}

Android Coroutines Flow

When To Use

  • Use this skill when the request is about: android flow collection, fix coroutine scope in android, structured concurrency in viewmodel.
  • Primary outcome: Use coroutines, Flow, structured concurrency, dispatchers, and cancellation-safe Android async pipelines.
  • Handoff skills when the scope expands:
  • android-state-management
  • android-workmanager-notifications

Workflow

  1. Map the request to the current Android stack, module boundaries, and minimum supported API level.
  2. Inspect the existing implementation for implicit assumptions, duplicate helpers, and outdated patterns.
  3. Apply the smallest change that improves correctness, readability, and long-term maintainability.
  4. Validate the result against the relevant showcase app path and repo benchmarks.
  5. Hand off adjacent work to the next specialized skill only after the core foundation is stable.

Guardrails

  • Prefer official Android and Kotlin guidance over custom local conventions when they conflict.
  • Keep public APIs boring and explicit; avoid clever abstractions that hide Android lifecycle costs.
  • Do not mix architectural cleanup with product behavior changes unless the request explicitly needs both.
  • Document any compatibility constraints that will affect old modules or generated code.

Anti-Patterns

  • Sprinkling helpers across modules without a clear ownership boundary.
  • Introducing framework-specific code into pure domain or data layers.
  • Refactoring every adjacent file when only one contract needed to change.
  • Leaving migration notes implied instead of writing them down.

Remediation Examples

Inject dispatchers instead of hard-coding them

class TaskRepository(
    private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
) {
    suspend fun refresh(): List<TaskUiModel> = withContext(ioDispatcher) { loadTasks() }
}

Collect flows with lifecycle awareness

viewLifecycleOwner.lifecycleScope.launch {
    viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
        viewModel.uiState.collect { render(it) }
    }
}

Preserve cancellation in generic error handling

try {
    repository.refresh()
} catch (error: CancellationException) {
    throw error
} catch (error: Exception) {
    emit(UiState.Error(error))
}

Examples

Happy path

  • Scenario: Model task updates as StateFlow and shared event channels in the Compose fixture.
  • Command: cd examples/orbittasks-compose && ./gradlew :app:testDebugUnitTest

Edge case

  • Scenario: Recover from cancellation and configuration changes in the XML activity flow.
  • Command: cd examples/orbittasks-xml && ./gradlew :app:testDebugUnitTest

Failure recovery

  • Scenario: Disambiguate coroutine requests from state-management and WorkManager prompts.
  • Command: python3 scripts/eval_triggers.py --skill android-coroutines-flow

Done Checklist

  • The implementation path is explicit, minimal, and tied to the right Android surface.
  • Relevant example commands and benchmark prompts have been exercised or updated.
  • Handoffs to adjacent skills are documented when the request crosses boundaries.
  • Official references cover the chosen pattern and the main migration or troubleshooting path.

Official References

版本历史

  • 0ec7253 当前 2026-07-24 20:51

同 Skill 集合

packages/autoskills/skills-registry/accessibility/SKILL.md
packages/autoskills/skills-registry/adev-writing-guide/SKILL.md
packages/autoskills/skills-registry/agents-sdk/SKILL.md
packages/autoskills/skills-registry/android-architecture-clean/SKILL.md
packages/autoskills/skills-registry/android-compose-foundations/SKILL.md
packages/autoskills/skills-registry/android-di-hilt/SKILL.md
packages/autoskills/skills-registry/android-gradle-build-logic/SKILL.md
packages/autoskills/skills-registry/android-kotlin-core/SKILL.md
packages/autoskills/skills-registry/android-networking-retrofit-okhttp/SKILL.md
packages/autoskills/skills-registry/android-testing-unit/SKILL.md
packages/autoskills/skills-registry/angular-developer/SKILL.md
packages/autoskills/skills-registry/aspnet-core/SKILL.md
packages/autoskills/skills-registry/aspnet-minimal-api-openapi/SKILL.md
packages/autoskills/skills-registry/astro/SKILL.md
packages/autoskills/skills-registry/azure-ai/SKILL.md
packages/autoskills/skills-registry/bash-defensive-patterns/SKILL.md
packages/autoskills/skills-registry/best-practices/SKILL.md
packages/autoskills/skills-registry/building-native-ui/SKILL.md
packages/autoskills/skills-registry/bun/SKILL.md
packages/autoskills/skills-registry/chrome-extension-development/SKILL.md
packages/autoskills/skills-registry/clerk-android/SKILL.md
packages/autoskills/skills-registry/clerk-astro-patterns/SKILL.md
packages/autoskills/skills-registry/clerk-backend-api/SKILL.md
packages/autoskills/skills-registry/clerk-chrome-extension-patterns/SKILL.md
packages/autoskills/skills-registry/clerk-custom-ui/SKILL.md
packages/autoskills/skills-registry/clerk-expo-patterns/SKILL.md
packages/autoskills/skills-registry/clerk-nextjs-patterns/SKILL.md
packages/autoskills/skills-registry/clerk-nuxt-patterns/SKILL.md
packages/autoskills/skills-registry/clerk-orgs/SKILL.md
packages/autoskills/skills-registry/clerk-react-patterns/SKILL.md
packages/autoskills/skills-registry/clerk-react-router-patterns/SKILL.md
packages/autoskills/skills-registry/clerk-setup/SKILL.md
packages/autoskills/skills-registry/clerk-swift/SKILL.md
packages/autoskills/skills-registry/clerk-tanstack-patterns/SKILL.md
packages/autoskills/skills-registry/clerk-testing/SKILL.md
packages/autoskills/skills-registry/clerk-vue-patterns/SKILL.md
packages/autoskills/skills-registry/clerk-webhooks/SKILL.md
packages/autoskills/skills-registry/cloudflare-deploy/SKILL.md
packages/autoskills/skills-registry/cloudflare/SKILL.md
packages/autoskills/skills-registry/composition-patterns/SKILL.md
packages/autoskills/skills-registry/containerize-aspnetcore/SKILL.md
packages/autoskills/skills-registry/core-data-expert/SKILL.md
packages/autoskills/skills-registry/csharp-docs/SKILL.md
packages/autoskills/skills-registry/csharp-mstest/SKILL.md
packages/autoskills/skills-registry/csharp-nunit/SKILL.md
packages/autoskills/skills-registry/csharp-tunit/SKILL.md
packages/autoskills/skills-registry/csharp-xunit/SKILL.md
packages/autoskills/skills-registry/dart-best-practices/SKILL.md
packages/autoskills/skills-registry/deno-deploy/SKILL.md

元信息

文件数
0
版本
0ec7253
Hash
cdc888c8
收录时间
2026-07-24 20:51

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-07 23:13
浙ICP备14020137号-1 $访客地图$