{"enrichment":{"faq":[{"a":"Kotlin Idioms teaches you to leverage the language's unique features for safer, more expressive code. Focus on null-safety with the elvis operator (?:) and safe calls (?.), use sealed classes and data classes for type-safe domain models, prefer scope functions like let for concise transformations, and adopt exhaustive when expressions to catch missing cases at compile time. The skill emphasizes avoiding global scope launches in coroutines and using structured concurrency patterns instead.","q":"How do I write idiomatic Kotlin code that follows best practices?"},{"a":"Kotlin Idioms covers null-safety through multiple patterns: safe calls (?.) to call methods only on non-null objects, the elvis operator (?:) to provide defaults, and require/check functions for explicit error handling. You'll learn to avoid platform types from Java interop by using nullable annotations, and understand how Kotlin's type system prevents null pointer exceptions at compile time rather than runtime.","q":"What null safety patterns does Kotlin Idioms cover?"},{"a":"Kotlin Idioms teaches structured concurrency by showing how to avoid launching coroutines in global scope and instead use proper scope functions like coroutineScope and supervisorScope. You'll learn to manage cancellation, exception handling, and job hierarchies correctly, ensuring coroutines are tied to their parent scope and cleaned up predictably.","q":"How can I master coroutines and structured concurrency in Kotlin?"},{"a":"Kotlin Idioms covers naming conventions including camelCase for properties and functions, PascalCase for classes, and UPPER_SNAKE_CASE for constants. The skill includes guidance on using ktlint and detekt for automated static analysis and code formatting, plus best practices like avoiding explicit getters/setters and following Kotlin's property naming conventions.","q":"What coding conventions and naming rules does Kotlin Idioms teach?"},{"a":"Kotlin Idioms explains sealed classes as a way to restrict class hierarchies for type-safe results and discriminated unions, often paired with data classes for immutable value objects. Sealed interfaces offer modern alternatives for modeling restricted type hierarchies. Together they enable exhaustive when expressions that the compiler can verify are complete.","q":"What are sealed classes and data classes in Kotlin Idioms?"},{"a":"Kotlin Idioms includes guidance on setting up testing with kotest and MockK for unit and integration tests. It also covers static analysis tooling like ktlint for code formatting and detekt for code quality checks, helping you enforce idioms and conventions automatically across your codebase.","q":"Does Kotlin Idioms cover testing and static analysis tools?"}],"shadow_tags":["null-safety-patterns","functional-programming","concurrency-model","type-system","code-style-guide","testing-frameworks","static-analysis-tools","sealed-hierarchies","reactive-streams","interoperability-aware"],"summary_rewrite":"This skill covers core Kotlin idioms that make code safer and more expressive. Learn null-safety techniques, sealed hierarchies for type-safe results, structured concurrency with coroutines, and naming conventions. Includes practical examples and tooling guidance for formatting and static analysis."},"files":[{"bytes":2700,"path":".agents/skills/kotlin-idioms/SKILL.md","sha256":"ec1cee76a38ed09d47b6e063a97ddd036a69358b5d349b5cfad9a62ff3a321b9","url":"https://skillfed.io/files/irahardianto/awesome-agv/kotlin-idioms/330e1b2f/SKILL.md"}],"id":"irahardianto/awesome-agv/kotlin-idioms","links":{"html":"https://skillfed.io/irahardianto/awesome-agv/kotlin-idioms","md":"https://skillfed.io/irahardianto/awesome-agv/kotlin-idioms.md","repo":"https://github.com/irahardianto/awesome-agv"},"meta":{"agents_supported":[],"first_seen":"2026-07-28","forks":48,"language":"JavaScript","last_updated":"2026-07-17","license":"MIT","name":"Kotlin Idioms","publisher":"irahardianto","stars":150},"relations":{"similar":[{"id":"Jeffallan/claude-skills/kotlin-specialist"},{"id":"alinaqi/maggy/android-kotlin"},{"id":"affaan-m/ECC/kotlin-patterns"},{"id":"irahardianto/awesome-agv/java-idioms"},{"id":"irahardianto/awesome-agv/cpp-idioms"},{"id":"softspark/ai-toolkit/kotlin-patterns"},{"id":"irahardianto/awesome-agv/ruby-idioms"},{"id":"vitorpamplona/amethyst/kotlin-expert"},{"id":"affaan-m/ECC/kotlin-testing"},{"id":"softspark/ai-toolkit/kotlin-rules"}]},"slug":{"owner":"irahardianto","repo":"awesome-agv","skill":"kotlin-idioms"},"version":"330e1b2f"}
