Install any skill in seconds. Free to start, no credit card required.
Get Started Free →nexu-io/gsap-frameworks
Official GSAP skill for Vue, Svelte, and other non-React frameworks — lifecycle, scoping selectors, cleanup on unmount.
Passed 23 of 23 test cases with the skill, and 20 of 23 without it.
and 1 more in the full report
3 fixed20 passed either way0 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 3 test cases the skill fixed. Same model, same prompt, with and without the skill.
I'm creating a `useGSAP.ts` composable for Nuxt 4. What return signature should the composable provide so that components can access GSAP, default plugins, and lazy-loading utilities?
| Checked | Without skill | With skill |
|---|---|---|
| Returns an object containing gsap from useGSAP. | Passed | Passed |
| Returns lazyLoadPlugin from useGSAP. | Missed | Passed |
The instructions your model reads when the skill loads.
Apply when writing or reviewing GSAP code in Vue (or Nuxt), Svelte (or SvelteKit), or other component frameworks that use a lifecycle (mounted/unmounted). For React specifically, use gsap-react (useGSAP hook, gsap.context()).
Related skills: For tweens and timelines use gsap-core and gsap-timeline; for scroll-based animation use gsap-scrolltrigger; for React use gsap-react.
.box and similar only match elements inside that component, not the rest of the page.See examples/vue/ for a runnable Vite + Vue 3 project demonstrating these patterns.
Use onMounted to run GSAP after the component is in the DOM. Use onUnmounted to clean up.
import { onMounted, onUnmounted, ref } from "vue";
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
gsap.registerPlugin(ScrollTrigger); // once per app, e.g. in main.js
export default {
setup() {
const container = ref(null);
let ctx;
onMounted(() => {
if (!container.value) return;
ctx = gsap.context(() => {
gsap.to(".box", { x: 100, duration: 0.6 });
gsap.from(".item", { autoAlpha: 0, y: 20, stagger: 0.1 });
}, container.value);
});
onUnmounted(() => {
test cases passed, vs 20 / 23 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.