UI Styling
Ohh-889/skyroc
Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs.
Instructions to make or update an app's UI so that it adapts to different Android devices including phones, tablets, foldables, laptops, desktop, TV, Auto and XR.
$ npx skills add arindamxd/camerax-android --skill adaptive -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install arindamxd/camerax-android adaptive --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/arindamxd/camerax-android.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/adaptive .claude/skills/adaptive && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "adaptive" agent skill from https://github.com/arindamxd/camerax-android/tree/master/.agents/skills/adaptive into .claude/skills/adaptive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/arindamxd/camerax-android/tree/master/.agents/skills/adaptiveType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add arindamxd/camerax-android --skill adaptive -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install arindamxd/camerax-android adaptive --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arindamxd/camerax-android.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/adaptive .agents/skills/adaptive && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "adaptive" agent skill from https://github.com/arindamxd/camerax-android/tree/master/.agents/skills/adaptive into .agents/skills/adaptive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add arindamxd/camerax-android --skill adaptive -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install arindamxd/camerax-android adaptive --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arindamxd/camerax-android.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/adaptive .cursor/skills/adaptive && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "adaptive" agent skill from https://github.com/arindamxd/camerax-android/tree/master/.agents/skills/adaptive into .cursor/skills/adaptive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/arindamxd/camerax-android.git --path .agents/skills/adaptive--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add arindamxd/camerax-android --skill adaptive -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install arindamxd/camerax-android adaptive --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arindamxd/camerax-android.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/adaptive .gemini/skills/adaptive && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "adaptive" agent skill from https://github.com/arindamxd/camerax-android/tree/master/.agents/skills/adaptive into .gemini/skills/adaptive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install arindamxd/camerax-android adaptiveInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add arindamxd/camerax-android --skill adaptive -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/arindamxd/camerax-android.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/adaptive .github/skills/adaptive && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "adaptive" agent skill from https://github.com/arindamxd/camerax-android/tree/master/.agents/skills/adaptive into .github/skills/adaptive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add arindamxd/camerax-android --skill adaptive -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install arindamxd/camerax-android adaptive --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arindamxd/camerax-android.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/adaptive .opencode/skills/adaptive && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "adaptive" agent skill from https://github.com/arindamxd/camerax-android/tree/master/.agents/skills/adaptive into .opencode/skills/adaptive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "adaptive", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
adaptiveInstructions to make or update an app's UI so that it adapts to different Android devices including phones, tablets, foldables, laptops, desktop, TV, Auto and XR.
Adaptive is an agent skill from arindamxd/camerax-android. Instructions to make or update an app's UI so that it adapts to different Android devices including phones, tablets, foldables, laptops, desktop, TV, Auto and XR. It includes how to handle different window sizes, pointing devices (such as mouse) and text entry devices (such as keyboard) using the Compose MediaQuery API. It also covers multi-pane layouts using Navigation3 Scenes, adaptive UI components (such as buttons) with varying target sizes, and adaptive layouts (including navigation areas - nav rails and nav…
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 26 other files, including reference files (for example `references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.md`, `references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.md` and `references/android/develop/ui/compose/layouts/adaptive/flexbox/index.md`).
It sits in Frontend & Design, covering CSS and styling, Responsive design and Backend development. It works with Android. The repository describes itself as: A Play Store camera app showing Jetpack CameraX APIs in Kotlin — install it, use it, copy the patterns. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7c36352. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are kotlin).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Adaptive loads about 3.2k tokens when it runs, and up to ~23k if it reads all its reference files. Until then it costs about 144 tokens; SKILL.md has 1,300 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from arindamxd/camerax-android at commit 7c36352, republished under its Apache-2.0 licence (© arindamxd). 1,300 words, ~3,154 tokens.
.claude/skills/adaptive/SKILL.md (or your agent's skills folder). This skill also uses 16 other files; get the full folder from GitHub.The app must:
To make an app adaptive, follow these steps or a subset of them adapting to the task.
Ensure that screenshot tests exist to verify the current UI on different form factors. If they don't exist, add the Compose Preview Screenshot Testing tool. Use the following annotation to create previews for all the major form factors. For example:
<br />
@Preview(name = "Phone", device = Devices.PHONE, showBackground = true)
@Preview(name = "Foldable", device = Devices.FOLDABLE, showBackground = true)
@Preview(name = "Tablet", device = Devices.TABLET, showBackground = true)
@Preview(name = "Desktop", device = Devices.DESKTOP, showBackground = true)
annotation class FormFactorPreviews
@PreviewTest
@FormFactorPreviews
@Composable
fun FeedScreenPreview() {
SnippetsTheme {
Box {
Text("My Screen")
}
}
}
<br />
Bottom navigation bars are optimized for touch input when the user is holding a phone in portrait mode. On larger screen hand-held devices, like tablets and unfolded foldables, the navigation area must be accessible from the edge of the screen (navigation rail).
If you need to provide more screen space for the content, hide the navigation area. Examples of this include:
When the detail screen is displayed full-screen on mobile, full-screen mode must be deactivated on larger screens.
Steps to migrate:
NavigationSuiteItem.AnimatedContent or AnimatedVisibility composable. If so, follow the guidance in the "Control navigation area visibility".Scaffold) with NavigationSuiteScaffold from the Material 3 adaptive layouts library.navigationItems parameter of NavigationSuiteScaffold.If the navigation bar's visibility changes - it is hidden under certain scenarios or on certain screens - this behavior must be maintained with the adaptive navigation area. This is done using NavigationSuiteScaffold's state parameter.
Steps to migrate:
isNavBarVisible or shouldShowNavBar as the variable name.NavigationSuiteScaffoldState using rememberNavigationSuiteScaffoldState() and pass it to NavigationSuiteScaffold.LaunchedEffect to call show or hide on the NavigationSuiteScaffoldState.For example:
<br />
// Pass this variable to any composable that needs to control the navigation area visibility
var isNavBarVisible by remember { mutableStateOf(true) }
val scaffoldVisibilityState = rememberNavigationSuiteScaffoldState()
NavigationSuiteScaffold(
navigationSuiteItems = navItems,
state = scaffoldVisibilityState
) {
// Main content
}
LaunchedEffect(isNavBarVisible){
if (isNavBarVisible) {
scaffoldVisibilityState.show()
} else {
scaffoldVisibilityState.hide()
}
}
<br />
Analyze the codebase looking for related screens - tapping on something in one screen opens another screen that shows information related to the first. There are two canonical screen relationships: list-detail and supporting pane.
IMPORTANT: You must use the Navigation 3 SceneStrategy approach to implement multi-pane layouts. Do not use ListDetailPaneScaffold or SupportingPaneScaffold.
List-detail layouts display a list of items (this is the list screen) and clicking on an item opens a new screen that shows more details about that item (the detail screen).
Typical usage includes productivity apps like email, notes, and messaging.
Unless requested explicitly, avoid this pattern when the detail content requires substantial screen space (e.g., images or media that benefits from a full-screen presentation).
androidx.compose.material3.adaptive:adaptive-navigation3 libraryandroidx.compose.material3.adaptive.navigation3.ListDetailSceneStrategy using rememberListDetailSceneStrategyListDetailSceneStrategy to NavDisplay using its sceneStrategies parameterentry(metadata = ...) or NavEntry(metadata = ...) to the list entry using ListDetailSceneStrategy.listPane(detailPlaceholder = { <placeholder composable> }).detailPlaceholder parameter to add a placeholder on the detail screen when no list items are selected.ListDetailSceneStrategy.detailPane().For a reference implementation, check the Nav3 Material List Detail recipe.
Identify supporting pane screens where a main screen displays a single item, and selecting it opens a "supporting screen" with more details. The supporting screen complements the main screen and is shown in a supporting pane.
SceneStrategyandroidx.compose.material3.adaptive:adaptive-navigation3 libraryandroidx.compose.material3.adaptive.navigation3.SupportingPaneSceneStrategy using rememberSupportingPaneSceneStrategySupportingPaneSceneStrategy to NavDisplay using its sceneStrategies parameterentry(metadata = ...) or NavEntry(metadata = ...) to the main entry using SupportingPaneSceneStrategy.mainPane()SupportingPaneSceneStrategy.supportingPane()If you have made changes, record new reference files. Ask the user to visually verify that the new layouts are correct.
Look for the following vertical list composables: LazyColumn, LazyVerticalGrid, LazyVerticalStaggeredGrid.
Steps to migrate:
LazyColumn: change to a LazyVerticalGrid and follow the instruction laterLazyVerticalGrid: change the columns parameter to use GridCells.Adaptive(<width>.dp)LazyVerticalStaggeredGrid: change the columns parameter to use StaggeredGridCells.Adaptive(<width>.dp)WARNING: Grid is an experimental API available from Compose 1.11.0-beta01. Confirm with the user that they are happy to use an experimental API in their codebase.
Look for any Column that contains multiple items of the same type and replace it with Grid. Do not replace it with LazyVerticalGrid or any other lazy layout. Do not place Grid inside the existing Column. Completely replace it.
Grid is configured by supplying a lambda (an extension function on GridConfigurationScope) to its config parameter. Inside the lambda, constraints provides the minimum and maximum dimensions of the grid container and can be used to change the number of rows and columns based on the available size. For example, the following code configures Grid such that when the available width is:
<br />
Grid(
config = {
val maxWidthDp = constraints.maxWidth.toDp()
val (cols, rows) = if (maxWidthDp < 800.dp){
2 to 4
} else{
4 to 2
}
val gapSizeDp = 8.dp
val cellSize = ((maxWidthDp - (gapSizeDp * (cols - 1))) / cols).coerceAtLeast(0.dp)
repeat(cols) { column(cellSize) }
repeat(rows) { row(cellSize) }
gap(gapSizeDp)
}
) { /** items **/ }
<br />
Grid is an experimental API so add the @OptIn(ExperimentalGridApi::class) annotation to any function that uses it.
In an app with multiple top-level destinations, each screen must manage its own app bar state independently. There are two main scroll behaviors:
exitUntilCollapsedScrollBehavior: Hides on scroll down, stays hidden while you scroll up until you reach the very top (0 offset).enterAlwaysScrollBehavior: Hides on scroll down, shows immediately on scroll up.Build the app and run the local tests. If the project has screenshot tests, run them but DO NOT update the reference images. Prompt the user to do this after they have viewed the screenshot diffs.
The following APIs are available from Compose 1.11.0-beta01.
Check the FlexBox documentation:
Check the MediaQuery documentation when you need to query the device's screen size, pointer precision, keyboard type, whether it has cameras or microphones, and other device capabilities.
Check the Grid documentation when you need to display a fixed number of items in a grid layout:
© arindamxd, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 16 other files (references) in .agents/skills/adaptive of arindamxd/camerax-android.
Open the folder on GitHubat commit 7c36352
We found 6 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 4 other GitHub owners. This page covers the copy in arindamxd/camerax-android, which our catalogue first saw on October 7, 2026.
Adaptive next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Adaptive this skillarindamxd/camerax-android | 132 | 4 repos | ~3.2k | Automated safety check: Pass | Apache-2.0 | |
| UI StylingOhh-889/skyroc | 795 | 13 repos | ~2.5k | Automated safety check: Pass | MIT | |
| MCP Developmentcoollabsio/coolify | 63k | 1 repos | ~949 | Automated safety check: Pass | MIT | |
| Material 3hamen/material-3-skill | 1.5k | 2 repos | ~7.8k | Automated safety check: Pass | MIT | |
| Frontend Design Routercode-yeongyu/oh-my-openagent | 70k | — | ~5.3k | Automated safety check: Pass | Custom licence | |
| Refero Designreferodesign/refero_skill | 292 | — | ~5.3k | Automated safety check: Pass | MIT |
Ohh-889/skyroc
Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs.
coollabsio/coolify
A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.
hamen/material-3-skill
Implement Google's Material Design 3 (Material You) UI system.
code-yeongyu/oh-my-openagent
Routes frontend and UI work through design reference rulesets, with a design-system gate plus layout and print guidance, before any UI code is written.
referodesign/refero_skill
Primary/default skill for UI design, product design, web design, landing pages, dashboards, product screens, redesigns, visual polish, frontend/CSS styling, design systems, components, responsive…
skydashnet/material-design-3-ui-skill
Guides designing, reviewing or implementing interfaces that follow Google's Material Design 3 system: semantic tokens, component states, adaptive layout and accessibility.
arindamxd/camerax-android
A skill your agent uses to integrate the Jetpack Compose Styles API into an Android project.
arindamxd/camerax-android
Provides a complete workflow for implementing verified email retrieval on Android Credential Manager API.
arindamxd/camerax-android
A skill your agent uses to migrate your Jetpack Compose app to add adaptive edge-to-edge support and troubleshoot common issues.
arindamxd/camerax-android
Provide technical guidance for Android camera development with CameraX.
arindamxd/camerax-android
Provides instructions and architectural patterns for migrating Android TV applications from legacy Leanback UI Toolkit, Android Views, or Support Fragments to Jetpack Compose for TV (androidx.tv).
arindamxd/camerax-android
Provides a structured workflow for migrating an Android XML View to Jetpack Compose.
Works with
Categories
Instructions to make or update an app's UI so that it adapts to different Android devices including phones, tablets, foldables, laptops, desktop, TV, Auto and XR. Adaptive is an agent skill from arindamxd/camerax-android. Instructions to make or update an app's UI so that it adapts to different Android devices including phones, tablets, foldables, laptops, desktop, TV, Auto and XR.
Adaptive fits situations like: tasks that involve CSS and styling; tasks that involve Responsive design; tasks that involve Backend development.
Run `npx skills add arindamxd/camerax-android --skill adaptive -a claude-code`. Or copy the skill folder (.agents/skills/adaptive in arindamxd/camerax-android) into .claude/skills/adaptive in your project. Claude Code loads it when a task matches its description.
Run `npx skills add arindamxd/camerax-android --skill adaptive -a codex`. Or copy the skill folder (.agents/skills/adaptive in arindamxd/camerax-android) into .agents/skills/adaptive in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add arindamxd/camerax-android --skill adaptive -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/adaptive, .gemini/skills/adaptive, .github/skills/adaptive and .opencode/skills/adaptive in your project.
SKILL.md names no scripts, command-line tools or credentials: Adaptive is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Adaptive is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 20k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Adaptive: UI Styling (Ohh-889/skyroc, 795 stars), MCP Development (coollabsio/coolify, 63k stars), Material 3 (hamen/material-3-skill, 1.5k stars) and Frontend Design Router (code-yeongyu/oh-my-openagent, 70k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
arindamxd (a GitHub user) maintains it in arindamxd/camerax-android, which has 132 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 2, 2026.
Source: arindamxd/camerax-android on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.