feat: animations skill #72
Open
Claude / Claude Code Review
completed
Apr 8, 2026 in 9m 10s
Code review found 1 important issue
Found 6 candidates, confirmed 5. See review comments for details.
Details
| Severity | Count |
|---|---|
| 🔴 Important | 1 |
| 🟡 Nit | 1 |
| 🟣 Pre-existing | 0 |
| Severity | File:Line | Issue |
|---|---|---|
| 🔴 Important | skills/animations/references/staggered-animations.md:96-115 |
CurvedAnimation listener leak in StaggeredListItem (StatelessWidget) |
| 🟡 Nit | .claude-plugin/plugin.json:26-31 |
New keywords out of alphabetical order in plugin.json |
Annotations
Check failure on line 115 in skills/animations/references/staggered-animations.md
claude / Claude Code Review
CurvedAnimation listener leak in StaggeredListItem (StatelessWidget)
The `StaggeredListItem` example creates a new `CurvedAnimation` inside `build()` on a `StatelessWidget`, which registers a status listener on the parent `AnimationController` via `parent.addStatusListener()` but never removes it — because `StatelessWidget` has no `dispose()` method. Each rebuild (e.g., theme change, orientation change, ancestor state update) adds another orphaned listener, accumulating O(rebuilds) leaked listeners on the live controller. Fix by converting `StaggeredListItem` to
Check warning on line 31 in .claude-plugin/plugin.json
claude / Claude Code Review
New keywords out of alphabetical order in plugin.json
Four of the five new animation-related keywords added in this PR are inserted out of alphabetical order in the `plugin.json` keywords array: `easing` appears after `format` (e < f), `hero` appears before `golden-testing` (g < h), `motion` appears before `mcp` (mc < mo), and `page-transitions` appears before `owasp` (o < p). The correct sorted positions are: easing → flutter → format; go-router → golden-testing → hero; mcp → ... → motion; owasp → page-transitions.
Loading