transitions
Skill7 starsChanged 10 months agoMITView on GitHub
Page and component transition patterns from Material Design 3. Use when implementing page transitions, navigation animations, or shared element transitions. References M3 container transform, shared axis, and fade through patterns.
5 other projects use a version of this.
Adopted by
Most recently taken up by
- illodev/drawn-by-codetheir own version, first seen Nov 4, 2026
- VectorLabAU/skillstheir own version, first seen Oct 11, 2026
- crfldrxyz/AuthorOps-Skillstheir own version, first seen Sep 1, 2026
- bybren-llc/story-systems-templatetheir own version, first seen Aug 4, 2026
- alebgl77/claude-inctheir own version, first seen Jul 28, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- bybren-llc/story-systems-template★ 66same name
- illodev/drawn-by-code★ 45same name
- alebgl77/claude-inc★ 21same name
- VectorLabAU/skills★ 1same name
- crfldrxyz/AuthorOps-Skills★ 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
5 rules. 0 are common, 3 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
Use when an element transforms into a full view (card → detail).
- Distinctive: line 55
Use for sequential navigation (wizard steps, tabs).
- Distinctive: line 104
Use for unrelated content with no spatial relationship.
- Very specific: line 161
Use these tokens for video content (from duration.tokens.json):
- Very specific: line 178
Use simple opacity crossfade (video.crossfade) instead.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Transition Patterns
M3-based transition patterns for navigation and state changes.
Standards Reference
| Pattern | Documentation |
| Container Transform | m3.material.io/styles/motion/transitions/transition-patterns |
| Shared Axis | m3.material.io/styles/motion/transitions/transition-patterns |
| Fade Through | m3.material.io/styles/motion/transitions/transition-patterns |
Pattern Overview
| Pattern | Use Case | Duration |
| Container Transform | Card → Detail view | long-2 (500ms) |
| Shared Axis | Sequential navigation | medium-4 (400ms) |
| Fade Through | Unrelated content swap | medium-2 (300ms) |
Container Transform
Use when an element transforms into a full view (card → detail).
Characteristics
- Origin element morphs into destination
- Maintains spatial relationship
- Creates strong visual connection
Token
{
"duration": "{motion.duration.long-2}",
"easing": "{motion.easing.emphasized}"
}Implementation (Framer Motion)
<motion.div
layoutId="card-1"
transition={{ duration: 0.5, ease: [0.2, 0, 0, 1] }}
>
{isExpanded ? <DetailView /> : <CardView />}
</motion.div>Shared Axis
Use for sequential navigation (wizard steps, tabs).
Characteristics
- Elements move along X, Y, or Z axis
- Outgoing fades out while moving
- Incoming fades in while moving
Variants
- X-axis: Horizontal navigation (tabs)
- Y-axis: Vertical navigation (lists)
- Z-axis: Depth changes (dialogs)
Token
{
"duration": "{motion.duration.medium-4}",
"easing": "{motion.easing.emphasized}"
}Implementation (Framer Motion)
const variants = {
enter: (direction) => ({
x: direction > 0 ? 100 : -100,
opacity: 0
}),
center: { x: 0, opacity: 1 },
exit: (direction) => ({
x: direction < 0 ? 100 : -100,
opacity: 0
})
};
<AnimatePresence custom={direction}>
<motion.div
key={page}
custom={direction}
variants={variants}
initial="enter"
animate="center"
exit="exit"
transition={{ duration: 0.4, ease: [0.2, 0, 0, 1] }}
/>
</AnimatePresence>Fade Through
Use for unrelated content with no spatial relationship.
Characteristics
- Outgoing fades out completely
- Incoming fades in
- Brief overlap or sequential
Token
{
"duration": "{motion.duration.medium-2}",
"easing": "{motion.easing.standard}"
}Implementation (CSS)
.fade-through-exit {
animation: fadeOut 150ms cubic-bezier(0.2, 0, 0, 1) forwards;
}
.fade-through-enter {
animation: fadeIn 150ms cubic-bezier(0.2, 0, 0, 1) 150ms forwards;
}
@keyframes fadeOut {
to { opacity: 0; }
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}Decision Guide
Is there a persistent element that transforms?
→ Container Transform
Is navigation sequential (steps, tabs)?
→ Shared Axis
Are views unrelated?
→ Fade ThroughWeb vs Video Transitions
CRITICAL: Web and video transitions have different timing needs.
| Context | Duration | Reason |
| Web | 200-400ms | User waits for response feedback |
| Video | 100-200ms | Viewer expects quick pacing |
Video-Specific Durations
Use these tokens for video content (from duration.tokens.json):
| Token | Duration | Frames @30fps | Use |
video.crossfade | 100ms | 3 | Quick opacity blend |
video.dissolve | 150ms | 5 | Scene changes |
video.scene-transition | 150ms | 5 | Between scenes |
video.cut | 0ms | 0 | Instant cut |
video.wipe | 200ms | 6 | Directional wipe |
Avoid Pixel Dissolve
Never use pixel/dither dissolve for standard video transitions. It:
- Feels dated/VHS-era
- Takes too long visually
- Distracts from content
Use simple opacity crossfade (video.crossfade) instead.
Implementation (Remotion)
import { videoTransition } from '../presets/remotion-m3';
// Quick crossfade between scenes
const opacity = interpolate(
frame,
[exitStart, exitStart + videoTransition.crossfade.frames(fps)],
[1, 0],
{ extrapolateRight: 'clamp' }
);
// Or use the helper
const transitionFrames = getVideoTransitionFrames('crossfade', fps);See references/container-transform.md for detailed implementation.
See references/shared-axis.md for axis variations.
See references/fade-through.md for timing patterns.
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.

