agentleFS
soilmasssoilmass/motion-design-agent/skills/intent/SKILL.md

intent

Skill7 starsChanged 10 months agoMITView on GitHub

Semantic motion purpose selection for intentional animation. Use when determining WHY an element should animate - clarify, guide, confirm, warn, celebrate, or reveal - to select appropriate motion patterns that communicate meaning.

15 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use hud, ralplan and 6 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • ibahgatSkill

    hud

    Control omi visual HUD profile and keep status output readable in normal, compact, or hidden mode.

    Also in 3 projects that use this

  • ibahgatSkill

    ralplan

    Create a strict, quality-first execution plan with explicit gates and rollback-ready sequencing.

    Also in 3 projects that use this

  • nicepkgSkill

    team

    根据任务快速组建临时 AI Agent 团队协作。自动从 .claude/agents/ 中选择最合适的成员组队。

    Also in 3 projects that use this

  • sahinSkill

    execute

    Also in 3 projects that use this

  • NVIDIASkill

    research

    Before designing a feature, research how comparable libraries solve the problem, check best practices, known pitfalls, and upstream changes. Use when starting a new feature, investigating an unfamiliar area, or the user asks to research something.

    Also in 5 projects that use this

  • AWSSkill

    retro

    Conduct a retrospective on a coding session.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

2 rules. 0 are common, 2 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 14 edited versions we read keep these.

  • 2

    Distinctive

    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
  1. Distinctive:

    No distracting secondary effects

    line 79
  2. Distinctive:

    Important: Never rely on motion alone for warnings.

    line 258

“Common” is measured: kept by at least 6 in 10 of the 14 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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Intent

Define the semantic purpose of motion. Intent answers "WHY does this animate?" before determining "HOW does it animate?"

Standards Reference

StandardDocumentation
W3C DTCGdesigntokens.org
Material Design 3m3.material.io/styles/motion
Norman's Design PrinciplesFeedback and feedforward

Quick Reference

Load from: tokens/intent.tokens.json

Primary Intents

IntentSpeedIntensityPatternsUse Case
clarifymeasured0.4fade-in, reveal, highlightExplanations, state changes
guidedeliberate0.5slide-to, spotlight, path-traceNavigation, tutorials
confirmresponsive0.6scale-pulse, checkmark, rippleFeedback, validation
warnurgent0.8shake, pulse-ring, flash-borderErrors, limits
celebrateexpressive1.0burst, confetti, glow-pulseSuccess, milestones
revealtheatrical0.7curtain-pull, blur-to-sharpDiscovery, unveiling

Intent Selection Guide

What's the PURPOSE of this animation?

├── User needs to understand something
│   └── CLARIFY
│       └── Measured pace, clear motion
│       └── e.g., tooltip appears, state indicator changes
│
├── User needs to find or go somewhere
│   └── GUIDE
│       └── Deliberate path, attention-directing
│       └── e.g., navigation highlight, onboarding pointer
│
├── User action needs acknowledgment
│   └── CONFIRM
│       └── Quick response, satisfying feedback
│       └── e.g., button press, form submit, toggle
│
├── User needs to be alerted
│   └── WARN
│       └── Urgent, attention-demanding
│       └── e.g., error shake, limit reached, invalid input
│
├── User achieved something
│   └── CELEBRATE
│       └── Expressive, delightful
│       └── e.g., goal completion, milestone, reward
│
└── Something new is appearing
    └── REVEAL
        └── Theatrical, anticipation-building
        └── e.g., content unlock, surprise feature, hero entrance

Intent Patterns

Clarify

Make something understood through motion.

Characteristics:

  • Measured pace (duration × 1.2)
  • Moderate intensity (0.4)
  • Clear, readable motion
  • No distracting secondary effects

Patterns: fade-in, reveal, highlight, expand-detail

Framer Motion:

const clarifyVariants = {
  hidden: { opacity: 0, y: 10 },
  visible: {
    opacity: 1,
    y: 0,
    transition: {
      duration: 0.36, // 300ms × 1.2
      ease: [0.0, 0.0, 0.2, 1] // standard-decelerate
    }
  }
};

// Clarifying tooltip
<motion.div
  variants={clarifyVariants}
  initial="hidden"
  animate="visible"
>
  {explanatoryContent}
</motion.div>

GSAP:

// Clarify intent: state indicator change
gsap.to('.status-indicator', {
  backgroundColor: '#2196F3',
  scale: 1.1,
  duration: 0.36,
  ease: 'power2.out'
});

gsap.to('.status-text', {
  opacity: 1,
  y: 0,
  duration: 0.36,
  delay: 0.1,
  ease: 'power2.out'
});

Guide

Direct attention and show the way.

Characteristics:

  • Deliberate pace (duration × 1.1)
  • Medium intensity (0.5)
  • Demands attention without interrupting
  • Clear directional motion

Patterns: slide-to, spotlight, path-trace, pointer-follow

Framer Motion:

// Guiding onboarding highlight
const guideVariants = {
  initial: {
    boxShadow: '0 0 0 0 rgba(33, 150, 243, 0)',
    scale: 1
  },
  highlight: {
    boxShadow: [
      '0 0 0 0 rgba(33, 150, 243, 0)',
      '0 0 0 8px rgba(33, 150, 243, 0.3)',
      '0 0 0 0 rgba(33, 150, 243, 0)'
    ],
    scale: [1, 1.02, 1],
    transition: {
      duration: 1.5,
      repeat: 2,
      ease: 'easeInOut'
    }
  }
};

GSAP:

// Guide intent: navigation spotlight
const spotlight = gsap.timeline({ repeat: 2 });

