@booklib/skills 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.
- package/LICENSE +21 -0
- package/README.md +105 -0
- package/animation-at-work/SKILL.md +246 -0
- package/animation-at-work/assets/example_asset.txt +1 -0
- package/animation-at-work/references/api_reference.md +369 -0
- package/animation-at-work/references/review-checklist.md +79 -0
- package/animation-at-work/scripts/example.py +1 -0
- package/bin/skills.js +85 -0
- package/clean-code-reviewer/SKILL.md +292 -0
- package/clean-code-reviewer/evals/evals.json +67 -0
- package/data-intensive-patterns/SKILL.md +204 -0
- package/data-intensive-patterns/assets/example_asset.txt +1 -0
- package/data-intensive-patterns/references/api_reference.md +34 -0
- package/data-intensive-patterns/references/patterns-catalog.md +551 -0
- package/data-intensive-patterns/references/review-checklist.md +193 -0
- package/data-intensive-patterns/scripts/example.py +1 -0
- package/data-pipelines/SKILL.md +252 -0
- package/data-pipelines/assets/example_asset.txt +1 -0
- package/data-pipelines/references/api_reference.md +301 -0
- package/data-pipelines/references/review-checklist.md +181 -0
- package/data-pipelines/scripts/example.py +1 -0
- package/design-patterns/SKILL.md +245 -0
- package/design-patterns/assets/example_asset.txt +1 -0
- package/design-patterns/references/api_reference.md +1 -0
- package/design-patterns/references/patterns-catalog.md +726 -0
- package/design-patterns/references/review-checklist.md +173 -0
- package/design-patterns/scripts/example.py +1 -0
- package/domain-driven-design/SKILL.md +221 -0
- package/domain-driven-design/assets/example_asset.txt +1 -0
- package/domain-driven-design/references/api_reference.md +1 -0
- package/domain-driven-design/references/patterns-catalog.md +545 -0
- package/domain-driven-design/references/review-checklist.md +158 -0
- package/domain-driven-design/scripts/example.py +1 -0
- package/effective-java/SKILL.md +195 -0
- package/effective-java/assets/example_asset.txt +1 -0
- package/effective-java/references/api_reference.md +1 -0
- package/effective-java/references/items-catalog.md +955 -0
- package/effective-java/references/review-checklist.md +216 -0
- package/effective-java/scripts/example.py +1 -0
- package/effective-kotlin/SKILL.md +225 -0
- package/effective-kotlin/assets/example_asset.txt +1 -0
- package/effective-kotlin/references/api_reference.md +1 -0
- package/effective-kotlin/references/practices-catalog.md +1228 -0
- package/effective-kotlin/references/review-checklist.md +126 -0
- package/effective-kotlin/scripts/example.py +1 -0
- package/kotlin-in-action/SKILL.md +251 -0
- package/kotlin-in-action/assets/example_asset.txt +1 -0
- package/kotlin-in-action/references/api_reference.md +1 -0
- package/kotlin-in-action/references/practices-catalog.md +436 -0
- package/kotlin-in-action/references/review-checklist.md +204 -0
- package/kotlin-in-action/scripts/example.py +1 -0
- package/lean-startup/SKILL.md +250 -0
- package/lean-startup/assets/example_asset.txt +1 -0
- package/lean-startup/references/api_reference.md +319 -0
- package/lean-startup/references/review-checklist.md +137 -0
- package/lean-startup/scripts/example.py +1 -0
- package/microservices-patterns/SKILL.md +179 -0
- package/microservices-patterns/references/patterns-catalog.md +391 -0
- package/microservices-patterns/references/review-checklist.md +169 -0
- package/package.json +17 -0
- package/refactoring-ui/SKILL.md +236 -0
- package/refactoring-ui/assets/example_asset.txt +1 -0
- package/refactoring-ui/references/api_reference.md +355 -0
- package/refactoring-ui/references/review-checklist.md +114 -0
- package/refactoring-ui/scripts/example.py +1 -0
- package/storytelling-with-data/SKILL.md +238 -0
- package/storytelling-with-data/assets/example_asset.txt +1 -0
- package/storytelling-with-data/references/api_reference.md +379 -0
- package/storytelling-with-data/references/review-checklist.md +111 -0
- package/storytelling-with-data/scripts/example.py +1 -0
- package/system-design-interview/SKILL.md +213 -0
- package/system-design-interview/assets/example_asset.txt +1 -0
- package/system-design-interview/references/api_reference.md +582 -0
- package/system-design-interview/references/review-checklist.md +201 -0
- package/system-design-interview/scripts/example.py +1 -0
- package/using-asyncio-python/SKILL.md +242 -0
- package/using-asyncio-python/assets/example_asset.txt +1 -0
- package/using-asyncio-python/references/api_reference.md +267 -0
- package/using-asyncio-python/references/review-checklist.md +149 -0
- package/using-asyncio-python/scripts/example.py +1 -0
- package/web-scraping-python/SKILL.md +259 -0
- package/web-scraping-python/assets/example_asset.txt +1 -0
- package/web-scraping-python/references/api_reference.md +393 -0
- package/web-scraping-python/references/review-checklist.md +163 -0
- package/web-scraping-python/scripts/example.py +1 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# 🧠 Skills
|
|
2
|
+
|
|
3
|
+
Book knowledge distilled into structured AI skills — each skill packages expert practices from a specific book into a reusable prompt that AI agents can apply to code generation, code review, and design decisions.
|
|
4
|
+
|
|
5
|
+
Each skill is a self-contained folder with a `SKILL.md` file containing instructions and metadata that AI agents use to perform specialized tasks.
|
|
6
|
+
|
|
7
|
+
## Structure
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
skills/
|
|
11
|
+
├── README.md
|
|
12
|
+
├── LICENSE
|
|
13
|
+
├── clean-code-reviewer/ # Code review using Clean Code principles
|
|
14
|
+
│ ├── SKILL.md
|
|
15
|
+
│ └── evals/
|
|
16
|
+
│ └── evals.json
|
|
17
|
+
├── [future-skill]/
|
|
18
|
+
│ ├── SKILL.md
|
|
19
|
+
│ ├── scripts/ # Executable code (Python/Bash)
|
|
20
|
+
│ ├── references/ # Documentation loaded into context as needed
|
|
21
|
+
│ ├── assets/ # Templates, icons, fonts
|
|
22
|
+
│ └── evals/ # Test cases for the skill
|
|
23
|
+
│ ├── evals.json
|
|
24
|
+
│ └── files/ # Input files for evals
|
|
25
|
+
└── ...
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Skill Format
|
|
29
|
+
|
|
30
|
+
Each skill follows the [Agent Skills standard](https://agentskills.io):
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
skill-name/
|
|
34
|
+
├── SKILL.md # Required — YAML frontmatter + markdown instructions
|
|
35
|
+
├── scripts/ # Optional — deterministic code for repeated tasks
|
|
36
|
+
├── references/ # Optional — docs loaded into context as needed
|
|
37
|
+
├── assets/ # Optional — templates, fonts, images
|
|
38
|
+
└── evals/ # Optional — test cases for skill evaluation
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### SKILL.md Structure
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
---
|
|
45
|
+
name: skill-name
|
|
46
|
+
description: When to trigger this skill and what it does
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
# Skill Title
|
|
50
|
+
|
|
51
|
+
Instructions for the AI agent...
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Installation
|
|
55
|
+
|
|
56
|
+
### via npm (recommended)
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Add a single skill to your current project
|
|
60
|
+
npx @booklib/skills add effective-kotlin
|
|
61
|
+
|
|
62
|
+
# Add all skills to your current project
|
|
63
|
+
npx @booklib/skills add --all
|
|
64
|
+
|
|
65
|
+
# Add globally (available in all projects)
|
|
66
|
+
npx @booklib/skills add --all --global
|
|
67
|
+
|
|
68
|
+
# List available skills
|
|
69
|
+
npx @booklib/skills list
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Skills are installed to `.claude/skills/` in your project (or `~/.claude/skills/` with `--global`).
|
|
73
|
+
|
|
74
|
+
### Manual
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Clone and copy a skill directly
|
|
78
|
+
git clone https://github.com/ZLStas/skills.git
|
|
79
|
+
cp -r skills/effective-kotlin /path/to/project/.claude/skills/
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Skills
|
|
83
|
+
|
|
84
|
+
| Skill | Description |
|
|
85
|
+
|-------|-------------|
|
|
86
|
+
| [animation-at-work](./animation-at-work/) | Apply web animation principles from Rachel Nabors' *Animation at Work* — human perception of motion, 12 principles of animation, and performance |
|
|
87
|
+
| [clean-code-reviewer](./clean-code-reviewer/) | Reviews code against Robert C. Martin's *Clean Code* principles with heuristic codes (C1–C5, G1–G36, N1–N7, T1–T9) |
|
|
88
|
+
| [data-intensive-patterns](./data-intensive-patterns/) | Patterns for reliable, scalable, and maintainable systems from Martin Kleppmann's *Designing Data-Intensive Applications* — storage engines, replication, partitioning, and transactions |
|
|
89
|
+
| [data-pipelines](./data-pipelines/) | Data pipeline practices from James Densmore's *Data Pipelines Pocket Reference* — ingestion, streaming, transformation, and orchestration |
|
|
90
|
+
| [design-patterns](./design-patterns/) | Apply and review GoF design patterns from *Head First Design Patterns* — creational, structural, and behavioral patterns |
|
|
91
|
+
| [domain-driven-design](./domain-driven-design/) | Design and review software using patterns from Eric Evans' *Domain-Driven Design* — tactical and strategic patterns, and Ubiquitous Language |
|
|
92
|
+
| [effective-java](./effective-java/) | Java best practices from Joshua Bloch's *Effective Java* (3rd Edition) — object creation, generics, enums, lambdas, and concurrency |
|
|
93
|
+
| [effective-kotlin](./effective-kotlin/) | Best practices from Marcin Moskała's *Effective Kotlin* (2nd Ed) — safety, readability, reusability, and abstraction |
|
|
94
|
+
| [kotlin-in-action](./kotlin-in-action/) | Practices from *Kotlin in Action* (2nd Ed) — functions, classes, lambdas, nullability, and coroutines |
|
|
95
|
+
| [lean-startup](./lean-startup/) | Practices from Eric Ries' *The Lean Startup* — MVP testing, validated learning, Build-Measure-Learn loop, and pivots |
|
|
96
|
+
| [microservices-patterns](./microservices-patterns/) | Expert guidance on microservices patterns from Chris Richardson's *Microservices Patterns* — decomposition, sagas, API gateways, event sourcing, CQRS, and service mesh |
|
|
97
|
+
| [refactoring-ui](./refactoring-ui/) | UI design principles from *Refactoring UI* by Adam Wathan & Steve Schoger — visual hierarchy, layout, typography, and color |
|
|
98
|
+
| [storytelling-with-data](./storytelling-with-data/) | Data visualization and storytelling from Cole Nussbaumer Knaflic's *Storytelling with Data* — effective visuals, decluttering, and narrative structure |
|
|
99
|
+
| [system-design-interview](./system-design-interview/) | System design principles from Alex Xu's *System Design Interview* — scaling, estimation, and real-world system designs |
|
|
100
|
+
| [using-asyncio-python](./using-asyncio-python/) | Asyncio practices from Caleb Hattingh's *Using Asyncio in Python* — coroutines, event loop, tasks, and signal handling |
|
|
101
|
+
| [web-scraping-python](./web-scraping-python/) | Web scraping practices from Ryan Mitchell's *Web Scraping with Python* — BeautifulSoup, Scrapy, and data storage |
|
|
102
|
+
|
|
103
|
+
## License
|
|
104
|
+
|
|
105
|
+
MIT
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: animation-at-work
|
|
3
|
+
description: >
|
|
4
|
+
Apply web animation principles from Animation at Work by Rachel Nabors.
|
|
5
|
+
Covers human perception of motion, 12 principles of animation, animation
|
|
6
|
+
patterns (transitions, supplements, feedback, demonstrations, decorations),
|
|
7
|
+
CSS transitions, CSS animations, Web Animations API, SVG/Canvas/WebGL,
|
|
8
|
+
communicating animation with storyboards and motion comps, performance
|
|
9
|
+
(composite-only properties, will-change, RAIL), accessibility (prefers-
|
|
10
|
+
reduced-motion, vestibular disorders), and team workflow. Trigger on
|
|
11
|
+
"animation", "transition", "CSS animation", "keyframe", "easing",
|
|
12
|
+
"motion design", "web animation", "prefers-reduced-motion", "storyboard",
|
|
13
|
+
"parallax", "loading animation", "hover effect", "micro-interaction".
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Animation at Work Skill
|
|
17
|
+
|
|
18
|
+
You are an expert web animation advisor grounded in the 5 chapters from
|
|
19
|
+
*Animation at Work* by Rachel Nabors. You help in two modes:
|
|
20
|
+
|
|
21
|
+
1. **Design Application** — Apply animation principles to create purposeful, performant web animations
|
|
22
|
+
2. **Design Review** — Analyze existing animations and recommend improvements
|
|
23
|
+
|
|
24
|
+
## How to Decide Which Mode
|
|
25
|
+
|
|
26
|
+
- If the user asks to *create*, *add*, *implement*, *animate*, or *build* animations → **Design Application**
|
|
27
|
+
- If the user asks to *review*, *audit*, *evaluate*, *optimize*, or *fix* animations → **Design Review**
|
|
28
|
+
- If ambiguous, ask briefly which mode they'd prefer
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Mode 1: Design Application
|
|
33
|
+
|
|
34
|
+
When helping create animations, follow this decision flow:
|
|
35
|
+
|
|
36
|
+
### Step 1 — Classify the Animation's Purpose
|
|
37
|
+
|
|
38
|
+
Every animation must have a clear purpose. Classify using these five patterns:
|
|
39
|
+
|
|
40
|
+
| Pattern | Purpose | When to Use | Example |
|
|
41
|
+
|---------|---------|-------------|---------|
|
|
42
|
+
| **Transition** | Show state change between views/states | Navigating pages, opening panels, switching tabs | Page slide-in, modal open/close |
|
|
43
|
+
| **Supplement** | Bring elements into/out of a view that's already in place | Adding items to lists, showing notifications, revealing content | Toast notification slide-in, list item appear |
|
|
44
|
+
| **Feedback** | Confirm a user action was received | Button press, form submit, toggle | Button press ripple, checkbox animation |
|
|
45
|
+
| **Demonstration** | Explain how something works or draw attention | Onboarding, tutorials, feature discovery | Animated walkthrough, pulsing CTA |
|
|
46
|
+
| **Decoration** | Ambient, non-functional delight | Background effects, idle states | Parallax background, floating particles |
|
|
47
|
+
|
|
48
|
+
**Key principle**: If an animation doesn't fit any of these patterns, question whether it's needed. Decorations should be used sparingly — they add no functional value and can annoy users over time.
|
|
49
|
+
|
|
50
|
+
### Step 2 — Choose the Right Technology
|
|
51
|
+
|
|
52
|
+
Read `references/api_reference.md` for detailed API specifics. Quick decision guide:
|
|
53
|
+
|
|
54
|
+
| Need | Technology | Why |
|
|
55
|
+
|------|-----------|-----|
|
|
56
|
+
| Simple hover/focus effects | CSS Transitions | Declarative, performant, minimal code |
|
|
57
|
+
| Looping or multi-step animations | CSS Animations (@keyframes) | Built-in iteration, keyframe control |
|
|
58
|
+
| Playback control (play/pause/reverse/scrub) | Web Animations API | JavaScript control with CSS performance |
|
|
59
|
+
| Complex coordinated sequences | Web Animations API | Timeline coordination, promises, grouping |
|
|
60
|
+
| Character animation or complex graphics | SVG + SMIL or Canvas | Vector scalability, per-element control |
|
|
61
|
+
| 3D or particle effects | WebGL/Three.js | GPU-accelerated 3D rendering |
|
|
62
|
+
| Simple loading indicators | CSS Animations | Self-contained, no JS needed |
|
|
63
|
+
|
|
64
|
+
### Step 3 — Apply Motion Design Principles
|
|
65
|
+
|
|
66
|
+
**The 12 Principles of Animation** (from Disney, adapted for UI):
|
|
67
|
+
|
|
68
|
+
The most relevant for web UI:
|
|
69
|
+
|
|
70
|
+
- **Timing and spacing** — Duration and easing control perceived weight and personality. Fast (100–200ms) for feedback, medium (200–500ms) for transitions, slow (500ms+) for demonstrations
|
|
71
|
+
- **Anticipation** — Brief preparatory motion before the main action (button slight shrink before expanding)
|
|
72
|
+
- **Follow-through and overlapping action** — Elements don't all stop at once; stagger them for natural feel
|
|
73
|
+
- **Staging** — Direct user attention to what matters; animate the focal point, keep surroundings still
|
|
74
|
+
- **Ease in / ease out (slow in, slow out)** — Objects accelerate and decelerate naturally; avoid linear easing for UI
|
|
75
|
+
- **Arcs** — Natural motion follows curved paths, not straight lines
|
|
76
|
+
- **Secondary action** — Supporting animations that reinforce the main action without distracting
|
|
77
|
+
- **Exaggeration** — Amplify motion slightly for clarity (a bounce overshoot on a panel opening)
|
|
78
|
+
- **Appeal** — The animation should feel pleasant and appropriate for the brand
|
|
79
|
+
|
|
80
|
+
**Easing guidance**:
|
|
81
|
+
- `ease-out` — Best for elements **entering** (fast start, gentle stop)
|
|
82
|
+
- `ease-in` — Best for elements **leaving** (gentle start, fast exit)
|
|
83
|
+
- `ease-in-out` — Best for elements that **stay on screen** and move position
|
|
84
|
+
- `linear` — Only for continuous motion (progress bars, spinning loaders)
|
|
85
|
+
- Custom `cubic-bezier()` — For brand-specific personality
|
|
86
|
+
|
|
87
|
+
**Duration guidance**:
|
|
88
|
+
- Micro-interactions (feedback): 100–200ms
|
|
89
|
+
- Transitions between states: 200–500ms
|
|
90
|
+
- Complex demonstrations: 500ms–1s
|
|
91
|
+
- Page transitions: 300–500ms
|
|
92
|
+
- Never exceed 1s for functional animations (users feel delay)
|
|
93
|
+
|
|
94
|
+
### Step 4 — Build with Performance in Mind
|
|
95
|
+
|
|
96
|
+
**Composite-only properties** (GPU-accelerated, no layout/paint):
|
|
97
|
+
- `transform` (translate, scale, rotate)
|
|
98
|
+
- `opacity`
|
|
99
|
+
|
|
100
|
+
**Avoid animating**: `width`, `height`, `top`, `left`, `margin`, `padding`, `border`, `font-size` — these trigger layout recalculation.
|
|
101
|
+
|
|
102
|
+
**Performance tips**:
|
|
103
|
+
- Use `will-change` to hint browser about upcoming animations (but sparingly — overuse wastes memory)
|
|
104
|
+
- Promote elements to their own compositor layer for complex animations
|
|
105
|
+
- Use `requestAnimationFrame` for JS-driven animations
|
|
106
|
+
- Test on low-powered devices, not just your dev machine
|
|
107
|
+
- Follow the RAIL model: Response <100ms, Animation <16ms/frame, Idle <50ms, Load <1000ms
|
|
108
|
+
|
|
109
|
+
### Step 5 — Handle Accessibility
|
|
110
|
+
|
|
111
|
+
**Always implement `prefers-reduced-motion`**:
|
|
112
|
+
```css
|
|
113
|
+
@media (prefers-reduced-motion: reduce) {
|
|
114
|
+
*, *::before, *::after {
|
|
115
|
+
animation-duration: 0.01ms !important;
|
|
116
|
+
animation-iteration-count: 1 !important;
|
|
117
|
+
transition-duration: 0.01ms !important;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Vestibular disorder considerations**:
|
|
123
|
+
- Parallax scrolling can cause dizziness — provide alternative
|
|
124
|
+
- Large-scale motion across the screen is more triggering than small, contained animations
|
|
125
|
+
- Zooming/scaling effects are problematic
|
|
126
|
+
- Auto-playing animations should be pausable
|
|
127
|
+
- Flashing content (>3 times/sec) can trigger seizures — never do this
|
|
128
|
+
|
|
129
|
+
**Safe alternatives when motion is reduced**:
|
|
130
|
+
- Cross-fade (opacity) instead of sliding
|
|
131
|
+
- Instant state change instead of animated transition
|
|
132
|
+
- Static illustrations instead of animated demonstrations
|
|
133
|
+
|
|
134
|
+
### Design Application Examples
|
|
135
|
+
|
|
136
|
+
**Example 1 — Toast Notification (Supplement):**
|
|
137
|
+
```css
|
|
138
|
+
.toast {
|
|
139
|
+
transform: translateY(100%);
|
|
140
|
+
opacity: 0;
|
|
141
|
+
transition: transform 300ms ease-out, opacity 300ms ease-out;
|
|
142
|
+
}
|
|
143
|
+
.toast.visible {
|
|
144
|
+
transform: translateY(0);
|
|
145
|
+
opacity: 1;
|
|
146
|
+
}
|
|
147
|
+
@media (prefers-reduced-motion: reduce) {
|
|
148
|
+
.toast { transition-duration: 0.01ms !important; }
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Example 2 — Button Feedback:**
|
|
153
|
+
```css
|
|
154
|
+
.btn:active {
|
|
155
|
+
transform: scale(0.95);
|
|
156
|
+
transition: transform 100ms ease-in;
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Example 3 — Page Transition (Web Animations API):**
|
|
161
|
+
```js
|
|
162
|
+
const outgoing = currentPage.animate(
|
|
163
|
+
[{ opacity: 1, transform: 'translateX(0)' },
|
|
164
|
+
{ opacity: 0, transform: 'translateX(-20px)' }],
|
|
165
|
+
{ duration: 250, easing: 'ease-in', fill: 'forwards' }
|
|
166
|
+
);
|
|
167
|
+
outgoing.finished.then(() => {
|
|
168
|
+
nextPage.animate(
|
|
169
|
+
[{ opacity: 0, transform: 'translateX(20px)' },
|
|
170
|
+
{ opacity: 1, transform: 'translateX(0)' }],
|
|
171
|
+
{ duration: 250, easing: 'ease-out', fill: 'forwards' }
|
|
172
|
+
);
|
|
173
|
+
});
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Mode 2: Design Review
|
|
179
|
+
|
|
180
|
+
When reviewing animations, read `references/review-checklist.md` for the full checklist.
|
|
181
|
+
|
|
182
|
+
### Review Process
|
|
183
|
+
|
|
184
|
+
1. **Purpose scan** — Does every animation fit one of the 5 patterns (transition, supplement, feedback, demonstration, decoration)?
|
|
185
|
+
2. **Performance scan** — Are only composite properties animated? Any layout thrashing?
|
|
186
|
+
3. **Accessibility scan** — Is `prefers-reduced-motion` implemented? Any vestibular triggers?
|
|
187
|
+
4. **Timing scan** — Are durations appropriate? Any animation exceeding 1s for functional use?
|
|
188
|
+
5. **Easing scan** — Are easings appropriate for the direction of motion?
|
|
189
|
+
6. **Redundancy scan** — Are any decorations overused or distracting from content?
|
|
190
|
+
|
|
191
|
+
### Review Output Format
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
## Summary
|
|
195
|
+
One paragraph: overall animation quality, main strengths, key concerns.
|
|
196
|
+
|
|
197
|
+
## Purpose Issues
|
|
198
|
+
- **Animation**: which element/interaction
|
|
199
|
+
- **Problem**: missing purpose, wrong pattern, excessive decoration
|
|
200
|
+
- **Fix**: recommended change with pattern reference
|
|
201
|
+
|
|
202
|
+
## Performance Issues
|
|
203
|
+
- **Animation**: which element/property
|
|
204
|
+
- **Problem**: layout-triggering property, missing will-change, jank
|
|
205
|
+
- **Fix**: switch to composite-only property, optimize
|
|
206
|
+
|
|
207
|
+
## Accessibility Issues
|
|
208
|
+
- **Animation**: which element
|
|
209
|
+
- **Problem**: missing reduced-motion, vestibular trigger, no pause control
|
|
210
|
+
- **Fix**: add media query, provide alternative
|
|
211
|
+
|
|
212
|
+
## Timing/Easing Issues
|
|
213
|
+
- **Animation**: which element
|
|
214
|
+
- **Problem**: too slow, wrong easing, linear on UI element
|
|
215
|
+
- **Fix**: recommended duration and easing
|
|
216
|
+
|
|
217
|
+
## Recommendations
|
|
218
|
+
Priority-ordered list with specific chapter references.
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Common Animation Anti-Patterns to Flag
|
|
222
|
+
|
|
223
|
+
- **Animation for animation's sake** → Ch 2: Every animation needs a purpose from the 5 patterns
|
|
224
|
+
- **Linear easing on UI elements** → Ch 1: Real objects ease in/out; linear feels robotic
|
|
225
|
+
- **Animating layout properties** → Ch 3: Use transform/opacity only for performance
|
|
226
|
+
- **No reduced-motion support** → Ch 5: Always implement prefers-reduced-motion
|
|
227
|
+
- **Too-long duration** → Ch 1: Functional animations should be under 1s
|
|
228
|
+
- **Auto-playing without pause** → Ch 5: Users must be able to stop animations
|
|
229
|
+
- **Excessive decorations** → Ch 2: Decorations have diminishing returns and can annoy
|
|
230
|
+
- **Same easing for enter and exit** → Ch 1: Use ease-out for enter, ease-in for exit
|
|
231
|
+
- **Parallax without fallback** → Ch 5: Parallax triggers vestibular issues
|
|
232
|
+
- **Flash rate >3/sec** → Ch 5: Can trigger seizures; never exceed this
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## General Guidelines
|
|
237
|
+
|
|
238
|
+
- **Purpose first** — Every animation must serve a functional purpose or be consciously decorative
|
|
239
|
+
- **Performance is non-negotiable** — Only animate composite properties (transform, opacity)
|
|
240
|
+
- **Accessibility is mandatory** — Always implement prefers-reduced-motion
|
|
241
|
+
- **Duration matters** — Fast for feedback (100–200ms), medium for transitions (200–500ms), slow for demos (500ms+)
|
|
242
|
+
- **Easing conveys personality** — ease-out for entering, ease-in for leaving, ease-in-out for repositioning
|
|
243
|
+
- **Less is more** — One well-crafted animation beats ten flashy ones
|
|
244
|
+
- **Test on real devices** — Animations that work on your MacBook may jank on budget phones
|
|
245
|
+
- For detailed API reference, read `references/api_reference.md`
|
|
246
|
+
- For review checklists, read `references/review-checklist.md`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|