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

pencil-ios-design

iOS-specific Pencil MCP design workflow. Creates iOS screens on canvas following Apple HIG with proper SF Pro typography, semantic colors, and 8pt spacing grid. Use when designing iOS UI in .pen files. Requires Pencil MCP server.

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

실행 점수 미검증

설치 방법 보기

포함된 파일(1)

  • SKILL.md6.4 KB

SKILL.md(원문)

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

Pencil iOS Design

How to design iOS screens using Pencil MCP tools. Every step follows Apple HIG.

Source tools: partme-ai/full-stack-skills

Prerequisites

Pencil MCP server must be configured. Check with get_editor_state.

Workflow

1. Open or Create Document

Call: open_document("new")     ← new blank canvas
Call: open_document("/path")   ← existing .pen file

Then always call get_editor_state to confirm active document and schema.

2. Initialize iOS Design Tokens

Call set_variables with iOS system values. See ios-design-tokens skill for full specs.

Key variables to set:

  • Font: SF Pro, sizes 11-34pt per iOS type scale
  • Colors: iOS semantic colors (label, background, tints) for light AND dark
  • Spacing: 4, 8, 12, 16, 20, 24, 32, 48 on the 8pt grid
  • Radii: 8, 12, 16, 20 with continuous (squircle) corners

3. Get iOS Design Guidelines

Call: get_guidelines(topic="mobile-app")

This returns Apple HIG and mobile-specific rules. Read before designing.

4. Get Style Guide (Optional)

If the user wants a specific aesthetic:

Call: get_style_guide_tags    ← browse available tags
Call: get_style_guide(tags=["Dark", "Minimal", "Premium"])

5. Find Canvas Space

Before placing a new screen:

Call: find_empty_space_on_canvas(width=393, height=852)

Standard iPhone 15 Pro frame: 393 x 852pt (logical, safe area content). Full frame with status bar + home indicator: 393 x 852pt.

Common iOS frame sizes:

DeviceWidthHeight
iPhone 15 Pro393pt852pt
iPhone 15 Pro Max430pt932pt
iPhone SE375pt667pt
iPad (10th gen)820pt1180pt

6. Design the Screen

Use batch_design with insert operations. Max 25 operations per call.

iOS Layout Rules (enforce these):

  • Content starts below safe area (59pt from top for Dynamic Island)
  • 16-20pt horizontal margins
  • All touch targets ≥ 44x44pt
  • 8pt grid for all spacing
  • Use iOS semantic colors (not hardcoded hex)
  • Navigation at top, tab bar at bottom (49pt)
  • Continuous corner radius (squircle), not circular
  • One focal point per screen

Typography Rules:

  • Title: .title or .largeTitle — never custom sizes
  • Body text: 17pt Regular — this is the iOS standard
  • Secondary: .subheadline (15pt) or .footnote (13pt)
  • Max 2 font weights per screen
  • Never force specific sizes — use Dynamic Type text styles

