SuperAPI AI 工具集

kotlin-tuple

编程与开发

查看项目

更新于 10-16 08:30

技能介绍

用途

kotlin-tuple 用于为 Kotlin 与 Kotlin Multiplatform(KMP)项目生成类型安全的 Tuple 工具代码。它覆盖 Tuple0–Tuple20,通过复制预置示例文件并调整包名的方式完成生成,而不是从零编写代码。

主要能力

可生成的文件类型包括:

  • Tuple.kt + TupleFactory.kt —— Tuple 数据类与 tupleOf 工厂方法(必需,始终生成)
  • TupleToList.kt —— toList() 扩展函数
  • AbstractTupleSerializer.kt + TupleSerializer.kt —— 用于 kotlinx.serialization 的 KSerializer
  • AwaitAll.kt —— 类型安全的 awaitAll
  • AllNotNullOrNull.kt —— allNotNullOrNull 工具

默认最大 Tuple 尺寸为 20,可指定其他数值。若设置的最大尺寸小于 20,会删除超出部分的 Tuple 定义;若大于 20,则参考相关 .md 文件(tuple-to-list.md、tuple-serializer.md、await-all.md、all-not-null-or-null.md)理解模式后扩展文件。

使用方式

生成代码前,技能会在一条消息内与用户确认以下事项:

  1. 目标模块(多模块项目时指定生成到哪个模块);技能会分析项目结构并给出候选模块,由用户确认或另行指定。
  2. 包名与输出目录;技能会根据模块现有包结构推断候选,由用户确认或另行指定。
  3. 最大 Tuple 尺寸(默认 20)。
  4. 需要生成的文件类型(多选)。

当用户意图明确时可跳过确认并使用默认设置,例如「デフォルトで」「デフォルト設定で」「with default settings」;「全部入りで」「全部生成して」「generate all」;或参数已明确指定目标模块、包与选项。

关于 ARGUMENTS:技能接收到 ARGUMENTS 参数时,将其值视为默认值,用于推断目标模块、包名与选项等;若用户消息中显式指定了值,则以用户消息为准;ARGUMENTS 与用户消息矛盾时,遵循用户消息。

输出目录检测规则:

  • Kotlin Multiplatform(commonMain):<module>/src/commonMain/kotlin/
  • JVM / Android(main):<module>/src/main/kotlin/ 或 <module>/src/main/java/
  • 单模块项目:src/main/kotlin/ 或 src/main/java/

检测步骤为:检查 build.gradle.kts / build.gradle 中的 KMP 插件(kotlin("multiplatform"))或 JVM/Android 插件;查找已有的 src/commonMain/kotlin、src/main/kotlin 或 src/main/java 目录;追加包路径(如 com.example.tuple → com/example/tuple/)。

生成方式是复制示例文件。示例文件位于 <skill_dir>/example/src/commonMain/kotlin/com/example/tuple/,不从零生成代码。流程包括:确定示例目录相对于技能位置的绝对路径;使用文本搜索 data class Tuple 与目录搜索 find <module>/src -type d -name "tuple*" 检查目标模块中已有的 Tuple 定义,若发现则询问用户是覆盖、换包还是取消,并保留检测结果用于完成消息;创建目标输出目录;用 Bash cp 复制所选文件(全部选择时可用 cp <EXAMPLE_DIR>/.kt <TARGET_DIR>/,部分选择时逐个复制所选文件);用 Bash sed 替换包名,例如 sed -i '' 's/package com.example.tuple/package <USER_PACKAGE>/g' <TARGET_DIR>/.kt,并同步替换 import 语句;按最大尺寸裁剪或扩展 Tuple 定义;检查并补充依赖。

依赖处理:若包含 TupleSerializer.kt 且未配置 kotlinx-serialization 插件或 kotlinx-serialization-json 依赖,则添加到 build.gradle.kts(KMP 加到 commonMain.dependencies,JVM/Android 加到 dependencies);若包含 AwaitAll.kt 且未配置 kotlinx-coroutines-core,同样添加;添加后需通知用户。

构建校验:运行编译检查以确认生成文件无错误,KMP 使用 ./gradlew :<module>:compileKotlinJvm,Android 使用 ./gradlew :<module>:compileDebugKotlin;出现错误需先修复再完成。完成消息包含包名、输出目录、生成文件、依赖变更、检测到的已有 Tuple 包(必须报告文本搜索与目录搜索两者的结果)以及构建结果。

适用场景

需要为 Kotlin 或 KMP 项目提供类型安全 Tuple 支持,并希望一并获得序号化、awaitAll、空安全等配套工具的开发场景。

限制

该技能采用复制预置示例文件并调整包名的方式实现,示例文件包含约 2,600 行重复 Kotlin 代码(Tuple0–Tuple20),生成过程依赖 Bash 的 cp 与 sed 操作。其他细节暂未提供。