Install any skill in seconds. Free to start, no credit card required.
Get Started Free →mengto/animation-on-scroll
Create an on-scroll animation trigger using IntersectionObserver with Tailwind-friendly animation classes and keyframes.
Passed 19 of 22 test cases with the skill, and 7 of 22 without it.
and 14 more in the full report
12 fixed7 passed either way3 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 12 test cases the skill fixed. Same model, same prompt, with and without the skill.
I am seeing an issue where my scroll animations fail to trigger because my Tailwind class name doesn't match the CSS style rule. I have keyframes called `animationIn` in a `<style>` tag. How should the Tailwind CSS class be formatted on the target HTML tag?
| Checked | Without skill | With skill |
|---|---|---|
| Formats the Tailwind class using arbitrary property syntax like [animation:animationIn_0.8s_ease-out_0.1s_both]. | Missed | Passed |
The instructions your model reads when the skill loads.
<head> after the keyframes.animate-on-scroll to elements.<script>
/*
Sequence animation on scroll when visible. Requires Animation Keyframe. Usage:
1) Insert this code in the <head> along with the Animation Keyframe code.
2) Add to Tailwind Classes: [animation:animationIn_0.8s_ease-out_0.1s_both] animate-on-scroll
*/
(function () {
// Inject CSS for paused/running states
const style = document.createElement("style");
style.textContent = `
/* Default: paused */
.animate-on-scroll { animation-play-state: paused !important; }
/* Activated by JS */
.animate-on-scroll.animate { animation-play-state: running !important; }
`;
document.head.appendChild(style);
const once = true;
if (!window.__inViewIO) {
window.__inViewIO = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.classList.add("animate");
test cases passed, vs 7 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.