What problem does it solve? Writing a custom KSP annotation processor involves many failure-prone details: hand-built string templates produce broken generated code, a missing ServiceLoader registration file makes the processor silently never run, and skipping originating-file tracking breaks incremental compilation. This Skill provides the verified patterns for authoring a new processor that generates type-safe Kotlin source with KotlinPoet. ## Core Features & Use Cases - KotlinPoet builder API: FileSpec, TypeSpec, FunSpec, and PropertySpec builders with format specifiers (%S, %T, %M, %N, %L, %P) that resolve imports and escape strings automatically. - Two-module processor structure: an annotations module plus a JVM processor module wired via ServiceLoader registration in META-INF/services, consumed with ksp(project(":processor")). - kotlinpoet-ksp interop: convert KSP KSType and KSClassDeclaration into KotlinPoet TypeName and ClassName using toTypeName(), toKModifier(), and TypeParameterResolver. - Use Case: Define a @GenerateKoinModule annotation, then build a processor that scans annotated classes and emits a Koin module with a factoryOf binding per class, with Dependencies tracking for incremental compilation. ## Quick Start Ask the agent to create a custom KSP annotation processor that generates Kotlin source with KotlinPoet for a given annotation and target output.