--- name: Kotlin Autocomplete description: This skill should be used when you need to know what members, methods, or extensions are available on Kotlin types. It queries autocomplete metadata generated by the kotlin-autocomplete-gradle-plugin. version: 1.0.0 --- # Kotlin Autocomplete Skill You have access to accurate, project-specific Kotlin type information through autocomplete metadata generated by the kotlin-autocomplete-gradle-plugin. ## When to Use This Skill Use this skill when: - Writing Kotlin code and need to know what methods/properties are available on a type - The user asks "what can I do with X type?" or "what methods does X have?" - Verifying if a specific member exists on a type - Exploring Kotlin APIs (stdlib, coroutines, or project-specific) - You're unsure about method signatures or available extensions ## How It Works The autocomplete metadata is generated by running `./gradlew buildAutocomplete` in a Kotlin project. This creates JSON files in `build/autocomplete/` containing: - All public properties and methods with full signatures - Extension functions and properties - Both standard library and project-specific types ## Querying Type Information Use the helper script to query type information: ```bash .claude/skills/scripts/kotlin-autocomplete-lookup.sh "fully.qualified.TypeName" ``` **Examples:** ```bash # Standard library types .claude/skills/scripts/kotlin-autocomplete-lookup.sh "kotlin.String" .claude/skills/scripts/kotlin-autocomplete-lookup.sh "kotlin.collections.List" # Coroutines types .claude/skills/scripts/kotlin-autocomplete-lookup.sh "kotlinx.coroutines.flow.Flow" # Project types .claude/skills/scripts/kotlin-autocomplete-lookup.sh "com.example.User" ``` ## Response Format When presenting autocomplete information, format it clearly: ``` Type: kotlin.String Members: - val length: kotlin.Int - fun substring(startIndex: kotlin.Int): kotlin.String - fun lowercase(): kotlin.String Extensions: - fun toSnakeCase(): kotlin.String - val firstChar: kotlin.Char? Total: 3 members, 2 extensions ``` ## Prerequisites The Kotlin project must have: 1. Applied the plugin in `build.gradle.kts`: ```kotlin plugins { id("com.lightningkite.kotlin-autocomplete") version "0.0.1-1" } ``` 2. Generated metadata: `./gradlew buildAutocomplete` 3. Metadata exists in `build/autocomplete/` directory ## Important Notes - **Type names must be fully qualified**: Use `kotlin.String` not `String` - **Only public members are included**: Internal and private members are excluded - **Extensions on Any/Any? are filtered**: Too generic to be useful - **Fast lookups**: Index-based queries are nearly instant ## If Metadata Not Found If autocomplete metadata doesn't exist: 1. Suggest running `./gradlew buildAutocomplete` 2. Verify the plugin is applied 3. Check if the type name is correct 4. Fall back to general Kotlin knowledge, but note it may not be project-specific ## Benefits - **No hallucinations**: All information comes from actual compiled code - **Project-aware**: Includes custom extensions and project types - **Always up-to-date**: Regenerate when code changes - **Complete signatures**: Full parameter types and return types ## Example Workflow User: "What can I do with a Flow?" 1. Run: `.claude/skills/scripts/kotlin-autocomplete-lookup.sh "kotlinx.coroutines.flow.Flow"` 2. Parse the output 3. Present available operations in a clear format 4. Suggest common patterns based on the available members This ensures you provide accurate, project-specific Kotlin guidance!