maui-animations
.NET MAUI view animations, custom animations, easing functions, rotation, scale, translation, and fade effects. USE FOR: "animate…
Guide for making .NET MAUI apps accessible — screen reader support via SemanticProperties, heading levels, AutomationProperties visibility control, programmatic focus and announcements, and platform-specific gotchas for TalkBack, VoiceOver, and Narrator. USE FOR: "add
$ npx -y skills add davidortinau/maui-skills --skill maui-accessibility --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/maui-accessibilityContext preview
The summary Claude sees to decide when to auto-load this skill.
Guide for making .NET MAUI apps accessible — screen reader support via SemanticProperties, heading levels, AutomationProperties visibility control, programmatic focus and announcements, and platform-specific gotchas for TalkBack, VoiceOver, and Narrator. USE FOR: "add
name: maui-accessibility description: > Guide for making .NET MAUI apps accessible — screen reader support via SemanticProperties, heading levels, AutomationProperties visibility control, programmatic focus and announcements, and platform-specific gotchas for TalkBack, VoiceOver, and Narrator. USE FOR: "add accessibility", "screen reader support", "SemanticProperties", "AutomationProperties", "TalkBack", "VoiceOver", "Narrator", "accessible MAUI", "heading levels", "semantic description", "announce to screen reader", "accessibility audit". DO NOT USE FOR: general UI layout (use maui-collectionview or maui-shell-navigation), animations (use maui-animations), or gestures (use maui-gestures).
Setting `SemanticProperties.Description` on a `Label` **overrides** the `Text` property for screen readers. The label may be read twice or behave unexpectedly.
<!-- ❌ Stops Text from being read naturally -->
<Label Text="Welcome"
SemanticProperties.Description="Welcome" />
<!-- ✅ Screen reader reads Text automatically -->
<Label Text="Welcome" />On Android, setting `SemanticProperties.Description` on `Entry` or `Editor` causes TalkBack to lose "double tap to edit" action hints.
<!-- ❌ Breaks TalkBack on Android --> <Entry SemanticProperties.Description="Email address" /> <!-- ✅ Use Placeholder for context instead --> <Entry Placeholder="Email address" />
On iOS/VoiceOver, setting `SemanticProperties.Description` on a layout makes the entire container a single accessible element — child elements become **unreachable**.
<!-- ❌ Children invisible to VoiceOver -->
<HorizontalStackLayout SemanticProperties.Description="User info">
<Label Text="Name:" />
<Label Text="Alice" />
</HorizontalStackLayout>
<!-- ✅ Let children be individually focusable -->
<HorizontalStackLayout>
<Label Text="Name:" />
<Label Text="Alice" />
</HorizontalStackLayout>On Android, `SemanticProperties.Hint` and `Entry.Placeholder` map to the same Android attribute (`contentDescription` / `hint`). Setting both causes one to override the other. **Choose one.**
"not heading". All levels are treated identically.
Use heading levels for semantic correctness — just know the hierarchy only renders on Windows.
When auditing or retrofitting a page:
1. **Images**: Add `SemanticProperties.Description` to meaningful images. Set `AutomationProperties.IsInAccessibleTree="false"` on decorative ones. 2. **Buttons/Controls**: Ensure icon-only buttons have `Description`. Text buttons generally don't need it. 3. **Entries/Editors**: Use `Placeholder` for context. Add `Hint` only if extra instruction is needed. **Avoid `Description`** (Android breakage). 4. **Labels**: Do **not** add `Description` — let `Text` speak for itself. Add `HeadingLevel` to section headers. 5. **Headings**: Mark page title as `Level1`, section titles as `Level2`, etc. 6. **Grouping**: Avoid `Description` on layout containers (iOS breakage). Use `ExcludedWithChildren` to hide decorative groups. 7. **Dynamic content**: Call `SemanticScreenReader.Announce` for status changes. Use `SetSemanticFocus` after navigation or error display. 8. **Tab order**: Set `TabIndex` on interactive controls for logical order. 9. **Test**: Run TalkBack (Android), VoiceOver (iOS/Mac), and Narrator (Windows) to verify reading order and actions.
A collection of 41 skills for .NET MAUI development, UI/UX design reasoning, and Xamarin migration, designed for use with GitHub Copilot CLI and Claude Code.
.NET MAUI view animations, custom animations, easing functions, rotation, scale, translation, and fade effects. USE FOR: "animate…
.NET MAUI app icon configuration, splash screen setup, SVG to PNG conversion at build time, composed/adaptive icons, and…
.NET MAUI app lifecycle guidance covering the four app states (not running, running, deactivated, stopped), cross-platform Window…
Guide for .NET MAUI apps consuming .NET Aspire-hosted backend services. Covers AppHost configuration, service discovery for…
Add authentication to .NET MAUI apps. Covers WebAuthenticator for generic OAuth 2.0 / social login, and MSAL.NET for Microsoft…
Guidance for implementing CollectionView in .NET MAUI apps — data display, layouts (list & grid), selection, grouping, scrolling,…