Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/onewave-ai/open-agent-stack/gsap-webnpx skills add OneWave-AI/open-agent-stack --skill gsap-webgit clone --depth 1 https://github.com/OneWave-AI/open-agent-stackWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/onewave-ai/open-agent-stack/gsap-web)<a href="https://agentmods.dev/skills/onewave-ai/open-agent-stack/gsap-web"><img src="https://agentmods.dev/badge/skills/onewave-ai/open-agent-stack/gsap-web.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00056 | $0.01217 |
| Opus 5 | $0.00028 | $0.00609 |
| Sonnet 5 | $0.00011 | $0.00243 |
| Haiku 4.5 | $0.00006 | $0.00122 |
Grade A, and why
gsap-web scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 87 lines — stays where its author put it; the contents beside it link to each section on GitHub.
GSAP for Web Apps
GSAP is straightforward until it meets React. Then every animation that worked in a CodePen starts double-firing in Strict Mode, surviving unmount, and pointing at stale DOM after a route change. The library is not the problem -- lifecycle is. These are the patterns that hold up.
Setup
Install gsap and @gsap/react. Register plugins once, at module scope in a client component, never inside render:
'use client'
import gsap from 'gsap'
import { ScrollTrigger } from 'gsap/ScrollTrigger'
import { useGSAP } from '@gsap/react'
gsap.registerPlugin(ScrollTrigger, useGSAP)
gsap.defaults({ duration: 0.28, ease: 'power3.out' }) // from motion-system
In Next.js App Router, anything touching GSAP is a client component. GSAP reads the DOM, so it cannot run during SSR -- a window is not defined build error means the import climbed into a server component.
Workflow
-
Scope everything.
useGSAPwith a container ref. It reverts every animation created inside on unmount and handles Strict Mode's double-invoke, which is the source of nearly every "it fires twice" report.const container = useRef(null) useGSAP(() => { gsap.from('.card', { y: 24, opacity: 0, stagger: 0.05 }) }, { scope: container })Selector strings inside the callback resolve within the scope, so
.cardcannot reach into another component's markup. -
Timelines, not stacked tweens. Three sequenced tweens with hand-computed delays become unmaintainable the moment one duration changes. One timeline with the position parameter stays readable:
const tl = gsap.timeline() tl.from('.title', { y: 30, opacity: 0 }) .from('.sub', { y: 20, opacity: 0 }, '-=0.15') // overlap .from('.cta', { scale: 0.96, opacity: 0 }, '<') // with previousUse labels (
tl.addLabel('reveal')) once a timeline passes about five steps. -
fromvsfromTo.fromanimates to the element's current CSS, which is fragile when other code or a re-render changes that state -- an interruptedfromcan leave the element stuck at its start values. For anything that can be interrupted or replayed, usefromToand state both ends explicitly. AddimmediateRender: falsewhen afrominside a timeline flashes its end state on load.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 87 lines · 56 tokens per session scan A 5e70e885be1b
gsap-web is a skill published in the GitHub repository OneWave-AI/open-agent-stack (2 stars, last pushed 24d ago), licensed MIT. It adds 56 tokens to every session and 1,217 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
storybook
Storybook is the fidelity oracle, not the runtime. The converter bundles the package's compiled dist/ into dsbundle.js - the same bundle the claude.ai/design agent builds with - and generates each preview by compiling the story source module itself (hooks, fixtures, local helpers - the whole closure comes along), with…
design-sync
Push a React design system to claude.ai/design. This runs a converter that bundles the real component code (from Storybook or a bare package) and uploads it. Use when the user runs /design-sync or says "sync my design system to Claude Design".
chrome-ext-ui-react
This skill should be used when building React UI for Chrome extensions or when the user asks about UI patterns in extensions. Trigger when: "React in extension", "extension popup React", "side panel React", "Shadow DOM React", "content script UI", "createShadowRootUi", "extension accessibility", "rem to px extension"…
cs2-modding-ui
The Cities: Skylines II mod UI discipline: the C#-to-JavaScript binding layer and the game's React frontend. Use when a mod needs a panel, button or overlay in the game's UI, when exposing C# state to the frontend or invoking C# from it, when injecting into the game's own component tree, when a UI mod's bundle does…
aws-spa-deploy
Use this skill whenever the user is deploying a React/Vite single-page app to AWS, or mentions Amplify, CDK, or wiring up Lambda + API Gateway for a frontend. Covers Amplify hosting, custom domains, CDK backend (Lambda + API Gateway), SES email, CORS configuration, and environment variables. Skip for non-AWS hosts…
vercel-react-best-practices
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance…