Skills for Design Engineers

Open-source project focused on skills for design engineers. Nearly 17,000 GitHub stars reflect wide interest among developers who work at the intersection of design and engineering.

77
Hotness score
45
Reliability score
18,731
Stars
4 months
Age
0
Published reviews
0
Questions

Scores

Hotness and reliability

The two headline scores, measured daily, with 30, 90, and 180 day views.

Hotness score

Jul 19, 2026

Current77

Previous74

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

127 observed daily rows. Missing days are not fabricated.

Hotness formula

40% Hot today + 40% Hot this week + 20% Breakout.

  • 40% Hot today: 65
  • 40% Hot this week: 84
  • 20% Breakout: 39
  • Stars gained: 1d: 582
  • Stars gained: 7d: 6404
  • Stars gained: 14d: 13598
  • Stars gained: 30d: 16087
  • Stars gained: 90d: 17907

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Jul 19, 2026

Current45

Previous45

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

127 observed daily rows. Missing days are not fabricated.

Reliability formula

30% Continuity + 30% Closure + 20% Shipping + 10% Liveness + 10% Support burden.

  • 30% Continuity: 31
  • 30% Closure: 51
  • 20% Shipping: 0
  • 10% Liveness: 97
  • 10% Support burden: 100

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

Reliability breakdown

What drives the reliability score

Component scores measured daily from GitHub activity (2026-07-19).

Continuity30% of headline31

Activity on 10 of 90 tracked days in the last 90 and 7 of 30 in the last 30.

Closure30% of headline51

Merged 3 of 8 PRs opened and closed 4 of 6 issues opened over the last 90 tracked days — PR flow carries 55% of this component, issue flow 45%.

Shipping20% of headline0

0 releases in the last 180 days, 0 in the last 90 and 0 in the last 30 — a steady cadence scores highest.

Liveness10% of headline97

Last push 5 days ago — freshness decays as pushes age (roughly halves every 83 days without a push).

Support burden10% of headline100

2 open issues against 18,731 stars — about 0 open issues per 1,000 stars. Lighter backlogs score higher.

Adoption confidence56

Modeled — how confidently teams are adopting this repo. Stargazers

Maintenance quality45

Modeled from PR/issue responsiveness and upkeep signals. Activity pulse

Risk score28

Modeled — lower is better; adoption and continuity risk. Repository

Stays active (30d)39%

Modeled chance the repo stays active over 30 days. Activity pulse

Stays active (90d)46%

Modeled chance the repo stays active over 90 days. Activity pulse

Release rhythm (180d)0

Regularity of releases over the last 180 days. Releases

Maintainer bus risk (90d)67%

Modeled — lower is better; concentration of commits in few maintainers. Contributors graph

Topics

Explore related topics

Jump into the topic listings this repository belongs to.

Measured history

Project metrics

Weekly GitHub totals with 30, 90, and 180 day views.

Weekly star gains

Jul 19, 2026

Current6,827

Previous6,379

Weekly star gains

6,8273,4140
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

127 observed daily rows. Missing days are not fabricated.

DateValue

Cumulative stars

Jul 19, 2026

Current18,149

Previous11,322

Cumulative total

18,1499,0750
Full metrics details

Running total of the GitHub GraphQL stargazer count over time (not weekly deltas), reconstructed from starredAt events and totalCount in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

127 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Jul 19, 2026

Current2

Previous2

Weekly total

210
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

126 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Jul 19, 2026

Current1

Previous1

Weekly total

110
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

126 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Jul 19, 2026

Current3

Previous5

Weekly total

530
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

126 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Jul 19, 2026

Current1

Previous4

Weekly total

420
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

126 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Jul 19, 2026

Current1

Previous2

Weekly total

210
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

126 observed daily rows. Missing days are not fabricated.

DateValue

Issue close ratio (daily)

Jul 16, 2026

Current1.00

Previous0.00

Daily ratio — a gap means nothing was opened that day

How this works: each day's value is issues closed that day ÷ issues opened that day. Days when nothing was opened render as gaps — never a rolling average or a made-up zero. Values above 1 mean the project closed more issues than arrived that day.

