CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

android-state

Configure ViewModel state emission with StateFlow, SharedFlow, and sealed UiState classes in Android. Use for state modeling and sharing policies; defer generic lifecycle collection, navigation-event plumbing, Hilt injection, test code, and configuration-change recipes to their specific skills.

67

Quality

84%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

86%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-crafted skill body: lean directive-style guidance, a coherent numbered workflow with a verification checklist, and correct use of a single real reference file for full code templates. The only improvement space is adding one inline minimal code snippet and a short error-recovery note to reach full actionability and workflow-clarity marks.

DimensionReasoningScore

Conciseness

The body is ~40 lines of pure directives ("Expose ONE StateFlow<UiState> via .asStateFlow()", "Use SharingStarted.WhileSubscribed(5000)") with zero concept explanation, no padding, and no restating of what Claude already knows about coroutines or Compose. Every token earns its place, matching the 5 anchor.

5 / 5

Actionability

Concrete, executable specifics are given throughout (`.asStateFlow()`, `viewModelScope`, `collectAsStateWithLifecycle()`, `@Immutable`, `./gradlew test`) and full copy-paste Kotlin templates live in references/implementation.md. It stops short of the 5 anchor because the body itself contains no inline code example — all runnable code is deferred to the reference file — leaving minor gaps if the reference isn't opened.

4 / 5

Workflow Clarity

A clear numbered sequence (1. Structure ViewModel → 2. Define UI State → 3. Collect State) is followed by an explicit Verification checklist including a runnable command ("./gradlew test passes for ViewModel tests"), which satisfies the validation-checkpoint expectation. There is no error-recovery feedback loop (what to do when a checklist item fails), so it matches the 4 anchor rather than the 5.

4 / 5

Progressive Disclosure

The body is a lean overview with well-labeled sections and a single one-level-deep reference (references/implementation.md, verified to exist and contain the actual templates) linked from both relevant sections and a References list. No nesting, no buried references, no inlined content that belongs elsewhere — a clean match for the 5 anchor.

5 / 5

Total

18

/

20

Passed

Description

78%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: concrete capabilities, third-person voice, explicit 'Use for' clause, and unusually good boundary marking against neighboring skills. The only weakness is that the 'when' clause is stated in policy terms rather than natural user trigger phrases, which keeps completeness and trigger quality at 4.

Suggestions

Make the 'Use for' clause concrete with user-side phrasing, e.g. "Use when the user mentions ViewModels, StateFlow, UiState, or LiveData migration in Android code".

Add common synonym terms users actually say (e.g., "UI state", "state holding", "LiveData replacement") to broaden natural trigger coverage.

DimensionReasoningScore

Specificity

"Configure ViewModel state emission with StateFlow, SharedFlow, and sealed UiState classes in Android" names the domain and several concrete technologies/actions (state emission, state modeling, sharing policies), with only minor coverage gaps (e.g., no mention of specific collection or migration actions). It falls just short of the 5 anchor's comprehensive multi-action list, and well above the 3 anchor's 1-2 concrete actions.

4 / 5

Completeness

Both parts are present: a clear 'what' ("Configure ViewModel state emission with StateFlow, SharedFlow, and sealed UiState classes") and an explicit 'when' ("Use for state modeling and sharing policies"). The 'when' clause is explicit but abstract — no concrete user-side trigger phrases like "when the user mentions StateFlow or UiState" — so it matches the 4 anchor, not the 5.

4 / 5

Trigger Term Quality

Natural Android terms users would say are present: "ViewModel", "StateFlow", "UiState", "Hilt injection", "navigation-event plumbing". A few natural synonyms a user might say (e.g., "UI state", "Android state management", "LiveData migration") are missing, matching the 4 anchor rather than the comprehensive 5 anchor.

4 / 5

Distinctiveness Conflict Risk

The description carves out a clear niche (ViewModel state emission policy) and explicitly defers adjacent concerns — "generic lifecycle collection, navigation-event plumbing, Hilt injection, test code, and configuration-change recipes to their specific skills" — minimizing conflict risk with sibling skills, matching the 5 anchor's clear niche with distinct triggers.

5 / 5

Total

17

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

metadata_field

'metadata' should map string keys to string values

Warning

Total

14

/

16

Passed

Repository

HoangNguyen0403/agent-skills-standard

Path

skills/android/android-state/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.