본문으로 건너뛰기
cccskills
무료GitHub에 공개

apple-hig-typography

Use when designing, reviewing, or implementing typography in Apple-platform apps — SwiftUI text styles, hierarchy, readable sizes, monospaced data, custom fonts, labels, captions, and accessibility.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

실행 점수 미검증

설치 방법 보기

포함된 파일(1)

  • SKILL.md8.4 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Apple HIG Typography

Apply system text styles, a small hierarchy, and accessible sizing to typography in Apple-platform apps. Reach for it when cleaning up fonts, building readable dashboards or popovers, or reviewing custom-font and accessibility decisions.

Purpose

Use this skill when designing, reviewing, or implementing typography in Apple-platform apps.

Use for SwiftUI text styles, macOS typography, iOS typography, hierarchy, readable sizes, monospaced data, custom font decisions, labels, captions, metadata, and accessibility.

Core rule

Use system text styles first. Customize only when the product needs it.

Typography should make the interface easier to scan, not more decorative.

When to use this skill

Use this skill for:

  • Typography cleanup
  • Font hierarchy
  • Dashboard readability
  • Menu bar popover text
  • Settings text
  • Inspector labels
  • Metadata text
  • Code/terminal-style UI
  • Custom font review
  • Accessibility text review

When not to use this skill

Do not use this skill for:

  • Icon choice; use apple-hig-sf-symbols
  • Spacing/layout only; use apple-hig-layout
  • Sidebar structure; use apple-hig-sidebars
  • Marketing landing pages unless they are inside an Apple app

Apple typography principles

1. Prefer system text styles

Use SwiftUI styles instead of hardcoded sizes where possible.

Text("Title")
    .font(.title2)

Text("Body text")
    .font(.body)

Text("Metadata")
    .font(.caption)
    .foregroundStyle(.secondary)

2. Use a small hierarchy

Most screens need only three levels:

Primary:   title / headline
Secondary: body / callout
Tertiary:  caption / metadata

Avoid using too many sizes on one screen.

3. Use weight carefully

Good UI weights:

Regular
Medium
Semibold
Bold

Avoid very thin weights for functional UI.

4. Use color less than hierarchy

Prefer hierarchy from size, weight, spacing, and grouping before color.

Good:

Text("Last updated 2 min ago")
    .font(.caption)
    .foregroundStyle(.secondary)

Bad:

Text("Last updated 2 min ago")
    .font(.caption)
    .foregroundStyle(.blue)

unless blue communicates an action or link.

Recommended SwiftUI text styles

.largeTitle  = rare hero/screen title
.title       = main title
.title2      = major section title
.title3      = compact title
.headline    = row/card heading
.body        = default readable text
.callout     = secondary body or compact explanation
.subheadline = supporting label
.footnote    = fine print
.caption     = metadata, badges, timestamps
.caption2    = avoid unless space is very tight

Rule:

Do not use the smallest text style just to fit too much content. Reduce content instead.

macOS practical guidance

For macOS productivity UI:

Window title / screen title: .title2 or .title3
Card title: .headline
Row title: .body or .headline
Row subtitle: .callout or .subheadline
Metadata: .caption
Tiny helper text: .footnote or .caption

Avoid body text below comfortable legibility. For dense macOS UI, .caption is acceptable for metadata, but not for primary content.

Menu bar popover typography

Recommended:

Header title: .headline or .title3
Status: .caption or .callout
Primary action: .body or .headline
List row title: .body
List row subtitle: .caption
Footer: .caption

Rules:

- Keep labels short
- Avoid paragraphs in popovers
- Prefer 1-line row titles
- Use captions only for metadata
- Do not use huge hero type in small popovers

Inspector typography

Recommended:

Inspector section label: .caption, secondary, uppercase optional
Field label: .callout, secondary
Field value: .callout or .body
Path/ID: .caption, monospaced if helpful

Example:

HStack {
    Text("Status")
        .font(.callout)
        .foregroundStyle(.secondary)

    Spacer()

    Text("Running")
        .font(.callout)
}

Dashboard typography

Dashboards should be calm and scannable.

Rules:

- Do not use huge numbers unless the number is the main decision point.
- Avoid too many equal-size metrics.
- Use captions for labels and body/headline for values.
- Use monospaced digits for changing numbers.
- Use one main visual emphasis per card.

Monospaced text

Use monospaced digits for changing numeric values.

Text("00:42")
    .font(.body.monospacedDigit())

Text("128 tasks")
    .font(.body.monospacedDigit())

Use monospaced fonts for:

Code
Logs
Terminal output
Paths
IDs
Timers
Counters
Token counts

Example:

Text(filePath)
    .font(.system(.caption, design: .monospaced))
    .textSelection(.enabled)

Custom font rules

Use custom fonts only when they serve the product.

Good uses:

Brand-heavy marketing screen
Terminal/code UI
Distinctive hero title
Numerical dashboard style

