[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JGSTP2B6J8NWK68H2SMCNF":3,"skill-same:01M6JGSTP2B6J8NWK68H2SMCNF":60},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":42,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":44,"updatedAt":45,"install":46,"resources":59},"01M6JGSTP2B6J8NWK68H2SMCNF","gsap-timeline",null,"Official GSAP skill for timelines — gsap.timeline(), position parameter, nesting, playback. Use when sequencing animations, choreographing keyframes, or when the user asks about animation sequencing, timelines, or animation order (in GSAP or when recommending a library that supports timelines).","ancyloce\u002Fanvilkit-studio","ancyloce","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103255835?v=4","01M6JGS0GSF9KTQE3VS6HA5FZ2","Ancyloce","01M6JGS0NK83XM8EJYT39C39CD",2,"MIT","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fgsap-timeline\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"gsap","timeline","gsap timeline","official","library","Animation","user","use","keyframes","position","sequencing","about","for","2026-11-10 10:12:30",false,"---\nname: gsap-timeline\ndescription: Official GSAP skill for timelines — gsap.timeline(), position parameter, nesting, playback. Use when sequencing animations, choreographing keyframes, or when the user asks about animation sequencing, timelines, or animation order (in GSAP or when recommending a library that supports timelines).\nlicense: MIT\n---\n\n# GSAP Timeline\n\n## When to Use This Skill\n\nApply when building multi-step animations, coordinating several tweens in sequence or parallel, or when the user asks about timelines, sequencing, or keyframe-style animation in GSAP.\n\n**Related skills:** For single tweens and eases use **gsap-core**; for scroll-driven timelines use **gsap-scrolltrigger**; for React use **gsap-react**.\n\n## Creating a Timeline\n\n```javascript\nconst tl = gsap.timeline();\ntl.to(\".a\", { x: 100, duration: 1 })\n  .to(\".b\", { y: 50, duration: 0.5 })\n  .to(\".c\", { opacity: 0, duration: 0.3 });\n```\n\nBy default, tweens are **appended** one after another. Use the **position parameter** to place tweens at specific times or relative to other tweens.\n\n## Position Parameter\n\nThird argument (or position property in vars) controls placement:\n\n- **Absolute**: `1` — start at 1 second.\n- **Relative (default)**: `\"+=0.5\"` — 0.5s after end; `\"-=0.2\"` — 0.2s before end.\n- **Label**: `\"labelName\"` — at that label; `\"labelName+=0.3\"` — 0.3s after label.\n- **Placement**: `\"\u003C\"` — start when recently-added animation starts; `\">\"` — start when recently-added animation ends (default); `\"\u003C0.2\"` — 0.2s after recently-added animation start.\n\nExamples:\n\n```javascript\ntl.to(\".a\", { x: 100 }, 0);           \u002F\u002F at 0\ntl.to(\".b\", { y: 50 }, \"+=0.5\");      \u002F\u002F 0.5s after last end\ntl.to(\".c\", { opacity: 0 }, \"\u003C\");     \u002F\u002F same start as previous\ntl.to(\".d\", { scale: 2 }, \"\u003C0.2\");    \u002F\u002F 0.2s after previous start\n```\n\n## Timeline Defaults\n\nPass defaults into the timeline so all child tweens inherit:\n\n```javascript\nconst tl = gsap.timeline({ defaults: { duration: 0.5, ease: \"power2.out\" } });\ntl.to(\".a\", { x: 100 }).to(\".b\", { y: 50 }); \u002F\u002F both use 0.5s and power2.out\n```\n\n## Timeline Options (constructor)\n\n- **paused: true** — create paused; call `.play()` to start.\n- **repeat**, **yoyo** — same as tweens; apply to whole timeline.\n- **onComplete**, **onStart**, **onUpdate** — timeline-level callbacks.\n- **defaults** — vars merged into every child tween.\n\n## Labels\n\nAdd and use labels for readable, maintainable sequencing:\n\n```javascript\ntl.addLabel(\"intro\", 0);\ntl.to(\".a\", { x: 100 }, \"intro\");\ntl.addLabel(\"outro\", \"+=0.5\");\ntl.to(\".b\", { opacity: 0 }, \"outro\");\ntl.play(\"outro\");  \u002F\u002F start from \"outro\"\ntl.tweenFromTo(\"intro\", \"outro\"); \u002F\u002F pauses the timeline and returns a new Tween that animates the timeline's playhead from intro to outro with no ease.\n```\n\n## Nesting Timelines\n\nTimelines can contain other timelines.\n\n```javascript\nconst master = gsap.timeline();\nconst child = gsap.timeline();\nchild.to(\".a\", { x: 100 }).to(\".b\", { y: 50 });\nmaster.add(child, 0);\nmaster.to(\".c\", { opacity: 0 }, \"+=0.2\");\n```\n\n## Controlling Playback\n\n- **tl.play()** \u002F **tl.pause()**\n- **tl.reverse()** \u002F **tl.progress(1)** then **tl.reverse()**\n- **tl.restart()** — from start.\n- **tl.time(2)** — seek to 2 seconds.\n- **tl.progress(0.5)** — seek to 50%.\n- **tl.kill()** — kill timeline and (by default) its children.\n\n## Official GSAP Best practices\n\n- ✅ Prefer timelines for sequencing\n- ✅ Use the **position parameter** (third argument) to place tweens at specific times or relative to labels.\n- ✅ Add **labels** with `addLabel()` for readable, maintainable sequencing.\n- ✅ Pass **defaults** into the timeline constructor so child tweens inherit duration, ease, etc.\n- ✅ Put ScrollTrigger on the timeline (or top-level tween), not on tweens inside a timeline.\n\n## Do Not\n\n- ❌ Chain animations with **delay** when a **timeline** can sequence them; prefer `gsap.timeline()` and the position parameter for multi-step animation.\n- ❌ Forget to pass **defaults** (e.g. `defaults: { duration: 0.5, ease: \"power2.out\" }`) when many child tweens share the same duration or ease.\n- ❌ Forget that **duration** on the timeline constructor is not the same as tween duration; timeline “duration” is determined by its children.\n- ❌ Nest animations that contain a ScrollTrigger; ScrollTriggers should only be on top-level Tweens\u002FTimelines.\n","# GSAP Timeline\n\n## When to Use This Skill\n\nApply when building multi-step animations, coordinating several tweens in sequence or parallel, or when the user asks about timelines, sequencing, or keyframe-style animation in GSAP.\n\n**Related skills:** For single tweens and eases use **gsap-core**; for scroll-driven timelines use **gsap-scrolltrigger**; for React use **gsap-react**.\n\n## Creating a Timeline\n\n```javascript\nconst tl = gsap.timeline();\ntl.to(\".a\", { x: 100, duration: 1 })\n  .to(\".b\", { y: 50, duration: 0.5 })\n  .to(\".c\", { opacity: 0, duration: 0.3 });\n```\n\nBy default, tweens are **appended** one after another. Use the **position parameter** to place tweens at specific times or relative to other tweens.\n\n## Position Parameter\n\nThird argument (or position property in vars) controls placement:\n\n- **Absolute**: `1` — start at 1 second.\n- **Relative (default)**: `\"+=0.5\"` — 0.5s after end; `\"-=0.2\"` — 0.2s before end.\n- **Label**: `\"labelName\"` — at that label; `\"labelName+=0.3\"` — 0.3s after label.\n- **Placement**: `\"\u003C\"` — start when recently-added animation starts; `\">\"` — start when recently-added animation ends (default); `\"\u003C0.2\"` — 0.2s after recently-added animation start.\n\nExamples:\n\n```javascript\ntl.to(\".a\", { x: 100 }, 0);           \u002F\u002F at 0\ntl.to(\".b\", { y: 50 }, \"+=0.5\");      \u002F\u002F 0.5s after last end\ntl.to(\".c\", { opacity: 0 }, \"\u003C\");     \u002F\u002F same start as previous\ntl.to(\".d\", { scale: 2 }, \"\u003C0.2\");    \u002F\u002F 0.2s after previous start\n```\n\n## Timeline Defaults\n\nPass defaults into the timeline so all child tweens inherit:\n\n```javascript\nconst tl = gsap.timeline({ defaults: { duration: 0.5, ease: \"power2.out\" } });\ntl.to(\".a\", { x: 100 }).to(\".b\", { y: 50 }); \u002F\u002F both use 0.5s and power2.out\n```\n\n## Timeline Options (constructor)\n\n- **paused: true** — create paused; call `.play()` to start.\n- **repeat**, **yoyo** — same as tweens; apply to whole timeline.\n- **onComplete**, **onStart**, **onUpdate** — timeline-level callbacks.\n- **defaults** — vars merged into every child tween.\n\n## Labels\n\nAdd and use labels for readable, maintainable sequencing:\n\n```javascript\ntl.addLabel(\"intro\", 0);\ntl.to(\".a\", { x: 100 }, \"intro\");\ntl.addLabel(\"outro\", \"+=0.5\");\ntl.to(\".b\", { opacity: 0 }, \"outro\");\ntl.play(\"outro\");  \u002F\u002F start from \"outro\"\ntl.tweenFromTo(\"intro\", \"outro\"); \u002F\u002F pauses the timeline and returns a new Tween that animates the timeline's playhead from intro to outro with no ease.\n```\n\n## Nesting Timelines\n\nTimelines can contain other timelines.\n\n```javascript\nconst master = gsap.timeline();\nconst child = gsap.timeline();\nchild.to(\".a\", { x: 100 }).to(\".b\", { y: 50 });\nmaster.add(child, 0);\nmaster.to(\".c\", { opacity: 0 }, \"+=0.2\");\n```\n\n## Controlling Playback\n\n- **tl.play()** \u002F **tl.pause()**\n- **tl.reverse()** \u002F **tl.progress(1)** then **tl.reverse()**\n- **tl.restart()** — from start.\n- **tl.time(2)** — seek to 2 seconds.\n- **tl.progress(0.5)** — seek to 50%.\n- **tl.kill()** — kill timeline and (by default) its children.\n\n## Official GSAP Best practices\n\n- ✅ Prefer timelines for sequencing\n- ✅ Use the **position parameter** (third argument) to place tweens at specific times or relative to labels.\n- ✅ Add **labels** with `addLabel()` for readable, maintainable sequencing.\n- ✅ Pass **defaults** into the timeline constructor so child tweens inherit duration, ease, etc.\n- ✅ Put ScrollTrigger on the timeline (or top-level tween), not on tweens inside a timeline.\n\n## Do Not\n\n- ❌ Chain animations with **delay** when a **timeline** can sequence them; prefer `gsap.timeline()` and the position parameter for multi-step animation.\n- ❌ Forget to pass **defaults** (e.g. `defaults: { duration: 0.5, ease: \"power2.out\" }`) when many child tweens share the same duration or ease.\n- ❌ Forget that **duration** on the timeline constructor is not the same as tween duration; timeline “duration” is determined by its children.\n- ❌ Nest animations that contain a ScrollTrigger; ScrollTriggers should only be on top-level Tweens\u002FTimelines.\n",{"name":5,"license":15,"description":7},"main","e4eeaefbd56226a251b228f1beb87a293ab3140a",".agents\u002Fskills\u002Fgsap-timeline",1,"https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio","http:\u002F\u002Fanvilkit.aiiua.com\u002F","https:\u002F\u002Fgithub.com\u002Fancyloce","🧙‍♂️  Front-end mage with a secret back-end talent. \r\n🔮  Fluent in React, Vue, Go, and Rust.\r\n📚  Book addict and  🎵  music lover. Let's create some  ✨ magic","2026-11-01 10:38:50",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add ancyloce\u002Fanvilkit-studio --skill gsap-timeline",{"tool":52,"command":53},"bunx","bunx skills add ancyloce\u002Fanvilkit-studio --skill gsap-timeline",{"tool":55,"command":56},"pnpm","pnpm dlx skills add ancyloce\u002Fanvilkit-studio --skill gsap-timeline","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fgsap-timeline\u002FSKILL.md",true,[],[61,92,116,137,160,166],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":72,"publishedAt":32},"01M6JGVQAQWDRDT2CAQ2VH7D9V","react-doctor","Use when finishing a feature, fixing a bug, before committing React code, or when the user types `\u002Fdoctor`, asks to scan, triage, or clean up React diagnostics. Covers lint, accessibility, bundle size, architecture. Includes a regression check and a full local-triage workflow that fetches the canonical playbook.","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002Fpackages\u002Fruntime\u002Fcore\u002F.claude\u002Fskills\u002Freact-doctor\u002FSKILL.md",[67],{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[73,74,75,76,77,78,79,80,81,82,83,26,84,85,86,87,88,89,90,91],"react","doctor","react doctor","workflow","architecture","lint","code","playbook","regression","bundle size","check","regression check","up","clean","scan","local","feature","types","size",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":32},"01M6JGVJ7H21GFHTJ57RBWC6C1","review-remediate","Use for the review-then-fix-everything loop on a package or diff — deliver a grounded review report immediately (no scoping questions, no plan-approval), then remediate every finding as tracked numbered items, gating each batch on typecheck\u002Flint\u002Ftest\u002Fbuild plus an independent Codex pass until clean. Trigger on \"review and fix \u003Cpackage>\", \"remediate the review\", \"review-fix-verify\", or when the user wants a deep review followed by autonomous remediation. Distinct from gstack `review` (pre-landing PR review) and `code-review` (diff only) — this reviews from scratch AND fixes to green.","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Freview-remediate\u002FSKILL.md",[],[99,100,101,102,103,104,105,106,26,107,108,86,109,110,111,112,113,31,114,115],"review","review remediate","pr review","pr","package","autonomous","fix","landing","diff","only","green","deep","as","trigger","reviews","fixes","review report",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":32},"01M6JGVDZD39P3Q97XGQPTTKQN","review-fixes","Close out an EXISTING code-review findings report — one subagent per finding, each with a regression test — then regenerate EN\u002Fzh\u002Fja\u002Fko docs, run all gates, and verify no stale or unexported symbols remain. Trigger on \"\u002Freview-fixes\", \"fix all N review findings\", \"close the review findings\", or when the user hands over a findings report to remediate. Distinct from review-remediate, which produces the review itself first — this skill starts from a report that already exists.","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Freview-fixes\u002FSKILL.md",[],[99,114,123,124,79,125,126,127,128,81,105,129,130,131,132,112,133,134,135,136],"review fixes","test","code-review","first","verify","subagent","regression test","en","zh","gates","with","review findings","which","Existing",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":32},"01M6JGV8J3ZRFGCXR2W3Q9ZWYK","release-prep","Pre-release verification + go\u002Fno-go checklist for publishing @anvilkit packages. Detects the release surface (main workspace fixed-group vs components submodule), runs changeset status and the check:all release gates, enforces this repo's publish gotchas (version.ts drift, ui peer ranges, never-publish canvas-templates, bundle\u002Fapi-snapshot), then hands the exact publish command to the user. Use when asked to \"prep a release\", \"check release readiness\", \"\u002Frelease-prep\", or before cutting a version. Does NOT commit or publish.","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frelease-prep\u002FSKILL.md",[],[144,145,146,147,148,149,150,151,152,153,26,154,155,156,157,37,158,132,159,31],"release","prep","release prep","canvas","components","commit","api","Bash","changeset","repo","version","never","publishing","peer","drift","true",{"skillNo":161,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":32},"01M6JGV33MBTTHMZ1SNJZHAA6H","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Freact-doctor\u002FSKILL.md",[164],{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},[73,74,75,76,77,78,79,80,81,82,83,26,84,85,86,87,88,89,90,91],{"skillNo":167,"name":168,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":174,"publishedAt":32},"01M6JGV1KQAFYH6ZQ864ZBCVVH","pre-refactor","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fpre-refactor\u002FSKILL.md",[171],{"categoryNo":172,"categoryName":173,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000007","代码审查",[175,176],"refactor","pre refactor"]