← Back to list

new-screen
by vide
Native Android app for viewing Tesla vehicle data from your self-hosted Teslamate instance
⭐ 32🍴 3📅 Jan 23, 2026
SKILL.md
name: new-screen description: Scaffold a new Jetpack Compose screen following project patterns. Use when creating a new screen or view in the app. allowed-tools: Read, Write, Edit, Glob
New Screen Skill
Create a new Jetpack Compose screen following MateDroid's patterns.
Project Structure
Screens are located in app/src/main/java/com/matedroid/ui/screens/:
screens/
├── dashboard/
│ └── DashboardScreen.kt
├── drives/
│ ├── DrivesScreen.kt
│ └── DriveDetailScreen.kt
├── charges/
│ ├── ChargesScreen.kt
│ └── ChargeDetailScreen.kt
├── settings/
│ └── SettingsScreen.kt
└── {feature}/
└── {Feature}Screen.kt
Process
-
Ask the user for:
- Screen name (e.g., "Battery Health")
- Brief description of what it displays
- Whether it needs navigation parameters
-
Read an existing screen as reference (e.g.,
DashboardScreen.kt) -
Create the new screen file following the pattern
Screen Template
package com.matedroid.ui.screens.{feature}
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.matedroid.R
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun {Feature}Screen(
onNavigateBack: () -> Unit,
modifier: Modifier = Modifier
) {
Scaffold(
topBar = {
TopAppBar(
title = { Text(stringResource(R.string.{feature}_title)) },
navigationIcon = {
IconButton(onClick = onNavigateBack) {
Icon(
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
contentDescription = stringResource(R.string.back)
)
}
}
)
}
) { paddingValues ->
Column(
modifier = modifier
.fillMaxSize()
.padding(paddingValues)
.padding(16.dp)
) {
// Screen content here
}
}
}
After Creating the Screen
- Add string resources for the screen title using the translate skill
- Add navigation route to the app's navigation graph
- Remind the user to wire up the navigation
Common Patterns
Loading State
var isLoading by remember { mutableStateOf(true) }
if (isLoading) {
CircularProgressIndicator()
} else {
// Content
}
API Data Fetching
LaunchedEffect(Unit) {
// Fetch data from TeslamateApiService
}
Pull to Refresh
val pullRefreshState = rememberPullToRefreshState()
PullToRefreshBox(state = pullRefreshState, isRefreshing = isRefreshing) {
// Content
}
Cards
Card(
modifier = Modifier.fillMaxWidth(),
colors = CardDefaults.cardColors(
containerColor = MaterialTheme.colorScheme.surfaceVariant
)
) {
// Card content
}
Score
Total Score
60/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon