Token导航 LogoToken导航TokenDH.com
开发规范需要联网github未标认证来源可访问许可证需确认审计通过

watchos-design-guidelines手表设计指南

Agent Skill

用于辅助界面设计、视觉规范、排版、配色、布局和交互体验优化。它适合让 Agent 根据产品场景整理页面结构、生成 UI 方案、检查视觉一致性或改进组件层级。使用时需要结合现有品牌、设计系统和用户任务,不应只堆装饰元素;涉及真实页面改动时,应通过截图或浏览器预览检查文本溢出、对齐和响应式表现。

总安装

710

周安装

29

GitHub Stars

26

下载量

230
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:watchos-design-guidelines(手表设计指南)
来源仓库:https://github.com/dirnbauer/webconsulting-skills
仓库路径:skills/watchos-design-guidelines
安装命令:
npx skills add https://github.com/dirnbauer/webconsulting-skills --skill watchos-design-guidelines
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/dirnbauer/webconsulting-skills --skill watchos-design-guidelines

简介

用于辅助 Apple Watch 界面设计、视觉规范和交互体验优化。

  • 适合整理页面结构、生成 UI 方案或检查视觉一致性,强调快速认知和简洁操作。
  • 使用时需结合品牌与设计系统,避免冗余装饰;涉及页面改动应通过截图或预览验证表现。
  • 安装前请确认权限范围和维护状态,注意可能触发文件读写和网络请求。
  • watchos-design-guidelines 属于开发规范类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

watchOS Design Guidelines

Apple Watch is a personal, glanceable device worn on the wrist. Interactions are measured in seconds, not minutes. Every design decision must prioritize speed of comprehension and brevity of interaction.


1. Glanceable Design (CRITICAL)

The defining constraint of watchOS. If a user cannot extract the key information within 2 seconds of raising their wrist, the design has failed.

Rules

  • W-GL-01: Primary information must be visible without scrolling. The first screen is the only guaranteed screen.
  • W-GL-02: Target interaction sessions of 5 seconds or less. Design for raise-glance-lower.
  • W-GL-03: Use large, high-contrast text. Minimum effective body text is 16pt (system font). Titles should be 18pt or larger.
  • W-GL-04: Limit text to essential content. Truncate or abbreviate aggressively. Use SF Symbols instead of text labels where meaning is unambiguous.
  • W-GL-05: Respect wrist-down time. When the wrist lowers, the app enters an inactive state. Do not assume continuous user attention.
  • W-GL-06: Prioritize a single piece of information per screen. If showing multiple data points, establish clear visual hierarchy with size, weight, and color.

Screen Dimensions Reference

DeviceScreen WidthScreen HeightCorner Radius
41mm (Series 9)176px215px36px
45mm (Series 9)198px242px39px
42mm (Series 10)180px220px37px
46mm (Series 10)205px251px40px
49mm (Ultra 2)205px251px40px

Anti-Patterns

  • Walls of text requiring scroll to understand context
  • Small, dense data tables
  • Requiring multiple taps before showing useful information
  • Replicating an iPhone screen layout on Watch

2. Digital Crown (HIGH)

The Digital Crown is the primary physical input for scrolling and precise value selection. It provides haptic feedback and should feel purposeful.

Rules

  • W-DC-01: Use the Digital Crown as the primary scroll mechanism for vertical content. Do not rely solely on swipe gestures for scrolling.
  • W-DC-02: For value pickers (time, quantity, sliders), bind the Crown to precise adjustments with haptic detents at each discrete value.
  • W-DC-03: Do not override or conflict with system Crown behaviors. The system uses the Crown for volume control during media playback, scrolling in system UI, and Time Travel in complications.
  • W-DC-04: Provide visual feedback synchronized with Crown rotation. The UI must respond frame-by-frame to Crown input with no perceptible lag.
  • W-DC-05: Update on each Crown increment. Values, selection, and highlight states should move with each detent. Do not debounce Crown input until the gesture ends.

Correct — Crown binding with haptic detents:

struct VolumePickerView: View {
    @State private var volume: Double = 0.5

    var body: some View {
        VStack {
            Text("\(Int(volume * 100))%")
                .font(.title.bold())
            Image(systemName: "speaker.wave.3")
        }
        .focusable()
        .digitalCrownRotation(
            $volume,
            from: 0.0,
            through: 1.0,
            by: 0.05,
            sensitivity: .medium,
            isContinuous: false,
            isHapticFeedbackEnabled: true
        )
    }
}

Incorrect — ignoring the Crown and forcing touch-only interaction:

struct VolumePickerView: View {
    @State private var volume: Double = 0.5

    var body: some View {
        Slider(value: $volume)
        // No .digitalCrownRotation — Crown input is ignored
        // Users must use touch-only, which is imprecise and frustrating on Watch
    }
}

Anti-Patterns

  • Ignoring the Crown and forcing all interaction through touch
  • Custom Crown behaviors that conflict with system expectations
  • Missing haptic feedback on discrete value changes
  • Laggy or batched responses to Crown rotation

3. Navigation (HIGH)

Watch navigation must be shallow and predictable. Users should never feel lost or unable to return to a known state.

Rules

  • W-NV-01: Use vertical page scrolling as the default content navigation pattern. Pages scroll top-to-bottom with the Digital Crown.
  • W-NV-02: Use TabView for top-level sections (max 5 tabs). Swipe horizontally between tabs. Each tab is a distinct functional area.
  • W-NV-03: Use NavigationStack for hierarchical drill-down. Limit hierarchy to 2-3 levels maximum. Every pushed view must have a back button (provided automatically by the system).
  • W-NV-04: Avoid modal sheets for primary flows. Modals should be reserved for focused, single-purpose tasks (e.g., confirmation, quick input).
  • W-NV-05: The app's most important action should be reachable within 1 tap from launch. Do not bury primary functionality behind menus or navigation.

Navigation Pattern Reference

PatternUse CaseGesture
Vertical scrollLong-form content within a single viewDigital Crown / swipe up-down
TabView (horizontal pages)Top-level app sectionsSwipe left-right
NavigationStack (push/pop)Hierarchical drill-downTap to push, swipe right or back button to pop
Modal sheetConfirmation, focused inputPresented programmatically, dismiss via button or swipe down

Anti-Patterns

  • Deep navigation hierarchies (4+ levels)
  • Hamburger menus or hidden navigation drawers
  • Tab bars with more than 5 items
  • Forcing users to scroll through long lists to find key actions

4. Complications (HIGH)

Complications are the most visible surface of a Watch app. They live on the watch face and provide at-a-glance data without launching the app.

Rules

  • W-CP-01: Support multiple complication families to maximize watch face compatibility. At minimum support accessoryCircular, accessoryCorner, and accessoryRectangular (WidgetKit, watchOS 9+).
  • W-CP-02: Provide both tinted (single-color) and full-color variants. Tinted complications must remain legible when the system applies a single tint color.
  • W-CP-03: Update complications via TimelineProvider. Provide future timeline entries when data is predictable (e.g., next calendar event, weather forecast). Keep data fresh -- stale complications erode trust.
  • W-CP-04: Complication content must be meaningful without context. A user glancing at their watch face should immediately understand the data (e.g., "72F" not "72").
  • W-CP-05: Tapping a complication must launch the app to a relevant context, not just the app's root view.

Correct — WidgetKit TimelineProvider for an accessoryCircular complication:

struct StepCountProvider: TimelineProvider {
    func placeholder(in context: Context) -> StepEntry {
        StepEntry(date: Date(), steps: 5000)
    }

    func getSnapshot(in context: Context, completion: @escaping (StepEntry) -> Void) {
        completion(StepEntry(date: Date(), steps: HealthStore.shared.todaySteps))
    }

    func getTimeline(in context: Context, completion: @escaping (Timeline<StepEntry>) -> Void) {
        let entry = StepEntry(date: Date(), steps: HealthStore.shared.todaySteps)
        // Refresh in 15 minutes
        let nextUpdate = Calendar.current.date(byAdding: .minute, value: 15, to: Date())!
        completion(Timeline(entries: [entry], policy: .after(nextUpdate)))
    }
}

struct StepCountComplicationView: View {
    let entry: StepEntry

