mcpField
C
coding-kotlin

coding-kotlin

github.com/alphaonedev开发45 次安装
代码仓库

关于 coding-kotlin

coding-kotlin 是帮助 AI 生成、调试和优化 Kotlin 代码的技能,面向 Android 与跨平台开发。重点涉及协程、数据类、密封类、扩展函数、Gradle 和 KMM。

主要功能

  1. 01生成和调试 Kotlin 代码
  2. 02使用协程处理异步任务
  3. 03用数据类和密封类建模
  4. 04通过扩展函数复用逻辑
  5. 05管理 Gradle 构建和 KMM 模块

适用场景

  1. 01实现 Android 异步网络调用
  2. 02建模并处理 API 响应
  3. 03配置 Gradle 依赖和构建
  4. 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() } 处理平台特有的错误,并在通用代码中捕获错误。

具体使用示例

  1. 示例:使用协程进行异步网络调用
    导入协程并启动一个作用域:import kotlinx.coroutines.*; suspend fun fetchData() = "Data"; fun main() = runBlocking { val result = async { fetchData() }.await(); println(result) }。此操作可在不阻塞主线程的情况下获取数据。

  2. 示例:使用密封类和数据类对 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 用法)。

评论

支持 Markdown