CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

android-kotlin

Android Kotlin development with Coroutines, Jetpack Compose, Hilt, and MockK testing

52

Quality

66%

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

Fix and improve this skill with Tessl

tessl review fix ./skills/android-kotlin/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

57%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.

The body is a well-organized library of high-quality, idiomatic Kotlin/Compose/Hilt/MockK patterns with essentially no fluff prose. Its weaknesses are the ~150 lines of standard boilerplate (Gradle, CI, lint config) with pinned versions inlined where Claude's own knowledge or a reference file would do, and the absence of any explicit workflow ordering or verification checkpoints.

Suggestions

Move the full build.gradle.kts, GitHub Actions yaml, and detekt.yml into a references/ file (e.g., references/build-config.md) and keep only a one-line pointer plus any project-specific deviations in SKILL.md.

Add a short 'Adding a feature' workflow (screen -> ViewModel -> use case -> repository -> test) so the layering sequence is explicit rather than implied by the directory tree.

State the project's current dependency versions once in a designated spot (or instruct Claude to read the existing build files) instead of pinning dated versions inline, so the skill does not go stale.

DimensionReasoningScore

Conciseness

The Kotlin pattern sections (ViewModel with StateFlow, repository with Flow, sealed Result, MockK/Turbine tests) are lean and earn their tokens, but roughly 150 lines are boilerplate Claude already knows verbatim — the full app-level 'build.gradle.kts' dependency block, the GitHub Actions CI yaml, and 'detekt.yml' — complete with time-sensitive pinned versions (compose-bom 2024.01.00, mockk 1.13.9) presented outside any 'old patterns' section. This matches anchor 3 ('mostly efficient but includes some unnecessary explanation or could be tightened'); it is not a 2 because there is no padded prose, only code.

3 / 5

Actionability

The code is real, executable Kotlin — a complete ViewModel/UiState pair, repository implementation, Compose screen with Scaffold, and a runnable MockK/Turbine test with the MainDispatcherRule — meeting anchor 4 ('mostly executable guidance with minor gaps'). It falls short of anchor 5 because referenced symbols (User, UserApi, UserContent, the Hilt domain modules) are never defined, so the examples are not fully copy-paste self-contained.

4 / 5

Workflow Clarity

There is no explicit multi-step workflow: the layering (ui -> usecase -> repository -> data) is only implied by the directory tree, and the anti-patterns list tells Claude what to avoid but not in what order to proceed or how to verify work. This sits at anchor 3 ('sequence present but checkpoints missing or implicit'); it is not a 2 because the project-structure section plus per-layer examples give a rough, coherent organization, and the testing section at least gestures at verification.

3 / 5

Progressive Disclosure

The body has clear section headers and a logical flow, but all ~450 lines live in SKILL.md with no bundle files — no references/, scripts/, or assets/ exist — and content that clearly belongs in separate files (the full Gradle config, CI pipeline, and detekt.yml) is fully inlined. This matches anchor 3 ('some structure but could be better organized; content that should be separate is inline'); it is not a 2 because the section structure is more than minimal and nothing is buried.

3 / 5

Total

13

/

20

Passed

Description

60%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.

The description is a concise, distinctive stack inventory with strong natural trigger terms, but it describes technologies rather than concrete actions and omits any 'Use when...' trigger guidance. Moving the trigger clause into the description and naming a few concrete tasks would lift it substantially.

Suggestions

Add a 'Use when...' clause to the description itself (e.g., 'Use when editing .kt/.kts files, Gradle build scripts, or Android app code') rather than relying solely on the separate when-to-use frontmatter field.

Replace generic verbs with concrete actions, e.g., 'Build Jetpack Compose screens, structure ViewModel/repository layers, wire Hilt DI, and write MockK/Turbine unit tests'.

Include common file extensions and build terms (`.kt`, `.kts`, `build.gradle.kts`, `Room`) to round out trigger-term coverage.

DimensionReasoningScore

Specificity

The description names the domain ('Android Kotlin development') and lists technologies ('Coroutines, Jetpack Compose, Hilt, and MockK testing') but the only actions are the generic 'development' and 'testing' — no concrete actions like 'build Compose screens' or 'write MockK tests'. This matches anchor 2 ('Names the domain but actions are minimal or generic'); it does not reach anchor 3, which requires 1-2 concrete actions rather than a stack inventory.

2 / 5

Completeness

There is a reasonably clear 'what' (Android Kotlin development with a named stack), but the description itself has no 'Use when...' clause or equivalent explicit trigger guidance — that lives in a separate 'when-to-use' frontmatter field, so the description alone matches anchor 3. Per the guideline, a missing 'Use when' clause caps completeness at 3; it is not a 4 because the 'when' is entirely absent from the description text, not merely imprecise.

3 / 5

Trigger Term Quality

'Android', 'Kotlin', 'Coroutines', 'Jetpack Compose', 'Hilt', and 'MockK' are all natural terms users would say when needing this skill, giving good keyword coverage. It falls short of anchor 5 because common variations and file extensions like '.kt', 'Gradle', or 'Room' are missing.

4 / 5

Distinctiveness Conflict Risk

Naming the specific stack ('Coroutines, Jetpack Compose, Hilt, and MockK') carves out a clear niche with minimal conflict risk against general Java/Android or cross-platform skills. It is not a 4 because the framework names themselves act as distinct triggers — no closely related skill would plausibly claim this exact combination.

5 / 5

Total

14

/

20

Passed

Validation

93%

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

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository

alinaqi/maggy

Path

skills/android-kotlin/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.