    var body: some View {
        Gauge(value: Double(entry.steps), in: 0...10000) {
            Image(systemName: "figure.walk")
        } currentValueLabel: {
            Text("\(entry.steps / 1000)k")
        }
        .gaugeStyle(.accessoryCircular)
    }
}

Complication Family Reference

Use WidgetFamily values:

FamilyShapeTypical Content
accessoryCircularSmall circleSingle value, icon, or gauge
accessoryCornerCurved, top cornersGauge with label, or text with icon
accessoryRectangularWide rectangleMulti-line text, chart, or detailed view
accessoryInlineText rowShort label or value

Anti-Patterns

  • Supporting only one complication family
  • Stale data that does not update for hours
  • Complication tap landing on generic app home instead of relevant content
  • Illegible complications in tinted mode (insufficient contrast)

5. Always On Display (MEDIUM)

When the user's wrist is down, watchOS enters an Always On state showing a dimmed version of the current app. This must be handled intentionally.

Rules

  • W-AO-01: Reduce visual complexity in the Always On state. Remove animations, secondary UI elements, and non-essential detail. Keep only the most critical information visible.
  • W-AO-02: Hide sensitive or private data (e.g., message content, health details, financial information) in the dimmed state. Use redacted or placeholder content.
  • W-AO-03: Reduce update frequency in Always On. Update the display no more than once per minute. Use TimelineView with a .everyMinute schedule for time-sensitive content.
  • W-AO-04: Use the system-provided dimming behaviors. Do not implement custom dimming. The system automatically reduces brightness and can apply a tint. Ensure your content remains legible at reduced brightness.
  • W-AO-05: Test both active and Always On states. The transition between states must feel seamless -- layout should not shift or jump when the wrist raises.

Anti-Patterns

  • Showing identical UI in active and Always On states (wastes battery, may expose private data)
  • Animations or frequent updates in Always On state
  • Layout shifts when transitioning between active and dimmed states
  • Forgetting to redact sensitive information

6. Workouts & Health (MEDIUM)

Workout and health apps have unique requirements: extended sessions, live metrics, and body-awareness features.

Rules

  • W-WK-01: Display live workout metrics in large, high-contrast text. Heart rate, duration, distance, and calories should be readable mid-exercise without stopping.
  • W-WK-02: Use haptic feedback for milestones (lap completed, goal reached, heart rate zone change). Haptics are essential because users may not be looking at the screen during exercise.
  • W-WK-03: Support auto-pause detection for relevant workout types (running, walking). Users expect the workout to pause when they stop moving and resume when they start again.
  • W-WK-04: Enable WaterLock during swimming workouts. This disables the touchscreen to prevent water interaction. The Digital Crown is used to eject water and unlock.
  • W-WK-05: Show a clear summary screen at workout completion with key metrics. Allow the user to save or discard the workout with a single action.

Anti-Patterns

  • Small metric text that requires squinting or stopping to read
  • Missing haptic feedback for important workout events
  • No auto-pause support for outdoor workouts
  • Requiring complex interaction to end or save a workout

7. Notifications (MEDIUM)

Watch notifications must be brief and actionable. The user's wrist is raised for only a moment.

Rules

  • W-NT-01: Design Short Look notifications with only a title, app icon, and app name. This is what the user sees on initial wrist raise. It must communicate the notification's purpose instantly.
  • W-NT-02: Design Long Look notifications with full content and up to 4 action buttons. The user reaches Long Look by continuing to look at the notification. Include the most useful actions inline.
  • W-NT-03: Use appropriate haptic notification types. Match the urgency: .notification for standard alerts, .directionUp for positive events, .directionDown for negative events, .success/.failure/.retry for outcomes.
  • W-NT-04: Do not over-notify. Excessive notifications cause users to disable them entirely. Batch non-urgent updates. Reserve Watch notifications for time-sensitive or actionable information.

Haptic Type Reference

HapticUse Case
.notificationGeneral alerts
.directionUpPositive event (goal reached, stock up)
.directionDownNegative event (stock down, weather warning)
.successAction completed successfully
.failureAction failed
.retryTry again prompt
.startActivity beginning
.stopActivity ending
.clickDiscrete selection (Crown detent, picker)

Anti-Patterns

  • Sending every iPhone notification to the Watch
  • Notifications without actionable buttons (forcing app launch)
  • Using the same haptic type for all notifications regardless of content
  • Long notification text that requires extensive scrolling

