<< All versions
Skill v1.0.1
currentAutomated scan100/100secondsky/claude-skills/interaction-design
3 files
──Details
PublishedMay 29, 2026 at 01:41 PM
Content Hashsha256:230a4b85c3eec689...
Git SHA5e92b7170451
Bump Typepatch
──Files
Files (1 file, 2.5 KB)
SKILL.md2.5 KBactive
SKILL.md · 106 lines · 2.5 KB
version: "1.0.1" name: interaction-design description: Creates intuitive user experiences through feedback patterns, microinteractions, and accessible interaction design. Use when designing loading states, error handling UX, animation guidelines, or touch interactions. license: MIT
Interaction Design
Create intuitive user experiences through thoughtful feedback and interaction patterns.
Interaction Patterns
| Pattern | Duration | Use Case | |
|---|---|---|---|
| Microinteraction | 100-200ms | Button press, toggle | |
| Transition | 200-400ms | Page change, modal | |
| Entrance | 300-500ms | List items appearing |
Loading States
css
/* Skeleton loader */.skeleton {background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);background-size: 200% 100%;animation: shimmer 1.5s infinite;}@keyframes shimmer {0% { background-position: 200% 0; }100% { background-position: -200% 0; }}
jsx
function LoadingState({ isLoading, children }) {if (isLoading) {return <div className="skeleton" style={{ height: 200 }} />;}return children;}
Error States
jsx
function ErrorState({ error, onRetry }) {return (<div className="error-container" role="alert"><Icon name="warning" /><h3>Something went wrong</h3><p>{error.message}</p><button onClick={onRetry}>Try Again</button></div>);}
Empty States
jsx
function EmptyState({ title, description, action }) {return (<div className="empty-state"><Illustration name="empty-inbox" /><h3>{title}</h3><p>{description}</p>{action && <button onClick={action.onClick}>{action.label}</button>}</div>);}
Accessibility
jsx
// Announce state changes to screen readersfunction StatusAnnouncer({ message }) {return (<div aria-live="polite" aria-atomic="true" className="sr-only">{message}</div>);}// Respect motion preferencesconst prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
Animation Guidelines
- Keep animations under 500ms (longer feels sluggish)
- Use ease-out for entering, ease-in for exiting
- Respect
prefers-reduced-motion - Ensure focus indicators are always visible
- Test with keyboard navigation
Best Practices
- Provide immediate feedback for all actions
- Show loading states for waits >0.5s
- Include clear error messages with recovery options
- Design meaningful empty states
- Support keyboard navigation