CtrlK
BlogDocsLog inGet started
Tessl Logo

android-local-persistence-datastore

Persist lightweight user and app preferences with DataStore, schema-safe models, and migration-aware defaults.

41

Quality

27%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Optimize this skill with Tessl

npx tessl skill review --optimize ./.github/skills/android-local-persistence-datastore/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Discovery

32%

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 identifies a specific technology domain (DataStore) and mentions relevant concepts like schema safety and migrations, giving it moderate specificity. However, it lacks an explicit 'Use when...' clause, which is critical for skill selection, and misses common trigger term variations that developers would naturally use. The description reads more like a feature tagline than actionable selection guidance.

Suggestions

Add an explicit 'Use when...' clause, e.g., 'Use when the user asks about Android Jetpack DataStore, persisting app preferences, migrating from SharedPreferences, or Proto/Preferences DataStore.'

Include common trigger term variations such as 'SharedPreferences', 'Jetpack DataStore', 'Proto DataStore', 'Android preferences', 'key-value storage', and 'app settings'.

List more concrete actions like 'define typed schemas, read and write preferences, handle schema migrations, convert from SharedPreferences' to improve specificity.

DimensionReasoningScore

Specificity

Names the domain (DataStore preferences) and some actions (persist preferences, schema-safe models, migration-aware defaults), but the actions are more like feature descriptors than concrete verbs. It doesn't list multiple distinct user-facing operations like 'read preferences', 'write defaults', 'migrate schemas'.

2 / 3

Completeness

Describes what the skill does (persist preferences with DataStore) but completely lacks a 'Use when...' clause or any explicit trigger guidance for when Claude should select this skill. Per rubric guidelines, a missing 'Use when...' clause caps completeness at 2, and since the 'what' is also somewhat vague, this scores a 1.

1 / 3

Trigger Term Quality

Includes 'DataStore', 'preferences', 'migration', and 'schema' which are relevant technical terms a developer might use. However, it misses common variations like 'Proto DataStore', 'Preferences DataStore', 'Android settings', 'key-value store', 'SharedPreferences replacement', or 'Jetpack DataStore'.

2 / 3

Distinctiveness Conflict Risk

'DataStore' is a fairly specific technology (Android Jetpack DataStore), which helps distinguish it. However, without explicit scoping (e.g., Android, Jetpack), it could overlap with other data persistence or preferences-related skills. The term 'preferences' alone is quite broad.

2 / 3

Total

7

/

12

Passed

Implementation

22%

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

This skill reads like a generic template that was filled in with high-level descriptions rather than actionable DataStore-specific guidance. It completely lacks code examples for setting up Preferences DataStore or Proto DataStore, defining serializers, performing migrations from SharedPreferences, or handling coroutine-based reads/writes. The workflow and guardrails are so abstract they could apply to any Android data layer skill.

Suggestions

Add concrete, executable Kotlin code examples showing: (1) Preferences DataStore setup with a preferencesDataStore delegate, (2) reading/writing typed preferences with edit{} and data flow, (3) Proto DataStore with a .proto schema and serializer, and (4) SharedPreferences migration using SharedPreferencesMigration.

Replace the generic workflow steps with DataStore-specific sequencing: define schema → create DataStore instance → implement read/write flows → add migration from SharedPreferences → validate with unit test → handle CorruptionException.

Add a validation checkpoint in the workflow for verifying migration correctness (e.g., 'Run migration test to confirm old SharedPreferences keys map correctly to new DataStore fields before removing legacy code').

Remove or significantly condense the generic guardrails and anti-patterns that aren't DataStore-specific (e.g., 'Blocking the main thread with disk or network calls' is general Android knowledge Claude already has).

DimensionReasoningScore

Conciseness

The content avoids explaining what DataStore is at a basic level, which is good. However, the workflow and guardrails sections are generic boilerplate that could apply to almost any Android persistence skill—they don't add DataStore-specific value and waste tokens.

2 / 3

Actionability

There is no executable code anywhere—no Kotlin/Gradle snippets showing how to set up DataStore, define a serializer, read/write preferences, or migrate from SharedPreferences. The examples section only lists shell commands to run tests in hypothetical example projects, not actual implementation guidance.

1 / 3

Workflow Clarity

The workflow steps are extremely generic ('Model contracts explicitly before wiring network, storage, media, or background APIs') and not specific to DataStore at all. There are no validation checkpoints, no feedback loops, and no concrete sequencing of DataStore-specific operations like defining a schema, creating a DataStore instance, or handling migrations.

1 / 3

Progressive Disclosure

The document has clear section headings and references to handoff skills and official documentation links. However, the references to example projects (orbittasks-compose, orbittasks-xml) and scripts are opaque—there's no indication of what's in those files or how they relate to the skill content, and the main document itself lacks the core instructional content that would make the references meaningful.

2 / 3

Total

6

/

12

Passed

Validation

90%

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

Validation10 / 11 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_field

'metadata' should map string keys to string values

Warning

Total

10

/

11

Passed

Repository
krutikJain/android-agent-skills
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.