Agent Skill
Mobile Native skill
mobile-nativeemilkowalski/skillsskills/mobile-native/SKILL.md
Make a web app feel native on a phone — the small CSS and meta-tag fixes that separate "a website in a browser" from something that feels installed. Covers sticky hover states, tap highlight flashes, the 100vh bug, inputs that zoom the page, laggy taps, pull-to-refresh hijacking scroll, content under the notch, long-press selecting button text, carousels that scroll the wrong way, mismatched status bars, and the rule that you test on real hardware. Use when a web app is being built for or reviewed on mobile, when something "works in Chrome but feels wrong on my phone", when building a PWA, a bottom sheet, a carousel, a full-screen layout, or any touch interaction. For motion itself use animate; for React Native use animate-expo.
always on
167 tokname + description
once used
3,963 tokSKILL.md body
bundled files
0
installs
77kskills.sh
Install the Mobile Native skill
Skills CLI (Claude Code, Codex, Cursor and others)
npx skills add https://github.com/emilkowalski/skills --skill mobile-native
Claude Code, by hand (all projects)
git clone --depth 1 https://github.com/emilkowalski/skills.git /tmp/skills mkdir -p ~/.claude/skills cp -R /tmp/skills/skills/mobile-native ~/.claude/skills/mobile-native
For one project only, copy the folder into .claude/skills/ in that project instead. The agent picks it up when a task matches its description.
What it costs your context
Agent Skills load in three steps. Tokens counted with the o200k tokenizer; your model's count will differ a little.
| When | What loads | Cost |
|---|---|---|
| Every session | Name and description | 167 tok |
| When the agent uses it | The SKILL.md instructions | 3,963 tok |
| Only if opened | No bundled files | — |
Until it is used, mobile-native costs about 8.2× less than the median MCP server we measured (1,362 tokens on every turn). Installing all 15 skills from emilkowalski/skills would load 1,400 tokens of descriptions. Skills vs MCP study
Checks
Our checks found nothing to flag: it follows the Agent Skills specification's naming and size guidelines and doesn't pipe downloads into a shell.
Checked 2026-10-22 · method
What's inside
The headings of its SKILL.md. Read the full file on GitHub.
- Feeling Native On Mobile
- Initial Response
- Operating Posture
- Hard Rules
- The Symptom Table
- The Fixes
- 1. Hover state stuck after tap
- 2. Gray/blue flash on tap
- 3. Layout has the wrong height
- 4. Page zooms into the input
- 5. Tap feels laggy
- 6. Pull-to-refresh hijacks scroll
- 7. Content stops at the notch
- 8. Long-press selects button text
- 9. Carousel scrolls vertically
- 10. Status bar color doesn't match
- 11. Right in Chrome, wrong on phone
- Baseline
- Never Ship
- Output
- Tone
More skills from emilkowalski/skills
- emil-design-engemilkowalski/skills
This skill encodes Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.
376k35 tok idle · 6,015 in use - review-animationsemilkowalski/skills
Reviews animation and motion code against a high craft bar derived from Emil Kowalski's design engineering philosophy. Default to flagging; approval is earned.
246k34 tok idle · 1,928 in use - apple-designemilkowalski/skills
Apple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing gesture-driven UI, spring animations, drag/swipe/sheet interactions, momentum and interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading), reduced-motion, or the design foundations (feedback, spatial consistency, restraint) behind Apple-style interfaces.
233k79 tok idle · 5,067 in use - animation-vocabularyemilkowalski/skills
Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and wants the right word to prompt an AI or designer with. For naming an effect, not designing or building one.
229k98 tok idle · 2,859 in use - improve-animationsemilkowalski/skills
Survey a codebase's animation and motion code as a senior motion advisor, then produce a prioritized audit and self-contained implementation plans for other agents (or cheaper models) to execute. Read-only on source code — it plans improvements, it does not apply them. Use when the user asks to "improve the animations", "audit the motion", "make this app feel better", or wants a roadmap of animation fixes rather than a review of a single diff.
214k97 tok idle · 1,748 in use - find-animation-opportunitiesemilkowalski/skills
Search a codebase or UI for places that don't animate but should, and reject everything that shouldn't. Read-only; it proposes motion with exact values, it does not implement it. Use when the user asks "what could be animated here?" or wants to "make this feel more alive". For fixing existing animations, use improve-animations or review-animations instead.
199k78 tok idle · 2,206 in use - pick-ui-libraryemilkowalski/skills
Pick the right library for a given frontend task from a curated, opinionated list — numbers, OTP inputs, charts, command menus, virtualization, drag and drop, toasts, state, styling, and more. Only runs when explicitly invoked; it does not trigger on its own.
176k61 tok idle · 1,102 in use - prototypeemilkowalski/skills
Build multiple genuinely different versions of a UI piece you describe, rendered behind a visual picker so you can flip through them live and promote the one that feels right. Only runs when explicitly invoked; it does not trigger on its own.
165k48 tok idle · 1,637 in use