spotlight.to('.target-element', {
  boxShadow: '0 0 0 8px rgba(33, 150, 243, 0.3)',
  scale: 1.02,
  duration: 0.75,
  ease: 'power2.inOut'
})
.to('.target-element', {
  boxShadow: '0 0 0 0 rgba(33, 150, 243, 0)',
  scale: 1,
  duration: 0.75,
  ease: 'power2.inOut'
});

Confirm

Acknowledge user action immediately.

Characteristics:

  • Responsive pace (duration × 0.9)
  • Medium-high intensity (0.6)
  • Satisfying, tactile feel
  • Often paired with haptic feedback

Patterns: scale-pulse, checkmark, color-flash, ripple

Framer Motion:

// Confirm intent: button press
const confirmVariants = {
  idle: { scale: 1 },
  pressed: {
    scale: 0.95,
    transition: { duration: 0.05 }
  },
  confirmed: {
    scale: [0.95, 1.05, 1],
    transition: {
      duration: 0.27, // 300ms × 0.9
      times: [0, 0.5, 1],
      type: 'spring',
      stiffness: 300,
      damping: 15
    }
  }
};

// With checkmark
const checkmarkVariants = {
  hidden: { pathLength: 0, opacity: 0 },
  visible: {
    pathLength: 1,
    opacity: 1,
    transition: {
      pathLength: { duration: 0.3, ease: 'easeOut' },
      opacity: { duration: 0.1 }
    }
  }
};

GSAP:

// Confirm intent: form field validation
function confirmValid(field) {
  gsap.timeline()
    .to(field, {
      borderColor: '#4CAF50',
      duration: 0.1
    })
    .to('.checkmark', {
      scale: 1,
      opacity: 1,
      duration: 0.27,
      ease: 'back.out(2)'
    }, '-=0.05');
}

Warn

Alert user to problems urgently.

Characteristics:

  • Urgent pace (duration × 0.85)
  • High intensity (0.8)
  • Demands immediate attention
  • Often includes repetition

Patterns: shake, pulse-ring, flash-border, bounce-reject

Important: Never rely on motion alone for warnings. Pair with color, icon, and text.

Framer Motion:

// Warn intent: error shake
const warnVariants = {
  shake: {
    x: [0, -10, 10, -10, 10, 0],
    transition: {
      duration: 0.4,
      times: [0, 0.2, 0.4, 0.6, 0.8, 1],
      ease: 'easeInOut'
    }
  }
};

// Warn intent: pulse ring
const pulseRingVariants = {
  pulse: {
    boxShadow: [
      '0 0 0 0 rgba(244, 67, 54, 0.4)',
      '0 0 0 10px rgba(244, 67, 54, 0)',
    ],
    transition: {
      duration: 0.8,
      repeat: 1
    }
  }
};

GSAP:

// Warn intent: invalid input
function warnInvalid(input) {
  gsap.timeline()
    .to(input, {
      x: 10,
      duration: 0.08,
      ease: 'power2.inOut',
      repeat: 3,
      yoyo: true
    })
    .to(input, {
      borderColor: '#f44336',
      duration: 0.1
    }, 0);
}

Celebrate

Mark achievements with joy.

Characteristics:

  • Expressive pace (duration × 1.3)
  • Maximum intensity (1.0)
  • Secondary effects enabled (particles, glows)
  • Extended for savoring

Patterns: burst, confetti, scale-bounce, glow-pulse, particle-shower

Framer Motion:

// Celebrate intent: success burst
const celebrateVariants = {
  initial: { scale: 0, opacity: 0 },
  celebrate: {
    scale: [0, 1.3, 1],
    opacity: 1,
    transition: {
      duration: 0.39, // 300ms × 1.3
      type: 'spring',
      stiffness: 200,
      damping: 10
    }
  }
};

// With glow
const glowVariants = {
  glow: {
    boxShadow: [
      '0 0 20px rgba(76, 175, 80, 0)',
      '0 0 40px rgba(76, 175, 80, 0.5)',
      '0 0 20px rgba(76, 175, 80, 0)'
    ],
    transition: { duration: 0.8 }
  }
};

Reveal

Unveil new content theatrically.

Characteristics:

  • Theatrical pace (duration × 1.4)
  • Medium-high intensity (0.7)
  • Anticipation phase (25% of duration)
  • Dramatic easing

Patterns: curtain-pull, mask-reveal, blur-to-sharp, emerge-from-depth

Framer Motion:

// Reveal intent: content unlock
const revealVariants = {
  hidden: {
    opacity: 0,
    filter: 'blur(10px)',
    scale: 0.9
  },
  revealed: {
    opacity: 1,
    filter: 'blur(0px)',
    scale: 1,
    transition: {
      duration: 0.42, // 300ms × 1.4
      ease: [0.05, 0.7, 0.1, 1]
    }
  }
};

Intent Combinations

Common intent sequences:

CombinationSequenceUse Case
guide → confirmNavigation then feedbackMenu selection
reveal → clarifyUnveil then explainFeature discovery
warn → guideAlert then solutionError recovery
confirm → celebrateAcknowledge then rewardGoal completion

Context Modifiers

ContextEffect
First-time user+15% intensity, +15% duration
Repeat action-20% intensity, -15% duration
High-stakes+20% intensity
Background task-50% intensity

Reduced Motion

For prefers-reduced-motion: reduce:

IntentReduced Alternative
clarifyInstant opacity change
guideStatic highlight
confirmColor change only
warnIcon + color (no shake)
celebrateCheckmark only
revealSimple fade

Cross-References

  • See emotional-journey/ for emotion-intent mapping
  • See narrative-arc/ for intent intensity within story phases
  • See consequence/ for intent triggering chains
  • See easing/ for intent-appropriate curves

References

  • references/intent-parameter-map.md — Complete parameter mappings

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.