About hig-components-controls
A skill for Apple interface design tasks that applies Apple HIG guidance to selection and input controls. It covers choosing controls, managing state, validation, and VoiceOver accessibility.
Key features
- 01Compare controls and explain recommendations
- 02Guide state display and change timing
- 03Describe validation and error handling
- 04Cover VoiceOver labels and hints
- 05Index references for control types
Use cases
- 01Choose a control for a fixed set of options
- 02Plan form input and state commits
- 03Review VoiceOver support for controls
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill hig-components-controlsAfter installing, type/hig-components-controlsin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/gauges.mdlabels.mdcombo-boxes.mdsliders.mdsteppers.mdpickers.mdrating-indicators.mdcontrols.mdtext-fields.mdtext-views.mdtoken-fields.mdvirtual-keyboards.mdtoggles.mdsegmented-controls.mdDetails
From the project READMEApple HIG: Selection and Input Controls
Check for .claude/apple-design-context.md before asking questions. Use existing context and only ask for information not already covered.
Key Principles
-
Clear current state. Users must always see what is selected. Toggles show on/off, segmented controls highlight the active segment, pickers display the current selection.
-
Prefer standard system controls. Built-in controls provide consistency and accessibility. Custom controls introduce a learning curve and may break assistive features.
-
Toggles for binary states. On or off. In Settings-style screens, changes take effect immediately. In modal forms, changes commit on confirmation.
-
Segmented controls for closely related choices. Usually a small set; macOS also supports multiple selection and momentary actions. Keep a control’s selection/action behavior consistent.
-
Sliders for continuous values. When precise numeric input is not critical. Provide min/max labels or icons for range endpoints.
-
Pickers for long option lists. Too many options for a segmented control. Works well for dates, times, structured data.
-
Steppers for small, precise adjustments. Increment/decrement in fixed steps. Display current value next to the stepper with reasonable min/max bounds.
-
Text fields for short, single-line input. Text views for multi-line. Configure keyboard type to match expected input (email, URL, number).
-
Combo boxes: text input + selection list. macOS. Type a value or choose from a predefined list when custom values are valid.
-
Token fields: discrete values as visual tokens. macOS. For email recipients, tags, or collections of discrete items.
-
Gauges and rating indicators display values. Gauges show a value within a range. Rating indicators show ratings (often stars). Display-only; use interactive variants for input.
Reference Index
| Reference | Topic | Key content |
|---|---|---|
| controls.md | System controls | Control Center, Lock Screen and Action button controls |
| toggles.md | Toggles | On/off, immediate effect |
| segmented-controls.md | Segmented controls | 2-5 options, equal weight |
| sliders.md | Sliders | Continuous range, min/max labels |
| steppers.md | Steppers | Fixed steps, bounded values |
| pickers.md | Pickers | Dates, times, long option sets |
| combo-boxes.md | Combo boxes | macOS, type or select, custom values |
| text-fields.md | Text fields | Short input, keyboard types, validation |
| text-views.md | Text views | Multi-line, comments, descriptions |
| labels.md | Labels | Placement, VoiceOver support |
| token-fields.md | Token fields | macOS, chips, tags, recipients |
| virtual-keyboards.md | Virtual keyboards | Email, URL, number keyboard types |
| rating-indicators.md | Rating indicators | Star ratings, display-only |
| gauges.md | Gauges | Level indicators, range display |
Output Format
- Control recommendation with rationale and why alternatives are less suitable.
- State management -- how the control communicates current state and whether changes apply immediately or on confirmation.
- Validation approach -- when to show errors and how to communicate rules.
- Accessibility -- labels, traits, hints for VoiceOver.
Questions to Ask
- What type of data? (Boolean, choice from fixed set, numeric, free-form text?)
- How many options?
- Which platforms? (Combo boxes and token fields are macOS-only)
- Settings screen or inline form?
Related Skills
- hig-components-menus -- Buttons and pop-up buttons complementing selection controls
- hig-components-dialogs -- Sheets and popovers containing forms
- hig-components-search -- Search fields sharing text input patterns
- hig-inputs -- Keyboard, pointer, gesture interactions with controls
- hig-foundations -- Typography, color, layout for control styling
Built by Raintree Technology · More developer tools
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Example
User request:
Choose between a picker and segmented control for five related filters in an iPhone app, and explain state and VoiceOver behavior.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Reference scope
Bundled Apple documentation is a static snapshot; check the linked primary page and target OS/API availability before platform-specific implementation. The controls.md page concerns WidgetKit system controls, not every in-app input control. The rating-indicator reference describes macOS NSLevelIndicator, which can be editable; a custom rating UI on other platforms is a separate design. Visual labels do not replace accessibility names. Keyboard type and formatters assist input but do not replace locale-aware validation, and secure fields do not encrypt stored/transmitted data. No Apple runtime or image-asset availability was tested here.