원클릭으로
string-resources
Compact guide for using the project StringDesc wrapper over Compose Resources
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Compact guide for using the project StringDesc wrapper over Compose Resources
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Implement provided test blueprints following the project guidelines.
Rules for structuring and connecting Decompose components - regular components, routers, Outputs, factories, navigation, and embedded children
Create compact, reviewable high-level designs for test suites before implementation or structural review.
Compose Multiplatform UI patterns for this project - Scaffold screens, AppToolbar, decomposition, CustomTheme, LCE widgets, insets, system bars, messages, core widgets, and previews.
Guidelines for organizing feature module structure using package-by-feature principle
Guidelines for API/DTO boundaries, repository-owned Replica data loading, loaded data observation in components, LCE state, data mutations, cache invalidation, ReplicaAction, ReplicaTag
| name | string-resources |
| description | Compact guide for using the project StringDesc wrapper over Compose Resources |
StringDesc is a universal wrapper for different kinds of text values. It keeps them in a deferred form and resolves them to a plain String only at the point of use.
For resources from the same module, import:
import <package>.features.generated.resources.Res
import <package>.features.generated.resources.some_string
For resources from another module, import with an alias:
import <package>.core.generated.resources.Res as CoreRes
import <package>.core.generated.resources.some_string
resourceDescUse .resourceDesc(...) for regular string resources, with or without format arguments.
import <package>.core.utils.StringDesc
import <package>.core.utils.resourceDesc
val title: StringDesc = Res.string.profile_title.resourceDesc()
val subtitle: StringDesc = Res.string.profile_subtitle.resourceDesc(userName)
val retry: StringDesc = CoreRes.string.common_retry.resourceDesc()
Arguments may also be StringDesc.
val save = CoreRes.string.common_save.resourceDesc()
val subtitle = Res.string.profile_action.resourceDesc(save)
pluralDescUse .pluralDesc(...) for plural resources.
import <package>.core.utils.pluralDesc
val itemsCount = Res.plurals.items_count.pluralDesc(count, count)
descUse .desc() only for already resolved text from external, debug, mock, or fake sources.
import <package>.core.utils.desc
val serverMessage = response.message.desc()
plusUse + to concatenate StringDesc values.
import <package>.core.utils.desc
import <package>.core.utils.plus
val itemsCount = Res.plurals.items_count.pluralDesc(count, count)
val subtitle = Res.string.selected_items.resourceDesc() + ": ".desc() + itemsCount
joinToStringDescUse .joinToStringDesc() to join a list of StringDesc. You may pass a custom separator.
import <package>.core.utils.joinToStringDesc
val title = labels.joinToStringDesc(separator = " • ")
resolveUse .resolve() in composables only.
Text(text = title.resolve())
Text(text = errorMessage.resolve())
resolveStringUse .resolveString() outside Compose when a plain String is required.
suspend fun buildShareText(title: StringDesc): String {
return title.resolveString()
}