关于 coding-kotlin
coding-kotlin 是帮助 AI 生成、调试和优化 Kotlin 代码的技能,面向 Android 与跨平台开发。重点涉及协程、数据类、密封类、扩展函数、Gradle 和 KMM。
主要功能
- 01生成和调试 Kotlin 代码
- 02使用协程处理异步任务
- 03用数据类和密封类建模
- 04通过扩展函数复用逻辑
- 05管理 Gradle 构建和 KMM 模块
适用场景
- 01实现 Android 异步网络调用
- 02建模并处理 API 响应
- 03配置 Gradle 依赖和构建
- 04在 KMM 项目共享代码
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill coding-kotlin安装后在 Claude Code 中输入/coding-kotlin确认已加载。
详细介绍
coding-kotlin
用途
此技能可帮助 AI 生成、调试和优化 Kotlin 代码,重点涵盖用于异步操作的协程、用于不可变数据处理的数据类、用于类型安全层次结构的密封类、用于复用代码的扩展函数、用于项目构建的 Gradle,以及用于多平台开发的 KMM。
适用场景
在 Android 应用开发中需要处理异步任务(例如网络调用)、对 API 数据建模,或开发具有共享逻辑的跨平台项目时,可使用此技能。在性能至关重要的情况下也可使用,例如通过协程避免阻塞线程,或在 KMM 项目中配置 Gradle 进行依赖管理。
主要功能
- 协程:使用结构化并发处理异步代码;使用
kotlinx.coroutines进行非阻塞 I/O。 - 数据类:自动生成 equals、hashCode 和 toString;使用
data class User(val name: String, val id: Int)定义数据类。 - 密封类:限制类继承,以支持穷尽式 when 表达式;例如,
sealed class Result { data class Success(val data: String) : Result() }。 - 扩展函数:无需继承即可为现有类添加方法;例如,
fun String.reverse() = this.reversed()。 - Gradle:使用 build.gradle.kts 等脚本管理构建、依赖和任务。
- KMM:在 Android/iOS 之间共享代码;通过 Gradle 中的共享模块进行配置。
使用模式
执行任务时,始终先导入所需的包(例如,import kotlinx.coroutines.*)。对于异步操作,将代码封装在 runBlocking { } 等协程作用域中,并使用 launch 执行不等待结果的任务,或使用 async 获取待等待的结果。对数据建模时,使用数据类表示 POJO,使用密封类表示状态机。执行 Gradle 任务时,从项目根目录运行命令,并传入 --info 等标志进行调试。在 KMM 项目中,将代码组织到共享模块和平台专属模块中,然后通过 Gradle 配置将它们关联起来。始终使用 ? 检查可空性,以防止崩溃。
常用命令/API
- Gradle 命令:运行
gradle build --stacktrace进行编译和调试;使用gradle assembleDebug构建 Android;在 KMM 中,在 build.gradle.kts 中添加依赖,例如implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4")。 - 协程 API:使用
launch { delay(1000L); println("Task completed") }延迟执行;或使用val deferred = async { someFunction() }; deferred.await()执行并发任务。 - 数据类:定义并使用
data class Person(val name: String); val p = Person("John"); println(p.copy(name = "Jane")),以创建修改后的副本。 - 密封类:使用
when (result) { is Result.Success -> process(data); is Result.Error -> handleError() }进行穷尽式检查。 - 扩展函数:使用
fun Int.isEven() = this % 2 == 0; val num = 4; println(num.isEven())扩展内置类型。 - KMM 配置:在 build.gradle.kts 中添加
kotlin { android { compilations.all { kotlinOptions.jvmTarget = "1.8" } } ios { binaries { framework() } } },配置多平台项目。 - API 端点:在 Kotlin 中访问外部服务时,可使用 Ktor 等库;例如,使用
HttpClient().get("https://api.example.com/data"),并通过请求头中的$KOTLIN_API_KEY等环境变量进行身份验证。
集成说明
集成此技能时,请确保环境中已安装 Kotlin SDK(例如,通过 SDKMAN 安装:sdk install kotlin)。对于 Android,在 build.gradle 中添加 Kotlin 插件:plugins { id("org.jetbrains.kotlin.android") },并将 minSdk 设置为 21 以支持协程。在 KMM 项目中,在通用代码中使用 expect fun platformFunction(),并在平台专属文件中使用 actual fun platformFunction() = ...,以关联共享模块。使用环境变量存储密钥,例如,在 gradle.properties 中设置 $GRADLE_API_KEY 以访问仓库:apiKey=$GRADLE_API_KEY。使用 ./gradlew test 测试集成,并通过 System.getProperty("os.name") 检查操作系统,以处理平台差异。
错误处理
在协程中始终使用结构化错误处理:将代码封装在 try { launch { riskyOperation() } } catch (e: CancellationException) { log("Coroutine cancelled") } finally { cleanup() } 中。对于数据类,应在构造时验证输入,例如:data class User(val name: String) { init { require(name.isNotBlank()) { "Name cannot be blank" } } }。对于密封类,请确保在 when 表达式中处理所有子类,以避免出现 UnreachableCode 错误。对于 Gradle,使用 --stacktrace 解析输出,并运行 gradle dependencies 检查依赖冲突等常见问题。在 KMM 中,使用 expect class PlatformException() { actual constructor() } 处理平台特有的错误,并在通用代码中捕获错误。
具体使用示例
-
示例:使用协程进行异步网络调用
导入协程并启动一个作用域:import kotlinx.coroutines.*; suspend fun fetchData() = "Data"; fun main() = runBlocking { val result = async { fetchData() }.await(); println(result) }。此操作可在不阻塞主线程的情况下获取数据。 -
示例:使用密封类和数据类对 API 响应建模
定义结构:sealed class ApiResult { data class Success(val data: String) : ApiResult(); data class Error(val message: String) : ApiResult() }; fun process(result: ApiResult) = when (result) { is Success -> println(result.data); is Error -> println(result.message) }。使用此方法可在 KMM 共享代码中安全地处理响应。
图关系
- 相关:coding-android(共享“android”等标签,且侧重于 Kotlin 集成)。
- 关联:coding 集群(链接到 coding-java 等其他编码技能,便于 JVM 互操作)。
- 重叠:tools-kmm(通过 KMM 多平台功能)和 build-gradle(用于共享 Gradle 用法)。