@musashishao/agent-kit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @musashishao/agent-kit might be problematic. Click here for more details.
- package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +487 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/search.py +76 -0
- package/.agent/ARCHITECTURE.md +225 -0
- package/.agent/CONTEXT.md +229 -0
- package/.agent/FEATURE_ROADMAP.md +435 -0
- package/.agent/PROMPT_TEMPLATES.md +261 -0
- package/.agent/agents/backend-specialist.md +263 -0
- package/.agent/agents/database-architect.md +226 -0
- package/.agent/agents/debugger.md +225 -0
- package/.agent/agents/devops-engineer.md +242 -0
- package/.agent/agents/documentation-writer.md +104 -0
- package/.agent/agents/explorer-agent.md +73 -0
- package/.agent/agents/frontend-specialist.md +556 -0
- package/.agent/agents/game-developer.md +162 -0
- package/.agent/agents/mobile-developer.md +377 -0
- package/.agent/agents/orchestrator.md +416 -0
- package/.agent/agents/penetration-tester.md +188 -0
- package/.agent/agents/performance-optimizer.md +187 -0
- package/.agent/agents/project-planner.md +403 -0
- package/.agent/agents/security-auditor.md +170 -0
- package/.agent/agents/seo-specialist.md +111 -0
- package/.agent/agents/test-engineer.md +158 -0
- package/.agent/rules/GEMINI.md +251 -0
- package/.agent/skills/api-patterns/SKILL.md +81 -0
- package/.agent/skills/api-patterns/api-style.md +42 -0
- package/.agent/skills/api-patterns/auth.md +24 -0
- package/.agent/skills/api-patterns/documentation.md +26 -0
- package/.agent/skills/api-patterns/graphql.md +41 -0
- package/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/.agent/skills/api-patterns/response.md +37 -0
- package/.agent/skills/api-patterns/rest.md +40 -0
- package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agent/skills/api-patterns/security-testing.md +122 -0
- package/.agent/skills/api-patterns/trpc.md +41 -0
- package/.agent/skills/api-patterns/versioning.md +22 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +71 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +40 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/.agent/skills/architecture/SKILL.md +55 -0
- package/.agent/skills/architecture/context-discovery.md +43 -0
- package/.agent/skills/architecture/examples.md +94 -0
- package/.agent/skills/architecture/pattern-selection.md +68 -0
- package/.agent/skills/architecture/patterns-reference.md +50 -0
- package/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/.agent/skills/bash-linux/SKILL.md +199 -0
- package/.agent/skills/behavioral-modes/SKILL.md +242 -0
- package/.agent/skills/brainstorming/SKILL.md +163 -0
- package/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
- package/.agent/skills/clean-code/SKILL.md +201 -0
- package/.agent/skills/code-review-checklist/SKILL.md +109 -0
- package/.agent/skills/database-design/SKILL.md +52 -0
- package/.agent/skills/database-design/database-selection.md +43 -0
- package/.agent/skills/database-design/indexing.md +39 -0
- package/.agent/skills/database-design/migrations.md +48 -0
- package/.agent/skills/database-design/optimization.md +36 -0
- package/.agent/skills/database-design/orm-selection.md +30 -0
- package/.agent/skills/database-design/schema-design.md +56 -0
- package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/.agent/skills/doc.md +177 -0
- package/.agent/skills/docker-expert/SKILL.md +409 -0
- package/.agent/skills/documentation-templates/SKILL.md +194 -0
- package/.agent/skills/frontend-design/SKILL.md +396 -0
- package/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/.agent/skills/frontend-design/color-system.md +311 -0
- package/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/.agent/skills/frontend-design/typography-system.md +345 -0
- package/.agent/skills/frontend-design/ux-psychology.md +541 -0
- package/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/.agent/skills/game-development/SKILL.md +167 -0
- package/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +156 -0
- package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agent/skills/lint-and-validate/SKILL.md +45 -0
- package/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
- package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/.agent/skills/mobile-design/SKILL.md +394 -0
- package/.agent/skills/mobile-design/decision-trees.md +516 -0
- package/.agent/skills/mobile-design/mobile-backend.md +491 -0
- package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
- package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
- package/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
- package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
- package/.agent/skills/mobile-design/mobile-performance.md +767 -0
- package/.agent/skills/mobile-design/mobile-testing.md +356 -0
- package/.agent/skills/mobile-design/mobile-typography.md +433 -0
- package/.agent/skills/mobile-design/platform-android.md +666 -0
- package/.agent/skills/mobile-design/platform-ios.md +561 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agent/skills/mobile-design/touch-psychology.md +537 -0
- package/.agent/skills/nestjs-expert/SKILL.md +552 -0
- package/.agent/skills/nextjs-best-practices/SKILL.md +203 -0
- package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
- package/.agent/skills/parallel-agents/SKILL.md +175 -0
- package/.agent/skills/performance-profiling/SKILL.md +143 -0
- package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/.agent/skills/plan-writing/SKILL.md +152 -0
- package/.agent/skills/powershell-windows/SKILL.md +167 -0
- package/.agent/skills/prisma-expert/SKILL.md +355 -0
- package/.agent/skills/python-patterns/SKILL.md +441 -0
- package/.agent/skills/react-patterns/SKILL.md +198 -0
- package/.agent/skills/red-team-tactics/SKILL.md +199 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +129 -0
- package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/.agent/skills/server-management/SKILL.md +161 -0
- package/.agent/skills/systematic-debugging/SKILL.md +109 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
- package/.agent/skills/tdd-workflow/SKILL.md +149 -0
- package/.agent/skills/testing-patterns/SKILL.md +178 -0
- package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agent/skills/typescript-expert/SKILL.md +429 -0
- package/.agent/skills/typescript-expert/references/tsconfig-strict.json +92 -0
- package/.agent/skills/typescript-expert/references/typescript-cheatsheet.md +383 -0
- package/.agent/skills/typescript-expert/references/utility-types.ts +335 -0
- package/.agent/skills/typescript-expert/scripts/ts_diagnostic.py +203 -0
- package/.agent/skills/ui-ux-pro-max/SKILL.md +351 -0
- package/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/skills/ui-ux-pro-max/scripts/core.py +257 -0
- package/.agent/skills/ui-ux-pro-max/scripts/design_system.py +487 -0
- package/.agent/skills/ui-ux-pro-max/scripts/search.py +76 -0
- package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
- package/.agent/skills/vulnerability-scanner/checklists.md +121 -0
- package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/.agent/skills/webapp-testing/SKILL.md +187 -0
- package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agent/workflows/brainstorm.md +113 -0
- package/.agent/workflows/create.md +59 -0
- package/.agent/workflows/debug.md +103 -0
- package/.agent/workflows/deploy.md +176 -0
- package/.agent/workflows/enhance.md +63 -0
- package/.agent/workflows/orchestrate.md +237 -0
- package/.agent/workflows/plan.md +89 -0
- package/.agent/workflows/preview.md +80 -0
- package/.agent/workflows/status.md +86 -0
- package/.agent/workflows/test.md +144 -0
- package/.agent/workflows/ui-ux-pro-max.md +231 -0
- package/LICENSE +21 -0
- package/README.md +101 -0
- package/bin/cli.js +235 -0
- package/index.js +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
# Touch Psychology Reference
|
|
2
|
+
|
|
3
|
+
> Deep dive into mobile touch interaction, Fitts' Law for touch, thumb zone anatomy, gesture psychology, and haptic feedback.
|
|
4
|
+
> **This is the mobile equivalent of ux-psychology.md - CRITICAL for all mobile work.**
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Fitts' Law for Touch
|
|
9
|
+
|
|
10
|
+
### The Fundamental Difference
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
DESKTOP (Mouse/Trackpad):
|
|
14
|
+
├── Cursor size: 1 pixel (precision)
|
|
15
|
+
├── Visual feedback: Hover states
|
|
16
|
+
├── Error cost: Low (easy to retry)
|
|
17
|
+
└── Target acquisition: Fast, precise
|
|
18
|
+
|
|
19
|
+
MOBILE (Finger):
|
|
20
|
+
├── Contact area: ~7mm diameter (imprecise)
|
|
21
|
+
├── Visual feedback: No hover, only tap
|
|
22
|
+
├── Error cost: High (frustrating retries)
|
|
23
|
+
├── Occlusion: Finger covers the target
|
|
24
|
+
└── Target acquisition: Slower, needs larger targets
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Fitts' Law Formula Adapted
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Touch acquisition time = a + b × log₂(1 + D/W)
|
|
31
|
+
|
|
32
|
+
Where:
|
|
33
|
+
├── D = Distance to target
|
|
34
|
+
├── W = Width of target
|
|
35
|
+
└── For touch: W must be MUCH larger than desktop
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Minimum Touch Target Sizes
|
|
39
|
+
|
|
40
|
+
| Platform | Minimum | Recommended | Use For |
|
|
41
|
+
|----------|---------|-------------|---------|
|
|
42
|
+
| **iOS (HIG)** | 44pt × 44pt | 48pt+ | All tappable elements |
|
|
43
|
+
| **Android (Material)** | 48dp × 48dp | 56dp+ | All tappable elements |
|
|
44
|
+
| **WCAG 2.2** | 44px × 44px | - | Accessibility compliance |
|
|
45
|
+
| **Critical Actions** | - | 56-64px | Primary CTAs, destructive actions |
|
|
46
|
+
|
|
47
|
+
### Visual Size vs Hit Area
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
┌─────────────────────────────────────┐
|
|
51
|
+
│ │
|
|
52
|
+
│ ┌─────────────────────────┐ │
|
|
53
|
+
│ │ │ │
|
|
54
|
+
│ │ [ BUTTON ] │ ← Visual: 36px
|
|
55
|
+
│ │ │ │
|
|
56
|
+
│ └─────────────────────────┘ │
|
|
57
|
+
│ │ ← Hit area: 48px (padding extends)
|
|
58
|
+
└─────────────────────────────────────┘
|
|
59
|
+
|
|
60
|
+
✅ CORRECT: Visual can be smaller if hit area is minimum 44-48px
|
|
61
|
+
❌ WRONG: Making hit area same as small visual element
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Application Rules
|
|
65
|
+
|
|
66
|
+
| Element | Visual Size | Hit Area |
|
|
67
|
+
|---------|-------------|----------|
|
|
68
|
+
| Icon buttons | 24-32px | 44-48px (padding) |
|
|
69
|
+
| Text links | Any | 44px height minimum |
|
|
70
|
+
| List items | Full width | 48-56px height |
|
|
71
|
+
| Checkboxes/Radio | 20-24px | 44-48px tap area |
|
|
72
|
+
| Close/X buttons | 24px | 44px minimum |
|
|
73
|
+
| Tab bar items | Icon 24-28px | Full tab width, 49px height (iOS) |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 2. Thumb Zone Anatomy
|
|
78
|
+
|
|
79
|
+
### One-Handed Phone Usage
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
Research shows: 49% of users hold phone one-handed.
|
|
83
|
+
|
|
84
|
+
┌─────────────────────────────────────┐
|
|
85
|
+
│ │
|
|
86
|
+
│ ┌─────────────────────────────┐ │
|
|
87
|
+
│ │ HARD TO REACH │ │ ← Status bar, top nav
|
|
88
|
+
│ │ (requires stretch) │ │ Put: Back, menu, settings
|
|
89
|
+
│ │ │ │
|
|
90
|
+
│ ├─────────────────────────────┤ │
|
|
91
|
+
│ │ │ │
|
|
92
|
+
│ │ OK TO REACH │ │ ← Content area
|
|
93
|
+
│ │ (comfortable) │ │ Put: Secondary actions, content
|
|
94
|
+
│ │ │ │
|
|
95
|
+
│ ├─────────────────────────────┤ │
|
|
96
|
+
│ │ │ │
|
|
97
|
+
│ │ EASY TO REACH │ │ ← Tab bar, FAB zone
|
|
98
|
+
│ │ (thumb's arc) │ │ Put: PRIMARY CTAs!
|
|
99
|
+
│ │ │ │
|
|
100
|
+
│ └─────────────────────────────┘ │
|
|
101
|
+
│ │
|
|
102
|
+
│ [ HOME ] │
|
|
103
|
+
└─────────────────────────────────────┘
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Thumb Arc (Right-Handed User)
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
Right hand holding phone:
|
|
110
|
+
|
|
111
|
+
┌───────────────────────────────┐
|
|
112
|
+
│ STRETCH STRETCH OK │
|
|
113
|
+
│ │
|
|
114
|
+
│ STRETCH OK EASY │
|
|
115
|
+
│ │
|
|
116
|
+
│ OK EASY EASY │
|
|
117
|
+
│ │
|
|
118
|
+
│ EASY EASY EASY │
|
|
119
|
+
└───────────────────────────────┘
|
|
120
|
+
|
|
121
|
+
Left hand is mirrored.
|
|
122
|
+
→ Design for BOTH hands or assume right-dominant
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Placement Guidelines
|
|
126
|
+
|
|
127
|
+
| Element Type | Ideal Position | Reason |
|
|
128
|
+
|--------------|----------------|--------|
|
|
129
|
+
| **Primary CTA** | Bottom center/right | Easy thumb reach |
|
|
130
|
+
| **Tab bar** | Bottom | Natural thumb position |
|
|
131
|
+
| **FAB** | Bottom right | Easy for right hand |
|
|
132
|
+
| **Navigation** | Top (stretch) | Less frequent use |
|
|
133
|
+
| **Destructive actions** | Top left | Hard to reach = harder to accidentally tap |
|
|
134
|
+
| **Dismiss/Cancel** | Top left | Convention + safety |
|
|
135
|
+
| **Confirm/Done** | Top right or bottom | Convention |
|
|
136
|
+
|
|
137
|
+
### Large Phone Considerations (>6")
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
On large phones, top 40% becomes "dead zone" for one-handed use.
|
|
141
|
+
|
|
142
|
+
Solutions:
|
|
143
|
+
├── Reachability features (iOS)
|
|
144
|
+
├── Pull-down interfaces (drawer pulls content down)
|
|
145
|
+
├── Bottom sheet navigation
|
|
146
|
+
├── Floating action buttons
|
|
147
|
+
└── Gesture-based alternatives to top actions
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 3. Touch vs Click Psychology
|
|
153
|
+
|
|
154
|
+
### Expectation Differences
|
|
155
|
+
|
|
156
|
+
| Aspect | Click (Desktop) | Touch (Mobile) |
|
|
157
|
+
|--------|-----------------|----------------|
|
|
158
|
+
| **Feedback timing** | Can wait 100ms | Expect instant (<50ms) |
|
|
159
|
+
| **Visual feedback** | Hover → Click | Immediate tap response |
|
|
160
|
+
| **Error tolerance** | Easy retry | Frustrating, feels broken |
|
|
161
|
+
| **Precision** | High | Low |
|
|
162
|
+
| **Context menu** | Right-click | Long press |
|
|
163
|
+
| **Cancel action** | ESC key | Swipe away, outside tap |
|
|
164
|
+
|
|
165
|
+
### Touch Feedback Requirements
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
Tap → Immediate visual change (< 50ms)
|
|
169
|
+
├── Highlight state (background color change)
|
|
170
|
+
├── Scale down slightly (0.95-0.98)
|
|
171
|
+
├── Ripple effect (Android Material)
|
|
172
|
+
├── Haptic feedback for confirmation
|
|
173
|
+
└── Never nothing!
|
|
174
|
+
|
|
175
|
+
Loading → Show within 100ms
|
|
176
|
+
├── If action takes > 100ms
|
|
177
|
+
├── Show spinner/progress
|
|
178
|
+
├── Disable button (prevent double tap)
|
|
179
|
+
└── Optimistic UI when possible
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### The "Fat Finger" Problem
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
Problem: Finger occludes target during tap
|
|
186
|
+
├── User can't see exactly where they're tapping
|
|
187
|
+
├── Visual feedback appears UNDER finger
|
|
188
|
+
└── Increases error rate
|
|
189
|
+
|
|
190
|
+
Solutions:
|
|
191
|
+
├── Show feedback ABOVE touch point (tooltips)
|
|
192
|
+
├── Use cursor-like offset for precision tasks
|
|
193
|
+
├── Magnification loupe for text selection
|
|
194
|
+
└── Large enough targets that precision doesn't matter
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 4. Gesture Psychology
|
|
200
|
+
|
|
201
|
+
### Gesture Discoverability Problem
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
Problem: Gestures are INVISIBLE.
|
|
205
|
+
├── User must discover/remember them
|
|
206
|
+
├── No hover/visual hint
|
|
207
|
+
├── Different mental model than tap
|
|
208
|
+
└── Many users never discover gestures
|
|
209
|
+
|
|
210
|
+
Solution: Always provide visible alternative
|
|
211
|
+
├── Swipe to delete → Also show delete button or menu
|
|
212
|
+
├── Pull to refresh → Also show refresh button
|
|
213
|
+
├── Pinch to zoom → Also show zoom controls
|
|
214
|
+
└── Gestures as shortcuts, not only way
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Common Gesture Conventions
|
|
218
|
+
|
|
219
|
+
| Gesture | Universal Meaning | Usage |
|
|
220
|
+
|---------|-------------------|-------|
|
|
221
|
+
| **Tap** | Select, activate | Primary action |
|
|
222
|
+
| **Double tap** | Zoom in, like/favorite | Quick action |
|
|
223
|
+
| **Long press** | Context menu, selection mode | Secondary options |
|
|
224
|
+
| **Swipe horizontal** | Navigation, delete, actions | List actions |
|
|
225
|
+
| **Swipe down** | Refresh, dismiss | Pull to refresh |
|
|
226
|
+
| **Pinch** | Zoom in/out | Maps, images |
|
|
227
|
+
| **Two-finger scroll** | Scroll within scroll | Nested scrolls |
|
|
228
|
+
|
|
229
|
+
### Gesture Affordance Design
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
Swipe actions need visual hints:
|
|
233
|
+
|
|
234
|
+
┌─────────────────────────────────────────┐
|
|
235
|
+
│ ┌───┐ │
|
|
236
|
+
│ │ ≡ │ Item with hidden actions... → │ ← Edge hint (partial color)
|
|
237
|
+
│ └───┘ │
|
|
238
|
+
└─────────────────────────────────────────┘
|
|
239
|
+
|
|
240
|
+
✅ Good: Slight color peek at edge suggesting swipe
|
|
241
|
+
✅ Good: Drag handle icon ( ≡ ) suggesting reorder
|
|
242
|
+
✅ Good: Onboarding tooltip explaining gesture
|
|
243
|
+
❌ Bad: Hidden gestures with no visual affordance
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Platform Gesture Differences
|
|
247
|
+
|
|
248
|
+
| Gesture | iOS | Android |
|
|
249
|
+
|---------|-----|---------|
|
|
250
|
+
| **Back** | Edge swipe from left | System back button/gesture |
|
|
251
|
+
| **Share** | Action sheet | Share sheet |
|
|
252
|
+
| **Context menu** | Long press / Force touch | Long press |
|
|
253
|
+
| **Dismiss modal** | Swipe down | Back button or swipe |
|
|
254
|
+
| **Delete in list** | Swipe left, tap delete | Swipe left, immediate or undo |
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## 5. Haptic Feedback Patterns
|
|
259
|
+
|
|
260
|
+
### Why Haptics Matter
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
Haptics provide:
|
|
264
|
+
├── Confirmation without looking
|
|
265
|
+
├── Richer, more premium feel
|
|
266
|
+
├── Accessibility (blind users)
|
|
267
|
+
├── Reduced error rate
|
|
268
|
+
└── Emotional satisfaction
|
|
269
|
+
|
|
270
|
+
Without haptics:
|
|
271
|
+
├── Feels "cheap" or web-like
|
|
272
|
+
├── User unsure if action registered
|
|
273
|
+
└── Missed opportunity for delight
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### iOS Haptic Types
|
|
277
|
+
|
|
278
|
+
| Type | Intensity | Use Case |
|
|
279
|
+
|------|-----------|----------|
|
|
280
|
+
| `selection` | Light | Picker scroll, toggle, selection |
|
|
281
|
+
| `light` | Light | Minor actions, hover equivalent |
|
|
282
|
+
| `medium` | Medium | Standard tap confirmation |
|
|
283
|
+
| `heavy` | Strong | Important completed, drop |
|
|
284
|
+
| `success` | Pattern | Task completed successfully |
|
|
285
|
+
| `warning` | Pattern | Warning, attention needed |
|
|
286
|
+
| `error` | Pattern | Error occurred |
|
|
287
|
+
|
|
288
|
+
### Android Haptic Types
|
|
289
|
+
|
|
290
|
+
| Type | Use Case |
|
|
291
|
+
|------|----------|
|
|
292
|
+
| `CLICK` | Standard tap feedback |
|
|
293
|
+
| `HEAVY_CLICK` | Important actions |
|
|
294
|
+
| `DOUBLE_CLICK` | Confirm actions |
|
|
295
|
+
| `TICK` | Scroll/scrub feedback |
|
|
296
|
+
| `LONG_PRESS` | Long press activation |
|
|
297
|
+
| `REJECT` | Error/invalid action |
|
|
298
|
+
|
|
299
|
+
### Haptic Usage Guidelines
|
|
300
|
+
|
|
301
|
+
```
|
|
302
|
+
✅ DO use haptics for:
|
|
303
|
+
├── Button taps
|
|
304
|
+
├── Toggle switches
|
|
305
|
+
├── Picker/slider values
|
|
306
|
+
├── Pull to refresh trigger
|
|
307
|
+
├── Successful action completion
|
|
308
|
+
├── Errors and warnings
|
|
309
|
+
├── Swipe action thresholds
|
|
310
|
+
└── Important state changes
|
|
311
|
+
|
|
312
|
+
❌ DON'T use haptics for:
|
|
313
|
+
├── Every scroll position
|
|
314
|
+
├── Every list item
|
|
315
|
+
├── Background events
|
|
316
|
+
├── Passive displays
|
|
317
|
+
└── Too frequently (haptic fatigue)
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### Haptic Intensity Mapping
|
|
321
|
+
|
|
322
|
+
| Action Importance | Haptic Level | Example |
|
|
323
|
+
|-------------------|--------------|---------|
|
|
324
|
+
| Minor/Browsing | Light / None | Scrolling, hovering |
|
|
325
|
+
| Standard Action | Medium / Selection | Tap, toggle |
|
|
326
|
+
| Significant Action | Heavy / Success | Complete, confirm |
|
|
327
|
+
| Critical/Destructive | Heavy / Warning | Delete, payment |
|
|
328
|
+
| Error | Error pattern | Failed action |
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## 6. Mobile Cognitive Load
|
|
333
|
+
|
|
334
|
+
### How Mobile Differs from Desktop
|
|
335
|
+
|
|
336
|
+
| Factor | Desktop | Mobile | Implication |
|
|
337
|
+
|--------|---------|--------|-------------|
|
|
338
|
+
| **Attention** | Focused sessions | Interrupted constantly | Design for micro-sessions |
|
|
339
|
+
| **Context** | Controlled environment | Anywhere, any condition | Handle bad lighting, noise |
|
|
340
|
+
| **Multitasking** | Multiple windows | One app visible | Complete task in-app |
|
|
341
|
+
| **Input speed** | Fast (keyboard) | Slow (touch typing) | Minimize input, smart defaults |
|
|
342
|
+
| **Error recovery** | Easy (undo, back) | Harder (no keyboard shortcuts) | Prevent errors, easy recovery |
|
|
343
|
+
|
|
344
|
+
### Reducing Mobile Cognitive Load
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
1. ONE PRIMARY ACTION per screen
|
|
348
|
+
└── Clear what to do next
|
|
349
|
+
|
|
350
|
+
2. PROGRESSIVE DISCLOSURE
|
|
351
|
+
└── Show only what's needed now
|
|
352
|
+
|
|
353
|
+
3. SMART DEFAULTS
|
|
354
|
+
└── Pre-fill what you can
|
|
355
|
+
|
|
356
|
+
4. CHUNKING
|
|
357
|
+
└── Break long forms into steps
|
|
358
|
+
|
|
359
|
+
5. RECOGNITION over RECALL
|
|
360
|
+
└── Show options, don't make user remember
|
|
361
|
+
|
|
362
|
+
6. CONTEXT PERSISTENCE
|
|
363
|
+
└── Save state on interrupt/background
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Miller's Law for Mobile
|
|
367
|
+
|
|
368
|
+
```
|
|
369
|
+
Desktop: 7±2 items in working memory
|
|
370
|
+
Mobile: Reduce to 5±1 (more distractions)
|
|
371
|
+
|
|
372
|
+
Navigation: Max 5 tab bar items
|
|
373
|
+
Options: Max 5 per menu level
|
|
374
|
+
Steps: Max 5 visible steps in progress
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Hick's Law for Mobile
|
|
378
|
+
|
|
379
|
+
```
|
|
380
|
+
More choices = slower decisions
|
|
381
|
+
|
|
382
|
+
Mobile impact: Even worse than desktop
|
|
383
|
+
├── Smaller screen = less overview
|
|
384
|
+
├── Scrolling required = items forgotten
|
|
385
|
+
├── Interruptions = lost context
|
|
386
|
+
└── Decision fatigue faster
|
|
387
|
+
|
|
388
|
+
Solution: Progressive disclosure
|
|
389
|
+
├── Start with 3-5 options
|
|
390
|
+
├── "More" for additional
|
|
391
|
+
├── Smart ordering (most used first)
|
|
392
|
+
└── Previous selections remembered
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
## 7. Touch Accessibility
|
|
398
|
+
|
|
399
|
+
### Motor Impairment Considerations
|
|
400
|
+
|
|
401
|
+
```
|
|
402
|
+
Users with motor impairments may:
|
|
403
|
+
├── Have tremors (need larger targets)
|
|
404
|
+
├── Use assistive devices (different input method)
|
|
405
|
+
├── Have limited reach (one-handed necessity)
|
|
406
|
+
├── Need more time (avoid timeouts)
|
|
407
|
+
└── Make accidental touches (need confirmation)
|
|
408
|
+
|
|
409
|
+
Design responses:
|
|
410
|
+
├── Generous touch targets (48dp+)
|
|
411
|
+
├── Adjustable timing for gestures
|
|
412
|
+
├── Undo for destructive actions
|
|
413
|
+
├── Switch control support
|
|
414
|
+
└── Voice control support
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
### Touch Target Spacing (A11y)
|
|
418
|
+
|
|
419
|
+
```
|
|
420
|
+
WCAG 2.2 Success Criterion 2.5.8:
|
|
421
|
+
|
|
422
|
+
Touch targets MUST have:
|
|
423
|
+
├── Width: ≥ 44px
|
|
424
|
+
├── Height: ≥ 44px
|
|
425
|
+
├── Spacing: ≥ 8px from adjacent targets
|
|
426
|
+
|
|
427
|
+
OR the target is:
|
|
428
|
+
├── Inline (within text)
|
|
429
|
+
├── User-controlled (user can resize)
|
|
430
|
+
├── Essential (no alternative design)
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
### Accessible Touch Patterns
|
|
434
|
+
|
|
435
|
+
| Pattern | Accessible Implementation |
|
|
436
|
+
|---------|---------------------------|
|
|
437
|
+
| Swipe actions | Provide menu alternative |
|
|
438
|
+
| Drag and drop | Provide select + move option |
|
|
439
|
+
| Pinch zoom | Provide zoom buttons |
|
|
440
|
+
| Force touch | Provide long press alternative |
|
|
441
|
+
| Shake gesture | Provide button alternative |
|
|
442
|
+
|
|
443
|
+
---
|
|
444
|
+
|
|
445
|
+
## 8. Emotion in Touch
|
|
446
|
+
|
|
447
|
+
### The Premium Feel
|
|
448
|
+
|
|
449
|
+
```
|
|
450
|
+
What makes touch feel "premium":
|
|
451
|
+
├── Instant response (< 50ms)
|
|
452
|
+
├── Appropriate haptic feedback
|
|
453
|
+
├── Smooth 60fps animations
|
|
454
|
+
├── Correct resistance/physics
|
|
455
|
+
├── Sound feedback (when appropriate)
|
|
456
|
+
└── Attention to spring physics
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### Emotional Touch Feedback
|
|
460
|
+
|
|
461
|
+
| Emotion | Touch Response |
|
|
462
|
+
|---------|----------------|
|
|
463
|
+
| Success | Haptic success + confetti/check |
|
|
464
|
+
| Error | Haptic error + shake animation |
|
|
465
|
+
| Warning | Haptic warning + attention color |
|
|
466
|
+
| Delight | Unexpected smooth animation |
|
|
467
|
+
| Power | Heavy haptic on significant action |
|
|
468
|
+
|
|
469
|
+
### Trust Building Through Touch
|
|
470
|
+
|
|
471
|
+
```
|
|
472
|
+
Trust signals in touch interactions:
|
|
473
|
+
├── Consistent behavior (same action = same response)
|
|
474
|
+
├── Reliable feedback (never fails silently)
|
|
475
|
+
├── Secure feel for sensitive actions
|
|
476
|
+
├── Professional animations (not janky)
|
|
477
|
+
└── No accidental actions (confirmation for destructive)
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
## 9. Touch Psychology Checklist
|
|
483
|
+
|
|
484
|
+
### Before Every Screen
|
|
485
|
+
|
|
486
|
+
- [ ] **All touch targets ≥ 44-48px?**
|
|
487
|
+
- [ ] **Primary CTA in thumb zone?**
|
|
488
|
+
- [ ] **Destructive actions require confirmation?**
|
|
489
|
+
- [ ] **Gesture alternatives exist (visible buttons)?**
|
|
490
|
+
- [ ] **Haptic feedback on important actions?**
|
|
491
|
+
- [ ] **Immediate visual feedback on tap?**
|
|
492
|
+
- [ ] **Loading states for actions > 100ms?**
|
|
493
|
+
|
|
494
|
+
### Before Release
|
|
495
|
+
|
|
496
|
+
- [ ] **Tested on smallest supported device?**
|
|
497
|
+
- [ ] **Tested one-handed on large phone?**
|
|
498
|
+
- [ ] **All gestures have visible alternatives?**
|
|
499
|
+
- [ ] **Haptics work correctly (test on device)?**
|
|
500
|
+
- [ ] **Touch targets tested with accessibility settings?**
|
|
501
|
+
- [ ] **No tiny close buttons or icons?**
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
## 10. Quick Reference Card
|
|
506
|
+
|
|
507
|
+
### Touch Target Sizes
|
|
508
|
+
|
|
509
|
+
```
|
|
510
|
+
iOS Android WCAG
|
|
511
|
+
Minimum: 44pt 48dp 44px
|
|
512
|
+
Recommended: 48pt+ 56dp+ -
|
|
513
|
+
Spacing: 8pt+ 8dp+ 8px+
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### Thumb Zone Actions
|
|
517
|
+
|
|
518
|
+
```
|
|
519
|
+
TOP: Navigation, settings, back (infrequent)
|
|
520
|
+
MIDDLE: Content, secondary actions
|
|
521
|
+
BOTTOM: Primary CTA, tab bar, FAB (frequent)
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
### Haptic Selection
|
|
525
|
+
|
|
526
|
+
```
|
|
527
|
+
Light: Selection, toggle, minor
|
|
528
|
+
Medium: Tap, standard action
|
|
529
|
+
Heavy: Confirm, complete, drop
|
|
530
|
+
Success: Task done
|
|
531
|
+
Error: Failed action
|
|
532
|
+
Warning: Attention needed
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
> **Remember:** Every touch is a conversation between user and device. Make it feel natural, responsive, and respectful of human fingers—not precise cursor points.
|