사용 방법
- 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
- 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
- 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/krutikjain/android-agent-skills --skill android-state-management시작 전 확인
- 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
- 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.
Android State Management
When To Use
- Use this skill when the request is about: android ui state reducer, state management in compose or xml android, one-off events in android screen.
- Primary outcome: Model screen state, events, reducers, and side effects for Android UIs with predictable lifecycle-aware ownership.
- Handoff skills when the scope expands:
android-coroutines-flowandroid-ui-states-validation
Workflow
- Confirm the user-visible journey, target device behavior, and failure states that matter.
- Identify the owning screens, activities, destinations, and state holders for the flow.
- Implement the flow with explicit loading, success, empty, and error handling.
- Validate accessibility, configuration changes, and back-stack behavior in the showcase apps.
- Escalate data, architecture, or release concerns to the specialized skills called out in the handoff notes.
Guardrails
- Treat loading, empty, error, offline, and permission-denied states as first-class UI states.
- Do not hide navigation or permission side effects inside reusable UI components.
- Prefer lifecycle-aware APIs over manual callback chains.
- Keep deep links, intents, and permission prompts testable and observable.
Anti-Patterns
- Assuming the happy path is enough for product flows.
- Hard-coding request codes or route strings in multiple places.
- Triggering navigation directly from repositories or network layers.
- Shipping flows without recovery UI for denied permissions or broken state.
Remediation Examples
Keep one immutable UI state surface
data class TaskBoardState(
val tasks: List<TaskUiModel> = emptyList(),
val isLoading: Boolean = false,
val errorMessage: String? = null,
)Separate persistent state from one-off events
private val _uiState = MutableStateFlow(TaskBoardState())
val uiState: StateFlow<TaskBoardState> = _uiState.asStateFlow()
private val _events = MutableSharedFlow<TaskBoardEvent>(replay = 0)
val events: SharedFlow<TaskBoardEvent> = _eventsReduce state updates instead of mutating UI directly
_uiState.update { state ->
state.copy(isLoading = false, tasks = refreshedTasks, errorMessage = null)
}Examples
Happy path
- Scenario: Drive the Compose task board from a single immutable screen state.
- Command:
cd examples/orbittasks-compose && ./gradlew :app:testDebugUnitTest
Edge case
- Scenario: Represent permission denied and sync failed states explicitly in the XML fixture.
- Command:
cd examples/orbittasks-xml && ./gradlew :app:testDebugUnitTest
Failure recovery
- Scenario: Separate state requests from coroutines, navigation, and UI validation prompts.
- Command:
python3 scripts/eval_triggers.py --skill android-state-management
Done Checklist
- The implementation path is explicit, minimal, and tied to the right Android surface.
- Relevant example commands and benchmark prompts have been exercised or updated.
- Handoffs to adjacent skills are documented when the request crosses boundaries.
- Official references cover the chosen pattern and the main migration or troubleshooting path.




