--- name: ui5-best-practices-accessibility description: | This skill should be used when the user asks to audit, fix, check, review, or improve accessibility, a11y, ARIA, WCAG compliance, landmarks, labeling, heading levels, focus handling, keyboard navigation, keyboard shortcuts, screen reader support, invisible messaging, reading order, or touch / target size in UI5 application files (views, fragments, controllers). Also use when the user creates a new UI5 view, fragment, or controller and wants it to be accessible, or asks whether a specific control (Dialog, Table, Panel, etc.) meets accessibility requirements. Keywords: accessibility, a11y, ARIA, WCAG, screen reader, NVDA, JAWS, VoiceOver, landmark, landmarkInfo, accessibleRole, ariaLabelledBy, ariaDescribedBy, labelFor, tooltip, alt text, decorative, heading level, initialFocus, F6, fast nav, fastnavgroup, tabindex, CommandExecution, keyboard shortcut, InvisibleMessage, announce, reading order, reactiveAreaMode, target size. --- # Accessibility Review Accessibility in UI5 is incorporated in two levels: framework and application. This review supports what application developers must still provide explicitly to improve the accessibility of their application. ## Step 1 — Find the files If the user's request lists specific files, review only those. Otherwise, discover all app source files automatically: ```! find . \( -name "*.view.xml" -o -name "*.fragment.xml" -o -name "*.controller.js" \) \ -not -path "*/node_modules/*" \ -not -path "*/dist/*" \ -not -path "*/test/*" \ -not -path "*/resources/*" \ | sort ``` If more than 15 files are found, ask the user to choose: - Review everything (may take a moment) - Focus on a specific folder or area Read each file in scope. ## Step 2 — Review Check the code against the eight topics below. For each topic where you find a gap, **read the corresponding topic file before writing the fix** — it contains the correct API pattern and wrong/correct examples. | # | Topic | What to detect | Topic file | |---|-------|---------------|------------| | 1 | Landmarks | `DynamicPage`, `Page`, `Panel`, `ObjectPage`, `FlexibleColumnLayout` missing `landmarkInfo` or `accessibleRole`; landmark role set without its corresponding label (e.g. `rootRole` without `rootLabel`) | `references/landmark.md` | | 2 | Labeling | Inputs without `