opencode-skills-collection 4.0.69 → 4.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +39 -1
  2. package/bundled-skills/api-integration-architect/SKILL.md +241 -0
  3. package/bundled-skills/apify-generate-output-schema/SKILL.md +438 -0
  4. package/bundled-skills/apify-integration-development/SKILL.md +168 -0
  5. package/bundled-skills/apify-integration-development/references/ai-framework-package.md +158 -0
  6. package/bundled-skills/apify-integration-development/references/ai-harness-plugin.md +192 -0
  7. package/bundled-skills/apify-integration-development/references/sdk-integration.md +236 -0
  8. package/bundled-skills/apify-integration-development/references/workflow-automation.md +163 -0
  9. package/bundled-skills/architecture-review/README.md +42 -0
  10. package/bundled-skills/architecture-review/SKILL.md +77 -0
  11. package/bundled-skills/architecture-review/examples.md +11 -0
  12. package/bundled-skills/architecture-review/reference/best-practices.md +7 -0
  13. package/bundled-skills/architecture-review/reference/capabilities.md +20 -0
  14. package/bundled-skills/architecture-review/reference/fallbacks.md +11 -0
  15. package/bundled-skills/architecture-review/reference/graph.md +15 -0
  16. package/bundled-skills/architecture-review/reference/mcp.md +14 -0
  17. package/bundled-skills/architecture-review/reference/workflow.md +15 -0
  18. package/bundled-skills/architecture-review/templates/architecture-review.md +21 -0
  19. package/bundled-skills/code-review-sensei/SKILL.md +177 -0
  20. package/bundled-skills/codebase-onboarding/README.md +42 -0
  21. package/bundled-skills/codebase-onboarding/SKILL.md +77 -0
  22. package/bundled-skills/codebase-onboarding/examples.md +11 -0
  23. package/bundled-skills/codebase-onboarding/reference/best-practices.md +7 -0
  24. package/bundled-skills/codebase-onboarding/reference/capabilities.md +20 -0
  25. package/bundled-skills/codebase-onboarding/reference/fallbacks.md +11 -0
  26. package/bundled-skills/codebase-onboarding/reference/graph.md +15 -0
  27. package/bundled-skills/codebase-onboarding/reference/mcp.md +14 -0
  28. package/bundled-skills/codebase-onboarding/reference/workflow.md +15 -0
  29. package/bundled-skills/codebase-onboarding/templates/repository-onboarding.md +21 -0
  30. package/bundled-skills/connection-auth-rules/SKILL.md +199 -0
  31. package/bundled-skills/connection-auth-rules/fetch_schema.py +320 -0
  32. package/bundled-skills/dependency-analysis/README.md +42 -0
  33. package/bundled-skills/dependency-analysis/SKILL.md +76 -0
  34. package/bundled-skills/dependency-analysis/examples.md +11 -0
  35. package/bundled-skills/dependency-analysis/reference/best-practices.md +7 -0
  36. package/bundled-skills/dependency-analysis/reference/capabilities.md +20 -0
  37. package/bundled-skills/dependency-analysis/reference/fallbacks.md +11 -0
  38. package/bundled-skills/dependency-analysis/reference/graph.md +15 -0
  39. package/bundled-skills/dependency-analysis/reference/mcp.md +14 -0
  40. package/bundled-skills/dependency-analysis/reference/workflow.md +15 -0
  41. package/bundled-skills/dependency-analysis/templates/dependency-review.md +21 -0
  42. package/bundled-skills/devops-pipeline-builder/SKILL.md +200 -0
  43. package/bundled-skills/eas-app-stores/SKILL.md +197 -0
  44. package/bundled-skills/eas-app-stores/agents/openai.yaml +4 -0
  45. package/bundled-skills/eas-app-stores/references/app-store-metadata.md +497 -0
  46. package/bundled-skills/eas-app-stores/references/ios-app-store.md +376 -0
  47. package/bundled-skills/eas-app-stores/references/native-ios.md +167 -0
  48. package/bundled-skills/eas-app-stores/references/play-store.md +244 -0
  49. package/bundled-skills/eas-app-stores/references/testflight.md +62 -0
  50. package/bundled-skills/eas-app-stores/references/workflows.md +120 -0
  51. package/bundled-skills/eas-hosting/SKILL.md +448 -0
  52. package/bundled-skills/eas-hosting/agents/openai.yaml +4 -0
  53. package/bundled-skills/eas-observe/SKILL.md +75 -0
  54. package/bundled-skills/eas-observe/agents/openai.yaml +4 -0
  55. package/bundled-skills/eas-observe/references/metrics.md +98 -0
  56. package/bundled-skills/eas-observe/references/queries.md +403 -0
  57. package/bundled-skills/eas-observe/references/setup.md +476 -0
  58. package/bundled-skills/eas-observe/references/third-party.md +136 -0
  59. package/bundled-skills/eas-simulator/SKILL.md +251 -0
  60. package/bundled-skills/eas-simulator/agents/openai.yaml +4 -0
  61. package/bundled-skills/eas-simulator/references/controllers.md +135 -0
  62. package/bundled-skills/eas-simulator/references/run-your-app.md +240 -0
  63. package/bundled-skills/eas-simulator/references/troubleshooting.md +47 -0
  64. package/bundled-skills/eas-workflows/SKILL.md +119 -0
  65. package/bundled-skills/eas-workflows/agents/openai.yaml +4 -0
  66. package/bundled-skills/eas-workflows/scripts/fetch.js +109 -0
  67. package/bundled-skills/expo-animation/LICENSE +21 -0
  68. package/bundled-skills/expo-animation/RECIPES.md +385 -0
  69. package/bundled-skills/expo-animation/SKILL.md +295 -0
  70. package/bundled-skills/expo-animation/agents/openai.yaml +4 -0
  71. package/bundled-skills/fact-check-x-unified/SKILL.md +178 -0
  72. package/bundled-skills/fact-check-x-unified/agents/openai.yaml +4 -0
  73. package/bundled-skills/fact-check-x-unified/references/acceptance-criteria.md +44 -0
  74. package/bundled-skills/fact-check-x-unified/references/contracts.md +39 -0
  75. package/bundled-skills/fact-check-x-unified/scripts/common.py +31 -0
  76. package/bundled-skills/fact-check-x-unified/scripts/fact_check_x.py +1832 -0
  77. package/bundled-skills/fact-check-x-unified/scripts/trusted_search_config.py +324 -0
  78. package/bundled-skills/fact-check-x-unified/tests/anchor_downgrade_test.py +90 -0
  79. package/bundled-skills/fact-check-x-unified/tests/multi_platform_test.py +369 -0
  80. package/bundled-skills/fact-check-x-unified/tests/smoke_test.py +740 -0
  81. package/bundled-skills/fact-check-x-unified/tests/stage_checkpoint_test.py +103 -0
  82. package/bundled-skills/fact-check-x-unified/tests/trusted_search_config_test.py +156 -0
  83. package/bundled-skills/gpt-taste/SKILL.md +8 -1
  84. package/bundled-skills/hf-cli/SKILL.md +263 -0
  85. package/bundled-skills/huggingface-community-evals/SKILL.md +228 -0
  86. package/bundled-skills/huggingface-community-evals/examples/.env.example +3 -0
  87. package/bundled-skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  88. package/bundled-skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  89. package/bundled-skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  90. package/bundled-skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  91. package/bundled-skills/huggingface-datasets/SKILL.md +130 -0
  92. package/bundled-skills/jev-social/SKILL.md +182 -0
  93. package/bundled-skills/longbridge-derivatives/SKILL.md +117 -0
  94. package/bundled-skills/longbridge-derivatives/references/option.md +36 -0
  95. package/bundled-skills/longbridge-derivatives/references/options-advanced.md +101 -0
  96. package/bundled-skills/longbridge-derivatives/references/options-pnl.md +74 -0
  97. package/bundled-skills/longbridge-derivatives/references/options-strategy.md +82 -0
  98. package/bundled-skills/longbridge-derivatives/references/options-volatility.md +70 -0
  99. package/bundled-skills/longbridge-derivatives/references/warrant.md +12 -0
  100. package/bundled-skills/longbridge-quant/SKILL.md +151 -0
  101. package/bundled-skills/longbridge-quant/references/correlation.md +51 -0
  102. package/bundled-skills/longbridge-quant/references/execution-model.md +68 -0
  103. package/bundled-skills/longbridge-quant/references/factor-research.md +95 -0
  104. package/bundled-skills/longbridge-quant/references/factor-screen.md +101 -0
  105. package/bundled-skills/longbridge-quant/references/hedging.md +136 -0
  106. package/bundled-skills/longbridge-quant/references/ml-strategy.md +77 -0
  107. package/bundled-skills/longbridge-quant/references/multifactor.md +68 -0
  108. package/bundled-skills/longbridge-quant/references/pairs-trading.md +61 -0
  109. package/bundled-skills/longbridge-quant/references/quant-cli.md +133 -0
  110. package/bundled-skills/longbridge-quant/references/quant-stats.md +150 -0
  111. package/bundled-skills/longbridge-quant/references/seasonality.md +50 -0
  112. package/bundled-skills/longbridge-quant/references/strategy-optimizer.md +68 -0
  113. package/bundled-skills/longbridge-quant/references/volatility-strategy.md +52 -0
  114. package/bundled-skills/longbridge-research/SKILL.md +187 -0
  115. package/bundled-skills/longbridge-research/references/company-profile.md +96 -0
  116. package/bundled-skills/longbridge-research/references/company-tearsheet.md +82 -0
  117. package/bundled-skills/longbridge-research/references/competitive-analysis.md +81 -0
  118. package/bundled-skills/longbridge-research/references/consensus.md +92 -0
  119. package/bundled-skills/longbridge-research/references/coverage-initiation.md +76 -0
  120. package/bundled-skills/longbridge-research/references/defi-yield.md +60 -0
  121. package/bundled-skills/longbridge-research/references/finance-calendar.md +165 -0
  122. package/bundled-skills/longbridge-research/references/financial-planning.md +77 -0
  123. package/bundled-skills/longbridge-research/references/forecast-eps.md +39 -0
  124. package/bundled-skills/longbridge-research/references/fund-holder.md +44 -0
  125. package/bundled-skills/longbridge-research/references/hkipo-analysis.md +101 -0
  126. package/bundled-skills/longbridge-research/references/industry-peers.md +46 -0
  127. package/bundled-skills/longbridge-research/references/industry-rank.md +62 -0
  128. package/bundled-skills/longbridge-research/references/insider-trades.md +48 -0
  129. package/bundled-skills/longbridge-research/references/institution-rating.md +62 -0
  130. package/bundled-skills/longbridge-research/references/investment-ideas.md +69 -0
  131. package/bundled-skills/longbridge-research/references/investment-proposal.md +95 -0
  132. package/bundled-skills/longbridge-research/references/investors.md +87 -0
  133. package/bundled-skills/longbridge-research/references/onchain.md +70 -0
  134. package/bundled-skills/longbridge-research/references/post-investment.md +76 -0
  135. package/bundled-skills/longbridge-research/references/shareholder.md +72 -0
  136. package/bundled-skills/longbridge-research/references/short-positions.md +50 -0
  137. package/bundled-skills/longbridge-research/references/short-trades.md +50 -0
  138. package/bundled-skills/longbridge-research/references/stock-research.md +61 -0
  139. package/bundled-skills/longbridge-research/references/thesis-tracker.md +64 -0
  140. package/bundled-skills/makepad-2-0-animation/SKILL.md +318 -0
  141. package/bundled-skills/makepad-2-0-animation/references/animator-reference.md +433 -0
  142. package/bundled-skills/makepad-2-0-dsl/SKILL.md +492 -0
  143. package/bundled-skills/makepad-2-0-dsl/references/dsl-syntax-reference.md +511 -0
  144. package/bundled-skills/makepad-2-0-dsl/references/extended-guide.md +56 -0
  145. package/bundled-skills/makepad-2-0-dsl/references/property-system.md +757 -0
  146. package/bundled-skills/makepad-2-0-events/SKILL.md +497 -0
  147. package/bundled-skills/makepad-2-0-events/references/event-patterns.md +802 -0
  148. package/bundled-skills/makepad-2-0-events/references/extended-guide.md +590 -0
  149. package/bundled-skills/makepad-2-0-layout/SKILL.md +499 -0
  150. package/bundled-skills/makepad-2-0-layout/references/extended-guide.md +243 -0
  151. package/bundled-skills/makepad-2-0-layout/references/layout-patterns.md +881 -0
  152. package/bundled-skills/makepad-2-0-widgets/SKILL.md +261 -0
  153. package/bundled-skills/makepad-2-0-widgets/references/widget-advanced.md +648 -0
  154. package/bundled-skills/makepad-2-0-widgets/references/widget-catalog.md +547 -0
  155. package/bundled-skills/meeting-distiller-pro/SKILL.md +120 -0
  156. package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +12 -1
  157. package/bundled-skills/monte-carlo-asset-health/SKILL.md +12 -1
  158. package/bundled-skills/monte-carlo-context-detection/SKILL.md +170 -0
  159. package/bundled-skills/monte-carlo-context-detection/references/signal-definitions.md +46 -0
  160. package/bundled-skills/remotion-captions/SKILL.md +57 -0
  161. package/bundled-skills/remotion-captions/agents/openai.yaml +7 -0
  162. package/bundled-skills/remotion-captions/assets/remotion-icon.svg +4 -0
  163. package/bundled-skills/remotion-captions/display-captions.md +190 -0
  164. package/bundled-skills/remotion-captions/import-srt-captions.md +73 -0
  165. package/bundled-skills/remotion-captions/transcribe-captions.md +70 -0
  166. package/bundled-skills/remotion-create/SKILL.md +106 -0
  167. package/bundled-skills/remotion-create/agents/openai.yaml +7 -0
  168. package/bundled-skills/remotion-create/assets/remotion-icon.svg +4 -0
  169. package/bundled-skills/remotion-create/tailwind.md +11 -0
  170. package/bundled-skills/remotion-create/video-layout.md +9 -0
  171. package/bundled-skills/remotion-docs/SKILL.md +67 -0
  172. package/bundled-skills/remotion-docs/agents/openai.yaml +7 -0
  173. package/bundled-skills/remotion-docs/assets/remotion-icon.svg +4 -0
  174. package/bundled-skills/remotion-interactivity/SKILL.md +270 -0
  175. package/bundled-skills/remotion-interactivity/agents/openai.yaml +7 -0
  176. package/bundled-skills/remotion-interactivity/assets/remotion-icon.svg +4 -0
  177. package/bundled-skills/remotion-render/SKILL.md +48 -0
  178. package/bundled-skills/remotion-render/agents/openai.yaml +7 -0
  179. package/bundled-skills/remotion-render/assets/remotion-icon.svg +4 -0
  180. package/bundled-skills/remotion-render/transparent-videos.md +106 -0
  181. package/bundled-skills/saas-pricing-strategist/SKILL.md +169 -0
  182. package/bundled-skills/score-eval/SKILL.md +35 -0
  183. package/bundled-skills/writing-guidelines/SKILL.md +60 -0
  184. package/package.json +1 -1
  185. package/skills_index.json +980 -3
