mobile-touch — Claude Code skill: gestures and motion for mobile apps
A skill that steers your coding agent through gesture, haptic and animation work on iOS and Android. Useful when you need motion that feels native instead of guessed.
npx skills add dylantarre/animation-principles --skill mobile-touch -a claude-codeWhat mobile-touch does
The skill maps Disney's 12 animation principles onto mobile scenarios. Each principle gets a concrete implementation: rubber-banding at scroll boundaries, long-press previews, momentum scrolling after the finger lifts, spring transitions on iOS and Material easing on Android.
Inside you get a reference table, a timing section and haptic guidelines. The timings are explicit: touch acknowledgment under 100ms, quick actions 150–250ms, view transitions 250–350ms, complex animations 350–500ms. Haptics come with a mapping table — selection, success, warning and error each get their own feedback style on iOS and Android. Swift and Kotlin snippets are included.
One rule the skill repeats: haptics are a secondary action, so pair them with visual confirmation. It also advises against linear easing for user-initiated motion. If you are building web or desktop UI, this material will not help — it is entirely about native mobile platforms.
What it helps with
- pick a touch response timing
- sync haptic feedback with the visual reaction
- build a spring transition between iOS screens
- tune momentum scrolling after the finger lifts
- choose an easing curve for a gesture-driven animation
Example prompts for the agent
- Set up a spring animation for a card on iOS
- What timings should I use for a screen transition?
- Pick a haptic response for confirming an action
How to install mobile-touch
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill mobile-touch -a claude-code2Manually: put the files in place
~/.claude/skills/mobile-touch/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/mobile-touch/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill mobile-touch -a codex2Manually: put the files in place
.agents/skills/mobile-touch/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill mobile-touch -a cursor2Manually: put the files in place
.cursor/skills/mobile-touch/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles mobile-touch2Manually: put the files in place
.github/skills/mobile-touch/SKILL.md1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill mobile-touch -a gemini-cli2Platform CLI
gemini skills install https://github.com/dylantarre/animation-principles --path skills/01-by-domain/mobile-touchManually: put the files in place
.devin/skills/mobile-touch/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill mobile-touch -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about mobile-touch
How do I install mobile-touch in Claude?
Run npx skills add dylantarre/animation-principles --skill mobile-touch -a claude-code. The skill lands in ~/.claude/skills/mobile-touch/SKILL.md.
What does mobile-touch do?
It guides the agent through gesture, haptic and animation design in native mobile apps, using the 12 animation principles and concrete timings.
Which platforms does the skill cover?
iOS and Android: spring animations, Material easing, safe areas, ProMotion. It is not written for web or desktop work.
Source text
SKILL.md · MIT
---
name: mobile-touch
description: Use when designing iOS/Android gestures, haptic feedback, touch interactions, or native mobile animations.
---
# Mobile Touch Animation
Apply Disney's 12 animation principles to mobile gestures, haptics, and native app motion.
## Quick Reference
| Principle | Mobile Implementation |
|-----------|----------------------|
| Squash & Stretch | Rubber-banding, bounce on scroll limits |
| Anticipation | Peek before reveal, long-press preview |
| Staging | Sheet presentations, focus states |
| Straight Ahead / Pose to Pose | Gesture-driven vs preset transitions |
| Follow Through / Overlapping | Momentum scrolling, trailing elements |
| Slow In / Slow Out | iOS spring animations, Material easing |
| Arc | Swipe-to-dismiss curves, card throws |
| Secondary Action | Haptic pulse with visual feedback |
| Timing | Touch response <100ms, transitions 250-350ms |
| Exaggeration | Bounce amplitude, haptic intensity |
| Solid Drawing | Respect safe areas, consistent anchors |
| Appeal | 60fps minimum, gesture continuity |
## Principle Applications
**Squash & Stretch**: Implement rubber-band effect at scroll boundaries. Pull-to-refresh should stretch content naturally. Buttons compress on touch.
**Anticipation**: Long-press shows preview before full action. Drag threshold provides visual hint before item lifts. Swipe shows edge of destination content.
**Staging**: Use sheet presentations to maintain context. Dim and scale background during modal focus. Hero transitions connect views meaningfully.
**Straight Ahead vs Pose to Pose**: Gesture-following animations (drag, pinch) are straight ahead—driven by touch input. System transitions (push, present) are pose to pose—predefined keyframes.
**Follow Through & Overlapping**: Content continues moving after finger lifts (momentum). Navigation bar elements animate slightly after main content. Lists items settle with stagger.
**Slow In / Slow Out**: iOS uses spring physics—configure mass, stiffness, damping. Android Material uses standard easing: `FastOutSlowIn`. Never use linear for user-initiated motion.
**Arc**: Thrown cards follow parabolic arcs. Swipe-to-dismiss curves based on velocity vector. FAB expand/collapse follows natural arc path.
**Secondary Action**: Pair haptic feedback with visual response. Button ripple accompanies press. Success checkmark triggers light haptic.
**Timing**: Touch acknowledgment: <100ms. Quick actions: 150-250ms. View transitions: 250-350ms. Complex animations: 350-500ms. Haptic should sync precisely with visual.
**Exaggeration**: Pull-to-refresh stretches beyond natural—makes feedback clear. Error shake is pronounced. Success animations celebrate appropriately.
**Solid Drawing**: Respect device safe areas during animation. Maintain consistent transform origins. Account for notch/dynamic island in motion paths.
**Appeal**: Minimum 60fps, target 120fps on ProMotion displays. Gesture-driven animation must feel connected to finger. Interruptible animations essential.
## Platform Patterns
### iOS
```swift
// Spring animation with follow-through
UIView.animate(withDuration: 0.5,
delay: 0,
usingSpringWithDamping: 0.7,
initialSpringVelocity: 0.5,
options: .curveEaseOut)
// Haptic pairing
let feedback = UIImpactFeedbackGenerator(style: .medium)
feedback.impactOccurred()
```
### Android
```kotlin
// Material spring animation
SpringAnimation(view, DynamicAnimation.TRANSLATION_Y)
.setSpring(SpringForce()
.setStiffness(SpringForce.STIFFNESS_MEDIUM)
.setDampingRatio(SpringForce.DAMPING_RATIO_MEDIUM_BOUNCY))
.start()
```
## Haptic Guidelines
| Action | iOS | Android |
|--------|-----|---------|
| Selection | `.selection` | `EFFECT_TICK` |
| Success | `.success` | `EFFECT_CLICK` |
| Warning | `.warning` | `EFFECT_DOUBLE_CLICK` |
| Error | `.error` | `EFFECT_HEAVY_CLICK` |
Haptics are secondary action—always pair with visual confirmation.
© dylantarre · MIT · dylantarre/animation-principles