wizz-method 1.3.2 → 1.4.1

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 (225) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/README.md +1 -1
  3. package/evals/routing/dataset.json +290 -0
  4. package/evals/routing/run-routing-eval.mjs +89 -0
  5. package/package.json +11 -3
  6. package/skills-registry.yaml +72 -25
  7. package/src/modules/wizz/agents/wizz-ads/SKILL.md +1 -1
  8. package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -1
  9. package/src/modules/wizz/agents/wizz-designer/SKILL.md +6 -8
  10. package/src/modules/wizz/agents/wizz-growth/SKILL.md +1 -1
  11. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +6 -5
  12. package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
  13. package/src/modules/wizz/agents/wizz-qa/SKILL.md +1 -1
  14. package/src/modules/wizz/agents/wizz-seo/SKILL.md +1 -1
  15. package/src/modules/wizz/agents/wizz-social/SKILL.md +1 -1
  16. package/src/skills-lib/ai-product-design/SKILL.md +85 -0
  17. package/src/skills-lib/ai-product-design/references/LICENSE +21 -0
  18. package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/bias-detection-design/SKILL.md +37 -0
  19. package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/consent-and-agency/SKILL.md +37 -0
  20. package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/escalation-design/SKILL.md +40 -0
  21. package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/guardrail-design/SKILL.md +36 -0
  22. package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/harm-anticipation/SKILL.md +108 -0
  23. package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/transparency-patterns/SKILL.md +36 -0
  24. package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/trust-calibration/SKILL.md +102 -0
  25. package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/value-specification/SKILL.md +39 -0
  26. package/src/skills-lib/ai-product-design/references/design-agent-orchestration/agent-role-design/SKILL.md +37 -0
  27. package/src/skills-lib/ai-product-design/references/design-agent-orchestration/failure-recovery/SKILL.md +37 -0
  28. package/src/skills-lib/ai-product-design/references/design-agent-orchestration/handoff-protocols/SKILL.md +45 -0
  29. package/src/skills-lib/ai-product-design/references/design-agent-orchestration/human-in-the-loop/SKILL.md +39 -0
  30. package/src/skills-lib/ai-product-design/references/design-agent-orchestration/observability-design/SKILL.md +48 -0
  31. package/src/skills-lib/ai-product-design/references/design-agent-orchestration/state-management/SKILL.md +95 -0
  32. package/src/skills-lib/ai-product-design/references/design-agent-orchestration/task-decomposition/SKILL.md +36 -0
  33. package/src/skills-lib/ai-product-design/references/evaluation/comparative-evaluation/SKILL.md +39 -0
  34. package/src/skills-lib/ai-product-design/references/evaluation/failure-taxonomy/SKILL.md +47 -0
  35. package/src/skills-lib/ai-product-design/references/evaluation/heuristic-evaluation-ai/SKILL.md +46 -0
  36. package/src/skills-lib/ai-product-design/references/evaluation/longitudinal-measurement/SKILL.md +38 -0
  37. package/src/skills-lib/ai-product-design/references/evaluation/output-quality-rubrics/SKILL.md +41 -0
  38. package/src/skills-lib/ai-product-design/references/evaluation/task-success-metrics/SKILL.md +35 -0
  39. package/src/skills-lib/ai-product-design/references/evaluation/user-satisfaction-signals/SKILL.md +50 -0
  40. package/src/skills-lib/ai-product-design/references/model-interaction-design/context-window-design/SKILL.md +28 -0
  41. package/src/skills-lib/ai-product-design/references/model-interaction-design/conversation-patterns/SKILL.md +37 -0
  42. package/src/skills-lib/ai-product-design/references/model-interaction-design/feedback-loops/SKILL.md +35 -0
  43. package/src/skills-lib/ai-product-design/references/model-interaction-design/frustration-detection/SKILL.md +91 -0
  44. package/src/skills-lib/ai-product-design/references/model-interaction-design/generative-ui/SKILL.md +34 -0
  45. package/src/skills-lib/ai-product-design/references/model-interaction-design/mixed-initiative-flow/SKILL.md +39 -0
  46. package/src/skills-lib/ai-product-design/references/model-interaction-design/multimodal-orchestration/SKILL.md +94 -0
  47. package/src/skills-lib/ai-product-design/references/model-interaction-design/progressive-disclosure/SKILL.md +33 -0
  48. package/src/skills-lib/ai-product-design/references/prompt-architecture/chain-of-thought-design/SKILL.md +45 -0
  49. package/src/skills-lib/ai-product-design/references/prompt-architecture/constraint-specification/SKILL.md +50 -0
  50. package/src/skills-lib/ai-product-design/references/prompt-architecture/context-engineering/SKILL.md +45 -0
  51. package/src/skills-lib/ai-product-design/references/prompt-architecture/few-shot-patterns/SKILL.md +47 -0
  52. package/src/skills-lib/ai-product-design/references/prompt-architecture/prompt-versioning/SKILL.md +42 -0
  53. package/src/skills-lib/ai-product-design/references/prompt-architecture/system-prompt-structure/SKILL.md +50 -0
  54. package/src/skills-lib/ai-product-design/references/prompt-architecture/template-design/SKILL.md +42 -0
  55. package/src/skills-lib/ai-product-design/references/system-behavior-shaping/behavioral-consistency/SKILL.md +36 -0
  56. package/src/skills-lib/ai-product-design/references/system-behavior-shaping/cultural-adaptation/SKILL.md +38 -0
  57. package/src/skills-lib/ai-product-design/references/system-behavior-shaping/domain-voice/SKILL.md +51 -0
  58. package/src/skills-lib/ai-product-design/references/system-behavior-shaping/emotional-design/SKILL.md +51 -0
  59. package/src/skills-lib/ai-product-design/references/system-behavior-shaping/error-personality/SKILL.md +45 -0
  60. package/src/skills-lib/ai-product-design/references/system-behavior-shaping/persona-architecture/SKILL.md +38 -0
  61. package/src/skills-lib/ai-product-design/references/system-behavior-shaping/tone-calibration/SKILL.md +39 -0
  62. package/src/skills-lib/algorithmic-art/LICENSE.txt +202 -0
  63. package/src/skills-lib/algorithmic-art/SKILL.md +405 -0
  64. package/src/skills-lib/algorithmic-art/templates/generator_template.js +223 -0
  65. package/src/skills-lib/algorithmic-art/templates/viewer.html +599 -0
  66. package/src/skills-lib/animate/README.md +41 -0
  67. package/src/skills-lib/animate/SKILL.md +179 -0
  68. package/src/skills-lib/animate/examples/animate-height.tsx +75 -0
  69. package/src/skills-lib/animate/examples/app-store-card.tsx +164 -0
  70. package/src/skills-lib/animate/examples/card-hover.tsx +79 -0
  71. package/src/skills-lib/animate/examples/feedback-popover.tsx +119 -0
  72. package/src/skills-lib/animate/examples/multi-step-flow.tsx +128 -0
  73. package/src/skills-lib/animate/examples/shared-layout.tsx +64 -0
  74. package/src/skills-lib/animate/examples/text-reveal.tsx +70 -0
  75. package/src/skills-lib/animate/examples/toast-stacking.tsx +95 -0
  76. package/src/skills-lib/animate/references/css-animations.md +232 -0
  77. package/src/skills-lib/animate/references/easing-and-timing.md +105 -0
  78. package/src/skills-lib/animate/references/framer-motion.md +356 -0
  79. package/src/skills-lib/animate/references/performance-accessibility.md +185 -0
  80. package/src/skills-lib/auth-and-secrets/SKILL.md +38 -10
  81. package/src/skills-lib/canvas-design/LICENSE.txt +202 -0
  82. package/src/skills-lib/canvas-design/SKILL.md +130 -0
  83. package/src/skills-lib/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  84. package/src/skills-lib/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  85. package/src/skills-lib/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  86. package/src/skills-lib/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  87. package/src/skills-lib/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  88. package/src/skills-lib/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  89. package/src/skills-lib/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  90. package/src/skills-lib/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  91. package/src/skills-lib/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  92. package/src/skills-lib/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  93. package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  94. package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  95. package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  96. package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  97. package/src/skills-lib/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  98. package/src/skills-lib/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  99. package/src/skills-lib/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  100. package/src/skills-lib/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  101. package/src/skills-lib/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  102. package/src/skills-lib/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  103. package/src/skills-lib/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  104. package/src/skills-lib/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  105. package/src/skills-lib/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  106. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  107. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  108. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  109. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  110. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  111. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  112. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  113. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  114. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  115. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  116. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  117. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  118. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  119. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  120. package/src/skills-lib/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  121. package/src/skills-lib/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  122. package/src/skills-lib/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  123. package/src/skills-lib/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  124. package/src/skills-lib/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  125. package/src/skills-lib/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  126. package/src/skills-lib/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  127. package/src/skills-lib/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  128. package/src/skills-lib/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  129. package/src/skills-lib/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  130. package/src/skills-lib/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  131. package/src/skills-lib/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  132. package/src/skills-lib/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  133. package/src/skills-lib/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  134. package/src/skills-lib/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  135. package/src/skills-lib/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  136. package/src/skills-lib/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  137. package/src/skills-lib/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  138. package/src/skills-lib/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  139. package/src/skills-lib/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  140. package/src/skills-lib/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  141. package/src/skills-lib/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  142. package/src/skills-lib/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  143. package/src/skills-lib/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  144. package/src/skills-lib/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  145. package/src/skills-lib/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  146. package/src/skills-lib/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  147. package/src/skills-lib/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  148. package/src/skills-lib/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  149. package/src/skills-lib/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  150. package/src/skills-lib/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  151. package/src/skills-lib/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  152. package/src/skills-lib/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  153. package/src/skills-lib/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  154. package/src/skills-lib/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  155. package/src/skills-lib/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  156. package/src/skills-lib/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  157. package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  158. package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  159. package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  160. package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  161. package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  162. package/src/skills-lib/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  163. package/src/skills-lib/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  164. package/src/skills-lib/design-motion-principles/SKILL.md +122 -0
  165. package/src/skills-lib/design-motion-principles/references/accessibility.md +52 -0
  166. package/src/skills-lib/design-motion-principles/references/anti-checklist.md +274 -0
  167. package/src/skills-lib/design-motion-principles/references/audit-checklist.md +137 -0
  168. package/src/skills-lib/design-motion-principles/references/creation-gotchas.md +36 -0
  169. package/src/skills-lib/design-motion-principles/references/demo-shell.html +275 -0
  170. package/src/skills-lib/design-motion-principles/references/emil-kowalski.md +121 -0
  171. package/src/skills-lib/design-motion-principles/references/jakub-krehel.md +80 -0
  172. package/src/skills-lib/design-motion-principles/references/jhey-tompkins.md +122 -0
  173. package/src/skills-lib/design-motion-principles/references/motion-cookbook.md +529 -0
  174. package/src/skills-lib/design-motion-principles/references/output-format.md +346 -0
  175. package/src/skills-lib/design-motion-principles/references/performance.md +82 -0
  176. package/src/skills-lib/design-motion-principles/references/report-template.html +1006 -0
  177. package/src/skills-lib/design-motion-principles/workflows/audit.md +203 -0
  178. package/src/skills-lib/design-motion-principles/workflows/create.md +87 -0
  179. package/src/skills-lib/desktop-security/SKILL.md +35 -4
  180. package/src/skills-lib/premium-landing-ui-researcher/SKILL.md +52 -2083
  181. package/src/skills-lib/premium-landing-ui-researcher/references/audit-protocol.md +124 -0
  182. package/src/skills-lib/premium-landing-ui-researcher/references/component-sources.md +336 -0
  183. package/src/skills-lib/premium-landing-ui-researcher/references/core-goal.md +62 -0
  184. package/src/skills-lib/premium-landing-ui-researcher/references/dashboard-and-portfolio-modes.md +92 -0
  185. package/src/skills-lib/premium-landing-ui-researcher/references/handoffs.md +55 -0
  186. package/src/skills-lib/premium-landing-ui-researcher/references/landing-page-strategy.md +227 -0
  187. package/src/skills-lib/premium-landing-ui-researcher/references/mandatory-process.md +36 -0
  188. package/src/skills-lib/premium-landing-ui-researcher/references/output-format-and-quality.md +129 -0
  189. package/src/skills-lib/premium-landing-ui-researcher/references/prompt-templates.md +206 -0
  190. package/src/skills-lib/premium-landing-ui-researcher/references/site-levels.md +515 -0
  191. package/src/skills-lib/premium-landing-ui-researcher/references/source-first-protocol.md +144 -0
  192. package/src/skills-lib/premium-landing-ui-researcher/references/source-links.md +39 -0
  193. package/src/skills-lib/premium-landing-ui-researcher/references/stack-and-visual-direction.md +118 -0
  194. package/src/skills-lib/taste-skill/SKILL.md +33 -1177
  195. package/src/skills-lib/taste-skill/references/anti-slop-tells.md +110 -0
  196. package/src/skills-lib/taste-skill/references/architecture-conventions.md +39 -0
  197. package/src/skills-lib/taste-skill/references/block-library.md +61 -0
  198. package/src/skills-lib/taste-skill/references/brief-and-dials.md +89 -0
  199. package/src/skills-lib/taste-skill/references/dark-mode.md +23 -0
  200. package/src/skills-lib/taste-skill/references/design-directives.md +191 -0
  201. package/src/skills-lib/taste-skill/references/design-systems.md +267 -0
  202. package/src/skills-lib/taste-skill/references/motion-patterns.md +167 -0
  203. package/src/skills-lib/taste-skill/references/pattern-vocabulary.md +78 -0
  204. package/src/skills-lib/taste-skill/references/performance-a11y.md +33 -0
  205. package/src/skills-lib/taste-skill/references/preflight-checklist.md +73 -0
  206. package/src/skills-lib/taste-skill/references/redesign-protocol.md +52 -0
  207. package/src/skills-lib/web-security/SKILL.md +74 -6
  208. package/src/skills-lib/wizz-router/SKILL.md +21 -243
  209. package/src/skills-lib/wizz-router/references/auditoria-360.md +21 -0
  210. package/src/skills-lib/wizz-router/references/routing-table-flat.md +95 -0
  211. package/src/squads/advisory-board/agents/ray-dalio.md +0 -20
  212. package/tools/hooks/README.md +17 -0
  213. package/tools/hooks/security-defensive-context.js +70 -0
  214. package/tools/hooks/session-rules.js +38 -0
  215. package/tools/hooks/wizz-router-enforce.js +188 -0
  216. package/tools/installer/modules/skills-lib.js +70 -1
  217. package/tools/sync-global.mjs +84 -0
  218. package/.claude/settings.local.json +0 -8
  219. package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
  220. package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
  221. package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
  222. package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc +0 -0
  223. package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/0964cef300f753b5cee0cc49777ca97035c85d45c212099405d9ee4da36e523f.json +0 -1
  224. package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/21a40f6810c3a6f17acc3580f106171daf78c7b41bbd066bc80448a821ea0adf.json +0 -1
  225. package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/69ea15a020ac81b8459e37ef63654398a50c1035fc01c43d8069df217389f7f3.json +0 -1
