pencil-ios-design — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited pencil-ios-design (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
How to design iOS screens using Pencil MCP tools. Every step follows Apple HIG.
Source tools: partme-ai/full-stack-skills
Pencil MCP server must be configured. Check with get_editor_state.
Call: open_document("new") ← new blank canvas
Call: open_document("/path") ← existing .pen fileThen always call get_editor_state to confirm active document and schema.
Call set_variables with iOS system values. See ios-design-tokens skill for full specs.
Key variables to set:
Call: get_guidelines(topic="mobile-app")This returns Apple HIG and mobile-specific rules. Read before designing.
If the user wants a specific aesthetic:
Call: get_style_guide_tags ← browse available tags
Call: get_style_guide(tags=["Dark", "Minimal", "Premium"])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:
| Device | Width | Height |
|---|---|---|
| iPhone 15 Pro | 393pt | 852pt |
| iPhone 15 Pro Max | 430pt | 932pt |
| iPhone SE | 375pt | 667pt |
| iPad (10th gen) | 820pt | 1180pt |
Use batch_design with insert operations. Max 25 operations per call.
iOS Layout Rules (enforce these):
Typography Rules:
.title or .largeTitle — never custom sizes.subheadline (15pt) or .footnote (13pt)Color Rules:
Color(.label), Color(.systemBackground)#000000 for dark bg, not #1C1C1E (that's secondary)After designing:
Call: get_screenshot(nodeId="frame-id")Check the screenshot against these criteria:
Call: snapshot_layout(nodeId="frame-id", problemsOnly=true)Fix any: clipped content, overlapping elements, elements outside frame bounds.
Call: search_all_unique_properties(nodeId="frame-id", properties=["fillColor", "fontFamily", "fontSize"])Verify:
Pencil can export nodes to SwiftUI code. Use this as the starting point, then refine in Xcode with XcodeBuildMCP.
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)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)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)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.