mobile-design – skill Thiết kế & UI cho agent AI
Thiết kế và review giao diện iOS, Android, React Native hoặc Flutter về thao tác cảm ứng, accessibility, điều hướng, hoạt động offline và hiệu năng đo được. Dùng cho công việc UI ứng dụng di động; không phải chứng nhận tuân thủ di động.
Cài skill mobile-design bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/mobile-design-c32cd.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /mobile-design – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/mobile-design-c32cd.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $mobile-design – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/mobile-design-c32cd.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /mobile-design – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/mobile-design-c32cd.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /mobile-design – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Mobile Design System
(Mobile-First · Touch-First · Platform-Respectful)
> Philosophy: Touch-first. Battery-conscious. Platform-respectful. Offline-capable.
> Core Law: Mobile is NOT a small desktop.
> Operating Rule: Think constraints first, aesthetics second.
This skill exists to prevent desktop-thinking, AI-defaults, and unsafe assumptions when designing or building mobile applications.
---
1. Scope and risk
Use the existing project/platform requirements and preserve its conventions.
Ask only for missing information that changes the implementation. Do not require
an interview or framework switch for a targeted fix. The former MFRI score was an
unvalidated heuristic with inconsistent dimensions/range; it is not a safety or
release gate. Record concrete interaction, data, accessibility and performance
risks instead.
2. Choose the relevant checks
For a new app, establish platform, framework, audience, device classes, navigation,
offline needs and actual output. For existing work, reuse that context. Read only
the reference material needed for the changed behavior. User scope and repository
instructions take precedence over this skill's suggested ceremony.
3. Mandatory Reference Reading (Enforced)
Reference map (read what the task needs)
| File | Purpose | Status |
| ----------------------------- | ---------------------------------- | ----------------- |
| mobile-design-thinking.md | Anti-memorization, context-forcing | Context reference |
| touch-psychology.md | Fitts’ Law, thumb zones, gestures | Task-dependent |
| mobile-performance.md | 60fps, memory, battery | Task-dependent |
| mobile-backend.md | Offline sync, push, APIs | Task-dependent |
| mobile-testing.md | Device & E2E testing | Task-dependent |
| mobile-debugging.md | Native vs JS debugging | Task-dependent |
Platform-Specific (Conditional)
| Platform | File |
| -------------- | ------------------- |
| iOS | platform-ios.md |
| Android | platform-android.md |
| Cross-platform | BOTH above |
Read the relevant platform guidance before changing platform-specific behavior.
---
4. AI Mobile Anti-Patterns (Hard Bans)
🚫 Performance Sins (Non-Negotiable)
| ❌ Never | Why | ✅ Always |
| ------------------------- | -------------------- | --------------------------------------- |
| ScrollView for long lists | Memory explosion | FlatList / FlashList / ListView.builder |
| Unmeasured row churn | May cause avoidable work | Profile identity/state updates; memoize only where useful |
| Index as key | Reorder bugs | Stable ID |
| JS-thread animations | Jank | Native driver / GPU |
| console.log in prod | JS thread block | Strip logs |
| Blanket memoization claims | Can add complexity without benefit | Profile and apply targeted optimization |
---
🚫 Touch & UX Sins
| ❌ Never | Why | ✅ Always |
| --------------------- | -------------------- | ----------------- |
| Undersized hit area | Miss taps | Use platform logical units: typically 44pt iOS / 48dp Android |
| Gesture-only action | Excludes users | Button fallback |
| No loading state | Feels broken | Explicit feedback |
| No error recovery | Dead end | Retry + message |
| Ignore platform norms | Muscle memory broken | iOS ≠ Android |
---
🚫 Security Sins
| ❌ Never | Why | ✅ Always |
| ---------------------- | ------------------ | ---------------------- |
| Tokens in AsyncStorage | Easily stolen | SecureStore / Keychain |
| Embedded app secrets | Can be extracted | Keep server secrets on server; secure per-user credentials |
| Disabled TLS verification | MITM risk | Valid platform TLS; pinning only for a justified managed threat model |
| Log sensitive data | PII leakage | Never log secrets |
---
5. Platform Unification vs Divergence Matrix
UNIFY DIVERGE
────────────────────────── ─────────────────────────
Business logic Navigation behavior
Data models Gestures
API contracts Icons
Validation Typography
Error semantics Pickers / dialogsPlatform Defaults
| Element | iOS | Android |
| --------- | ------------ | -------------- |
| Font | SF Pro | Roboto |
| Min touch | 44pt | 48dp |
| Back | Edge swipe | System back |
| Sheets | Bottom sheet | Dialog / sheet |
| Icons | SF Symbols | Material Icons |
---
6. Mobile UX Psychology (Non-Optional)
Fitts’ Law (Touch Reality)
- Finger ≠ cursor
- Accuracy is low
- Reach matters more than precision
Rules:
- Primary CTAs live in thumb zone
- Destructive actions pushed away
- No hover assumptions
---
7. Performance Doctrine
React Native (fixed-height illustrative pattern)
const Row = React.memo(({ item }) => (
<View><Text>{item.title}</Text></View>
));
const renderItem = useCallback(
({ item }) => <Row item={item} />,
[]
);
<FlatList
data={items}
renderItem={renderItem}
keyExtractor={(i) => i.id}
getItemLayout={(_, i) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * i,
index: i,
})}
/>Flutter (illustrative static widget)
class Item extends StatelessWidget {
const Item({super.key});
@override
Widget build(BuildContext context) {
return const Text('Static');
}
}consteverywhere possible- Targeted rebuilds only
---
8. Implementation evidence
State the target platform, changed behavior and checks actually performed. Profile
representative devices/data; a static pattern scan cannot measure touch targets,
contrast, frame rate, battery, platform navigation or secure storage behavior.
9. Framework choice
Preserve an existing stack unless a change is requested. For new work compare
team experience, native integrations, accessibility, deployment policies and
measured workload constraints. Expo OTA is bounded by runtime compatibility and
store policies; it does not authorize bypassing review or delivering arbitrary
native code. No framework is universally fastest or smallest.
10. Release Readiness Checklist
Before Shipping
- [ ] Platform hit targets checked in logical units
- [ ] Offline handled
- [ ] Secure storage used
- [ ] Lists optimized
- [ ] Logs stripped
- [ ] Tested on low-end devices
- [ ] Accessibility labels present
- [ ] Concrete risks and any unavailable checks documented
---
11. Related Skills
- frontend-design – Visual systems & components
- frontend-dev-guidelines – RN/TS architecture
- backend-dev-guidelines – Mobile-safe APIs
- error-tracking – Crash & performance telemetry
---
> Final Law:
> Mobile users are distracted, interrupted, and impatient—often using one hand on a bad network with low battery.
> Design for that reality, or your app will fail quietly.
---
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Audit helper and limits
Run python scripts/mobile_audit.py . --json from the intended project directory.
The helper is read-only, bounded and advisory. It never imports project code and
never declares compliance; compliant is null. Exit 2 means incomplete inspection
or no detected mobile source. Source-pattern hints can match comments or miss
behavior spread across files. Validate findings before editing. No simulator,
real-device, screen-reader or GPU run was performed in this catalog review.
Use [touch guidance](touch-psychology.md), [typography](mobile-typography.md),
[color](mobile-color-system.md), [navigation](mobile-navigation.md) and
[decisions](decision-trees.md) for focused checks. Code blocks are version-sensitive
fragments, not certified complete apps; verify current APIs before execution.
Skill liên quan
- monochromatic-ui – Hướng dẫn triển khai Monochromatic UI cho web và ứng dụng. Kích hoạt khi người dùng muốn…
- monopoly – MONOPOLY là kỹ năng của kỹ sư thiết kế hệ thống cấp cao để kiến trúc, đánh giá và mở…
- multi-tenant-llm-hosting – Thiết kế nền tảng hosting LLM đa tenant an toàn, với cách ly tenant, quota, phân bổ chi…
- n8n-error-handling – Thiết kế lỗi n8n dễ thấy, có cấu trúc và có thể phục hồi, dùng error output, retry…
- neo-brutalism – Hướng dẫn triển khai Neo-Brutalism cho Web và App. Kích hoạt khi người dùng muốn viền…
- nerdzao-elite – Quy trình kỹ thuật phần mềm và thiết kế sản phẩm, đóng vai Senior Product Designer. Quy…
- nerdzao-elite-gemini-high – Chế độ Elite Coder + UX Pixel-Perfect được tối ưu riêng cho Gemini 3.1 Pro High. Quy…
- neumorphism – Hướng dẫn triển khai Neumorphism (Soft UI) cho Web và App. Kích hoạt khi người dùng muốn…