mcpField
M
modern-jetpack-compose

modern-jetpack-compose

github.com/anhvt52开发100332 次安装33 周前更新
代码仓库

关于 modern-jetpack-compose

用于审查和生成 Jetpack Compose 代码的技能,依据现代 Android 实践提供指导。它按步骤覆盖 API、状态、设计、无障碍和性能等方面。

主要功能

  1. 01按 11 个领域顺序审查代码
  2. 02现代 Compose API 指导
  3. 03Material 3 与自适应设计检查
  4. 04状态、副作用与重组审查
  5. 05无障碍与性能检查

适用场景

  1. 01审查现有 Compose 界面
  2. 02生成符合惯例的 Compose 功能
  3. 03查找状态与副作用问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/anhvt52/jetpack-compose-skills --skill modern-jetpack-compose

安装后在 Claude Code 中输入/modern-jetpack-compose确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
.gitkeep
openai.yaml
references/
.gitkeep
accessibility.md
api.md
composables.md
design.md
effects.md
hygiene.md
kotlin.md
navigation.md
performance.md
recomposition.md
state.md

详细介绍

审查或生成 Jetpack Compose 代码,确保其正确、使用现代 API,并遵循 Android 最佳实践。只报告确实存在的问题——除非风格问题违反了明确规则,否则不要吹毛求疵。

审查/生成流程

审查现有代码时,按以下顺序执行:

  1. 检查是否使用了已弃用或过时的 API → references/api.md
  2. 检查可组合项结构和组合模式 → references/composables.md
  3. 验证状态管理和数据流 → references/state.md
  4. 验证副作用的用法 → references/effects.md
  5. 检查重组稳定性 → references/recomposition.md
  6. 验证导航实现 → references/navigation.md
  7. 检查是否符合 Material 3/Expressive 设计规范 → references/design.md
  8. 验证无障碍功能 → references/accessibility.md
  9. 检查性能 → references/performance.md
  10. 快速审查 Kotlin 代码 → references/kotlin.md
  11. 最后检查代码规范 → references/hygiene.md

生成新代码时,先加载与待实现功能相关的参考文件,再编写代码,确保从一开始就遵循惯用写法。

对于部分审查或针对性生成,只加载相关的参考文件。

核心指示

  • 默认以 Compose BOM 2024.x 为目标版本。请说明 BOM 2025.x(Material Expressive)引入了哪些新组件或 API。
  • 使用 Material 3。除非项目已经在使用 Material 2,否则不要使用 Material 2。
  • 架构:采用单向数据流(UDF)的 MVVM。使用 ViewModel + StateFlow 管理屏幕状态。Compose UI 观察状态并发出事件。
  • 以 Kotlin 为目标语言,使用现代语言特性(密封接口、协程、Flow)。
  • 未经事先询问,不要引入第三方库。
  • 每个可组合项都应放在单独的文件中,非简单组件尤其如此。
  • 按功能组织代码,而不是按技术层组织(例如 screens/home/、screens/settings/)。

输出格式

按文件整理问题。对于每个问题:

  1. 写明文件和相关行号。
  2. 指出违反的规则。
  3. 展示简短的修改前/修改后 Kotlin 代码片段。

跳过没有问题的文件。最后按优先级总结最值得优先处理的改动。

输出示例:

HomeScreen.kt

第 14 行:使用 collectAsStateWithLifecycle() 替代 collectAsState()。

// Before
val uiState by viewModel.uiState.collectAsState()

// After
val uiState by viewModel.uiState.collectAsStateWithLifecycle()

第 42 行:在 LazyColumn 中为列表项提供 key,确保条目标识稳定。

// Before
LazyColumn {
    items(books) { book ->
        BookItem(book)
    }
}

// After
LazyColumn {
    items(books, key = { it.id }) { book ->
        BookItem(book)
    }
}

第 67 行:Image 缺少 contentDescription,不符合无障碍要求。

// Before
Image(painter = painterResource(R.drawable.cover), contentDescription = null)

// After — if decorative:
Image(painter = painterResource(R.drawable.cover), contentDescription = null) // OK if truly decorative

// After — if meaningful:
Image(
    painter = painterResource(R.drawable.cover),
    contentDescription = stringResource(R.string.book_cover_description)
)
总结
  1. 状态(高): 第 14 行的 collectAsState() 不会遵循生命周期——请替换为 collectAsStateWithLifecycle()。
  2. 性能(中): 第 42 行的 LazyColumn 缺少 key,会导致不必要的重组。
  3. 无障碍(中): 第 67 行的 Image 需要有意义的 contentDescription。

参考资料

  • references/api.md — 已弃用的 API 及其现代替代方案。
  • references/composables.md — 可组合项结构、命名和组合模式。
  • references/state.md — 状态管理、ViewModel、StateFlow 和数据流。
  • references/effects.md — 副作用:LaunchedEffect、DisposableEffect、SideEffect。
  • references/recomposition.md — 重组稳定性、@Stable/@Immutable、derivedStateOf。
  • references/navigation.md — Navigation Compose、类型安全导航、嵌套图。
  • references/design.md — Material 3/Expressive 主题、自适应布局。
  • references/accessibility.md — TalkBack、语义、内容描述、触控目标。
  • references/performance.md — LazyList 优化、remember、状态读取范围。
  • references/kotlin.md — 现代 Kotlin Android 编程模式。
  • references/hygiene.md — 代码规范、测试、lint。

评论

支持 Markdown