一键导入
android-material-you
Enforce ShareShelf Material 3 design standards on Android — emerald/stone color scheme, component patterns, and mobile UX best practices.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Enforce ShareShelf Material 3 design standards on Android — emerald/stone color scheme, component patterns, and mobile UX best practices.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Runs backend unit and integration tests using Maven.
Review current changes against ShareShelf conventions checklist. Use after making code changes or before committing.
Inspect the ShareShelf PostgreSQL database — list tables, describe schema, run safe SELECT queries, and debug data issues.
Generate TDD-first test suites for ShareShelf backend (JUnit 5 + MockK) and frontend (Vitest + RTL) code.
基于 SOC 职业分类
| name | android-material-you |
| description | Enforce ShareShelf Material 3 design standards on Android — emerald/stone color scheme, component patterns, and mobile UX best practices. |
Enforce premium Material 3 design standards on the ShareShelf Android app, ensuring visual consistency with the web app's emerald/stone palette while following Android-native UX patterns.
Apply these design rules to every Android UI you build:
Match the web app's emerald + stone palette with Material 3 tokens:
// Theme.kt
private val LightColorScheme = lightColorScheme(
primary = Color(0xFF059669), // emerald-600
onPrimary = Color(0xFFFFFFFF),
primaryContainer = Color(0xFFA7F3D0), // emerald-200
onPrimaryContainer = Color(0xFF064E3B), // emerald-900
secondary = Color(0xFF78716C), // stone-500
onSecondary = Color(0xFFFFFFFF),
secondaryContainer = Color(0xFFE7E5E4), // stone-200
onSecondaryContainer = Color(0xFF292524), // stone-800
surface = Color(0xFFFFFFFF),
onSurface = Color(0xFF292524), // stone-800
surfaceVariant = Color(0xFFF5F5F4), // stone-100
onSurfaceVariant = Color(0xFF57534E), // stone-600
background = Color(0xFFFAFAF9), // stone-50
onBackground = Color(0xFF292524), // stone-800
error = Color(0xFFDC2626), // red-600
onError = Color(0xFFFFFFFF),
outline = Color(0xFFD6D3D1), // stone-300
outlineVariant = Color(0xFFE7E5E4), // stone-200
)
Never introduce new color families — keep all colors within emerald (primary), stone (neutral), and red (error only).
Use Material 3 type scale with system fonts:
displayLarge — screen titles (Home, Profile)headlineMedium — section headerstitleLarge — card titles, dialog titlestitleMedium — list item primary textbodyLarge — body text, descriptions, form labelsbodyMedium — secondary info (dates, prices, metadata)labelLarge — buttons, chips, badgeslabelSmall — captions, helper textNo custom fonts unless explicitly added to the project.
Card(
modifier = Modifier.fillMaxWidth(),
shape = RoundedCornerShape(16.dp),
elevation = CardDefaults.cardElevation(defaultElevation = 2.dp),
colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface)
) {
Column(modifier = Modifier.padding(16.dp)) {
// Content with 12dp spacing
}
}
Button filled, emerald-600OutlinedButton, stone outlineButton with error color or OutlinedButton with redButtonDefaults medium for forms, large for primary CTAsModifier.fillMaxWidth())Color-coded chips for borrow status:
@Composable
fun StatusBadge(status: BorrowStatus) {
val (text, containerColor, contentColor) = when (status) {
BorrowStatus.PENDING -> Triple("Pending", Color(0xFFFEF3C7), Color(0xFF92400E)) // amber
BorrowStatus.APPROVED -> Triple("Approved", Color(0xFFA7F3D0), Color(0xFF065F46)) // emerald
BorrowStatus.REJECTED -> Triple("Rejected", Color(0xFFFEE2E2), Color(0xFF991B1B)) // red
BorrowStatus.RETURNED -> Triple("Returned", Color(0xFFE7E5E4), Color(0xFF57534E)) // stone
}
AssistChip(
onClick = {},
label = { Text(text, style = MaterialTheme.typography.labelSmall) },
colors = AssistChipDefaults.assistChipColors(
containerColor = containerColor,
labelColor = contentColor
)
)
}
@Composable
fun TrustScoreBadge(score: Double) {
val color = when {
score >= 4.0 -> Color(0xFF059669) // emerald — trusted
score >= 3.0 -> Color(0xFFD97706) // amber — neutral
else -> Color(0xFFDC2626) // red — caution
}
Surface(
shape = CircleShape,
color = color.copy(alpha = 0.1f)
) {
Text(
text = String.format("%.1f", score),
color = color,
modifier = Modifier.padding(horizontal = 12.dp, vertical = 6.dp),
style = MaterialTheme.typography.titleLarge
)
}
}
CircularProgressIndicator with emerald colorCircularProgressIndicator(modifier = Modifier.size(20.dp)) inside buttonpullToRefresh modifierSnackbar from SnackbarHost in ScaffoldOutlinedButtonModifier.padding(16.dp) on content, horizontal safe area respectedColumn(verticalScroll = rememberScrollState())animateScale — scale to 0.97 on press, spring backAnimatedVisibility with fadeIn + slideInVertically for list itemsanimateColorAsState for score/status transitionscontentDescriptionnull if decorativeWindowSizeClass from material3-adaptive to detectMaterialTheme.colorScheme.*