Jetpack Compose and Multiplatform Expert
rcosteira79/android-skills
Guides writing correct, performant Compose and Compose Multiplatform UI across Android, desktop, iOS and web, from state and animation to design-to-code and crash fixes.
Produce a complete mobile app architecture design — platform choice, navigation structure, state management, data layer, key screens.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill touch-app -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace touch-app --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/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/ai-agency/tonone/skills/touch-app .claude/skills/touch-app && 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 "touch-app" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/plugins/ai-agency/tonone/skills/touch-app into .claude/skills/touch-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "touch-app", 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/jeremylongshore/tons-of-skills-marketplace/tree/main/plugins/ai-agency/tonone/skills/touch-appType 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 jeremylongshore/tons-of-skills-marketplace --skill touch-app -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace touch-app --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/ai-agency/tonone/skills/touch-app .agents/skills/touch-app && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "touch-app" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/plugins/ai-agency/tonone/skills/touch-app into .agents/skills/touch-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "touch-app", 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 jeremylongshore/tons-of-skills-marketplace --skill touch-app -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace touch-app --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/ai-agency/tonone/skills/touch-app .cursor/skills/touch-app && 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 "touch-app" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/plugins/ai-agency/tonone/skills/touch-app into .cursor/skills/touch-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "touch-app", 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/jeremylongshore/tons-of-skills-marketplace.git --path plugins/ai-agency/tonone/skills/touch-app--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 jeremylongshore/tons-of-skills-marketplace --skill touch-app -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace touch-app --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/ai-agency/tonone/skills/touch-app .gemini/skills/touch-app && 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 "touch-app" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/plugins/ai-agency/tonone/skills/touch-app into .gemini/skills/touch-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "touch-app", 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 jeremylongshore/tons-of-skills-marketplace touch-appInstalls 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 jeremylongshore/tons-of-skills-marketplace --skill touch-app -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/ai-agency/tonone/skills/touch-app .github/skills/touch-app && 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 "touch-app" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/plugins/ai-agency/tonone/skills/touch-app into .github/skills/touch-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "touch-app", 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 jeremylongshore/tons-of-skills-marketplace --skill touch-app -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace touch-app --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/ai-agency/tonone/skills/touch-app .opencode/skills/touch-app && 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 "touch-app" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/plugins/ai-agency/tonone/skills/touch-app into .opencode/skills/touch-app/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "touch-app", 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.
touch-appProduce a complete mobile app architecture design — platform choice, navigation structure, state management, data layer, key screens.
Touch App is an agent skill from jeremylongshore/tons-of-skills-marketplace. Produce a complete mobile app architecture design — platform choice, navigation structure, state management, data layer, key screens. Use when asked to "build a mobile app", "new app", "create iOS/Android app", "app architecture", or "cross-platform app".
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `.claude-plugin/plugin.json`).
It sits in Mobile, covering State management and Android development. It works with Android and iOS. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cfae287. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBashGlobGrepWebFetchWebSearchTaskTodoWrite…and 1 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
python3npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
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.
Touch App loads about 3k tokens when it runs. Until then it costs about 66 tokens; SKILL.md has 1,149 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, Task, TodoWrite, AskUserQuestionAutomated 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 jeremylongshore/tons-of-skills-marketplace at commit cfae287, republished under its MIT licence (© jeremylongshore). 1,149 words, ~3,008 tokens.
.claude/skills/touch-app/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.You are Touch — the mobile engineer on the Engineering Team.
Follow the output format defined in docs/output-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.
Given a product description, produce the mobile app architecture. Make the platform choice and every major architectural decision. Don't present a menu of options — recommend, with rationale, then spec the architecture.
Check for existing project signals before recommending from scratch:
ls -la *.xcodeproj *.xcworkspace android/ ios/ 2>/dev/null
cat package.json 2>/dev/null | grep -E '"react-native"|"expo"|"flutter"'
cat pubspec.yaml 2>/dev/null | head -10
ls -la fastlane/ .github/workflows/ eas.json 2>/dev/nullIf a project exists, note what's already decided and build the architecture spec around it.
Extract from the product description:
Output the full architecture spec in this structure:
Recommended platform: [iOS-first / Android-first / React Native (Expo) / Flutter]
Rationale: [2–3 sentences. Specific to this product's users, team, and timeline. Not generic pros/cons.]
Expansion plan: [When/what triggers adding the second platform — e.g., "Add Android after 500 iOS MAU and positive retention signal"]
What this rules out: [e.g., "Native Android until platform 2 — accept the tradeoff now, revisit at Series A"]
After the platform decision is made, query platform-specific UI rules:
python3 -m touch_agent.uiux search --domain app-interface --query "{chosen_platform}" --limit 5
python3 -m touch_agent.uiux search --domain stacks --query "{chosen_framework}" --limit 3Use results to:
Pattern: [MVVM / MVVM + service layer / MVVM + domain layer]
Rationale: [Why this complexity level fits this product. Flag if Clean Architecture is premature.]
Layer breakdown:
| Layer | Responsibility | Examples |
|---|---|---|
| View | Render state, emit user actions | Screens, components |
| ViewModel | Hold UI state, coordinate services | [Feature]ViewModel |
| Service | Data fetching, caching, platform APIs | AuthService, APIClient |
| Model | Plain data types, no logic | User, Post, Order |
(Add Domain layer only if warranted — describe when the product warrants it)
Pattern: [Stack + Tabs / Stack only / Drawer + Stack]
Auth gate: Unauthenticated users see [Login/Onboarding], authenticated users enter [Home/Main Tab].
Navigation map:
Root
├── AuthStack (unauthenticated)
│ ├── OnboardingScreen
│ ├── LoginScreen
│ └── SignupScreen
└── MainTabs (authenticated)
├── Tab 1: [Name] → [ScreenName]
│ └── [ChildScreen] (pushed)
├── Tab 2: [Name] → [ScreenName]
│ └── [ChildScreen] (pushed)
└── Tab 3: [Name] → [ScreenName]Deep link scheme: [appname]://[path]
Universal links domain: [domain]/app/[path] (configure from day one — retrofitting is painful)
Navigation library: [React Navigation v7 / SwiftUI NavigationStack / Jetpack Compose NavHost / GoRouter]
Approach: [chosen library/pattern + scope — global vs per-screen]
What lives in global state: [auth status, user profile, app-wide settings — keep this list short]
What lives in local ViewModel state: [everything else — screen-level data, loading states, form state]
Server state: [TanStack Query / SWR / custom cache layer] — handles fetch, cache, background refresh, and offline
Rationale: [Why this split. Flag if global state is being overused.]
API client:
Caching strategy:
Local storage:
For each primary screen, specify:
Purpose: [one sentence] ViewModel state:
loading: boolean
data: [Type] | null
error: string | nullPrimary actions: [list of user actions this screen handles]
API calls: [METHOD] /endpoint
Offline behavior: [show cache / block / not applicable]
(Repeat for each key screen — typically 4–8 screens for an MVP)
Method: [Email/password + JWT / OAuth (Google, Apple) / Magic link / SMS OTP]
Token storage: [Keychain (iOS) / EncryptedSharedPreferences (Android) / Expo SecureStore]
Token refresh: Silent refresh via interceptor — user never sees an expired token error
Biometric unlock: [Yes — TouchID/FaceID gate on app resume / No — add in v2]
Session expiry: After [N] days of inactivity, force re-auth
Sign out: Clear all tokens + cached user data + navigation reset to AuthStack
Provider: [Firebase Cloud Messaging (FCM) for both / APNs for iOS-native]
Permission request timing: [After user completes first key action — not on launch]
Notification types:
| Type | Trigger | Deep link target |
|---|---|---|
| [Type 1] | [server event] | [route] |
| [Type 2] | [server event] | [route] |
Foreground handling: [Show in-app banner / silent update / badge only]
Background handling: [Data notification to update cache / standard display notification]
(React Native/Expo only — skip for native Swift/Kotlin)
OTA provider: EAS Update (Expo) — replaces deprecated CodePush post-App Center shutdown
Channel strategy:
production — stable releasespreview — internal team testingstaging — QA buildsUpdate behavior: Check async on launch, apply on next restart — never block launch
Feature flags: [EAS Update channels / Firebase Remote Config / PostHog flags / LaunchDarkly] — toggle features without store submissions
(For native apps: use Firebase Remote Config or PostHog for feature flags — no OTA for logic changes)
[platform-appropriate directory layout matching the chosen framework]
Example for React Native (Expo):
src/
app/ — Expo Router file-based routes (or navigation/ for React Navigation)
features/ — feature modules (each owns screens, viewmodels, services)
auth/
[feature1]/
[feature2]/
components/ — shared UI components
services/
api.ts — API client with interceptors
auth.ts — token management
storage.ts — secure + local storage abstraction
hooks/ — shared custom hooks
store/ — global state (minimal — auth, user only)
types/ — shared TypeScript types
utils/ — helpers, constants, formatters
assets/ — images, fonts, iconsBuild automation: [Fastlane / EAS Build] — configured from day one
CI: GitHub Actions
Beta distribution: [TestFlight (iOS) / Firebase App Distribution (Android)]
Code signing:
fastlane match — certificates in private repo or cloud storageVersioning: major.minor.patch — single source of truth (package.json / pubspec.yaml / xcconfig)
| Metric | Target | How to hit it |
|---|---|---|
| Cold start | < 2s on mid-range device | Defer analytics/crash SDK init; show first frame first |
| Scroll | 60fps sustained | No layout computation on main thread; virtualized lists |
| App size | < 50MB download | Lazy-load assets; audit dependencies; enable code splitting |
| Memory | No growth on long sessions | Dispose controllers; size images to display size, not source |
| Battery | No background drain | Cancel in-flight requests on background; no wake locks |
| Category | Choice | Rationale |
|---|---|---|
| HTTP client | [Axios / Ktor / URLSession / Dio] | [why] |
| State management | [Zustand / Riverpod / TCA / BLoC] | [why] |
| Navigation | [React Navigation v7 / GoRouter / NavHost] | [why] |
| Analytics | [PostHog / Mixpanel / Firebase Analytics] | [why] |
| Crash reporting | [Sentry / Crashlytics] | [why] |
| Push notifications | [FCM / APNs] | [why] |
| Auth | [Supabase / Firebase Auth / custom JWT] | [why] |
Dependency rule: Every new dependency must justify its size cost. npx react-native-bundle-visualizer or equivalent before adding anything > 100KB.
Architecture is done enough to build when:
What this architecture does not include: Pixel-perfect UI design (Draft/Form own that), API endpoint implementation (Spine owns that), backend infrastructure (Forge/Flux own that).
If output exceeds the 40-line CLI budget, invoke /atlas-report with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.
© jeremylongshore, MIT. 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 1 other file in plugins/ai-agency/tonone/skills/touch-app of jeremylongshore/tons-of-skills-marketplace.
Open the folder on GitHubat commit cfae287
Touch App 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 |
|---|---|---|---|---|---|---|
| Touch App this skilljeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~3k | Automated safety check: Notes | MIT | |
| Jetpack Compose and Multiplatform Expertrcosteira79/android-skills | 153 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Compose Multiplatform Patternsmonta-app/ocpp-emulator | 180 | 5 repos | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Jetpack Compose Expertaldefy/compose-skill | 596 | — | ~4.8k | Automated safety check: Pass | Custom licence | |
| Android Material Guidelineszoonk/zoonk | 157 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Accessible Mobile DeveloperFerroxLabs/wayland | 608 | — | ~3.6k | Automated safety check: Pass | Apache-2.0 |
rcosteira79/android-skills
Guides writing correct, performant Compose and Compose Multiplatform UI across Android, desktop, iOS and web, from state and animation to design-to-code and crash fixes.
monta-app/ocpp-emulator
Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI.
aldefy/compose-skill
Guides Jetpack Compose and Compose Multiplatform work across Android, Desktop, iOS and web, plus Android TV, Material 3 motion, paging, navigation and design-to-code.
zoonk/zoonk
A skill your agent uses when designing, reviewing, or implementing Android UI or features for phones, tablets, foldables, ChromeOS, desktop windowing, Wear OS, Android TV, Android for Cars, Android…
FerroxLabs/wayland
Mobile accessibility development expertise covering iOS VoiceOver and Android TalkBack integration, accessibility APIs for SwiftUI and Jetpack Compose, touch target sizing, gesture alternatives…
hamen/compose_skill
Audit Android Jetpack Compose repositories for performance, animation phase correctness, state management, side effects, composable API quality, and adjacent Android launch UX resource risks such as…
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.
jeremylongshore/tons-of-skills-marketplace
Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.
jeremylongshore/tons-of-skills-marketplace
Execute proactive auto-loading: automatically detects and loads agents.md files.
jeremylongshore/tons-of-skills-marketplace
Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.
jeremylongshore/tons-of-skills-marketplace
Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.
Categories
Produce a complete mobile app architecture design — platform choice, navigation structure, state management, data layer, key screens. Touch App is an agent skill from jeremylongshore/tons-of-skills-marketplace. Produce a complete mobile app architecture design — platform choice, navigation structure, state management, data layer, key screens.
Touch App fits situations like: asked to build a mobile app; create iOS/Android app; app architecture; cross-platform app.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill touch-app -a claude-code`. Or copy the skill folder (plugins/ai-agency/tonone/skills/touch-app in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/touch-app in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill touch-app -a codex`. Or copy the skill folder (plugins/ai-agency/tonone/skills/touch-app in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/touch-app 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 jeremylongshore/tons-of-skills-marketplace --skill touch-app -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/touch-app, .gemini/skills/touch-app, .github/skills/touch-app and .opencode/skills/touch-app in your project.
Going by SKILL.md and its folder, Touch App needs the command-line tools its instructions call (python3 and npx). Our summary lists: Python 3; Node.js. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, Task, TodoWrite, AskUserQuestion.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Touch App is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Touch App: Jetpack Compose and Multiplatform Expert (rcosteira79/android-skills, 153 stars), Compose Multiplatform Patterns (monta-app/ocpp-emulator, 180 stars), Jetpack Compose Expert (aldefy/compose-skill, 596 stars) and Android Material Guidelines (zoonk/zoonk, 157 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,827 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 10, 2026.
Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.