@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.
Files changed (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +105 -0
  3. package/animation-at-work/SKILL.md +246 -0
  4. package/animation-at-work/assets/example_asset.txt +1 -0
  5. package/animation-at-work/references/api_reference.md +369 -0
  6. package/animation-at-work/references/review-checklist.md +79 -0
  7. package/animation-at-work/scripts/example.py +1 -0
  8. package/bin/skills.js +85 -0
  9. package/clean-code-reviewer/SKILL.md +292 -0
  10. package/clean-code-reviewer/evals/evals.json +67 -0
  11. package/data-intensive-patterns/SKILL.md +204 -0
  12. package/data-intensive-patterns/assets/example_asset.txt +1 -0
  13. package/data-intensive-patterns/references/api_reference.md +34 -0
  14. package/data-intensive-patterns/references/patterns-catalog.md +551 -0
  15. package/data-intensive-patterns/references/review-checklist.md +193 -0
  16. package/data-intensive-patterns/scripts/example.py +1 -0
  17. package/data-pipelines/SKILL.md +252 -0
  18. package/data-pipelines/assets/example_asset.txt +1 -0
  19. package/data-pipelines/references/api_reference.md +301 -0
  20. package/data-pipelines/references/review-checklist.md +181 -0
  21. package/data-pipelines/scripts/example.py +1 -0
  22. package/design-patterns/SKILL.md +245 -0
  23. package/design-patterns/assets/example_asset.txt +1 -0
  24. package/design-patterns/references/api_reference.md +1 -0
  25. package/design-patterns/references/patterns-catalog.md +726 -0
  26. package/design-patterns/references/review-checklist.md +173 -0
  27. package/design-patterns/scripts/example.py +1 -0
  28. package/domain-driven-design/SKILL.md +221 -0
  29. package/domain-driven-design/assets/example_asset.txt +1 -0
  30. package/domain-driven-design/references/api_reference.md +1 -0
  31. package/domain-driven-design/references/patterns-catalog.md +545 -0
  32. package/domain-driven-design/references/review-checklist.md +158 -0
  33. package/domain-driven-design/scripts/example.py +1 -0
  34. package/effective-java/SKILL.md +195 -0
  35. package/effective-java/assets/example_asset.txt +1 -0
  36. package/effective-java/references/api_reference.md +1 -0
  37. package/effective-java/references/items-catalog.md +955 -0
  38. package/effective-java/references/review-checklist.md +216 -0
  39. package/effective-java/scripts/example.py +1 -0
  40. package/effective-kotlin/SKILL.md +225 -0
  41. package/effective-kotlin/assets/example_asset.txt +1 -0
  42. package/effective-kotlin/references/api_reference.md +1 -0
  43. package/effective-kotlin/references/practices-catalog.md +1228 -0
  44. package/effective-kotlin/references/review-checklist.md +126 -0
  45. package/effective-kotlin/scripts/example.py +1 -0
  46. package/kotlin-in-action/SKILL.md +251 -0
  47. package/kotlin-in-action/assets/example_asset.txt +1 -0
  48. package/kotlin-in-action/references/api_reference.md +1 -0
  49. package/kotlin-in-action/references/practices-catalog.md +436 -0
  50. package/kotlin-in-action/references/review-checklist.md +204 -0
  51. package/kotlin-in-action/scripts/example.py +1 -0
  52. package/lean-startup/SKILL.md +250 -0
  53. package/lean-startup/assets/example_asset.txt +1 -0
  54. package/lean-startup/references/api_reference.md +319 -0
  55. package/lean-startup/references/review-checklist.md +137 -0
  56. package/lean-startup/scripts/example.py +1 -0
  57. package/microservices-patterns/SKILL.md +179 -0
  58. package/microservices-patterns/references/patterns-catalog.md +391 -0
  59. package/microservices-patterns/references/review-checklist.md +169 -0
  60. package/package.json +17 -0
  61. package/refactoring-ui/SKILL.md +236 -0
  62. package/refactoring-ui/assets/example_asset.txt +1 -0
  63. package/refactoring-ui/references/api_reference.md +355 -0
  64. package/refactoring-ui/references/review-checklist.md +114 -0
  65. package/refactoring-ui/scripts/example.py +1 -0
  66. package/storytelling-with-data/SKILL.md +238 -0
  67. package/storytelling-with-data/assets/example_asset.txt +1 -0
  68. package/storytelling-with-data/references/api_reference.md +379 -0
  69. package/storytelling-with-data/references/review-checklist.md +111 -0
  70. package/storytelling-with-data/scripts/example.py +1 -0
  71. package/system-design-interview/SKILL.md +213 -0
  72. package/system-design-interview/assets/example_asset.txt +1 -0
  73. package/system-design-interview/references/api_reference.md +582 -0
  74. package/system-design-interview/references/review-checklist.md +201 -0
  75. package/system-design-interview/scripts/example.py +1 -0
  76. package/using-asyncio-python/SKILL.md +242 -0
  77. package/using-asyncio-python/assets/example_asset.txt +1 -0
  78. package/using-asyncio-python/references/api_reference.md +267 -0
  79. package/using-asyncio-python/references/review-checklist.md +149 -0
  80. package/using-asyncio-python/scripts/example.py +1 -0
  81. package/web-scraping-python/SKILL.md +259 -0
  82. package/web-scraping-python/assets/example_asset.txt +1 -0
  83. package/web-scraping-python/references/api_reference.md +393 -0
  84. package/web-scraping-python/references/review-checklist.md +163 -0
  85. 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`