Ios Accessibility Audit Skill banner
ramzesenok ramzesenok

Ios Accessibility Audit Skill

Security community intermediate

Description

A Skill that will help agents audit your app or concrete features against accessibility norms and [WCAG 2.2](https://www.w3.org/TR/WCAG22/) in particular.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

iOS-Accessibility-Audit-Skill

A Skill that will help agents audit your app or concrete features against accessibility norms and [WCAG 2.2](https://www.w3.org/TR/WCAG22/) in particular.

  • Focuses on iOS and SwiftUI
  • Provides an audit, not fixes
  • Suggests follow-up human checks to perform

Audit includes a problem, WCAG paragraph and a suggested solution with a code snippet. All in a descending priority markdown list. Looks like this:

Findings - P1

1. Gesture-based task rows do not expose reliable control semantics

**What:** Likely issue (confidence: high). Task rows are interactive via .onTapGesture / .onLongPressGesture on a non-control container, so role/action/state exposure is not reliably equivalent to a native control for VoiceOver, Switch Control, or keyboard-style navigation.

**Where:** HistoryView.swift

**Fix suggestion:** Use a semantic Button for toggle, expose done/not-done as accessibility value, and provide copy as an explicit accessibility action.

**WCAG:** 4.1.2 - Name, Role, Value (A); 2.1.1 - Keyboard (A)

ForEach(todosForDate) { todo in
    let title = todo.title ?? ""

    Button {
        if isTogglable { toggleTodo(todo) }
    } label: {
        HistoryTodoView(title: title, isDone: todo.isDone == true)
            .frame(maxWidth: .infinity, alignment: .leading)
    }
    .buttonStyle(.plain)
    .contentShape(.rect)
    .accessibilityLabel(title)
    .accessibilityValue(todo.isDone == true ? "Done" : "Not done")
    .accessibilityHint(isTogglable ? "Double tap to toggle completion." : "Read-only for this date.")
    .accessibilityAction(named: Text("Copy title")) {
        UIPasteboard.general.string = title
        toastToShow = Toast(text: "Copied to clipboard", style: .info)
    }
}

2. Copy feedback is shown visually/haptically but not announced as a status message

...