AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Avalonia Pro Max/motion

skill-linuxdevel-avalonia-skills-motion · by linuxdevel

Use when adding animation, hover/press feedback, page transitions, list-item entrance, or honoring reduced-motion in an Avalonia app. Covers Transitions, Animation, KeyFrame, easing, IterationCount, and shared-element patterns.

No reviews yet
0 installs
38 views
0.0% view→install

Install

$ agentstack add skill-linuxdevel-avalonia-skills-motion

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-linuxdevel-avalonia-skills-motion)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
5mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Avalonia Pro Max/motion? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Motion in Avalonia

Two complementary systems:

| System | Purpose | When | |---|---|---| | Transitions | Animate property changes automatically when value changes | Hover/press, layout, color, size | | Animation (Style.Animations) | Time-based keyframed animation | Skeleton shimmer, indeterminate spinner, attention pulse | | PageTransition (FluentAvalonia / TabControl) | Whole-view transitions | Frame navigation, tab swap |

Target durations:

| Type | Duration | Easing | |---|---|---| | Micro (hover, press) | 100–150 ms | LinearEasing or QuadraticEaseOut | | Standard (panel slide, fade) | 200–300 ms | CubicEaseOut | | Large (page transition) | 300–400 ms | ExponentialEaseOut | | Exit | ~70% of enter | Same family |


Transitions on a Style


  
  
    
      
      
      
      
    
  
  

  
  

Available *Transition types: DoubleTransition, BrushTransition, ColorTransition, ThicknessTransition, CornerRadiusTransition, TransformOperationsTransition, BoxShadowsTransition, IntegerTransition, SizeTransition, PointTransition, VectorTransition.

Rule: Animate only Opacity, RenderTransform, Background/Foreground/BorderBrush, and BoxShadow. Avoid Width/Height/Margin — these trigger layout passes and jank.


Built-in Easings

LinearEasing, BackEaseIn/Out/InOut, BounceEaseIn/Out/InOut, CircularEaseIn/Out/InOut, CubicEaseIn/Out/InOut, ElasticEaseIn/Out/InOut, ExponentialEaseIn/Out/InOut, QuadraticEaseIn/Out/InOut, QuarticEaseIn/Out/InOut, QuinticEaseIn/Out/InOut, SineEaseIn/Out/InOut.

Defaults if unspecified: linear. Always set an easing for UI feel.

Recommended:

  • Enter / appear → CubicEaseOut or ExponentialEaseOut
  • Exit / disappear → CubicEaseIn
  • Spring-y emphasis → BackEaseOut (subtle, ≤300 ms)

Press Feedback (Scale-on-Press)


  
  
    
      
    
  

  

RenderTransformOrigin="0.5,0.5" is the default — leave it.


Keyframe Animation


  
    
      
        
        
      
      
        
        
      
      
        
        
      
    
  

Spinner:


  
    
      
      
    
  

Page / View Transitions

TabControl

Built-in transitions: CrossFade, PageSlide (with Direction and Orientation), CompositePageTransition.

TransitioningContentControl (for ContentControl-based view-switching)


  
    
      
      
    
  

FluentAvalonia Frame

ContentFrame.Navigate(typeof(DashboardPage),
    null,
    new SlideNavigationTransitionInfo
    {
        Effect = SlideNavigationTransitionEffect.FromRight
    });

List Item Entrance (Stagger)

Avalonia doesn't have built-in list-item stagger. Two approaches:

1. Animate on ItemContainer load


  
    
      
        
          
            
            
          
          
            
            
          
        
      
    
  

2. Manual stagger — drive Animation.Delay per item from the ViewModel using indexed offsets.


Reduced Motion

Avalonia exposes the OS preference via RendererDiagnostics-ish APIs and platform-specific settings. Pragmatic approach: expose a ReducedMotion setting in your app and bind transition durations to it.

public class MotionSettings : INotifyPropertyChanged
{
    public bool ReducedMotion { get; set; }
    public TimeSpan Standard => ReducedMotion ? TimeSpan.Zero : TimeSpan.FromMilliseconds(200);
    public TimeSpan Fast     => ReducedMotion ? TimeSpan.Zero : TimeSpan.FromMilliseconds(100);
}

Bind in XAML:

Or, in code-behind, swap the Transitions collection at app start when reduced-motion is enabled.

Detect Windows preference:

SystemParameters.ClientAreaAnimation == false  // (P/Invoke; check Avalonia API for Linux/macOS)

Modal / Sheet Motion

Sheets should slide+fade in from their trigger direction:


  
  
  
    
      
      
    
  

  
  

Toggle Classes.open="{Binding IsOpen}".


Shared Element-Style Transitions

True shared-element transitions are not built-in. Use:

  1. RenderTransform interpolation on both source and destination — animate scale/translation between known positions.
  2. LayoutTransformControl for size-based transitions without re-layout cost.
  3. For "magic move" lists, consider ItemsRepeater + custom container animation.

Performance Rules

  • Animate transform + opacity + brush only.
  • Never animate Width, Height, Margin, Padding, Grid.Column*.
  • Cap concurrent animations per view: 2–3 max for most screens.
  • For 60fps, total animation cost per frame < 16 ms. Profile with --renderer skia --fps.
  • IterationCount="Infinite" only on small elements (spinner, badge dot).
  • Disable expensive transitions on battery (Mobile / WASM).

Common Mistakes

  • Animating Width/Height for "smooth resize" — use LayoutTransformControl + ScaleTransform instead.
  • No easing (defaults to linear) — UI feels mechanical.
  • 300 ms fade for press feedback — too slow; press should react ≤100 ms.
  • Same enter and exit duration — exit should be ~70%.
  • Forgetting RenderTransform="none" initial value — first transition snaps from null.
  • Looping decorative animation that pulls eye from content — limits cognition.
  • No reduced-motion path — accessibility regression for vestibular-disorder users.
  • Animating during virtualization scroll — every recycled container re-runs entrance animation. Disable on virtualized lists or mark as one-shot.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.