Color Rules:

  • Use semantic colors: Color(.label), Color(.systemBackground)
  • One accent/tint color per app (default: systemBlue #007AFF)
  • Dark mode: don't invert — use semantic tokens that adapt
  • #000000 for dark bg, not #1C1C1E (that's secondary)

7. Verify with Screenshot

After designing:

Call: get_screenshot(nodeId="frame-id")

Check the screenshot against these criteria:

  • Proper spacing (8pt grid)
  • Touch targets ≥ 44pt
  • Typography hierarchy clear (squint test)
  • One focal point dominates
  • Would Apple ship this?

8. Check Layout Issues

Call: snapshot_layout(nodeId="frame-id", problemsOnly=true)

Fix any: clipped content, overlapping elements, elements outside frame bounds.

9. Audit Design Properties

Call: search_all_unique_properties(nodeId="frame-id", properties=["fillColor", "fontFamily", "fontSize"])

Verify:

  • Only SF Pro font family used
  • Only iOS type scale sizes (11, 12, 13, 15, 16, 17, 20, 22, 28, 34)
  • Only semantic colors (no random hex values)
  • Consistent corner radii

10. Export to SwiftUI

Pencil can export nodes to SwiftUI code. Use this as the starting point, then refine in Xcode with XcodeBuildMCP.

Common iOS Screen Patterns

Login Screen

Frame: 393 x 852
├── Status bar area (59pt, clear)
├── Spacer (flexible, pushes content to center-upper)
├── App logo/icon (80x80pt, centered)
│   spacing-24
├── Title "Welcome" (.title2, 22pt, centered)
│   spacing-8
├── Subtitle (.subheadline, 15pt, secondaryLabel, centered)
│   spacing-32
├── Email field (height 50pt, radius-md 12pt, horizontal margin 20pt)
│   spacing-12
├── Password field (same)
│   spacing-24
├── Sign In button (height 50pt, radius-md, systemBlue, white label, full width - 40pt)
│   spacing-16
├── "Forgot password?" (.subheadline, systemBlue, centered)
├── Spacer (flexible)
├── "Don't have an account? Sign Up" (.footnote, bottom, centered)
│   spacing-34 (home indicator safe area)

Settings / List Screen

Frame: 393 x 852
├── Navigation bar (96pt, large title "Settings")
├── Grouped list (systemGroupedBackground)
│   ├── Section
│   │   ├── Row (44pt height, 20pt leading, disclosure indicator)
│   │   ├── Separator (leading: 20pt, not full-width)
│   │   └── Row
│   ├── Section header (.footnote, uppercase, secondaryLabel, 16pt leading)
│   │   ├── Row with toggle (44pt, switch aligned trailing -20pt)
│   │   └── Row
│   └── ...
├── Tab bar (49pt, 5 items, systemBlue selected)
│   spacing-34 (home indicator)

Detail Screen

Frame: 393 x 852
├── Navigation bar (44pt, back button, title centered)
├── Hero image (full width, 250pt height)
│   spacing-16
├── Content (20pt horizontal margins)
│   ├── Title (.title2, 22pt)
│   │   spacing-8
│   ├── Metadata (.subheadline, secondaryLabel)
│   │   spacing-16
│   ├── Body text (.body, 17pt, multiline)
│   │   spacing-24
│   └── Action button (50pt, full width - 40pt, systemBlue)
├── Spacer
│   spacing-34 (home indicator)

Anti-Patterns (Never Do These)

  • Custom font sizes not in the iOS type scale
  • Touch targets under 44pt
  • Hardcoded colors instead of semantic tokens
  • Circular corners instead of continuous (squircle)
  • Full-bleed separators (iOS uses inset separators, leading edge)
  • Tab bar with more than 5 items
  • Navigation title on the left (it's centered or large-title left-aligned)
  • Forgetting safe areas (content under Dynamic Island or home indicator)

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

When the user wants to A/B test App Store product page elements to improve conversion rate. Also use when the user mentions "A/B test", "product page optimization", "test my screenshots", "test my icon", "conversion rate optimization", "CPP", or "custom product pages". For screenshot design, see screenshot-optimization. For metadata optimization, see metadata-optimization.

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

JordanCoin/ios-skills-collection62026년 9월 10일 업데이트

Discover and configure Bluetooth and Wi-Fi accessories using AccessorySetupKit. Use when presenting a privacy-preserving accessory picker, defining discovery descriptors for BLE or Wi-Fi devices, handling accessory session events, migrating from CoreBluetooth permission-based scanning, or setting up accessories without requiring broad Bluetooth permissions.

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

JordanCoin/ios-skills-collection62026년 9월 10일 업데이트

Implement, review, or improve Live Activities and Dynamic Island experiences in iOS apps using ActivityKit. Use when building real-time updating widgets for the Lock Screen and Dynamic Island — delivery tracking, sports scores, ride-sharing status, workout timers, media playback, or any time-sensitive information that updates in real time. Also use when working with ActivityKit, ActivityAttributes, Activity lifecycle (request/update/end), Dynamic Island layouts (compact/minimal/expanded), push-to-update Live Activities, or Lock Screen live widgets.

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

JordanCoin/ios-skills-collection62026년 9월 10일 업데이트

Measure ad effectiveness with privacy-preserving attribution using AdAttributionKit. Use when registering ad impressions, handling attribution postbacks, updating conversion values, implementing re-engagement attribution, configuring publisher or advertiser apps, or replacing SKAdNetwork with AdAttributionKit for ad measurement.

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

JordanCoin/ios-skills-collection62026년 9월 10일 업데이트

alarmkit

무료

Implement AlarmKit alarms and countdown timers for iOS and iPadOS with Lock Screen, Dynamic Island, and Apple Watch system UI. Covers AlarmManager scheduling, AlarmAttributes and AlarmPresentation, AlarmButton stop and snooze actions, authorization, state observation, and Live Activity integration. Use when building wake-up alarms, countdown timers, or alarm-style alerts that need Apple's system alarm experience.

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

JordanCoin/ios-skills-collection62026년 9월 10일 업데이트

When the user wants to optimize their Google Play Store listing — title, short description, full description, keywords, ratings, or Play Store-specific features. Use when the user mentions "Google Play", "Android", "Play Store", "Play Console", "short description", "full description indexed", "Google Play ASO", or wants Google Play-specific keyword, creative, or ratings strategy. For iOS App Store optimization, see aso-audit and metadata-optimization.

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

JordanCoin/ios-skills-collection62026년 9월 10일 업데이트

JordanCoin의 스킬 모두 보기

이 스킬의 문제 신고