@@ -0,0 +1,318 @@
1
+ ---
2
+ name: makepad-2-0-animation
3
+ description: Makepad 2.0 guidance for animation; use when building or debugging Makepad UI code.
4
+ source_repo: zhanghandong/makepad-skills
5
+ source_type: community
6
+ source: community
7
+ date_added: '2026-09-21'
8
+ risk: unknown
9
+ ---
10
+ ## When to Use
11
+ - Use when this upstream workflow matches the user's stated goal.
12
+ - Use when the task requires the procedures documented in this skill.
13
+
14
+ # Makepad 2.0 Animation Skill
15
+
16
+ > **Version:** makepad-widgets (dev branch) | **Last Updated:** 2026-03-03
17
+
18
+ ## Overview
19
+
20
+ The Animator system drives `instance()` shader variables over time, enabling hover effects, transitions, and looping animations. It uses independent animation tracks called "groups" that run simultaneously.
21
+
22
+ ## Documentation
23
+
24
+ Refer to the local files for detailed documentation:
25
+ - `./references/animator-reference.md` - Complete Animator API, play types, ease functions, examples
26
+
27
+ ## IMPORTANT: Documentation Completeness Check
28
+
29
+ **Before answering questions, Claude MUST:**
30
+
31
+ 1. Read the relevant reference file(s) listed above
32
+ 2. If file read fails or file is empty:
33
+ - Inform user: "Reference docs incomplete. Still answering based on SKILL.md patterns."
34
+ - Still answer based on SKILL.md patterns + built-in knowledge
35
+ 3. If reference file exists, incorporate its content into the answer
36
+
37
+ ---
38
+
39
+ ## Critical: Widget Animator Support
40
+
41
+ **NOT all widgets support `animator`!** Adding `animator: Animator{...}` to an unsupported widget is **silently ignored** - no error, no animation, nothing happens.
42
+
43
+ ### Widgets that SUPPORT Animator
44
+ `View`, `SolidView`, `RoundedView`, `ScrollXView`, `ScrollYView`, `ScrollXYView`, `Button`, `ButtonFlat`, `ButtonFlatter`, `CheckBox`, `Toggle`, `RadioButton`, `LinkLabel`, `TextInput`
45
+
46
+ ### Widgets that DO NOT Support Animator
47
+ `Label`, `H1`-`H4`, `P`, `TextBox`, `Image`, `Icon`, `Markdown`, `Html`, `Slider`, `DropDown`, `Splitter`, `Hr`, `Filler`
48
+
49
+ **To animate a Label:** Wrap it in a View with the animator:
50
+ ```
51
+ View{
52
+ width: Fit height: Fit
53
+ animator: Animator{
54
+ hover: {
55
+ default: @off
56
+ off: AnimatorState{ from: {all: Forward {duration: 0.15}} apply: {draw_bg: {hover: 0.0}} }
57
+ on: AnimatorState{ from: {all: Forward {duration: 0.15}} apply: {draw_bg: {hover: 1.0}} }
58
+ }
59
+ }
60
+ label := Label{text: "Animated via parent"}
61
+ }
62
+ ```
63
+
64
+ ---
65
+
66
+ ## Animator Structure
67
+
68
+ ```
69
+ animator: Animator{
70
+ <group_name>: {
71
+ default: @<state_name>
72
+ <state_name>: AnimatorState{
73
+ from: { ... }
74
+ ease: <EaseFunction>
75
+ redraw: true
76
+ apply: { ... }
77
+ }
78
+ <state_name>: AnimatorState{ ... }
79
+ }
80
+ <group_name>: { ... }
81
+ }
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Groups
87
+
88
+ Each group is an independent animation track. Common groups:
89
+
90
+ | Group | Purpose | Typical States |
91
+ |-------|---------|----------------|
92
+ | `hover` | Mouse hover in/out | `off`, `on` |
93
+ | `focus` | Keyboard focus | `off`, `on` |
94
+ | `active` | Toggled/checked state | `off`, `on` |
95
+ | `disabled` | Disabled state | `off`, `on` |
96
+ | `time` | Continuous looping | `off`, `on` |
97
+
98
+ Multiple groups animate simultaneously without interfering.
99
+
100
+ ---
101
+
102
+ ## The `from` Block
103
+
104
+ Controls transition timing. Keys are states being transitioned FROM, or `all` as catch-all.
105
+
106
+ ```
107
+ // From any state, animate over 0.2 seconds
108
+ from: {all: Forward {duration: 0.2}}
109
+
110
+ // Instant from any state
111
+ from: {all: Snap}
112
+
113
+ // Different timing depending on origin
114
+ from: {
115
+ all: Forward {duration: 0.1}
116
+ down: Forward {duration: 0.01}
117
+ }
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Play Types
123
+
124
+ | Type | Description | Example |
125
+ |------|-------------|---------|
126
+ | `Forward {duration: 0.2}` | One-shot forward | Hover transitions |
127
+ | `Snap` | Instant jump, no animation | Default state initialization |
128
+ | `Loop {duration: 1.0}` | Looping animation | Loading spinners |
129
+ | `ReverseLoop {duration: 1.0}` | Ping-pong loop | Pulsing effects |
130
+ | `BounceLoop {duration: 1.0}` | Bounce back and forth | Bouncing animations |
131
+
132
+ ---
133
+
134
+ ## Ease Functions
135
+
136
+ | Function | Description |
137
+ |----------|-------------|
138
+ | `Linear` | Constant speed |
139
+ | `InQuad` / `OutQuad` / `InOutQuad` | Quadratic easing |
140
+ | `InCubic` / `OutCubic` / `InOutCubic` | Cubic easing |
141
+ | `InQuart` / `OutQuart` / `InOutQuart` | Quartic easing |
142
+ | `InQuint` / `OutQuint` / `InOutQuint` | Quintic easing |
143
+ | `InSine` / `OutSine` / `InOutSine` | Sine easing |
144
+ | `InExp` / `OutExp` / `InOutExp` | Exponential easing |
145
+ | `InCirc` / `OutCirc` / `InOutCirc` | Circular easing |
146
+ | `InElastic` / `OutElastic` / `InOutElastic` | Elastic spring |
147
+ | `InBack` / `OutBack` / `InOutBack` | Overshoot |
148
+ | `InBounce` / `OutBounce` / `InOutBounce` | Bounce |
149
+
150
+ Usage: `ease: OutCubic` in the AnimatorState (optional, defaults to Linear).
151
+
152
+ ---
153
+
154
+ ## The `apply` Block
155
+
156
+ Target values to animate TO. Structure mirrors the widget's shader properties.
157
+
158
+ ```
159
+ // Animate single properties
160
+ apply: {
161
+ draw_bg: {hover: 1.0}
162
+ }
163
+
164
+ // Animate multiple properties
165
+ apply: {
166
+ draw_bg: {hover: 1.0 color: #f00}
167
+ draw_text: {color: #fff}
168
+ }
169
+ ```
170
+
171
+ **CRITICAL:** Only `instance()` shader variables can be animated. `uniform()` variables cannot.
172
+
173
+ ---
174
+
175
+ ## Complete Hover Button Example
176
+
177
+ ```
178
+ use mod.prelude.widgets.*
179
+
180
+ let HoverCard = RoundedView{
181
+ width: Fill height: Fit
182
+ padding: 16
183
+ new_batch: true
184
+ cursor: Hand
185
+ draw_bg +: {
186
+ instance hover: 0.0
187
+ color: mix(#2a2a3d, #3a3a5d, self.hover)
188
+ border_radius: 8.0
189
+ }
190
+ animator: Animator{
191
+ hover: {
192
+ default: @off
193
+ off: AnimatorState{
194
+ from: {all: Forward {duration: 0.15}}
195
+ apply: {draw_bg: {hover: 0.0}}
196
+ }
197
+ on: AnimatorState{
198
+ from: {all: Forward {duration: 0.15}}
199
+ apply: {draw_bg: {hover: 1.0}}
200
+ }
201
+ }
202
+ }
203
+ title := Label{text: "Hover me" draw_text.color: #fff}
204
+ }
205
+ ```
206
+
207
+ **Key points:**
208
+ - `new_batch: true` is REQUIRED for hoverable items with backgrounds
209
+ - `cursor: Hand` shows pointer cursor on hover
210
+ - `instance hover: 0.0` declares the animatable variable
211
+ - `mix(color1, color2, self.hover)` interpolates between colors
212
+
213
+ ---
214
+
215
+ ## Timeline Animation (Keyframes)
216
+
217
+ For multi-step animations use `timeline()`:
218
+
219
+ ```
220
+ animator: Animator{
221
+ time: {
222
+ default: @off
223
+ on: AnimatorState{
224
+ from: {all: Loop {duration: 2.0}}
225
+ apply: {
226
+ draw_bg: {
227
+ rotation: timeline(){
228
+ snap(0.0)
229
+ snap(6.28)
230
+ }
231
+ }
232
+ }
233
+ }
234
+ }
235
+ }
236
+ ```
237
+
238
+ ---
239
+
240
+ ## Loading Spinner Pattern
241
+
242
+ ```
243
+ let Spinner = View{
244
+ width: 40 height: 40
245
+ draw_bg +: {
246
+ instance rotation: 0.0
247
+ pixel: fn() {
248
+ let sdf = Sdf2d.viewport(self.pos * self.rect_size)
249
+ let cx = self.rect_size.x * 0.5
250
+ let cy = self.rect_size.y * 0.5
251
+ let r = min(cx, cy) * 0.8
252
+ sdf.arc(cx, cy, r, self.rotation, self.rotation + 4.5, 3.0)
253
+ sdf.stroke(#4488ff, 2.5)
254
+ return sdf.result
255
+ }
256
+ }
257
+ animator: Animator{
258
+ time: {
259
+ default: @on
260
+ on: AnimatorState{
261
+ from: {all: Loop {duration: 1.0}}
262
+ apply: {
263
+ draw_bg: {
264
+ rotation: timeline(){
265
+ snap(0.0)
266
+ snap(6.28318)
267
+ }
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Animator vs Vector Tween
279
+
280
+ Makepad has **two separate animation systems**:
281
+
282
+ | Feature | `Animator` (this skill) | `Tween` (see makepad-2.0-vector) |
283
+ |---------|------------------------|----------------------------------|
284
+ | Target | Widget shader `instance` vars | SVG shape properties (fill, cx, opacity...) |
285
+ | Syntax | `animator: Animator{...}` block | Property value: `opacity:Tween{...}` |
286
+ | Triggers | State transitions (hover, focus) | Automatic on render |
287
+ | Loop | `Loop {duration: 1.0}` in `from` | `loop_:true` (bool, NOT string!) |
288
+ | Use for | UI interactions (hover, click) | SVG/Vector graphic animations |
289
+
290
+ **Use Animator for:** Button hover effects, toggle states, loading spinners (shader-based)
291
+ **Use Vector Tween for:** SVG path animations, pulsing indicators, moving dots, color transitions
292
+
293
+ See the `makepad-2.0-vector` skill for Tween details.
294
+
295
+ ---
296
+
297
+ ## Best Practices
298
+
299
+ 1. **Always add `new_batch: true`** to Views with backgrounds that have hover animations
300
+ 2. **Use `instance` variables** for anything you want to animate
301
+ 3. **Match group names** to semantic purposes (hover, focus, active)
302
+ 4. **Use Forward for transitions**, Snap for instant state changes
303
+ 5. **Set `default: @off`** for states that start inactive
304
+ 6. **Label cannot animate** - wrap in View if you need animation on text
305
+ 7. **Keep durations short** (0.1-0.3s) for hover, longer (0.5-2.0s) for time-based
306
+
307
+
308
+ ## Examples
309
+
310
+ ```text
311
+ User: Apply this skill to my current task.
312
+ Assistant: Follow the workflow in this skill, cite limitations, and ask before risky steps.
313
+ ```
314
+
315
+ ## Limitations
316
+
317
+ - Imported upstream skill; verify credentials, permissions, and safety boundaries before execution.
318
+ - Does not replace environment-specific validation, testing, or maintainer review.