home / skills / pluginagentmarketplace / custom-plugin-android / data
This skill helps Android developers securely persist data using Room, EncryptedSharedPreferences, and DataStore with best practices and migrations.
npx playbooks add skill pluginagentmarketplace/custom-plugin-android --skill dataReview the files below or copy the command above to add this skill to your agents.
---
name: data
description: Room ORM, SQLite, SharedPreferences, DataStore, encryption.
version: "2.0.0"
sasmp_version: "1.3.0"
# Agent Binding
bonded_agent: 04-data-management
bond_type: PRIMARY_BOND
# Skill Configuration
atomic: true
single_responsibility: Data persistence & storage
# Parameter Validation
parameters:
storage_type:
type: string
enum: [room, datastore, preferences, encrypted]
required: false
operation:
type: string
enum: [create, read, update, delete, migrate]
required: false
# Retry Configuration
retry:
max_attempts: 2
backoff: exponential
on_failure: suggest_transaction_rollback
# Observability
logging:
level: info
include: [query, storage_type, security_level]
---
# Data Persistence Skill
## Quick Start
### Room Entity & DAO
```kotlin
@Entity
data class User(@PrimaryKey val id: Int, val name: String)
@Dao
interface UserDao {
@Query("SELECT * FROM User")
suspend fun getAllUsers(): List<User>
@Insert
suspend fun insert(user: User)
}
```
### EncryptedSharedPreferences
```kotlin
val prefs = EncryptedSharedPreferences.create(context, "secret",
MasterKey.Builder(context).setKeyScheme(AES256_GCM).build(),
AES256_SIV, AES256_GCM)
prefs.edit { putString("token", value) }
```
### DataStore
```kotlin
val dataStore = context.createDataStore("settings")
val preferences = dataStore.data.map { it[KEY] ?: "" }
```
## Key Concepts
### Room Advantages
- Type-safe queries
- Compile-time checks
- Suspend/Flow support
- Migration management
### SharedPreferences
- Simple key-value store
- Use Encrypted version for sensitive data
- Limited to small data
### DataStore
- Modern SharedPreferences
- Coroutine-native
- Type-safe
- ACID transactions
## Best Practices
✅ Use Room for complex data
✅ Encrypt sensitive data
✅ Implement proper migrations
✅ Handle database errors
✅ Test database operations
## Resources
- [Room Documentation](https://developer.android.com/training/data-storage/room)
- [DataStore Guide](https://developer.android.com/topic/libraries/architecture/datastore)
This skill provides practical guidance and examples for Android data persistence using Room (SQLite), EncryptedSharedPreferences, and DataStore, with a focus on secure storage and migration management. It bundles concise code snippets, core concepts, and best practices to help developers choose the right storage mechanism and implement it safely. The content is geared toward coroutine-friendly, testable solutions for app data handling.
The skill inspects common persistence patterns and supplies minimal, copy-ready examples: a Room Entity/DAO for structured SQLite storage, EncryptedSharedPreferences for small sensitive key-value pairs, and DataStore for modern coroutine-based preferences. It highlights type-safety, compile-time checks, ACID behavior, and encryption setup so you can implement storage with correct threading and migration strategies.
When should I migrate from SharedPreferences to DataStore?
Migrate when you need coroutine support, stronger type safety, ACID guarantees, or to reduce risks with synchronous disk I/O on the main thread.
Is Room required if I use DataStore?
No. Use Room for structured relational data and complex queries; use DataStore for simple settings and preferences. They serve different needs and can coexist.