android-interfaz-compose
Desarrollo Android con Jetpack Compose, manejo de estado, navegación, Material 3, side effects y patrones de arquitectura.
Skill by tontojil
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/tontojil-android-interfaz-compose
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/android-interfaz-compose
What's inside
- Skill name
android-interfaz-compose- Description
- Desarrollo Android con Jetpack Compose, manejo de estado, navegación, Material 3, side effects y patrones de arquitectura. Úsela cuando cree pantallas en Compose. (Jetpack Compose, state management, navigation, Material 3)
- License
- MIT
- Instructions
- 181 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
## Compose State
### State Hoisting
```kotlin
@Composable
fun EmailField(
email: String,
onEmailChange: (String) -> Unit,
modifier: Modifier = Modifier,
isError: Boolean = false,
) {
OutlinedTextField(
value = email,
onValueChange = onEmailChange,
label = { Text("Email") },
isError = isError,
modifier = modifier.fillMaxWidth(),
singleLine = true,
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Email),
)
}
// Usage — state hoisted to parent
@Composable
fun LoginScreen(viewModel: LoginViewModel = viewModel()) {
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
EmailField(
email = uiState.email,
onEmailChange = viewModel::onEmailChange,
isError = uiState.emailError != null,
)
}
```
### ViewModel + StateFlow
```kotlin
data class LoginUiState(
val email: String = "",
val password: String = "",
val emailError: String? = null,
val isLoading: Boolean = false,
val error: String? = null,
val isSuccess: Boolean = false,
)
class LoginViewModel @Inject constructor(
private val loginUseCase: LoginUseCase,
) : ViewModel() {
private val _uiState = MutableStateFlow(LoginUiState())
val uiState: StateFlow<LoginUiState> = _uiState.asStateFlow()
fun onEmailChange(email: String) {
_uiState.update { it.copy(email = email, emailError = null) }
}
fun onLogin() {
viewModelScope.launch {
_uiState.update { it.copy(isLoading = true, error = null) }
loginUseCase(LoginParams(_uiState.value.email, _uiState.value.password))
.onSuccess { _uiState.update { it.copy(isLoading = false, isSuccess = true) } }
.onFailure { _uiState.update { it.copy(isLoading = false, error = it.error) } }
}
}
}
```
## Navigation
```kotlin
// Type-safe navigation (2.8+)
@Serializable data object LoginRoute
@Serializable data class DashboardRoute(val userId: String)
@Composable
fun AppNavHost(navController: NavHostController) {
NavHost(navController, startDestination = LoginRoute) {
composable<LoginRoute> {
LoginScreen(onLogin = { userId ->
navController.navigate(DashboardRoute(userId)) {
popUpTo<LoginRoute> { inclusive = true }
}
})
}
composable<DashboardRoute> { backStackEntry ->
val route = backStackEntry.toRoute<DashboardRoute>()
DashboardScreen(userId = route.userId)
}
}
}
```
## Side Effects
```kotlin
@Composable
fun LoginScreen(viewModel: LoginViewModel = viewModel(), onNavigateToDashboard: () -> Unit) {
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
// Single-shot events
LaunchedEffect(uiState.isSuccess) {
if (uiState.isSuccess) onNavigateToDashboard()
}
// Show snackbar on error
val snackbarHostState = remember { SnackbarHostState() }
uiState.error?.let { error ->
LaunchedEffect(error) {
snackbarHostState.showSnackbar(error)
viewModel.clearError()
}
}
}
```
## Lists (LazyColumn)From tontojil/PerfeckCode, MIT.
More from tontojil/PerfeckCode
- 0.526score
constructor-mcp
tontojil
Crea servidores MCP en Python o TypeScript para conectar al agente con APIs externas.
SkillBFreshness: BClaude Code +9 - 0.521score
android-arquitectura-limpia
tontojil
Arquitectura limpia en Android con MVVM, casos de uso, repositorios, inyección con Hilt y módulos por capas.
SkillBFreshness: BClaude Code +9 - 0.521score
anuncios-pagos
tontojil
Para avisos pagados en Google, Meta, TikTok: revisar con datos, puntaje claro y cambios con permiso.
SkillBFreshness: BClaude Code +9 - 0.521score
experto-node
tontojil
Para servidores Node.js con Express o Nest, APIs REST y pruebas Vitest.
SkillBFreshness: BClaude Code +9 - 0.521score
creador-habilidades
tontojil
Creación de nuevas skills de agente según la especificación oficial, para patrones repetidos o instrucciones nuevas.
SkillBFreshness: BClaude Code - 0.521score
depuracion-sistematica
tontojil
Para bugs, tests fallidos, errores raros o lentitud.
SkillBFreshness: BClaude Code +9 - 0.521score
diseno-api
tontojil
Diseña APIs REST con códigos de estado correctos, paginación, errores, versionado y HATEOAS.
SkillBFreshness: BClaude Code +9 - 0.521score
diseno-frontend
tontojil
Direccion estetica para paginas distintivas sin look generico de IA.
SkillBFreshness: BClaude Code +9 - 0.521score
experto-go
tontojil
Patrones Go de concurrencia con goroutines y channels, servicios gRPC, microservicios y buenas practicas de produccion.
SkillBFreshness: BClaude Code +9 - 0.521score
experto-laravel
tontojil
Patrones Laravel 11 con Eloquent, auth Sanctum, API resources, colas Horizon, eventos, Livewire y tests Pest.
SkillBFreshness: BClaude Code +9 - 0.521score
acciones-github
tontojil
Patrones de GitHub Actions para armar pipelines CI/CD, workflows reutilizables, builds con matriz, cache, secretos y actions a medida.
SkillBFreshness: BClaude Code +9 - 0.521score
buscar-habilidades
tontojil
Te ayuda a encontrar e instalar skills nuevos cuando preguntas cómo hacer algo o si existe un skill para eso.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 13, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/tontojil/PerfeckCode
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from tontojil
- 0.526score
constructor-mcp
tontojil
Crea servidores MCP en Python o TypeScript para conectar al agente con APIs externas.
SkillBFreshness: BClaude Code +9 - 0.521score
acciones-github
tontojil
Patrones de GitHub Actions para armar pipelines CI/CD, workflows reutilizables, builds con matriz, cache, secretos y actions a medida.
SkillBFreshness: BClaude Code +9 - 0.521score
anuncios-pagos
tontojil
Para avisos pagados en Google, Meta, TikTok: revisar con datos, puntaje claro y cambios con permiso.
SkillBFreshness: BClaude Code +9 - 0.521score
android-arquitectura-limpia
tontojil
Arquitectura limpia en Android con MVVM, casos de uso, repositorios, inyección con Hilt y módulos por capas.
SkillBFreshness: BClaude Code +9 - 0.521score
buscar-habilidades
tontojil
Te ayuda a encontrar e instalar skills nuevos cuando preguntas cómo hacer algo o si existe un skill para eso.
SkillBFreshness: BClaude Code +9 - 0.521score
creador-habilidades
tontojil
Creación de nuevas skills de agente según la especificación oficial, para patrones repetidos o instrucciones nuevas.
SkillBFreshness: BClaude Code
Cite this page
android-interfaz-compose skill. Agent Mart. https://agentmart.dev/skills/tontojil-android-interfaz-compose (last updated 2026-10-24)