ScrollTrigger is the animation plugin you reach for when you need anything scroll-driven: triggering tweens when elements enter the viewport, pinning sections while animations play, or scrubbing timeline progress directly to scroll position. The scrub config is especially nice because you can set it to a number (like 0.3) to make the playhead smoothly catch up instead of snapping instantly. The batch() method is a solid alternative to IntersectionObserver when you want to stagger-animate multiple elements as they enter together. One thing to watch: don't animate the pinned element itself, animate its children, or you'll fight the plugin's positioning. This pairs with gsap-core and gsap-timeline for the actual animations.
npx skills add https://github.com/nexu-io/open-design --skill gsap-scrolltrigger