Claude-skill-registry kotlin-serialization
kotlinx.serialization - JSON, Protobuf, custom serializers
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/kotlin-serialization" ~/.claude/skills/majiayu000-claude-skill-registry-kotlin-serialization && rm -rf "$T"
manifest:
skills/data/kotlin-serialization/SKILL.mdsource content
Kotlin Serialization Skill
Type-safe serialization with kotlinx.serialization.
Topics Covered
JSON Serialization
@Serializable data class User( val id: Long, val name: String, @SerialName("email_address") val email: String, val createdAt: Instant = Instant.now() ) val json = Json { ignoreUnknownKeys = true encodeDefaults = true prettyPrint = true } val user = json.decodeFromString<User>(jsonString) val output = json.encodeToString(user)
Custom Serializers
object InstantSerializer : KSerializer<Instant> { override val descriptor = PrimitiveSerialDescriptor("Instant", PrimitiveKind.LONG) override fun serialize(encoder: Encoder, value: Instant) = encoder.encodeLong(value.toEpochMilli()) override fun deserialize(decoder: Decoder) = Instant.ofEpochMilli(decoder.decodeLong()) } @Serializable data class Event( @Serializable(with = InstantSerializer::class) val timestamp: Instant )
Polymorphic Serialization
@Serializable sealed class Response { @Serializable @SerialName("success") data class Success(val data: String) : Response() @Serializable @SerialName("error") data class Error(val message: String) : Response() } val json = Json { classDiscriminator = "type" }
Troubleshooting
| Issue | Resolution |
|---|---|
| "Serializer not found" | Add @Serializable or plugin |
| Unknown property fails | Set ignoreUnknownKeys = true |
Usage
Skill("kotlin-serialization")