skill

Apple Design

emilkowalski162,317+ تثبيتموثوق

نبذة

# Apple Design

## Initial Response

When this skill is first invoked without a specific question, respond only with:

> I'm ready to help you build fluid, Apple-style interfaces on the web, my knowledge comes from Apple's WWDC design talks, translated for the web.

Do not provide any other information until the user asks a question.

How Apple builds interfaces that stop feeling like a computer and start feeling like an extension of you. This knowledge comes from Apple's WWDC design talks — chiefly *Designing Fluid Interfaces* (WWDC 2018) — distilled and translated into the web platform (CSS, Pointer Events, `requestAnimationFrame`, spring libraries like Motion/Framer Motion).

The through-line: **an interface feels alive when motion starts from the current on-screen value, inherits the user's velocity, projects momentum forward, and can be grabbed and reversed at any instant.** Springs are the tool that makes all of this natural, because they are inherently interruptible and velocity-aware.

## The Core Idea

> "When we align the interface to the way we think and move, something magical happens — it stops feeling like a computer and starts feeling like a seamless extension of us."

An interface is fluid when it behaves like the physical world: things respond instantly, move continuously, carry momentum, resist at boundaries, and can be redirected mid-motion. Everything below is a way to get closer to that.

Apple frames design as serving four human needs: **safety/predictability, understanding, achievement, and joy.** Every rule here serves one of them.

## 1. Response — kill latency

The moment lag appears, the feeling of directness "falls off a cliff." Response is the foundation everything else is built on.

- **Respond on pointer-down, not on release.** Highlight a button the instant it's pressed. Waiting for `click`/touch-up to show feedback feels dead. - **Be vigilant about every latency.** Audit debounces, artificial timers, transition waits, and the ~300ms tap delay. Anything on the input path that isn't essential is a regression. - **Feedback must be continuous *during* the interaction, not just at the end.** For a drag, slider, or drawer, update the UI 1:1 with the pointer the whole way through — never animate only when the gesture completes.

```css /* Feedback lives on the press, and it's instant */ .button:active { transform: scale(0.97); transition: transform 100ms ease-out; } ```

## 2. Direct manipulation — 1:1 tracking

> "Touch and content should move together."

When the user drags something, it must stay glued to the finger — and respect the offset from *where they grabbed it*. Snapping to the element's center on grab breaks the illusion immediately.

- Use Pointer Events with `setPointerCapture` so tracking continues even when the pointer leaves the element's bounds. - Track a short **velocity/position history** (last few `pointermove` events), not just the current point — you'll need velocity at release.

```js el.addEventListener('pointerdown', (e) => { el.setPointerCapture(e.pointerId); const grabOffset = e.clientY - el.getBoundingClientRect().top; // respect where they grabbed // ...track position + timestamp history for velocity }); ```

## 3. Interruptibility — the single most important principle

> "The thought and the gesture happen in parallel."

Every animation must be interruptible and redirectable at any moment. A user must be able to grab a moving element mid-flight and reverse it without waiting for the animation to finish. A closing modal the user grabs again should follow the finger — not finish closing first, then reopen.

- **Never lock out input during a transition.** - **Always animate from the *presentation* (current) value, never the target value.** On interrupt, read the element's live on-screen transform and start the new animation from there. Starting from the logical/target value causes a visible jump. - **Avoid CSS transitions and `@keyframes` for anything gesture-driven** — they can't be smoothly grabbed and reversed mid-flight. Springs animate from the current value by default, which is exactly what interruption needs. - **When a gesture reverses, blend velocity — don't hard-cut it.** Replacing one animation with another at a reversal creates a velocity discontinuity, a "brick wall." Spring libraries that carry velocity through a re-target avoid it. (This is what iOS's *additive animations* do natively; on the web, choose a spring library that re-targets from the current velocity.) - **Decompose 2D motion into independent X and Y springs.** A single spring on a 2D distance desyncs when X and Y have different velocities.

## 4. Behavior over animation — use springs

> "Think of animation as a conversation between you and the object, not something prescribed by the interface."

A pre-scripted, fixed-duration animation can't respond to new input. A spring can — new input just changes the target, and the motion stays continuous. Reach for springs for

التثبيت

شغل هذا الأمر

npx skills add emilkowalski/skills

يعمل مع

claude appclaude codeclaude apicursorcodexwindsurfclinezed

خطوات التثبيت

Install with `npx skills add emilkowalski/skills`, or clone the repository and copy the `skills/apple-design` folder into your Claude skills directory.

عرض المصدر

أصول ذات صلة

مختارات أخرى في التصميم والإبداع.

skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/skills && cp -r skills/skills/canvas-design ~/.claude/skills/
تصميم Canvas
إنشاء أعمال فنية بصرية جميلة في ملفات .png و.pdf باستخدام فلسفة التصميم. استخدم هذه المهارة عندما يطلب المستخدم إنشاء ملصق أو عمل فني أو تصميم أو أي ق…★ 4.8 · 2,500+
skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/knowledge-work-plugins && cp -r knowledge-work-plugins/design/skills/research-synthesis ~/.claude/skills/
تجميع البحوث
تجميع أبحاث المستخدمين وتحويلها إلى مواضيع وتبصرات وتوصيات. استخدم هذا عندما تملك نصوص المقابلات أو نتائج الاستطلاعات أو ملاحظات اختبارات سهولة الاستخ…★ 4.8 · 2,500+
skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/knowledge-work-plugins && cp -r knowledge-work-plugins/design/skills/design-critique ~/.claude/skills/
نقد التصميم
احصل على ملاحظات تصميم منظمة حول قابلية الاستخدام والتسلسل الهرمي والاتساق. يتم التفعيل بـ "review this design" أو "critique this mockup" أو "what do…★ 4.8 · 2,500+
skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/knowledge-work-plugins && cp -r knowledge-work-plugins/design/skills/accessibility-review ~/.claude/skills/
مراجعة سهولة الوصول
إجراء تدقيق الوصولية وفقاً لمعايير WCAG 2.1 AA على تصميم أو صفحة. يتم تفعيله عند قول "audit accessibility" أو "check a11y" أو "is this accessible?"، أ…★ 4.8 · 2,500+
skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/skills && cp -r skills/skills/frontend-design ~/.claude/skills/
تصميم واجهة المستخدم
إنشاء واجهات أمامية متميزة وعالية الجودة جاهزة للإنتاج. استخدم هذه المهارة عندما يطلب المستخدم بناء مكونات ويب أو صفحات أو تصاميم أو ملصقات أو تطبيقات…★ 4.8 · 2,500+
skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/knowledge-work-plugins && cp -r knowledge-work-plugins/design/skills/user-research ~/.claude/skills/
بحث المستخدم
خطط وأجرِ وحلّل أبحاث المستخدمين. يُفعّل عند طلب "خطة أبحاث المستخدمين" أو "دليل المقابلة" أو "اختبار قابلية الاستخدام" أو "تصميم الاستبيان" أو "أسئلة…★ 4.8 · 2,500+

افحص قبل التثبيت

شغل أي مصدر عبر فحوصاتنا - الظهور في الذكاء الاصطناعي والأمان والأداء واكتشاف التقنيات.

المزيد في التصميم والإبداع