From 6a6167691a88167cd9f4642259be0f579954d907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E6=95=8F=E8=8F=AF?= Date: Thu, 2 Jul 2026 23:36:44 +0800 Subject: [PATCH] Rename motion domain to gsap to avoid collision with PR #296 PR #296 (feat/emil-motion-principles) independently registers a "motion" domain key in CSV_CONFIG/detect_domain for motion-principles.csv (37 design-principle rows). Both PRs adding the same dict key would cause one to silently overwrite the other's domain registration if merged independently, per the automated review on this PR. The two domains are complementary, not duplicate (design principles vs. ready-to-use GSAP code snippets), so this renames this PR's domain from "motion" to "gsap" - a more precise name given every row is GSAP-specific implementation code. The --motion CLI dial and its "Subtle/Standard/ Complex" tiers are unaffected (unrelated to the domain key; only the `--domain gsap` search endpoint and its internal lookup changed). No regressions: --design-system output with no dials set remains byte-identical to before this feature. Co-Authored-By: Claude Sonnet 5 --- .claude/skills/ui-ux-pro-max/SKILL.md | 4 ++-- .claude/skills/ui-ux-pro-max/scripts/core.py | 4 ++-- .claude/skills/ui-ux-pro-max/scripts/design_system.py | 6 ++++-- .claude/skills/ui-ux-pro-max/scripts/search.py | 2 +- CLAUDE.md | 2 +- cli/assets/scripts/core.py | 4 ++-- cli/assets/scripts/design_system.py | 6 ++++-- cli/assets/scripts/search.py | 2 +- cli/assets/templates/base/skill-content.md | 4 ++-- src/ui-ux-pro-max/scripts/core.py | 4 ++-- src/ui-ux-pro-max/scripts/design_system.py | 6 ++++-- src/ui-ux-pro-max/scripts/search.py | 2 +- src/ui-ux-pro-max/templates/base/skill-content.md | 4 ++-- 13 files changed, 28 insertions(+), 22 deletions(-) diff --git a/.claude/skills/ui-ux-pro-max/SKILL.md b/.claude/skills/ui-ux-pro-max/SKILL.md index 307a219..6f9bc4c 100644 --- a/.claude/skills/ui-ux-pro-max/SKILL.md +++ b/.claude/skills/ui-ux-pro-max/SKILL.md @@ -427,7 +427,7 @@ python3 skills/ui-ux-pro-max/scripts/search.py "" --design-system --varia | `--motion` | Subtle micro-interactions | Standard scroll/stagger motion | Complex choreography (pin, Flip, SplitText) | | `--density` | Spacious (24-96px spacing scale) | Standard (16-64px, current default) | Dense/dashboard (8-32px spacing scale) | -- `--motion` attaches a ready-to-use GSAP snippet (with framework notes, Do/Don't, and performance notes) pulled from `--domain motion`, matched to the resolved tier (Subtle/Standard/Complex). +- `--motion` attaches a ready-to-use GSAP snippet (with framework notes, Do/Don't, and performance notes) pulled from `--domain gsap`, matched to the resolved tier (Subtle/Standard/Complex). - `--density` overrides the `--space-*` CSS variable table in the ASCII/markdown/MASTER.md output — use it for dashboards (high) vs. marketing pages (low) without hand-editing tokens. - Leaving a dial unset keeps that part of the output exactly as it was before (no behavior change). @@ -486,7 +486,7 @@ python3 skills/ui-ux-pro-max/scripts/search.py "" --stack | `landing` | Page structure, CTA strategies | hero, hero-centric, testimonial, pricing, social-proof | | `chart` | Chart types, library recommendations | trend, comparison, timeline, funnel, pie | | `ux` | Best practices, anti-patterns | animation, accessibility, z-index, loading | -| `motion` | GSAP animation skeletons by intensity tier | scroll reveal, stagger, magnetic cursor, page transition | +| `gsap` | GSAP animation skeletons by intensity tier | scroll reveal, stagger, magnetic cursor, page transition | | `google-fonts` | Individual Google Fonts lookup | sans serif, monospace, japanese, variable font, popular | | `react` | React/Next.js performance | waterfall, bundle, suspense, memo, rerender, cache | | `web` | App interface guidelines (iOS/Android/React Native) | accessibilityLabel, touch targets, safe areas, Dynamic Type | diff --git a/.claude/skills/ui-ux-pro-max/scripts/core.py b/.claude/skills/ui-ux-pro-max/scripts/core.py index c4b28db..9d05db2 100755 --- a/.claude/skills/ui-ux-pro-max/scripts/core.py +++ b/.claude/skills/ui-ux-pro-max/scripts/core.py @@ -55,7 +55,7 @@ CSV_CONFIG = { "search_cols": ["Category", "Icon Name", "Keywords", "Best For"], "output_cols": ["Category", "Icon Name", "Keywords", "Library", "Import Code", "Usage", "Best For", "Style"] }, - "motion": { + "gsap": { "file": "motion.csv", "search_cols": ["Category", "Intensity Tier", "Keywords", "Trigger"], "output_cols": ["Category", "Intensity Tier", "Trigger", "Duration", "Easing", "GSAP Snippet", "Framework Notes", "Do", "Don't", "Performance Notes"] @@ -220,7 +220,7 @@ def detect_domain(query): "typography": ["font pairing", "typography pairing", "heading font", "body font"], "google-fonts": ["google font", "font family", "font weight", "font style", "variable font", "noto", "font for", "find font", "font subset", "font language", "monospace font", "serif font", "sans serif font", "display font", "handwriting font", "font", "typography", "serif", "sans"], "icons": ["icon", "icons", "lucide", "heroicons", "symbol", "glyph", "pictogram", "svg icon"], - "motion": ["gsap", "motion intensity", "stagger", "magnetic cursor", "parallax", "page transition", "scroll reveal", "scroll-triggered", "scrollytelling", "flip plugin", "splittext", "shimmer", "skeleton loader"], + "gsap": ["gsap", "quickto", "scrolltrigger", "stagger", "magnetic cursor", "parallax", "page transition", "scroll reveal", "scroll-triggered", "scrollytelling", "flip plugin", "splittext", "shimmer", "skeleton loader"], "react": ["react", "next.js", "nextjs", "suspense", "memo", "usecallback", "useeffect", "rerender", "bundle", "waterfall", "barrel", "dynamic import", "rsc", "server component"], "web": ["aria", "focus", "outline", "semantic", "virtualize", "autocomplete", "form", "input type", "preconnect"] } diff --git a/.claude/skills/ui-ux-pro-max/scripts/design_system.py b/.claude/skills/ui-ux-pro-max/scripts/design_system.py index 08db85d..62dfbc8 100644 --- a/.claude/skills/ui-ux-pro-max/scripts/design_system.py +++ b/.claude/skills/ui-ux-pro-max/scripts/design_system.py @@ -245,10 +245,12 @@ class DesignSystemGenerator: best_typography = typography_results[0] if typography_results else {} best_landing = landing_results[0] if landing_results else {} - # MOTION_INTENSITY dial: pull a matching GSAP skeleton from motion.csv. + # MOTION_INTENSITY dial: pull a matching GSAP skeleton from motion.csv + # (domain key is "gsap", not "motion" - PR #296 already owns the "motion" + # domain for Emil Kowalski's motion-design principles, motion-principles.csv). motion_snippet = {} if motion_info: - motion_result = search(f"{query} {motion_info['tier']}", "motion", 5) + motion_result = search(f"{query} {motion_info['tier']}", "gsap", 5) motion_matches = motion_result.get("results", []) tiered = [m for m in motion_matches if m.get("Intensity Tier") == motion_info["tier"]] if tiered: diff --git a/.claude/skills/ui-ux-pro-max/scripts/search.py b/.claude/skills/ui-ux-pro-max/scripts/search.py index fc50d59..4707316 100644 --- a/.claude/skills/ui-ux-pro-max/scripts/search.py +++ b/.claude/skills/ui-ux-pro-max/scripts/search.py @@ -7,7 +7,7 @@ Usage: python search.py "" [--domain ] [--stack ] [--max-r python search.py "" --design-system --persist [-p "Project Name"] [--page "dashboard"] python search.py "" --design-system --variance 8 --motion 9 --density 7 -Domains: style, prompt, color, chart, landing, product, ux, typography, google-fonts, motion +Domains: style, prompt, color, chart, landing, product, ux, typography, google-fonts, gsap Stacks: react, nextjs, vue, svelte, astro, swiftui, react-native, flutter, nuxtjs, nuxt-ui, html-tailwind, shadcn, jetpack-compose, threejs, angular, laravel, javafx, wpf, winui, avalonia, uno, uwp Design dials (1-10, only with --design-system): diff --git a/CLAUDE.md b/CLAUDE.md index 9b40f71..9e281b0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -20,7 +20,7 @@ python3 src/ui-ux-pro-max/scripts/search.py "" --domain [-n " [--domain ] [--stack ] [--max-r python search.py "" --design-system --persist [-p "Project Name"] [--page "dashboard"] python search.py "" --design-system --variance 8 --motion 9 --density 7 -Domains: style, prompt, color, chart, landing, product, ux, typography, google-fonts, motion +Domains: style, prompt, color, chart, landing, product, ux, typography, google-fonts, gsap Stacks: react, nextjs, vue, svelte, astro, swiftui, react-native, flutter, nuxtjs, nuxt-ui, html-tailwind, shadcn, jetpack-compose, threejs, angular, laravel, javafx, wpf, winui, avalonia, uno, uwp Design dials (1-10, only with --design-system): diff --git a/cli/assets/templates/base/skill-content.md b/cli/assets/templates/base/skill-content.md index 18ff275..aedf8bc 100644 --- a/cli/assets/templates/base/skill-content.md +++ b/cli/assets/templates/base/skill-content.md @@ -124,7 +124,7 @@ python3 skills/ui-ux-pro-max/scripts/search.py "" --design-system --varia | `--motion` | Subtle micro-interactions | Standard scroll/stagger motion | Complex choreography (pin, Flip, SplitText) | | `--density` | Spacious (24-96px spacing scale) | Standard (16-64px, current default) | Dense/dashboard (8-32px spacing scale) | -- `--motion` attaches a ready-to-use GSAP snippet (with framework notes, Do/Don't, and performance notes) pulled from `--domain motion`, matched to the resolved tier (Subtle/Standard/Complex). +- `--motion` attaches a ready-to-use GSAP snippet (with framework notes, Do/Don't, and performance notes) pulled from `--domain gsap`, matched to the resolved tier (Subtle/Standard/Complex). - `--density` overrides the `--space-*` CSS variable table in the ASCII/markdown/MASTER.md output — use it for dashboards (high) vs. marketing pages (low) without hand-editing tokens. - Leaving a dial unset keeps that part of the output exactly as it was before (no behavior change). @@ -179,7 +179,7 @@ python3 skills/ui-ux-pro-max/scripts/search.py "" --stack | `landing` | Page structure, CTA strategies | hero, hero-centric, testimonial, pricing, social-proof | | `chart` | Chart types, library recommendations | trend, comparison, timeline, funnel, pie | | `ux` | Best practices, anti-patterns | animation, accessibility, z-index, loading | -| `motion` | GSAP animation skeletons by intensity tier | scroll reveal, stagger, magnetic cursor, page transition | +| `gsap` | GSAP animation skeletons by intensity tier | scroll reveal, stagger, magnetic cursor, page transition | | `react` | React/Next.js performance | waterfall, bundle, suspense, memo, rerender, cache | | `web` | App interface guidelines (iOS/Android/React Native) | accessibilityLabel, touch targets, safe areas, Dynamic Type | | `prompt` | AI prompts, CSS keywords | (style name) | diff --git a/src/ui-ux-pro-max/scripts/core.py b/src/ui-ux-pro-max/scripts/core.py index c4b28db..9d05db2 100755 --- a/src/ui-ux-pro-max/scripts/core.py +++ b/src/ui-ux-pro-max/scripts/core.py @@ -55,7 +55,7 @@ CSV_CONFIG = { "search_cols": ["Category", "Icon Name", "Keywords", "Best For"], "output_cols": ["Category", "Icon Name", "Keywords", "Library", "Import Code", "Usage", "Best For", "Style"] }, - "motion": { + "gsap": { "file": "motion.csv", "search_cols": ["Category", "Intensity Tier", "Keywords", "Trigger"], "output_cols": ["Category", "Intensity Tier", "Trigger", "Duration", "Easing", "GSAP Snippet", "Framework Notes", "Do", "Don't", "Performance Notes"] @@ -220,7 +220,7 @@ def detect_domain(query): "typography": ["font pairing", "typography pairing", "heading font", "body font"], "google-fonts": ["google font", "font family", "font weight", "font style", "variable font", "noto", "font for", "find font", "font subset", "font language", "monospace font", "serif font", "sans serif font", "display font", "handwriting font", "font", "typography", "serif", "sans"], "icons": ["icon", "icons", "lucide", "heroicons", "symbol", "glyph", "pictogram", "svg icon"], - "motion": ["gsap", "motion intensity", "stagger", "magnetic cursor", "parallax", "page transition", "scroll reveal", "scroll-triggered", "scrollytelling", "flip plugin", "splittext", "shimmer", "skeleton loader"], + "gsap": ["gsap", "quickto", "scrolltrigger", "stagger", "magnetic cursor", "parallax", "page transition", "scroll reveal", "scroll-triggered", "scrollytelling", "flip plugin", "splittext", "shimmer", "skeleton loader"], "react": ["react", "next.js", "nextjs", "suspense", "memo", "usecallback", "useeffect", "rerender", "bundle", "waterfall", "barrel", "dynamic import", "rsc", "server component"], "web": ["aria", "focus", "outline", "semantic", "virtualize", "autocomplete", "form", "input type", "preconnect"] } diff --git a/src/ui-ux-pro-max/scripts/design_system.py b/src/ui-ux-pro-max/scripts/design_system.py index 08db85d..62dfbc8 100644 --- a/src/ui-ux-pro-max/scripts/design_system.py +++ b/src/ui-ux-pro-max/scripts/design_system.py @@ -245,10 +245,12 @@ class DesignSystemGenerator: best_typography = typography_results[0] if typography_results else {} best_landing = landing_results[0] if landing_results else {} - # MOTION_INTENSITY dial: pull a matching GSAP skeleton from motion.csv. + # MOTION_INTENSITY dial: pull a matching GSAP skeleton from motion.csv + # (domain key is "gsap", not "motion" - PR #296 already owns the "motion" + # domain for Emil Kowalski's motion-design principles, motion-principles.csv). motion_snippet = {} if motion_info: - motion_result = search(f"{query} {motion_info['tier']}", "motion", 5) + motion_result = search(f"{query} {motion_info['tier']}", "gsap", 5) motion_matches = motion_result.get("results", []) tiered = [m for m in motion_matches if m.get("Intensity Tier") == motion_info["tier"]] if tiered: diff --git a/src/ui-ux-pro-max/scripts/search.py b/src/ui-ux-pro-max/scripts/search.py index fc50d59..4707316 100644 --- a/src/ui-ux-pro-max/scripts/search.py +++ b/src/ui-ux-pro-max/scripts/search.py @@ -7,7 +7,7 @@ Usage: python search.py "" [--domain ] [--stack ] [--max-r python search.py "" --design-system --persist [-p "Project Name"] [--page "dashboard"] python search.py "" --design-system --variance 8 --motion 9 --density 7 -Domains: style, prompt, color, chart, landing, product, ux, typography, google-fonts, motion +Domains: style, prompt, color, chart, landing, product, ux, typography, google-fonts, gsap Stacks: react, nextjs, vue, svelte, astro, swiftui, react-native, flutter, nuxtjs, nuxt-ui, html-tailwind, shadcn, jetpack-compose, threejs, angular, laravel, javafx, wpf, winui, avalonia, uno, uwp Design dials (1-10, only with --design-system): diff --git a/src/ui-ux-pro-max/templates/base/skill-content.md b/src/ui-ux-pro-max/templates/base/skill-content.md index 18ff275..aedf8bc 100644 --- a/src/ui-ux-pro-max/templates/base/skill-content.md +++ b/src/ui-ux-pro-max/templates/base/skill-content.md @@ -124,7 +124,7 @@ python3 skills/ui-ux-pro-max/scripts/search.py "" --design-system --varia | `--motion` | Subtle micro-interactions | Standard scroll/stagger motion | Complex choreography (pin, Flip, SplitText) | | `--density` | Spacious (24-96px spacing scale) | Standard (16-64px, current default) | Dense/dashboard (8-32px spacing scale) | -- `--motion` attaches a ready-to-use GSAP snippet (with framework notes, Do/Don't, and performance notes) pulled from `--domain motion`, matched to the resolved tier (Subtle/Standard/Complex). +- `--motion` attaches a ready-to-use GSAP snippet (with framework notes, Do/Don't, and performance notes) pulled from `--domain gsap`, matched to the resolved tier (Subtle/Standard/Complex). - `--density` overrides the `--space-*` CSS variable table in the ASCII/markdown/MASTER.md output — use it for dashboards (high) vs. marketing pages (low) without hand-editing tokens. - Leaving a dial unset keeps that part of the output exactly as it was before (no behavior change). @@ -179,7 +179,7 @@ python3 skills/ui-ux-pro-max/scripts/search.py "" --stack | `landing` | Page structure, CTA strategies | hero, hero-centric, testimonial, pricing, social-proof | | `chart` | Chart types, library recommendations | trend, comparison, timeline, funnel, pie | | `ux` | Best practices, anti-patterns | animation, accessibility, z-index, loading | -| `motion` | GSAP animation skeletons by intensity tier | scroll reveal, stagger, magnetic cursor, page transition | +| `gsap` | GSAP animation skeletons by intensity tier | scroll reveal, stagger, magnetic cursor, page transition | | `react` | React/Next.js performance | waterfall, bundle, suspense, memo, rerender, cache | | `web` | App interface guidelines (iOS/Android/React Native) | accessibilityLabel, touch targets, safe areas, Dynamic Type | | `prompt` | AI prompts, CSS keywords | (style name) |