@ericrisco/rsc 1.0.26 → 1.0.28

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 (53) hide show
  1. package/README.md +22 -4
  2. package/manifest.json +231 -3
  3. package/package.json +2 -1
  4. package/scripts/build-manifest.js +20 -4
  5. package/scripts/detect-repo.js +27 -1
  6. package/scripts/lib/domains.js +3 -2
  7. package/scripts/lib/skill-lint.js +29 -0
  8. package/scripts/lib/spec-gate.js +122 -0
  9. package/scripts/spec-gate.js +58 -0
  10. package/skills/animate/SKILL.md +228 -0
  11. package/skills/animate/evals/cases.yaml +36 -0
  12. package/skills/animate/references/recipes.md +324 -0
  13. package/skills/animate-expo/SKILL.md +281 -0
  14. package/skills/animate-expo/evals/cases.yaml +36 -0
  15. package/skills/animate-expo/references/recipes.md +385 -0
  16. package/skills/animation-vocabulary/SKILL.md +189 -0
  17. package/skills/animation-vocabulary/evals/cases.yaml +31 -0
  18. package/skills/apple-design/SKILL.md +301 -0
  19. package/skills/apple-design/evals/cases.yaml +33 -0
  20. package/skills/ask-sonner/SKILL.md +104 -0
  21. package/skills/ask-sonner/evals/cases.yaml +33 -0
  22. package/skills/ask-sonner/references/api.md +64 -0
  23. package/skills/clarify/SKILL.md +26 -2
  24. package/skills/design/SKILL.md +8 -0
  25. package/skills/design/references/motion-and-interaction.md +14 -3
  26. package/skills/design/references/visual-system.md +4 -3
  27. package/skills/design-eng/SKILL.md +724 -0
  28. package/skills/design-eng/evals/cases.yaml +36 -0
  29. package/skills/expo/SKILL.md +6 -0
  30. package/skills/find-animation-opportunities/SKILL.md +150 -0
  31. package/skills/find-animation-opportunities/evals/cases.yaml +31 -0
  32. package/skills/improve-animations/SKILL.md +126 -0
  33. package/skills/improve-animations/evals/cases.yaml +31 -0
  34. package/skills/improve-animations/references/audit.md +115 -0
  35. package/skills/improve-animations/references/plan-template.md +73 -0
  36. package/skills/pick-ui-library/SKILL.md +100 -0
  37. package/skills/pick-ui-library/evals/cases.yaml +33 -0
  38. package/skills/prototype/SKILL.md +113 -0
  39. package/skills/prototype/evals/cases.yaml +31 -0
  40. package/skills/prototype/references/picker.md +197 -0
  41. package/skills/react/SKILL.md +6 -0
  42. package/skills/react-native/SKILL.md +5 -0
  43. package/skills/review-animations/SKILL.md +137 -0
  44. package/skills/review-animations/evals/cases.yaml +34 -0
  45. package/skills/review-animations/references/standards.md +187 -0
  46. package/skills/review-animations/scripts/verify.sh +164 -0
  47. package/skills/specify/SKILL.md +77 -26
  48. package/skills/specify/evals/cases.yaml +4 -4
  49. package/skills/specify/references/eliciting-requirements.md +50 -10
  50. package/skills/specify/references/spec-template.md +19 -5
  51. package/skills/swift-ios/SKILL.md +7 -0
  52. package/skills/write-swift/SKILL.md +413 -0
  53. package/skills/write-swift/evals/cases.yaml +36 -0
@@ -16,12 +16,23 @@ Define duration and easing as tokens; never hand-tune per element.
16
16
  --dur-fast: 180ms; /* hover, small state changes */
17
17
  --dur-normal: 280ms; /* entrances, panel open */
18
18
  --dur-slow: 600ms; /* large hero / staged sequences */
19
- --ease-out: cubic-bezier(0.22, 1, 0.36, 1); /* standard decelerate */
20
- --ease-sharp: cubic-bezier(0.4, 0, 0.2, 1); /* enter/exit symmetric */
19
+ --ease-out: cubic-bezier(0.23, 1, 0.32, 1); /* decelerate; the default for UI */
20
+ --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1); /* on-screen movement, A to B */
21
+ --ease-drawer: cubic-bezier(0.32, 0.72, 0, 1); /* iOS-like drawer / sheet (Ionic) */
21
22
  --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1); /* playful overshoot, sparingly */
22
23
  }
23
24
  ```
24
25
 
26
+ **Never `ease-in` on UI.** It starts slow, delaying the exact moment the user is watching most, so
27
+ the interface feels sluggish — `ease-out` at 200ms *feels* faster than `ease-in` at 200ms. And the
28
+ built-in CSS easings are too weak to read as intentional; the curves above are the ones to reach for.
29
+ Need one that is not here? Take it from [easing.dev](https://easing.dev/), do not hand-roll it.
30
+
31
+ The choice, in decision order: entering or exiting → `ease-out`; moving on screen → `ease-in-out`;
32
+ hover or color → `ease`; constant motion (marquee, progress) → `linear`; unsure → `ease-out`.
33
+ `../../animate/SKILL.md` owns the full build sequence and the per-element duration table, and
34
+ `../../review-animations/scripts/verify.sh` flags an `ease-in` that slips through.
35
+
25
36
  - **Enter vs exit asymmetry:** entrances are slower and softer (`--dur-normal`, `--ease-out`); exits are quicker and quieter (~150ms) so dismissals feel responsive.
26
37
  - **Press feedback:** `scale(0.97)` on `:active` gives a tactile button without distracting movement.
27
38
 
@@ -30,7 +41,7 @@ Define duration and easing as tokens; never hand-tune per element.
30
41
  .button {
31
42
  transition-property: transform, background-color, box-shadow;
32
43
  transition-duration: 150ms;
33
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
44
+ transition-timing-function: var(--ease-out);
34
45
  }
35
46
  .button:active { transform: scale(0.97); }
36
47
  ```
@@ -193,9 +193,10 @@ The canonical Tailwind v4 `@theme` block — colors, type, spacing, radius, shad
193
193
  /* radius + shadow */
194
194
  --radius-card: 0.875rem;
195
195
  --shadow-card: 0 1px 2px oklch(0 0 0 / 0.06), 0 8px 24px oklch(0 0 0 / 0.08);
196
- /* easing */
197
- --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
198
- --ease-sharp: cubic-bezier(0.4, 0, 0.2, 1);
196
+ /* easing — same values as references/motion-and-interaction.md; two definitions that drift
197
+ is worse than one, so change them together */
198
+ --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
199
+ --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
199
200
  }
200
201
  ```
201
202