Bad uses:

Every small label
Settings forms
Inspector fields
Dense data tables
Accessibility-critical UI

When using custom fonts:

Text("Terminal")
    .font(.custom("JetBrainsMono-Regular", size: 13, relativeTo: .body))

Prefer relativeTo: when cross-platform accessibility scaling matters.

Brand font conventions

Use only when building brand-specific apps, not generic Apple HIG work.

SF Pro / system font = default app UI
SF Mono or JetBrains Mono = terminal/log/code surfaces
Brand display font = marketing/brand headlines only
Avoid custom fonts in dense settings and inspector screens

Line length

Readable text should not be too wide.

Short UI labels: no issue
Long body text: target roughly 50–75 characters per line
Popover text: keep very short; do not use long paragraphs

SwiftUI cap:

Text(longText)
    .frame(maxWidth: 420, alignment: .leading)
    .fixedSize(horizontal: false, vertical: true)

SF Symbols with text

Symbols should match surrounding text size and weight.

Good:

Label("Settings", systemImage: "gearshape")
    .font(.body)

Avoid overpowering labels:

HStack {
    Image(systemName: "gearshape")
        .font(.system(size: 28, weight: .bold))
    Text("Settings")
        .font(.caption)
}

Accessibility rules

- Do not use tiny text for important content
- Do not rely on color alone
- Keep contrast strong enough
- Let system text styles handle scaling where possible
- Avoid thin weights
- Keep labels clear and literal
- Make paths/IDs selectable if users need to copy them

Review checklist

[ ] System text styles are used by default
[ ] Screen has no more than 3 major type levels
[ ] Primary content is readable
[ ] Metadata is visually secondary
[ ] Captions are not used for essential content
[ ] Weights are not too thin
[ ] Changing numbers use monospaced digits
[ ] Long text has a readable line length
[ ] Custom fonts are justified
[ ] Symbols match text size and weight
[ ] Accessibility and contrast are preserved

Common mistakes

Hardcoding every font size
Too many type sizes on one screen
Huge headings in small popovers
Captions used for important text
Thin weights in low contrast UI
Random custom fonts everywhere
Monospaced font used for normal paragraphs
Changing numbers jitter because digits are proportional
Icons overpower text
Color used instead of hierarchy

Prompt template

Use the apple-hig-typography skill to clean up typography in this Apple-platform app.

Goal:
Make text easier to scan, more native, and more accessible.

Rules:
- Use SwiftUI system text styles first.
- Limit each screen to a small typography hierarchy.
- Use Regular, Medium, Semibold, or Bold for UI.
- Avoid thin weights for functional text.
- Use captions only for metadata or minor helper text.
- Use monospaced digits for changing numbers.
- Use monospaced design only for code, logs, paths, IDs, timers, and counters.
- Keep long text at readable line length.
- Use custom fonts only when justified.
- Keep SF Symbols aligned with text size and weight.
- Preserve accessibility and contrast.

Before coding:
1. Audit all font modifiers.
2. Identify hardcoded sizes.
3. Identify too-small important text.
4. Propose a simplified type scale.
5. Then implement.

After coding:
1. List files changed.
2. Explain the typography hierarchy.
3. List hardcoded fonts removed.
4. Explain custom font decisions.
5. Give manual test steps.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Use when creating a new project folder, starter pack, app scaffold, or agent-ready workspace — AGENTS.md, README, TASKS, DECISIONS, PROMPTS, an idempotent bootstrap script, and starter-pack modes.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aka-kika/akakika-skills112026년 9월 12일 업데이트

Use when designing or implementing states for AI agent tasks, background jobs, local model runs, queues, and notifications — one shared set of states, only legal transitions, and a recovery path out of every failure.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aka-kika/akakika-skills112026년 9월 12일 업데이트

Use when exposing app features to App Intents, Shortcuts, Siri, Spotlight, widgets, controls, or system actions — small safe AppIntents, AppShortcutsProvider, AppEnum/AppEntity, parameters, and open-vs-background behavior.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aka-kika/akakika-skills112026년 9월 12일 업데이트

Use when designing, reviewing, or implementing a command-palette / ⌘K layer for an Apple-platform app — keyboard-first global search, ranked and grouped results, native floating panel, and protected destructive commands.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aka-kika/akakika-skills112026년 9월 12일 업데이트

Use when designing or implementing empty, first-run, no-result, offline, error, or waiting states in Apple-platform apps — every empty state explains what is missing, why it matters, and what to do next.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aka-kika/akakika-skills112026년 9월 12일 업데이트

Use when designing or implementing feedback, status, progress, alerts, errors, success states, and live activity indicators in Apple-platform apps — inline status, banners, alerts, notifications, and loading states.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aka-kika/akakika-skills112026년 9월 12일 업데이트

aka-kika의 스킬 모두 보기

이 스킬의 문제 신고