1.000.500.00
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

6 observed daily rows. Missing days are not fabricated.

Per-day formula: issues closed that day ÷ issues opened that day; blank when nothing was opened (a gap, not a zero).

DateIssues openedIssues closedStored score

Pull request close ratio (daily)

Jul 16, 2026

Current0.00

Previous1.00

Daily ratio — a gap means nothing was opened that day

How this works: each day's value is pull requests closed that day ÷ pull requests opened that day. Days when nothing was opened render as gaps — never a rolling average or a made-up zero. Values above 1 mean the project closed more pull requests than arrived that day.

1.000.500.00
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

6 observed daily rows. Missing days are not fabricated.

Per-day formula: pull requests closed that day ÷ pull requests opened that day; blank when nothing was opened (a gap, not a zero).

DatePRs openedPRs closedStored score

Project Overview

Skills (emilkowalski/skills) is a curated collection of UI interaction patterns and animation techniques built for design engineers — practitioners who own both the visual design and the frontend code. Created by Emil Kowalski, the project documents concrete animation patterns and interaction mechanics that show up repeatedly in high-quality product work.

The repo isn't a component library. You won't add it to your package.json. Instead, it's a reference — production-tested patterns you read, understand, and adapt into your own codebase. With over 16,000 stars, it's clearly useful to engineers who want their interfaces to move like native apps rather than static web pages.

If you're looking for a drop-in, versioned dependency with a changelog and semver guarantees, look elsewhere. Skills trades that for something different: unusually clean, readable implementations that you own once you copy them.

Key Challenges Addressed

Two things make UI animation hard in practice: getting the physics right, and knowing which pattern to reach for.

Timing that feels wrong: Most engineers default to CSS ease-in-out or a fixed-duration Framer Motion fade. This works for simple opacity changes, but for anything involving position, scale, or layout, it reads as stiff. Physical objects don't decelerate uniformly — they overshoot, they respond to velocity. Skills targets this with spring-physics configurations tuned for common UI scenarios.

Interaction patterns with no reference implementation: Swipe-to-dismiss, drag reorder, shared element transitions — these are well-documented in native iOS/Android SDKs but poorly documented for the web. Skills covers full implementations, including the failure modes you'll hit after the happy path.

Layout animation coordination: Animating elements as they enter, leave, or reorder in a list is hard to do without visual glitches. Framer Motion's AnimatePresence and layout animation features handle this well, but using them correctly requires specific composition patterns that aren't obvious from the documentation alone.

Getting Started

Clone the repo and run it locally to see all patterns in context:

git clone https://github.com/emilkowalski/skills.git
cd skills
npm install
npm run dev

Sharp edges you'll hit early:

  • Framer Motion version pinning: Copying a pattern into a project on a different major Framer Motion version silently breaks animations — AnimatePresence exit callbacks and useAnimate signatures changed between v10 and v11. Run npm list framer-motion in both codebases before copying any pattern.
  • Node version: Node version mismatches surface as cryptic CSS/JS optimization errors in Next.js builds, not obvious version complaints. Match the .nvmrc version or the engines.node field in package.json exactly.

Once it's running, each skill renders in isolation so you can inspect its behavior without surrounding page noise. That's intentional — treat it like a sandboxed component demo.

Features and Use Cases

Spring-physics animations: Pre-tuned configurations for common UI movements — panel slide-in, modal entrance, card hover lift. These use actual spring physics so the motion feels responsive to simulated inertia rather than just decelerated timing curves.

Gesture-driven interactions: Patterns for drag, press, and swipe that respond correctly to input velocity, not just position. If you've built a swipe gesture that works on desktop but feels wrong on mobile because it ignores gesture speed, these implementations address that gap directly.

Layout animations: Techniques for animating list reordering, content expansion, and collapsing panels without frame drops. The patterns clarify when to use the layout prop versus layoutId for shared-element transitions — a distinction the Framer Motion docs explain but don't illustrate well in realistic component compositions.

Micro-interactions: Smaller patterns — focus ring animations, button press feedback, checkbox state transitions — that layer onto existing components without conflicting with their structure.

Realistic use cases: a SaaS dashboard where the command palette needs to feel snappy and precise; a mobile web app where card interactions need to match native gesture expectations; an existing design system you want to upgrade from flat CSS transitions to physics-based motion.

Ecosystem and Dependencies

Skills is built on a stack common to contemporary design-engineering work:

  • Framer Motion: The animation engine for everything in the repo. You'll get the most value here if you're already committed to this library. The Framer Motion documentation covers the full API and pairs well with React's component model.
  • Next.js: The demo app runs on Next.js. The component patterns themselves are framework-agnostic React and port cleanly to Vite or any other React environment without changes.
  • Tailwind CSS: Class-based styling throughout, which keeps visual logic cleanly separated from animation logic when adapting patterns.
  • TypeScript: Types are included in the implementations. You won't need to reconstruct them when copying into a typed codebase.

The Framer Motion + Tailwind + Next.js combination is the current consensus stack for this kind of work. If you're already on it, copying from Skills into your project is nearly frictionless.

Architectural Overview

The repo is structured as a Next.js app where each skill or technique gets its own page or route. The component architecture is deliberately flat: each pattern lives in a single file (or a small cluster of co-located files) with animation logic inline rather than abstracted into hooks or utility layers.

This is the right call for a reference project. Abstraction hides intent. When you're reading these patterns to learn or adapt them, seeing the Framer Motion props directly on the motion component — rather than buried in a custom hook — tells you exactly what each parameter does and why.

There's no state management library, no API integration, no routing complexity beyond Next.js defaults. Every bit of complexity in the codebase is there because the pattern itself requires it. You won't mistake scaffolding complexity for pattern complexity.

Pros and Cons

Pros

  • Patterns reflect decisions made when shipping interfaces where visual quality is a product requirement — not toy examples.
  • Short, readable code with no framework abstractions to unwrap before you reach the interesting part.
  • You own the code completely once you copy it — no upstream dependency surprises, no API deprecations that silently break your UI.
  • Curated, not exhaustive. High signal-to-noise ratio compared to broader UI component repos.

Cons

  • No installable package. You copy and own the code, which means you're responsible for keeping patterns current as Framer Motion evolves.
  • Deep Framer Motion coupling. Adapting any pattern to GSAP, CSS keyframes, or another animation engine is a rewrite, not a port.
  • Not a component library. No form controls, data tables, layout primitives, or navigation components. Skills is specifically about animation and interaction mechanics.
  • Sparse explanation. The patterns are clean but lightly commented. If you're learning Framer Motion simultaneously, you'll need the library docs open alongside to understand why each parameter value was chosen.

Comparison and Alternatives

Measured 90-day trends for this project and its alternatives.

GitHub stars

Weekly star gains

6,8273,4140
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

Skills

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

127 observed daily rows. Missing days are not fabricated.

DateValue
shadcn/ui

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Magic UI

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

43 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Weekly total

1890
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Skills

GitHub API observation. Historical values render only when the source provides a real observation for that day.

126 observed daily rows. Missing days are not fabricated.

DateValue
shadcn/ui

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Weekly total

1680
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Skills

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

126 observed daily rows. Missing days are not fabricated.

DateValue
shadcn/ui

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Weekly total

66330
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Skills

GitHub API observation. Historical values render only when the source provides a real observation for that day.

126 observed daily rows. Missing days are not fabricated.

DateValue
shadcn/ui

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Weekly total

35180
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Skills

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

126 observed daily rows. Missing days are not fabricated.

DateValue
shadcn/ui

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Weekly total

23120
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Skills

GitHub API observation. Historical values render only when the source provides a real observation for that day.

126 observed daily rows. Missing days are not fabricated.

DateValue
shadcn/ui

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed pull request ratio

Weekly average

100500
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Skills

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

127 observed daily rows. Missing days are not fabricated.

DateValue
shadcn/ui

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Magic UI

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

43 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed issues ratio

Weekly average

100500
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Skills

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

127 observed daily rows. Missing days are not fabricated.

DateValue
shadcn/ui

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
Magic UI

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

43 observed daily rows. Missing days are not fabricated.

DateValue

Releases

Weekly total

420
Full metrics details

GitHub release published_at events bucketed by UTC day; drafts are excluded.

Skills

GitHub release published_at events bucketed by UTC day; drafts are excluded.

127 observed daily rows. Missing days are not fabricated.

DateValue
shadcn/ui

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
Magic UI

GitHub release published_at events bucketed by UTC day; drafts are excluded.

43 observed daily rows. Missing days are not fabricated.

DateValue

Hotness score

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

Skills

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

127 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
shadcn/ui

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
Magic UI

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

43 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

Skills

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

127 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
shadcn/ui

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
Magic UI

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

43 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

For teams that want something more installable or with broader scope, several strong alternatives exist.

shadcn/ui takes a similar copy-paste philosophy but focuses on accessibility-first component primitives using Radix UI under the hood. It's broader in scope — full form controls, navigation, dialogs — and has extensive documentation. If you need a full component system rather than an animation reference, start here.

Framer Motion itself is the underlying animation library Skills uses. If you want to build patterns from scratch rather than adapt existing ones, the Framer Motion documentation and examples cover the full API surface. Skills is a curated cookbook built on top of it.

Magic UI offers animated components as installable packages, also built on Framer Motion and Tailwind. If you want animated components you can add via a CLI command rather than copying implementations by hand, Magic UI fits that workflow.

animate.css is a CSS-only animation library requiring no JavaScript runtime. It's useful for simple entrance/exit animations in projects without a React dependency, but it doesn't address spring physics, gesture-driven interactions, or layout animations.

Project Repo Hotness (~6mo) PRs merged (~6mo) Star growth (~6mo)
Skills https://github.com/emilkowalski/skills 39.39 3 16803
shadcn/ui https://github.com/shadcn-ui/ui 99.60 436 5851
Framer Motion https://github.com/framer/motion metrics pending 0 metrics pending
Magic UI https://github.com/magicuidesign/magicui metrics pending 0 553
animate.css https://github.com/animate-css/animate.css metrics pending 0 22

The best overall alternative is shadcn/ui. It has the most complete documentation, the largest contributor community, and a similarly opinionated copy-paste delivery model. It won't match Skills' depth on animation mechanics, but as a foundation for a full design system it's far more complete.

Conclusion

If you build React interfaces where interaction quality matters and you're already using Framer Motion, Skills is the most direct reference available for production-grade animation patterns. Read the project on GitHub, find a pattern that matches your use case, and adapt it directly — you'll skip weeks of trial-and-error on spring tuning.

Do not copy patterns wholesale across major Framer Motion version boundaries. If your project runs Framer Motion v10 and the Skills repo has moved to v11, AnimatePresence exit behavior and layout animation sizing will diverge silently — elements snap to wrong positions or animations skip entirely. Before copying any pattern, run npm list framer-motion in both your project and the Skills repo and match the major version.

Join the conversation

Reviews · Questions · Posts

Share what you know about skills — write a review from your real experience, ask an implementation question, or publish a post about how you use it.

Share your experience

Write or update your review

Explain what worked, what broke down, and what another team should know before adopting skills.

Write your review now — it saves locally and publishes automatically after you sign in.

Rating
Positive attributes
Negative attributes

Project Q&A

Questions and answers

Browse implementation threads tied directly to emilkowalski/skills. Each question links through to the full answer page.

Q&A No threads yet

Be the first to ask how teams run skills in production. Every question you post becomes a durable, searchable answer page other developers can find.

Ask the first question

Related posts

Posts tagged with the same topics

These posts come from the same topic surface as this repo, so readers can move from project evaluation into practical writeups and migration notes without leaving context.

Posts No topic-linked posts yet

Share how your team uses skills — a migration note, an architecture writeup, or a comparison. Your post reaches everyone browsing these same topics.

Write the first post
Get a weekly email with the hottest new projects in the Design Disciplines and Design Systems world.
No Spam. Unsubscribe easily at any time.

Copyright 2018-2026 Awesome Open Source.  All rights reserved.