8. Accessibility (CRITICAL)

Apple Watch supports VoiceOver and other assistive technologies. Complications and app UI must be accessible.

Rules

  • W-AC-01: Every interactive element must have a meaningful accessibility label. SF Symbol names are not sufficient labels. Use .accessibilityLabel() on image-only buttons.
  • W-AC-02: VoiceOver must be able to navigate all app content. Do not hide essential information from the accessibility hierarchy.
  • W-AC-03: Provide accessibility values and hints for custom controls (e.g., gauges, progress indicators, custom pickers). Use .accessibilityValue() and .accessibilityHint().
  • W-AC-04: Respect Reduce Motion. Disable or substitute decorative animations when enabled. Use @Environment(\.accessibilityReduceMotion).
  • W-AC-05: Respond to Bold Text. When the user enables Bold Text, custom text must adapt. SwiftUI dynamic type handles this automatically; custom-drawn text must check @Environment(\.legibilityWeight).
  • W-AC-06: Respond to Increase Contrast. When the user enables Increase Contrast, custom colors must provide higher-contrast variants. Use @Environment(\.colorSchemeContrast) to detect the user's preference.

Correct:

Button(action: startWorkout) {
    Image(systemName: "play.fill")
}
.accessibilityLabel("Start workout")

Incorrect:

Button(action: startWorkout) {
    Image(systemName: "play.fill")
}
// VoiceOver reads "play" — not clear what action this performs

Anti-Patterns

  • Image-only buttons with no accessibility label
  • Custom controls with no accessibility value or hint
  • Animations that do not respect Reduce Motion
  • Hiding content from the accessibility tree that sighted users can see

Evaluation Checklist

Use this checklist when reviewing a watchOS design or implementation.

Glanceability

  • Can the user understand the primary content within 2 seconds?
  • Is the most important information visible without scrolling?
  • Is body text at least 16pt with sufficient contrast?
  • Are interactions completable in under 5 seconds?

Digital Crown

  • Does the Crown scroll vertical content?
  • Do value pickers provide haptic detents?
  • Are there no conflicts with system Crown behaviors?

Navigation

  • Is the primary action reachable within 1 tap from launch?
  • Is the navigation hierarchy 3 levels or fewer?
  • Does every pushed view have a back button?
  • Are top-level sections organized in a TabView (if applicable)?

Complications

  • Are multiple complication families supported?
  • Do complications work in both tinted and full-color modes?
  • Is complication data updated via TimelineProvider?
  • Does tapping a complication open relevant context?

Always On

  • Is sensitive data hidden in the dimmed state?
  • Is visual complexity reduced when inactive?
  • Is the update frequency limited to once per minute or less?
  • Is the transition between active and dimmed seamless (no layout shift)?

Workouts

  • Are live metrics displayed in large, high-contrast text?
  • Are haptics used for milestones?
  • Is auto-pause supported for applicable workout types?
  • Is the workout summary accessible with a single action?

Notifications

  • Is the Short Look meaningful (title + icon)?
  • Does the Long Look include inline actions?
  • Are haptic types matched to notification urgency?
  • Is notification frequency appropriate (not excessive)?

Accessibility

  • All interactive elements have meaningful accessibility labels (no raw SF Symbol names)
  • Custom controls provide accessibility values and hints via .accessibilityValue() / .accessibilityHint()
  • VoiceOver can navigate all app content — no essential content hidden from the accessibility tree
  • Animations respect Reduce Motion (@Environment(\.accessibilityReduceMotion))
  • Bold Text preference is respected (SwiftUI handles automatically; custom text checks @Environment(\.legibilityWeight))
  • Increase Contrast preference is respected (custom colors provide higher-contrast variants)

Credits & Attribution

This skill is based on the excellent work by ehmo.

Original repository: https://github.com/ehmo/platform-design-skills

Special thanks to ehmo for their generous open-source contributions, which helped shape this skill collection. Adapted by webconsulting.at for this skill collection

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

35.2%
按下载量换算81

Claude

32.15%
按下载量换算74

Cursor

19.9%
按下载量换算46

Gemini CLI

9.24%
按下载量换算21

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills