#38 by GitHub stars

emilkowalski/skills

Skills for Designers and Engineers.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/animate/SKILL.md

Week of Nov 2, 2026 · +4 / −4 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

- 89 - **In Motion, use the full transform string.** `x`/`y`/`scale` shorthands are not hardware-accelerated and drop frames under load:
+ 89 - **In Motion, newest versions hardware accelerate independent transforms like `x`/`y`/`scale`/`rotate`.**
- 92 <motion.div animate={{ x: 100 }} />                          // drops frames under load
- 93 <motion.div animate={{ transform: "translateX(100px)" }} />  // hardware accelerated
+ 92 <motion.div animate={{ x: 100 }} />                          // motion 14.2+: hardware accelerated
+ 93 <motion.div animate={{ transform: "translateX(100px)" }} />  // hardware accelerated in every version
- 190 | Motion `x`/`y`/`scale` props under load | Full `transform` string |
+ 190 | Motion `x`/`y`/`scale` props under load on versions before 14.2 | Upgrade to 14.2+, or a full `transform` string |

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/animate-expo/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Local scripts

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/animation-performance/SKILL.md

Week of Nov 2, 2026 · +12 / −12 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

- 3 description: Keep web animations inside the frame budget — animate composite-only properties, keep motion off the main thread when the page is busy, and find the cause when an animation drops frames. Covers the layout/paint/composite pipeline, cheaper property swaps, CSS vs WAAPI vs requestAnimationFrame, Framer Motion's hardware-accelerated path, React re-rendering per frame, inherited CSS variable recalculation, blur cost, and when `will-change` actually helps. Use when an animation is janky, choppy, stutters, or drops frames; when choosing which property to animate; when deciding between CSS and JS animation on performance grounds; or when reaching for `will-change` or GPU layers. For choosing easing, duration, or whether to animate at all use animate; for reviewing motion as a whole use review-animations.
+ 3 description: Keep web animations inside the frame budget — animate composite-only properties, keep motion off the main thread when the page is busy, and find the cause when an animation drops frames. Covers the layout/paint/composite pipeline, cheaper property swaps, CSS vs WAAPI vs requestAnimationFrame, Motion's hardware-accelerated path, React re-rendering per frame, inherited CSS variable recalculation, blur cost, and when `will-change` actually helps. Use when an animation is janky, choppy, stutters, or drops frames; when choosing which property to animate; when deciding between CSS and JS animation on performance grounds; or when reaching for `will-change` or GPU layers. For choosing easing, duration, or whether to animate at all use animate; for reviewing motion as a whole use review-animations.
- 48 | Framer Motion `x`/`y` drops frames | Animate the full `transform` string |
+ 48 | Motion `x`/`y` drops frames | Upgrade to `motion` 14.2+, or animate the full `transform` string |
- 106 | JS + `requestAnimationFrame` (GSAP, `motion/react` components) | Main thread, always |
- 107 | Web Animations API (`element.animate()`, Motion's `animate()`) | Can be hardware-accelerated |
+ 106 | JS + `requestAnimationFrame` (GSAP, Motion layout animations) | Main thread, always |
+ 107 | Web Animations API (`element.animate()`, Motion's `animate()` and `motion/react` components) | Can be hardware-accelerated |
- 116 Framer Motion can be accelerated, but only when the transform is a string:
+ 116 Motion hands `opacity`, `transform`, `clip-path` and `filter` to WAAPI, so they can be accelerated. The `x`, `y`, `scale`, `rotate` shorthands depend on the version:
- 119 <motion.div animate={{ x: 100 }} />                          // main thread, can jank
- 120 <motion.div animate={{ transform: "translateX(100px)" }} />  // hardware-accelerated
- 121 ```
- 122 
- 123 The `x`, `y`, `scale`, `rotate` shorthands are implemented with CSS variables, and animated CSS variables aren't accelerated. The shorthands read better, so keep them by default and switch to the string form when the animation has to survive a busy main thread.
+ 119 <motion.div animate={{ x: 100 }} />                          // motion 14.2+: hardware-accelerated. Before: main thread, can jank
+ 120 <motion.div animate={{ transform: "translateX(100px)" }} />  // hardware-accelerated in every version
+ 121 ```
+ 122 
+ 123 From `motion` 14.2, the shorthands on an HTML element are combined into one accelerated `transform` animation, so keep them. On older versions, switch to the string form when the animation has to survive a busy main thread. In every version, these stay on the main thread: layout animations (`layout`, `layoutId`), `onUpdate`, `transformTemplate`, inertia, and values driven every frame by a motion value (drag, `useTransform`).
- 156 CSS variables inherit, so changing one on a parent triggers style recalculation for every child. The more content, the slower each frame. Suspect this whenever a `transform` animation degrades as content grows. It's the same reason Framer Motion's shorthands aren't accelerated.
+ 156 CSS variables inherit, so changing one on a parent triggers style recalculation for every child. The more content, the slower each frame. Suspect this whenever a `transform` animation degrades as content grows.
- 204 5. **Is a CSS variable animated at all?** Directly, or through Motion's `x`/`y`/`scale`.
+ 204 5. **Is a CSS variable animated at all?** Or Motion's `x`/`y`/`scale` on a version before 14.2?

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/animation-vocabulary/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/apple-design/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/ask-sonner/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/break-ui/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Local scripts

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/emil-design-eng/SKILL.md

Week of Nov 2, 2026 · +9 / −7 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

- 495 ### Framer Motion hardware acceleration caveat
- 496 
- 497 Framer Motion's shorthand properties (`x`, `y`, `scale`) are NOT hardware-accelerated. They use `requestAnimationFrame` on the main thread. For hardware acceleration, use the full `transform` string:
+ 495 ### Motion hardware acceleration caveat
+ 496 
+ 497 From `motion` 14.2, Motion's shorthand properties (`x`, `y`, `scale`, `rotate`) are hardware-accelerated on HTML elements. Before 14.2 they use `requestAnimationFrame` on the main thread, so on those versions use the full `transform` string for hardware acceleration:
- 500 // NOT hardware accelerated (convenient but drops frames under load)
+ 500 // motion 14.2+: hardware accelerated. Before 14.2: main thread, drops frames under load
- 503 // Hardware accelerated (stays smooth even when main thread is busy)
+ 503 // Hardware accelerated in every version (stays smooth even when main thread is busy)
+ 507 Some Motion animations still run on the main thread in every version: layout animations (`layout`, `layoutId`), animations with `onUpdate` or `transformTemplate`, inertia (drag momentum), and values driven every frame by a motion value (drag, `useTransform`).
+ 508 
- 511 CSS animations run off the main thread. When the browser is busy loading a new page, Framer Motion animations (using `requestAnimationFrame`) drop frames. CSS animations remain smooth. Use CSS for predetermined animations; JS for dynamic, interruptible ones.
+ 513 CSS animations run off the main thread. When the browser is busy loading a new page, animations that run on `requestAnimationFrame` (including Motion layout animations) drop frames. CSS animations remain smooth. Use CSS for predetermined animations; JS for dynamic, interruptible ones.
- 672 | Framer Motion `x`/`y` props under load     | Use `transform: "translateX()"` for hardware acceleration        |
+ 674 | Motion `x`/`y` props under load (pre-14.2) | Upgrade to 14.2+, or use `transform: "translateX()"`             |

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/find-animation-opportunities/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Local scripts

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/improve-animations/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Local scripts

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/mobile-native/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/pick-ui-library/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/prototype/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/remove-animations/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → f1090bec2771

No earlier version was observed for comparison.

Compare on GitHub

skills/review-animations/SKILL.md

Week of Nov 2, 2026 · +3 / −3 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

- 43 7. **GPU-only properties.** Animate `transform` and `opacity` only. Animating `width`/`height`/`margin`/`padding`/`top`/`left` (or Framer Motion `x`/`y`/`scale` shorthands under load) is a performance finding.
+ 43 7. **GPU-only properties.** Animate `transform` and `opacity` only. Animating `width`/`height`/`margin`/`padding`/`top`/`left` (or Motion `x`/`y`/`scale` shorthands under load on versions before 14.2) is a performance finding.
- 63 - Framer Motion `x`/`y`/`scale` props on motion that runs while the page is busy
+ 63 - Motion `x`/`y`/`scale` props (before `motion` 14.2) or layout animations on motion that runs while the page is busy
- 79 6. **Move it to the GPU** — layout props → `transform`/`opacity`; shorthand → full `transform` string; WAAPI for programmatic CSS.
+ 79 6. **Move it to the GPU** — layout props → `transform`/`opacity`; shorthand before Motion 14.2 → upgrade or full `transform` string; WAAPI for programmatic CSS.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

skills/write-swift/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

2d228630ba14 → f1090bec2771

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 2d228630ba14

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit f1090bec277140d02ed202440185ad9d02ac1490

54.2kGitHub stars
1.7kstars in 7 days
16skills in this repository
5commits in 30 days

Heat

7.8
  • Star growth, last 7 daysAhead of 95% of tracked repositories
  • Star growth, last 24 hoursAhead of 95% of tracked repositories
  • Rank movement, last 7 daysAhead of 83% of tracked repositories
  • Commits, last 30 daysAhead of 69% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 2, 2026Nov 7, 202654,159

Individual skills in this repository

How it works

animate

When your agent uses it

Build an animation from scratch, making the decisions in the order that determines whether it feels right — should it animate at all, what purpose, which tool, which properties, which curve and duration, how it interrupts, how it exits. Writes the implementation. Use when asked to animate something, add motion, make a component feel alive, or build a transition. For critiquing existing motion use review-animations; for auditing a whole codebase use improve-animations.

What it loads into context

Frontmatter

100 tokens

Always available to the agent

SKILL.md

2,942 tokens

When the skill is activated

Reference documents

1,977 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Initial Response
  2. Operating Posture
  3. Hard Rules
  4. The Build Sequence
  5. Recipes
  6. Never Ship
  7. Output
  8. Tone

Files

  • RECIPES.mddoc7,957 bytes
  • SKILL.mdcore11,910 bytes
Read SKILL.md

# Building Animations

## Initial Response

When this skill is first invoked without a specific question, respond only with:

> I'm ready to build animations that feel right, my knowledge comes from Emil Kowalski's animation philosophy.

Do not provide any other information until the user asks a question.

A construction skill. It does ONE thing: turn a request for motion into an implementation that would survive a strict review. It does not audit a codebase (that's `improve-animations`), critique a diff (that's `review-animations`), hunt for places that could animate (that's `find-animation-opportunities`), or build for React Native (that's `animate-expo`).

## Operating Posture
View the complete source on GitHub

Skills included

  • animate
  • animate-expo
  • animation-performance
  • animation-vocabulary
  • apple-design
  • ask-sonner
  • break-ui
  • emil-design-eng
  • find-animation-opportunities
  • improve-animations
  • mobile-native
  • pick-ui-library
  • prototype
  • remove-animations
  • review-animations
  • write-swift

Repository facts

License
MIT
Created
Mar 16, 2026
Last pushed
Nov 4, 2026
Forks
3,160
Open issues
1
Project activity
Active

Rank over the last 12 weeks

Now #38 · best #38 · up 3 in 30 days

  1. #39 from Oct 21 to Oct 24
  2. #41 on Oct 25
  3. #39 on Oct 28
  4. #38 from Oct 29 to Oct 30
  5. #39 from Oct 31 to Nov 2
  6. #38 since Nov 3
26 earlier periods
  1. #64 on Aug 2
  2. #57 on Aug 8
  3. #55 on Aug 9
  4. #54 from Aug 10 to Aug 13
  5. #53 from Aug 14 to Aug 16
  6. #52 on Aug 17
  7. #51 on Aug 18
  8. #48 on Aug 19
  9. #47 from Aug 20 to Aug 21
  10. #46 from Aug 22 to Aug 29
  11. #47 from Aug 30 to Sep 1
  12. #46 from Sep 2 to Sep 7
  13. #45 on Sep 8
  14. #46 on Sep 9
  15. #47 from Sep 10 to Sep 12
  16. #46 from Sep 13 to Sep 19
  17. #45 on Sep 20
  18. #44 on Sep 21
  19. #43 from Sep 22 to Sep 24
  20. #44 from Sep 25 to Sep 28
  21. #43 from Sep 29 to Oct 3
  22. #42 on Oct 4
  23. #41 on Oct 5
  24. #42 on Oct 6
  25. #41 from Oct 7 to Oct 18
  26. #40 from Oct 19 to Oct 20

Before you install

Local scripts

Automated signals, not a guarantee

Checked Nov 4, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 9 notes
  • skills/animate-expo/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/break-ui/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/find-animation-opportunities/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/improve-animations/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/improve-animations/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/mobile-native/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/write-swift/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/write-swift/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/write-swift/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 47 signals by file

skills/animate-expo/RECIPES.md

  • Network accessline 177
    Before writing this: gesture-handler ships [`ReanimatedSwipeable`](https://docs.swmansion.com/react-native-gesture-handler/docs/components/reanimated_swipeable/), which already does swipe-to-reveal actions — thresholds, overshoot, open/clos
  • Network accessline 255
    Needs its own module and a one-time provider ([Expo keyboard guide](https://docs.expo.dev/guides/keyboard-handling/)):
  • Network accessline 335
    `formSheet` is native on both platforms, but not the same on both — the [Expo modal docs](https://docs.expo.dev/router/advanced/modals/#form-sheet-presentation) have the full list:

skills/animate/SKILL.md

  • Network accessline 120
    Need a curve that isn't here? Take it from [easing.dev](https://easing.dev/) or [easings.co](https://easings.co/). Don't hand-roll one.

skills/animation-performance/SKILL.md

  • Network accessline 20
    Imagine [Sonner](https://sonner.emilkowal.ski/) running at 30fps. Same easing, same durations, same code. Nobody would have cared. Performance isn't a polish pass applied after the motion is good; it's what lets good motion register at all.

skills/ask-sonner/SKILL.md

  • Network accessline 16
    A guide skill for [Sonner](https://sonner.emilkowal.ski), the toast library. When a task involves Sonner — wiring it up, rendering toasts, styling them, or fixing them — answer from this file first. Full prop tables for `<Toaster />` and `t

skills/break-ui/CATALOG.md

  • Network accessline 38
    | `first.last+billing-notifications@example.com` | Plus-addressing; validation that rejects `+`, display that truncates the meaningful part | | `ops@sub.department.region.example.co.uk` | Many subdomains, two-part TLD; "domain" extraction l
  • Network accessline 39
    | `ops@sub.department.region.example.co.uk` | Many subdomains, two-part TLD; "domain" extraction logic | | `https://example.com/workspaces/acme/projects/q3-launch/docs/9f8e7d6c5b4a?tab=comments&filter=unresolved` | Long URL; overflow, and e
  • Network accessline 40
    | `https://example.com/workspaces/acme/projects/q3-launch/docs/9f8e7d6c5b4a?tab=comments&filter=unresolved` | Long URL; overflow, and end-truncation hides the part that differs |

skills/emil-design-eng/SKILL.md

  • Network accessline 123
    **Easing curve resources:** Don't create curves from scratch. Use [easing.dev](https://easing.dev/) or [easings.co](https://easings.co/) to find stronger custom variants of standard easings.

skills/find-animation-opportunities/SKILL.md

  • Network accessline 20
    You are a senior design engineer whose defining trait is **restraint**. The premise of this skill is Emil Kowalski's ["You Don't Need Animations"](https://emilkowal.ski/ui/you-dont-need-animations): sometimes the best animation is no animat

skills/improve-animations/AUDIT.md

  • Network accessline 3
    The eight audit categories, what to look for in each, and the exact target values to cite in findings and plans. Distilled from Emil Kowalski's design engineering philosophy ([emilkowal.ski](https://emilkowal.ski/)). Never approximate a val

skills/improve-animations/PLAN-TEMPLATE.md

  • Possible obfuscationline 19
    <U+200B>```css
  • Possible obfuscationline 22
    <U+200B>```
  • Possible obfuscationline 29
    <U+200B>```css
  • Possible obfuscationline 35
    <U+200B>```

skills/pick-ui-library/SKILL.md

  • Network accessline 30
    | Task | Library | | --- | --- | | Unstyled, accessible UI components (dialogs, popovers, menus, selects…) | [base-ui](https://base-ui.com) |
  • Network accessline 31
    | --- | --- | | Unstyled, accessible UI components (dialogs, popovers, menus, selects…) | [base-ui](https://base-ui.com) | | Command menus (⌘K palettes) | [cmdk](https://cmdk.paco.me) |
  • Network accessline 32
    | Unstyled, accessible UI components (dialogs, popovers, menus, selects…) | [base-ui](https://base-ui.com) |
  • Network accessline 33
    | Command menus (⌘K palettes) | [cmdk](https://cmdk.paco.me) |
  • Network accessline 34
    | Toasts / notifications | [Sonner](https://sonner.emilkowal.ski) |
  • Network accessline 35
    | One-time password / verification code inputs | [input-otp](https://input-otp.rodz.dev) |
  • Network accessline 36
    | Customizable GUIs / control panels | [Leva](https://github.com/pmndrs/leva) — [dialkit](https://joshpuckett.me/dialkit) is an alternative |
  • Network accessline 40
    | Task | Library | | --- | --- | | General-purpose animation (springs, layout animations, enter/exit) | [motion](https://motion.dev) (Framer Motion) |
  • Network accessline 41
    | --- | --- | | General-purpose animation (springs, layout animations, enter/exit) | [motion](https://motion.dev) (Framer Motion) | | Animating numbers (counters, prices, stats) | [NumberFlow](https://number-flow.barvian.me) |
  • Network accessline 42
    | General-purpose animation (springs, layout animations, enter/exit) | [motion](https://motion.dev) (Framer Motion) |
  • Network accessline 43
    | Animating numbers (counters, prices, stats) | [NumberFlow](https://number-flow.barvian.me) |
  • Network accessline 44
    | Animated text components | [torph](https://torph.lochie.me/) |
  • Network accessline 45
    | 3D globes | [Cobe](https://cobe.vercel.app) |
  • Network accessline 46
    | Dynamic OG images (HTML/CSS → SVG/PNG) | [Satori](https://github.com/vercel/satori) |
  • Network accessline 47
    | Syntax highlighting | [shiki](https://shiki.style) |
  • Network accessline 53
    | Task | Library | | --- | --- | | Real-time / streaming charts | [Liveline](https://github.com/benjitaylor/liveline) |
  • Network accessline 54
    | --- | --- | | Real-time / streaming charts | [Liveline](https://github.com/benjitaylor/liveline) | | General charts (static or interactive dashboards) | [recharts](https://recharts.org) |
  • Network accessline 55
    | Real-time / streaming charts | [Liveline](https://github.com/benjitaylor/liveline) |
  • Network accessline 56
    | General charts (static or interactive dashboards) | [recharts](https://recharts.org) |
  • Network accessline 62
    | Task | Library | | --- | --- | | Drag and drop | [dnd kit](https://dndkit.com) |
  • Network accessline 63
    | --- | --- | | Drag and drop | [dnd kit](https://dndkit.com) | | Virtualization (long lists, large tables) | [Virtuoso](https://virtuoso.dev) |
  • Network accessline 64
    | Drag and drop | [dnd kit](https://dndkit.com) |
  • Network accessline 65
    | Virtualization (long lists, large tables) | [Virtuoso](https://virtuoso.dev) |
  • Network accessline 69
    | Task | Library | | --- | --- | | State management | [zustand](https://zustand.docs.pmnd.rs) |
  • Network accessline 70
    | --- | --- | | State management | [zustand](https://zustand.docs.pmnd.rs) | | Constructing `className` strings conditionally | [clsx](https://github.com/lukeed/clsx) |
  • Network accessline 71
    | State management | [zustand](https://zustand.docs.pmnd.rs) |
  • Network accessline 72
    | Constructing `className` strings conditionally | [clsx](https://github.com/lukeed/clsx) |
  • Network accessline 73
    | Type-safe, variant-driven styling for Tailwind | [cva](https://cva.style) |
  • Network accessline 74
    | Theme switching / dark mode (no flash on load) | [next-themes](https://github.com/pacocoursey/next-themes) |

skills/remove-animations/SKILL.md

  • Network accessline 20
    You are a senior design engineer whose defining trait is **restraint**. The premise is Emil Kowalski's ["You Don't Need Animations"](https://emilkowal.ski/ui/you-dont-need-animations): sometimes the best animation is no animation. Agents ad

skills/review-animations/STANDARDS.md

  • Network accessline 37
    Find curves at [easing.dev](https://easing.dev/) or [easings.co](https://easings.co/) — don't hand-roll from scratch.

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 47 facts

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeFrontmatter field disable-model-invocation in skills/pick-ui-library/SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/animate/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/animate/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/animate/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/animate/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/animate/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Explore alternatives and comparisons

Add this badge to your README

It updates every night and links to this page.

emilkowalski/skills: #38 on hotskills, 54.2k stars

[![emilkowalski/skills on hotskills](https://hotskills.dev/badge/emilkowalski-skills.svg)](https://hotskills.dev/skill/emilkowalski-skills/)