--- description: Keep Kotlin code clean — inline single-use helpers, match project conventions globs: app/shared/**/*.kt,utils/shared/**/*.kt alwaysApply: false --- # Kotlin clean code - If a function, variable, or small wrapper is used **once**, inline it at the call site unless it clarifies a non-obvious boundary (network call, animation controller, crypto). - Prefer existing project components (`ActionButton`, `Category`, `ExpressiveStepFlow`, `apiRequest`) over new abstractions. - Match surrounding naming, imports, and composable structure; read adjacent files before adding helpers. - Extract only when shared by **2+** call sites or when the block exceeds ~40 lines of non-trivial logic (pager math, crypto, API wiring). - No hardcoded user-visible strings in shared UI — use Compose Multiplatform resources (`composeResources/values/strings.xml` + `values-ru`).