platform-adaptation
Skill7 starsChanged 10 months agoMITView on GitHub
Adapt motion patterns for different platforms, devices, and reading directions. Use when implementing animations that need to work across mobile, desktop, RTL languages, and different OS conventions.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- mabzhang/opc-toolkittheir own version, first seen Nov 1, 2026
- mumu-sci/platform-adaptationtheir own version, first seen Oct 17, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- mabzhang/opc-toolkit★ 4same name
- mumu-sci/platform-adaptation★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository87 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- motion-designSkill
- 3d-transformsSkill
- accessibilitySkill
- android-nativeSkill
- animation-recipesSkill
- anticipationSkill
- arc-motionSkill
- attention-choreographySkill
- attentionSkill
- audio-reactiveSkill
- blurSkill
- brand-animationSkill
- cameraSkill
- characterSkill
- choice-resolutionSkill
- cinematicSkill
- code-generationSkill
- colorSkill
- component-animationsSkill
- compositingSkill
- consequenceSkill
- container-transformSkill
- css-advancedSkill
- data-visualizationSkill
- depthSkill
- distortionSkill
- dramaturgySkill
- durationSkill
- easingSkill
- emotional-journeySkill
- emotion-mappingSkill
- emotion-selectionSkill
- empty-statesSkill
- entrance-patternsSkill
- exaggerationSkill
- exit-patternsSkill
- exportSkill
- figma-integrationSkill
- follow-throughSkill
- frame-timingSkill
- gesture-motionSkill
- glow-shadowSkill
- intentSkill
- ios-nativeSkill
- loading-statesSkill
- loopingSkill
- lottieSkill
- masksSkill
- microstateSkill
- morphingSkill
- motion-auditSkill
- motion-blurSkill
- motion-principlesSkill
- motion-specsSkill
- narrative-arcSkill
- notificationsSkill
- onboardingSkill
- opacitySkill
- orchestratorSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 128
Forgetting RTL: - Test all horizontal animations in RTL mode
- Distinctive: line 130
Hardcoded directions: - Use logical properties and direction multipliers
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Platform Adaptation
Motion patterns that adapt to platform conventions, device capabilities, and internationalization requirements.
Platform-Specific Conventions
iOS / Apple
| Pattern | iOS Convention | Implementation |
| Page transition | Push from right | translateX: 100% to 0 |
| Back navigation | Slide to right | translateX: 0 to 100% |
| Modal | Slide from bottom | translateY: 100% to 0 |
| Action sheet | Slide from bottom | Spring physics |
| Pull-to-refresh | Rubber-band effect | Elastic overshoot |
Android / Material
| Pattern | Android Convention | Implementation |
| Page transition | Shared axis | Fade + scale |
| Back navigation | Fade out | Fade through |
| Modal | Slide from bottom | Container transform |
| FAB | Scale from center | emphasized-decelerate |
| Snackbar | Slide from bottom | Quick ease-out |
Web / Desktop
| Pattern | Desktop Convention | Implementation |
| Hover states | Immediate feedback | 100-150ms transitions |
| Modals | Fade + scale | Center of viewport |
| Tooltips | Fade in with delay | 200ms delay, 100ms transition |
| Dropdowns | Fade + slide down | Origin from trigger |
RTL (Right-to-Left) Adaptation
For languages like Arabic, Hebrew, Farsi, and Urdu, horizontal animations must be mirrored.
What to Mirror
| Animation Type | LTR | RTL |
| Slide in | from left | from right |
| Slide out | to right | to left |
| Page push | from right | from left |
| Arrow motion | right arrow | left arrow |
| Progress bar | left to right | right to left |
| Carousel swipe | left = prev | left = next |
What NOT to Mirror
| Animation Type | Behavior | Rationale |
| Vertical motion | Same | Up/down is universal |
| Rotation | Same | Clockwise is universal |
| Scale | Same | Center-out is universal |
| Opacity | Same | Fade is directionless |
| Z-depth | Same | Toward/away is universal |
CSS Implementation
/* Base animation (LTR) */
.slide-in {
animation: slide-in-ltr 300ms ease-out;
}
@keyframes slide-in-ltr {
from { transform: translateX(-100%); }
to { transform: translateX(0); }
}
/* RTL override */
[dir="rtl"] .slide-in {
animation-name: slide-in-rtl;
}
@keyframes slide-in-rtl {
from { transform: translateX(100%); }
to { transform: translateX(0); }
}JavaScript Direction Helper
function getDirectionMultiplier() {
return document.dir === 'rtl' ? -1 : 1;
}
function slideIn(element, options = {}) {
const dir = getDirectionMultiplier();
return gsap.from(element, {
x: (options.distance || 100) * -dir,
opacity: 0,
duration: 0.3,
ease: 'power2.out'
});
}Device Capability Adaptation
const capabilities = {
gpu: detectGPU(),
memory: navigator.deviceMemory || 4,
connection: navigator.connection?.effectiveType || '4g',
cores: navigator.hardwareConcurrency || 4
};
function getAnimationQuality() {
if (capabilities.memory < 2) return 'minimal';
if (capabilities.memory < 4) return 'reduced';
if (capabilities.gpu === 'low-end') return 'standard';
return 'full';
}Common Mistakes
- Forgetting RTL - Test all horizontal animations in RTL mode
- Mirroring everything - Vertical and scale should NOT mirror
- Hardcoded directions - Use logical properties and direction multipliers
- Platform mismatch - iOS users expect iOS conventions
- Ignoring capabilities - Low-end devices need simpler animations
Related Skills
transitions/- Page transition patternsaccessibility/- Reduced motion for all platformstesting-patterns/- RTL testing strategiestools/- Platform-specific tool usage
See references/ for complete Framer Motion and Remotion RTL implementations.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