@@ -0,0 +1,203 @@
1
+ # Workflow: Audit Mode
2
+
3
+ Review existing motion design and produce a per-designer report. Reconnaissance first, then a full audit, then a structured report. Never apply rules blindly.
4
+
5
+ ## Required Reading
6
+
7
+ Read as you reach each step (not all upfront):
8
+ 1. `references/audit-checklist.md` — your systematic guide (STEP 2)
9
+ 2. The weighted designer file(s) — `emil-kowalski.md`, `jakub-krehel.md`, `jhey-tompkins.md` (STEP 2)
10
+ 3. `references/accessibility.md` — mandatory every audit (STEP 2)
11
+ 4. `references/anti-checklist.md` — the quality gate: AI-slop motion categories + anti-patterns to flag (STEP 2)
12
+ 5. `references/output-format.md` — the report template, HTML mode + terminal mode (STEP 3)
13
+ 6. `references/demo-shell.html` — the demo-card template for HTML-mode per-finding demos (STEP 3)
14
+
15
+ ---
16
+
17
+ ## STEP 1: Context Reconnaissance (DO THIS FIRST)
18
+
19
+ Before auditing any code, understand the project context.
20
+
21
+ ### Gather Context
22
+
23
+ Check these sources:
24
+ 1. **CLAUDE.md** — Any explicit context about the project's purpose or design intent
25
+ 2. **package.json** — What type of app? (Next.js marketing site vs Electron productivity app vs mobile PWA)
26
+ 3. **Existing animations** — Grep for `motion`, `animate`, `transition`, `@keyframes`. What durations are used? What patterns exist?
27
+ 4. **Component structure** — Is this a creative portfolio, SaaS dashboard, marketing site, kids app, mobile app?
28
+
29
+ ### Motion Gap Analysis (CRITICAL - Don't Skip)
30
+
31
+ After finding existing animations, actively search for **missing** animations. These are UI changes that happen without any transition:
32
+
33
+ **Search for conditional renders without AnimatePresence:**
34
+ ```bash
35
+ # Find conditional renders: {condition && <Component />}
36
+ grep -n "&&\s*(" --include="*.tsx" --include="*.jsx" -r .
37
+
38
+ # Find ternary UI swaps: {condition ? <A /> : <B />}
39
+ grep -n "?\s*<" --include="*.tsx" --include="*.jsx" -r .
40
+ ```
41
+
42
+ **For each conditional render found, check:**
43
+ - Is it wrapped in `<AnimatePresence>`?
44
+ - Does the component inside have enter/exit animations?
45
+ - If NO to both → this is a **motion gap** that needs fixing
46
+
47
+ **Common motion gap patterns:**
48
+ - `{isOpen && <Modal />}` — Modal appears/disappears instantly
49
+ - `{mode === "a" && <ControlsA />}` — Controls swap without transition
50
+ - `{isLoading ? <Spinner /> : <Content />}` — Loading state snaps
51
+ - `style={{ height: isExpanded ? 200 : 0 }}` — Height changes without CSS transition
52
+ - Inline styles with dynamic values but no `transition` property
53
+
54
+ **Where to look for motion gaps:**
55
+ - Inspector/settings panels with mode switches
56
+ - Conditional form fields
57
+ - Tab content areas
58
+ - Expandable/collapsible sections
59
+ - Toast/notification systems
60
+ - Loading states
61
+ - Error states
62
+
63
+ ### State Your Inference
64
+
65
+ After gathering context, tell the user what you found and propose a weighting:
66
+
67
+ ```
68
+ ## Reconnaissance Complete
69
+
70
+ **Project type**: [What you inferred — e.g., "Kids educational app, mobile-first PWA"]
71
+ **Existing animation style**: [What you observed — e.g., "Spring animations (500-600ms), framer-motion, active:scale patterns"]
72
+ **Likely intent**: [Your inference — e.g., "Delight and engagement for young children"]
73
+
74
+ **Motion gaps found**: [Number] conditional renders without AnimatePresence
75
+ - [List the files/areas with gaps, e.g., "Settings panel mode switches", "Loading states"]
76
+
77
+ **Proposed perspective weighting**:
78
+ - **Primary**: [Designer] — [Why]
79
+ - **Secondary**: [Designer] — [Why]
80
+ - **Selective**: [Designer] — [When applicable]
81
+
82
+ Does this approach sound right? Should I adjust the weighting before proceeding with the full audit?
83
+ ```
84
+
85
+ Use the Context-to-Perspective Mapping table in SKILL.md to propose the weighting.
86
+
87
+ ### Wait for User Confirmation
88
+
89
+ **STOP and wait for the user to confirm or adjust.** Do not proceed to the full audit until they respond.
90
+
91
+ If `AskUserQuestion` is available, present the decision as tappable options:
92
+ - **Confirm weighting** — Proceed with the proposed primary/secondary/selective designers
93
+ - **Adjust primary** — Swap which designer is primary (e.g., prioritize delight over restraint)
94
+ - **Adjust secondary** — Change the secondary lens while keeping primary
95
+ - **Rebuild weighting** — The project type inference was wrong; start over
96
+
97
+ Otherwise ask in plain text: "Does this weighting sound right, or should I adjust?"
98
+
99
+ If they adjust (e.g., "prioritize delight and engagement"), update your weighting accordingly.
100
+
101
+ ---
102
+
103
+ ## STEP 2: Full Audit (After User Confirms)
104
+
105
+ Once the user confirms, perform the complete audit by reading the reference files in this order:
106
+
107
+ ### 2a. Read the Audit Checklist First
108
+ **Read `references/audit-checklist.md`** — Use this as your systematic guide. It provides the structured checklist of what to evaluate.
109
+
110
+ ### 2b. Read Designer Files for Your Weighted Perspectives
111
+ Based on your context weighting, read the relevant designer files:
112
+ - **Read `references/emil-kowalski.md`** if Emil is primary/secondary — Restraint philosophy, frequency rules, decision frameworks
113
+ - **Read `references/jakub-krehel.md`** if Jakub is primary/secondary — Production polish philosophy, what to check
114
+ - **Read `references/jhey-tompkins.md`** if Jhey is primary/secondary — Playful experimentation philosophy, opportunities to surface
115
+
116
+ ### 2c. Read Topical References as Needed
117
+ - **Read `references/accessibility.md`** — MANDATORY. Always check for prefers-reduced-motion. No exceptions.
118
+ - **Read `references/anti-checklist.md`** — Apply this as the audit's quality gate. AI-slop categories at the top (pulsing indicators, hover-scale-on-everything, stagger-spam, etc.) trigger findings; perspective-specific and general anti-patterns sit below. Each category includes a frequency heuristic so single intentional uses don't trip the gate.
119
+ - **Read `references/performance.md`** — If you see complex animations, check for GPU optimization issues
120
+ - **Read `references/motion-cookbook.md`** — Reference when making specific implementation recommendations (the recommended fix code, including the per-finding demo motion in HTML mode)
121
+
122
+ ---
123
+
124
+ ## STEP 3: Output Format (HTML by default)
125
+
126
+ The audit produces a **self-contained HTML report** with auto-looping CSS demos beside Critical and Important findings. **Read `references/output-format.md`** for the full template (both HTML mode and terminal mode).
127
+
128
+ ### Default behavior — write and open the HTML report
129
+
130
+ 1. **Resolve the write location.** The file is written to `motion-audits/{project-name}-{ISO-date}.html` in the audited project's root.
131
+ - **Audited project root**: run `git rev-parse --show-toplevel` from the agent's cwd. If it succeeds, use that path. If it fails (no `.git` ancestor), use cwd.
132
+ - **`{project-name}`**: the `name` field from `package.json` at the project root if it exists; else the `name` field from `pyproject.toml`; else the basename of the project root. Strip any scoping prefix (`@scope/pkg` → `pkg`) and sanitize to lowercase kebab-case (`[a-z0-9-]`, replace others with `-`).
133
+ - **`{ISO-date}`**: today's date as `YYYY-MM-DD`.
134
+ - Example: `<project-root>/motion-audits/my-app-2026-05-20.html`.
135
+ - Do not modify `.gitignore`. The user sees `motion-audits/` in `git status` and decides whether to ignore it.
136
+
137
+ 2. **Read `references/demo-shell.html`** and use it as the template for each demo card. Embed one card per Critical + Important finding (Opportunities do not get demo cards). Use the suffixed-naming contract — `@keyframes motion-{n}-...` and `.demo-card-{n}__motion-target`, `{n}` = the finding's 1-indexed position across the whole report — so multiple findings don't collide on CSS names.
138
+
139
+ 3. **Generate per-finding motion code** by reading the audited code, the relevant lens reference, and `references/motion-cookbook.md` for the recipe. Use the shell's 0% / 66% / 100% cadence at `animation-duration: 3s` (~2s motion, ~1s hold, loop). The `@keyframes` 100% state must match the motion-target's default static rendering so the shell's `prefers-reduced-motion` guard shows the correct final visual.
140
+
141
+ 4. **Write the file.** Create `motion-audits/` if it doesn't exist. Write the complete self-contained HTML document.
142
+
143
+ 5. **Open in the default browser** via OS-detected Bash dispatch:
144
+
145
+ ```bash
146
+ path="<absolute path to the HTML file>"
147
+ if [ -n "$WSL_DISTRO_NAME" ] || grep -qi microsoft /proc/version 2>/dev/null; then
148
+ win_path=$(wslpath -w "$path")
149
+ cmd.exe /c start "" "$win_path" 2>/dev/null
150
+ else
151
+ case "$(uname -s)" in
152
+ Darwin) open "$path" ;;
153
+ Linux) xdg-open "$path" ;;
154
+ MINGW*|MSYS*|CYGWIN*) start "" "$path" ;;
155
+ *) echo "Unknown platform — open this file manually: $path" ;;
156
+ esac
157
+ fi
158
+ ```
159
+
160
+ If the open command returns non-zero or the platform is unrecognized, print `Open this file in your browser: {absolute path}` and continue. Never abort the audit because of a failed browser-open.
161
+
162
+ 6. **Print the 3-line terminal summary:**
163
+
164
+ ```
165
+ 🎬 Motion audit complete — 🔴 {N} Critical · 🟡 {N} Important · 🟢 {N} Opportunities
166
+ 📄 Report: {absolute path}
167
+ 💡 Want the full report inline instead? Re-run with --terminal or say "show inline".
168
+ ```
169
+
170
+ ### Terminal mode (flag-triggered)
171
+
172
+ When the user signals terminal mode (`--terminal` / `--inline` / `--no-html` flag, or "show the full report inline" / "skip the HTML" / "terminal only"), **skip the HTML write and the browser-open** and render the decorated-markdown report inline per `references/output-format.md` terminal mode. Do not print the 3-line summary in this case.
173
+
174
+ Do not summarize the audit content in either mode — users want full per-lens perspectives.
175
+
176
+ ---
177
+
178
+ ## Agent Gotchas (Self-Check Before Writing the Report)
179
+
180
+ Common failure modes during HTML report generation. Most break silently or only manifest when a second finding lands in the same report.
181
+
182
+ - **Don't reuse keyframe or class names across findings.** Each demo uses `@keyframes motion-{n}-...` and `.demo-card-{n}__motion-target` where `{n}` is the 1-indexed position across the WHOLE report. Duplicate names mean the second finding shadows the first and the first demo breaks silently.
183
+ - **Don't redefine the shell's CSS variables.** Per-finding code uses `var(--bg)`, `var(--fg)`, `var(--border)`, `var(--accent)`, `var(--loop-dim)`, `var(--sans)`, `var(--mono)`. Hard-coding colors or fonts breaks dark mode and typography consistency.
184
+ - **Don't write per-finding overrides inside the `prefers-reduced-motion` block.** The shell's guard collapses all `[class*="__motion-target"]` animations. Make the `@keyframes` 100% state match the motion-target's default static rendering instead.
185
+ - **Don't include demo cards for Opportunities.** Demos are reserved for Critical and Important. Surface Opportunities in text only.
186
+ - **Don't animate the report itself.** No entrance, scroll, or mount animations on the report chrome — only the demo cards animate. Animating the report reproduces the AI-slop patterns the audit exists to catch.
187
+ - **Don't write to cwd if `git rev-parse --show-toplevel` succeeds.** The report goes to `{project-root}/motion-audits/`. Only fall back to cwd when git returns nonzero.
188
+ - **Don't abort the audit if browser-open fails.** A non-zero exit code is a "no default handler" condition, not an error. Print the path and continue.
189
+ - **Don't modify `.gitignore`.** The skill never touches it. The user adds `motion-audits/` themselves if they want.
190
+ - **Don't summarize per-lens findings.** Each section needs its own findings + working-well items + the `Through {Designer}'s lens:` summary.
191
+
192
+ ---
193
+
194
+ ## Success Criteria
195
+
196
+ - [ ] Context gathered (CLAUDE.md, package.json, existing animations, structure)
197
+ - [ ] Motion gap analysis run — conditional renders checked for missing animation
198
+ - [ ] Weighting proposed and confirmed by the user
199
+ - [ ] Audit checklist worked through systematically
200
+ - [ ] Anti-checklist applied — AI-slop categories checked against the codebase
201
+ - [ ] Accessibility checked — prefers-reduced-motion verified (mandatory)
202
+ - [ ] HTML report written to `motion-audits/`, opened in browser, 3-line summary printed (or terminal-mode report rendered inline when flagged)
203
+ - [ ] Report follows output-format.md with full per-lens sections; Critical + Important findings have looping demo cards
@@ -0,0 +1,87 @@
1
+ # Workflow: Create Mode
2
+
3
+ Build interactive components with purposeful motion. Light discovery, then generate against the cookbook.
4
+
5
+ ## Required Reading
6
+
7
+ Read before generating:
8
+ 1. `references/motion-cookbook.md` — the recipe source for all motion code
9
+ 2. `references/accessibility.md` — `prefers-reduced-motion` is mandatory in everything you generate
10
+ 3. `references/creation-gotchas.md` — Claude's failure modes when writing motion; self-check against these
11
+
12
+ ---
13
+
14
+ ## STEP 1: Light Discovery
15
+
16
+ Establish two things — project context and designer weighting — before generating. Keep it to 1-2 questions.
17
+
18
+ ### Infer First, Ask Second
19
+
20
+ Check what you can already see:
21
+ - **The request** — what component, what interaction, what stack (React / Framer Motion / CSS / HTML)?
22
+ - **CLAUDE.md, package.json, existing components** — project type and existing animation conventions (durations, easing, libraries)
23
+
24
+ ### Propose Context + Weighting
25
+
26
+ Map the project type to a perspective weighting using the Context-to-Perspective Mapping table in SKILL.md. State your inference in one short block:
27
+
28
+ ```
29
+ Building: [what — e.g. "a notification toast, React + Framer Motion"]
30
+ Project context: [inferred — e.g. "productivity SaaS dashboard"]
31
+ Proposed weighting: Primary [Designer] · Secondary [Designer]
32
+ ```
33
+
34
+ If `AskUserQuestion` is available and the weighting is genuinely ambiguous, offer:
35
+ - **Confirm** — proceed with the proposed weighting
36
+ - **Adjust** — change primary/secondary designer
37
+
38
+ Otherwise ask in plain text: "Does this weighting sound right, or should I adjust?"
39
+
40
+ ### Wait Gate
41
+
42
+ For non-trivial components, **confirm context before generating**. For a small, well-specified request ("add a press-scale to this button"), state the inference in one line and skip straight to STEP 3 — don't manufacture a question.
43
+
44
+ ---
45
+
46
+ ## STEP 2: Load Weighted Knowledge
47
+
48
+ Based on the confirmed weighting, read the relevant designer file(s):
49
+ - **Read `references/emil-kowalski.md`** if Emil is primary/secondary — restraint, the frequency rule, when NOT to animate
50
+ - **Read `references/jakub-krehel.md`** if Jakub is primary/secondary — production polish judgment, subtlety bar
51
+ - **Read `references/jhey-tompkins.md`** if Jhey is primary/secondary — playful expression, what motion could become
52
+
53
+ The designer files give you the **judgment** (should this animate, what feel). The cookbook gives you the **code**.
54
+
55
+ If the component involves complex or numerous animations, also read `references/performance.md`.
56
+
57
+ ---
58
+
59
+ ## STEP 3: Generate
60
+
61
+ Build the component. Apply, in order:
62
+
63
+ 1. **The frequency gate (Emil)** — Should this animate at all? High-frequency or keyboard-initiated interactions get minimal or no motion. Decide before adding anything.
64
+ 2. **Recipes from the cookbook** — Use the weighted designer's patterns. Enter = opacity + translateY + blur. Exit subtler than enter. Custom easing or springs, never bare `ease`.
65
+ 3. **Accessibility** — Every animation ships with `prefers-reduced-motion` handling, in the same code. No exceptions, no follow-up.
66
+ 4. **Performance** — Animate `transform` / `opacity` / `filter` only. Never `width` / `height` / `top` / `left`.
67
+ 5. **Context-appropriate timing** — Emil-weighted → under 300ms. Jakub → 200-500ms polish. Jhey → whatever serves the effect.
68
+
69
+ ---
70
+
71
+ ## STEP 4: Self-Check
72
+
73
+ Before presenting, verify the generated code against every item in `references/creation-gotchas.md`. Fix anything that matches a gotcha.
74
+
75
+ Then briefly tell the user the motion decisions you made and why — which designer weighting drove the timing, easing, and whether something was deliberately left un-animated.
76
+
77
+ ---
78
+
79
+ ## Success Criteria
80
+
81
+ - [ ] Context and weighting confirmed (or inference stated for trivial requests)
82
+ - [ ] Frequency gate applied — motion is purposeful, not decorative-by-default
83
+ - [ ] Recipes drawn from the cookbook, matched to the designer weighting
84
+ - [ ] `prefers-reduced-motion` handled in all generated motion
85
+ - [ ] Only `transform` / `opacity` / `filter` animated
86
+ - [ ] Code self-checked against creation-gotchas.md
87
+ - [ ] Motion decisions explained to the user
@@ -15,11 +15,32 @@ description: >
15
15
  - contextIsolation: true (obrigatório)
16
16
  - sandbox: true quando possível
17
17
  - webSecurity: false nunca em produção
18
+ - Nunca carregue conteúdo remoto numa janela com acesso a APIs privilegiadas; conteúdo remoto = sandbox + sem preload sensível
19
+ - Mantenha o Electron atualizado (patches de Chromium/Node chegam por release do Electron)
20
+
21
+ ### Navegação e janelas
22
+ - Bloqueie navegação para fora do app: handler em `will-navigate` que cancela URLs fora da allowlist
23
+ - `setWindowOpenHandler`: negue por padrão (`{ action: "deny" }`), abra externo só o que for aprovado
24
+ - `shell.openExternal` só com URL validada (esquema `https:` e host esperado), nunca com input cru do renderer
18
25
 
19
26
  ### IPC (comunicação renderer <> main)
20
- - Valide e sanitize todos os dados vindos do renderer
21
- - Exponha apenas as funções necessárias via contextBridge
27
+ - Valide e sanitize todos os dados vindos do renderer (o renderer é território hostil: trate como input de usuário)
28
+ - Exponha apenas as funções necessárias via contextBridge, cada uma com assinatura fixa
22
29
  - Nunca exponha ipcRenderer diretamente ao renderer
30
+ - Em `ipcMain.handle`, valide tipo e tamanho dos argumentos; se houver múltiplas janelas, cheque `event.senderFrame.url` contra o esperado
31
+
32
+ ```ts
33
+ // preload.ts: superfície mínima, sem repassar ipcRenderer
34
+ contextBridge.exposeInMainWorld("api", {
35
+ saveNote: (text: string) => ipcRenderer.invoke("notes:save", text),
36
+ })
37
+
38
+ // main.ts: valida antes de agir
39
+ ipcMain.handle("notes:save", (event, text) => {
40
+ if (typeof text !== "string" || text.length > 10_000) throw new Error("input inválido")
41
+ // ...
42
+ })
43
+ ```
23
44
 
24
45
  ### Atualizações automáticas
25
46
  - Assine o pacote de atualização com certificado de código (code signing)
@@ -29,8 +50,9 @@ description: >
29
50
  ## Armazenamento local
30
51
 
31
52
  ### O que armazenar localmente
32
- - Tokens de sessão: keychain do OS (electron-keytar), nunca localStorage
33
- - Dados do usuário: criptografados com chave derivada da senha do OS
53
+ - Tokens de sessão: `safeStorage` do Electron (usa Keychain no macOS, DPAPI no Windows, libsecret no Linux), nunca localStorage
54
+ - `safeStorage.encryptString(token)` antes de gravar em disco; `keytar` está arquivado, não use em projeto novo
55
+ - Dados sensíveis do usuário: criptografados via `safeStorage` ou AES-256-GCM com chave guardada no keychain do OS
34
56
 
35
57
  ### O que nunca armazenar localmente
36
58
  - Senhas em texto plano
@@ -41,3 +63,12 @@ description: >
41
63
  - Code signing obrigatório (Windows: Authenticode, macOS: Apple Developer ID)
42
64
  - Notarização no macOS para distribuição fora da App Store
43
65
  - Auto-update com verificação de integridade antes de executar
66
+
67
+ ## Checklist rápido (antes de empacotar)
68
+ - [ ] `contextIsolation: true`, `nodeIntegration: false`, `sandbox: true` onde possível?
69
+ - [ ] Nenhuma janela privilegiada carrega URL remota?
70
+ - [ ] `will-navigate` e `setWindowOpenHandler` restringem navegação?
71
+ - [ ] Todo handler de `ipcMain` valida os argumentos?
72
+ - [ ] Tokens em `safeStorage`/keychain, nada sensível em localStorage?
73
+ - [ ] Build assinado (e notarizado no macOS)? Auto-update valida assinatura?
74
+ - [ ] Versão do Electron atual (sem CVE aberta)?