SuperAPI AI Directory

pm-brand-motion

Design & creation

View repository

Updated 10-16 09:17

About this skill

Preamble (run first)

# 检查方案设计目录

# 检查前置文档
echo "📊 正在检查前置文档..."

if [ -f "docs/02-方案设计/原型设计方案.md" ]; then
  echo "✅ 原型设计方案 - 已找到"
else
  echo "⏳ 原型设计方案 - 未找到"
fi

if [ -f "docs/02-方案设计/产品定位方案.md" ]; then
  echo "✅ 产品定位方案 - 已找到"
else
  echo "⏳ 产品定位方案 - 未找到"
fi
Check the logo file

echo "" echo "🎨 Checking the logo file..." for ext in svg png jpg webp; do if ls logo.*.$ext 2>/dev/null | head -1 > /dev/null 2>&1; then echo "✅ logo file (.$ext) - found" fi done echo "⏳ If there is no logo file, you will be guided to provide one in the steps"


---

## 写入时边界

只讨论时不写文件,启动检查不创建目录。用户要求保存产物时,先确认当前产品、精确输出路径及已有文件的覆盖/追加选择;确认后**仅在实际 Write 前**创建该输出文件的父目录。完整安装可参见 `skills/_shared/artifact-policy.md`,单独安装本 skill 也按本段执行。

---

## 前置门禁

**必需文档**(至少满足一项):
- 原型设计方案(`docs/02-方案设计/原型设计方案.md`)
- 产品定位方案(`docs/02-方案设计/产品定位方案.md`)

**可选文档**:
- 需求调研报告
- MVP方案

**Logo 文件**(至少满足一项):
- SVG 格式 logo(优先)
- PNG/JPG/WebP 格式 logo 图片

如果必需文档均不存在:

```markdown
⚠️ 未找到前置文档

品牌动效设计需要了解产品的视觉定位和品牌性格。

您可以选择:
A) 执行 /pm-position 生成产品定位方案
B) 执行 /pm-proto 生成原型设计方案
C) 手动输入品牌信息(快速模式)

是否继续?

Cross-Agent Interaction Rules

When the process requires interaction with the user:

  1. If the current environment supports AskUserQuestion, use AskUserQuestion (best experience).
  2. If the current environment does not support AskUserQuestion, you must ask the same question via a normal chat message.
  3. Ask only one question at a time.
  4. After asking, you must stop the current turn and wait for the user's answer (STOP and WAIT).
  5. You must not generate documents or write to docs before the user answers.
  6. Existing docs files cannot replace the user's answer in this round.

Execution Flow

Step 1: Determine the motion scope

Use AskUserQuestion to ask:

Which type of brand motion do you need to design?

A) Logo opening animation (splash / brand showcase page) B) Loading state animation (loading / waiting indicator) C) Interaction micro-motion (hover / click feedback) D) Page transition animation (transition / switch) E) Other (please enter manually)

💡 Tip:

  • New brand launch → opening animation recommended
  • Already-launched product → interaction micro-motion recommended
  • Need comprehensive planning → multiple selections are allowed; start with the opening animation

Record to variable MOTION_SCOPE


Step 2: Read the prerequisite data

Read the corresponding documents according to the motion scope:

Extract from the product positioning plan:

  • Brand personality description
  • Target user profile
  • Brand visual style

Extract from the prototype design plan:

  • Design specification suggestions (color, font)
  • Page layout structure
  • Interaction flow

Read the Logo file:

  • Prefer reading the SVG format (can be used directly for animation)
  • If only an image format is available, use the Read tool to view the image and understand the logo's visual structure

Handling read failures:

If the logo file does not exist:

⚠️ 未找到 logo 文件

品牌动效需要基于 logo 进行设计。

您可以选择:
A) 提供 logo 文件路径(我将读取分析)
B) 描述 logo 的视觉结构(文字描述模式)
C) 先完成动效方案文档,后续再制作 demo

是否继续?

Step 3: Define the brand motion personality

3.1 Determine the personality words

Use AskUserQuestion to ask:

What is the brand's motion personality? Please choose the 3 words that fit best:

A) Precise · Professional · Reliable (restrained and stable, suitable for finance/enterprise/healthcare) B) Energetic · Bold · Enterprising (powerful impact, suitable for sports/tech/startups) C) Warm · Friendly · Approachable (soft and inclusive, suitable for education/social/lifestyle) D) Elegant · Refined · High-end (smooth and composed, suitable for luxury/design/art) E) Other combination (please enter manually, e.g. "steady · weighty · authoritative")

💡 Tip:

  • Personality words determine the rhythm, intensity, and choreography of the motion
  • They can be derived from the logo's visual language: geometric feel → precise, organic feel → warm, minimalist → elegant
  • If there is a product positioning plan, prioritize referring to the brand personality description in it

Record to variable BRAND_PERSONALITY

3.2 Personality words → motion style mapping

Based on the combination of personality words, map to motion style parameters:

Personality word combination Motion style Sense of timing Ease in/out Choreography rhythm
Precise · Professional · Reliable Restrained, stable Medium speed 1000-1500ms Subtle, almost no overshoot Unfold in sequence, no jumping
Energetic · Bold · Enterprising Powerful, impactful Fast 600-900ms Obvious overshoot + rebound Explosive, multiple components simultaneously
Warm · Friendly · Approachable Soft, accommodating Medium-slow 1200-1800ms Slight overshoot Gradually emerge, like greeting
Elegant · Refined · High-end Smooth, unhurried Slow 1500-2500ms Extremely subtle, silky transition Unfold layer by layer, with a sense of ceremony
Light · Agile · Creative Jumping, surprising Fast 500-800ms bounce rebound Appear staggered, with a sense of rhythm
Steady · Weighty · Authoritative Slow, firm Slow 1800-3000ms Almost no overshoot Spread from center outward

If the user selects "other combination", the AI derives the motion parameters on its own based on the meaning of the personality words.


Step 4: Plan the choreography scheme

4.1 Identify logo components

Based on the logo analysis, identify semantic components:

🎨 Based on your logo, I have identified the following motion components:

Component Type Motion role Description
{component name} mark/wordmark/decoration lead/support/accent {description}

Do the component divisions need adjustment?

A) The component divisions are reasonable, continue choreography B) Need to merge/split components C) Other adjustments (please enter manually)

4.2 Choose choreography mode

Use AskUserQuestion to ask:

What is the choreography mode for the brand motion?

A) Layer-by-layer emergence — components appear in sequence from bottom layer to top layer (suitable for elegant/high-end) B) Center bloom — spread outward from the center point (suitable for steady/authoritative) C) Stroke drawing — as if drawn with a pen (suitable for elements with handwriting/calligraphy) D) Bounce entrance — components bounce into the frame (suitable for energetic/young) E) Puzzle assembly — components fly in from different directions and assemble (suitable for tech/creative) F) Fade-in freeze — from blurry to clear, finally freezing (suitable for professional/reliable) G) Other (please enter manually)

💡 Tip:

  • The choreography mode should match the personality words
  • {recommend the most suitable mode based on the personality words}

Record to variable CHOREOGRAPHY_MODE

4.3 Plan time allocation

Based on the time parameters mapped from personality words, plan a three-stage time allocation:

General principles: preparation (20%) → action (50%) → ending (30%)

🕐 Based on your brand personality "{personality word}", the suggested time allocation is:

Stage Proportion Duration
Preparation 20% ~{calculated value}ms
Action 50% ~{calculated value}ms
Ending 30% ~{calculated value}ms
Total 100% {total duration}ms

Component choreography order:

  1. {lead component} (starts at 0ms, completes at {time}ms)
  2. {supporting component} (starts at {offset}ms, completes at {time}ms)
  3. {accent component} (starts at {offset}ms, completes at {time}ms)

Does it need adjustment?

A) The time allocation is reasonable, start making the demo B) Adjust the total duration C) Adjust the choreography order D) Other adjustments


Step 5: Generate the directional demo HTML

5.1 Prepare SVG content

If the user provides an SVG file:

  • Use the Read tool to read the SVG content
  • Add a semantic id to each component in the SVG (mark、wordmark、dot , etc.)
  • Ensure each animated component is an independent <g> or <path> element

If the user only has a logo in image format:

  • Use the Read tool to view the image
  • Based on the image's visual structure, the AI hand-writes a simplified SVG
  • The simplified SVG only retains the core shapes and does not pursue pixel-level reproduction
  • Note in the document that "the SVG is a simplified directional version, and the designer needs to refine it based on the original logo"

If the user has no logo file:

  • Generate a conceptual SVG based on the brand description in the preceding document
  • Note in the document that "the SVG is a conceptual indication and needs to be replaced with the actual logo"

5.2 Write the demo HTML

Use the Write tool to generate docs/02-方案设计/品牌动效demo.html。

⚠️ Hard rules for visual quality (summary of pitfalls, must be followed):

The following rules must be followed when generating the demo HTML. For detailed explanations, see the "Hard Rules for Demo HTML Visual Quality" section below:

  1. Absolutely centered — set html/body width/height to 100%, center body with flex, and align all child elements with align-items center
  2. SVG visual center of gravity centered — when hand-drawing SVG, distribute shapes around the center of the viewBox
  3. Use HTML for text instead of SVG — use <span>for wordmark/tagline, not SVG <text>
  4. Mark size ≥ 120px — too small lacks impact
  5. Lead animation ≥ 3-stage keyframes — entrance→overshoot→settle, reflecting bounce-back
  6. Color scheme has contrast — gradient fill (≥2 colors), background glow ≥500px + blur ≥100px
  7. Refined styling — use smooth curves rather than straight-line拼接 for the mark, eyes have highlights, decorations have details, edges have a subtle glow
  8. Spacing has hierarchy — mark→wordmark 20-24px, wordmark→tagline 10-12px, decreasing

Basic structure of the demo HTML:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{产品名称} 品牌动效 Demo</title>
<style>
  :root {
    --spm-duration: {总时长}ms;
    --spm-speed: 1; /* 速度倍率,1=正常,0.5=慢放,2=快放 */
    --spm-accent: {主色};
    --spm-accent2: {辅色};
    --spm-bg: {背景色};
    --spm-text: {文字色};
    --spm-text2: {辅助文字色};
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }
  html, body { width: 100%; height: 100%; }

  body {
    background: var(--spm-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    position: relative;
  }

  /* 背景光晕 — 至少 500px + blur 100px */
  .bg-glow { ... }

  /* 主舞台 — flex column + align-items center */
  #logo-root {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 1;
  }

  /* 动画通过 .animate class 触发,初始状态隐藏 */
  #mark, #wordmark, #tagline, #line { opacity: 0; }

  /* .animate 类激活时才播放动画 */
  .animate #mark {
    animation: mark-in calc(var(--spm-duration) / var(--spm-speed)) cubic-bezier(0.16, 1, 0.3, 1) both;
  }
  @keyframes mark-in {
    0% { opacity: 0; transform: translateY(30px) scale(0.8); }
    50% { opacity: 1; transform: translateY(-4px) scale(1.03); }
    75% { transform: translateY(1px) scale(0.99); }
    100% { opacity: 1; transform: translateY(0) scale(1); }
  }

  .animate #wordmark {
    animation: wordmark-in calc(1000ms / var(--spm-speed)) cubic-bezier(0.25, 0.1, 0.25, 1) both;
    animation-delay: calc({偏移}ms / var(--spm-speed));
    margin-top: 24px;
  }
  @keyframes wordmark-in {
    0% { opacity: 0; transform: translateY(18px); }
    100% { opacity: 1; transform: translateY(0); }
  }

  .animate #tagline { ... margin-top: 12px; }
  .animate #line { ... margin-top: 20px; }

  /* 控制面板 — fixed + left 50% + translateX(-50%) */
  #controls {
    position: fixed;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%);
    ...
  }

  /* 无障碍 */
  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
      animation-duration: 0.01ms !important;
      animation-iteration-count: 1 !important;
      opacity: 1 !important;
      transform: none !important;
    }
  }
</style>
</head>
<body>
  <div class="bg-glow bg-glow--1"></div>
  <div class="bg-glow bg-glow--2"></div>

  <div id="logo-root">
    <!-- Mark — SVG,视觉重心居中于 viewBox -->
    <div id="mark">
      <svg width="140" height="140" viewBox="0 0 140 140" fill="none">
        <!-- 渐变填充(至少2色) -->
        <!-- 身体用 C 曲线,圆润饱满 -->
        <!-- 眼睛有高光点 -->
        <!-- 脊线用小三角 -->
        <!-- 边缘微光 -->
      </svg>
    </div>

    <!-- Wordmark — HTML span,不用 SVG text -->
    <div id="wordmark">
      <span style="font-family: ...; font-size: 38px; ...">
        <span style="color: var(--spm-accent);">super</span>
        <span style="color: var(--spm-text);">PM</span>
      </span>
    </div>

    <!-- Tagline — HTML span,text-align: center -->
    <div id="tagline">
      <span style="text-align: center; display: block; ...">产品经理技能包</span>
    </div>

    <div id="line"></div>
  </div>

  <div id="controls">
    <button onclick="replay()">▶ 重播</button>
    <label>速度 <input type="range" ...></label>
    <span id="speed-label">1x</span>
  </div>

  <script>
    // 重播:移除动画 class → reflow → 重新添加,触发 CSS 动画重播
    function replay() {
      const root = document.getElementById('logo-root');
      root.classList.remove('animate');
      void root.offsetWidth; // 强制 reflow
      root.classList.add('animate');
      // 背景光晕同理
      document.querySelectorAll('.bg-glow').forEach(el => {
        el.classList.remove('animate');
        void el.offsetWidth;
        el.classList.add('animate');
      });
    }
    // 速度:通过 CSS 变量缩放所有动画时长
    function setSpeed(val) {
      document.documentElement.style.setProperty('--spm-speed', val);
      document.getElementById('speed-label').textContent = val + 'x';
    }
  </script>
</body>
</html>

Key rules:

  • CSS variables use --spm-* prefix (super-pm prefix)
  • @keyframes inside animation-timing-function must be written as literal cubic-bezier(...), cannot use var()(Chromium will silently degrade to linear)
  • Animation only uses transform and opacity(best performance)
  • Must include prefers-reduced-motion handling
  • Demo title notes "Direction Validation Demo"
  • Animation is triggered via .animate class (initial state opacity:0, plays after adding class), replay uses class toggle (remove→reflow→add)
  • Speed is controlled via --spm-speed CSS variable + calc(duration / speed) , without JS getAnimations().playbackRate
  • Does not depend on any external tools or scripts(pixel2motion, Playwright, headless Chrome, etc.), the demo is pure HTML + CSS + inline JS

5.3 Demo Positioning Statement

After generating the demo, clearly inform the user:

✅ Directional demo generated!

📄 File path:docs/02-方案设计/品牌动效demo.html 🌐 How to view: Open the file directly in a browser

⚠️ Important notes:

  • This demo isdirection validation, not a final deliverable
  • The SVG may be a simplified version; designers need to refine it based on the original logo
  • Easing curves and choreography details require professional tuning by designers
  • The value of the demo is to let the team reach consensus on the motion direction

Step 6: Output the brand motion solution document

Use the Write tool to create docs/02-方案设计/品牌动效方案.md:

# {产品名称} 品牌动效方案

## 文档信息

- **产品名称**: {从前置文档提取}
- **动效范围**: {开场动画/加载状态/交互微动效/页面过渡}
- **创建时间**: {当前时间}
- **设计工具**: super-pm

---

## 一、动效定位

### 1.1 品牌性格词

{3个性格词}

### 1.2 动效风格

{性格词映射的动效风格描述}

| 参数 | 值 |
|------|-----|
| 总时长 | {时长}ms |
| 缓出曲线 | {cubic-bezier值} |
| 缓入缓出曲线 | {cubic-bezier值} |
| overshoot程度 | {描述} |
| 编排节奏 | {描述} |

### 1.3 使用场景

{场景描述}

---

## 二、编排方案

### 2.1 部件识别

| 部件 | 类型 | 动效角色 | 说明 |
|------|------|---------|------|
| {部件1} | mark | 主角 | {描述} |
| {部件2} | wordmark | 配角 | {描述} |
| {部件3} | 装饰 | 点缀 | {描述} |

### 2.2 编排模式

{编排模式名称和描述}

### 2.3 时间分配

| 阶段 | 占比 | 时长 |
|------|------|------|
| 预备 | 20% | ~{值}ms |
| 动作 | 50% | ~{值}ms |
| 收尾 | 30% | ~{值}ms |
| **总计** | 100% | **{值}ms** |

### 2.4 部件编排顺序

1. {主角}(0ms 开始,{值}ms 完成)
2. {配角}({偏移}ms 开始,{值}ms 完成)
3. {点缀}({偏移}ms 开始,{值}ms 完成)

---

## 三、动效原则

基于 Disney 12 动画原则,本方案重点应用:

- **{原则1}**:{具体应用说明}
- **{原则2}**:{具体应用说明}
- **{原则3}**:{具体应用说明}

(其他原则根据性格词选择性应用)

---

## 四、方向性 Demo

- **demo 文件**: `docs/02-方案设计/品牌动效demo.html`
- **demo 定位**: 方向验证,非最终交付品
- **查看方式**: 浏览器直接打开

### 4.1 demo 与成品的差距

| 维度 | 当前 demo | 设计师交付品 |
|------|----------|-------------|
| SVG 精度 | 简化方向版 | 原始 logo 精确矢量 |
| 缓动曲线 | 通用曲线 | 精确调校 |
| 编排细节 | 基础编排 | 专业级编排 |
| 自交叉处理 | 不处理 | 专业技法处理 |

---

## 五、设计师精修指引

### 5.1 精修方向

- {基于 demo 指出需要精修的具体点}
- {缓动曲线需要从通用值调校到品牌专属值}
- {编排衔接需要更流畅的过渡}

### 5.2 推荐工具

- After Effects + Lottie(专业动效 + Web 导出)
- Principle(快速动效原型)
- Figma Motion(设计工具内动效)
- SVG 动画专业工具

### 5.3 精修重点

1. 缓动曲线精确调校(从通用值到品牌专属值)
2. 部件间衔接细节(消除机械感)
3. 自交叉路径处理(如有书法/∞形元素)
4. 最终帧必须与静态 logo 完全一致
5. loading 循环动画需无缝衔接(首帧 = 尾帧)

---

## 六、下一步建议

1. **/pm-tech** - 评估动效技术实现可行性(推荐)
2. **/pm-data** - 定义动效相关数据指标
3. **/pm-proto** - 将动效融入原型设计

---

**文档状态**: 品牌动效方案完成
**生成时间**: {时间戳}
**生成工具**: super-pm

Step 7: Output completion prompt

Use AskUserQuestion to provide next-step options:

✅ Brand motion solution generated!

📄 Solution document:docs/02-方案设计/品牌动效方案.md 🎬 Demo file:docs/02-方案设计/品牌动效demo.html

🎯 Suggested next steps:

A) Run /pm-tech - Technical handoff (recommended) B) Run /pm-data - Data metrics design C) Run /pm-proto - Integrate into prototype design D) Open the demo in a browser to view the effect


Fallback mechanism

Scenario 1: Prerequisite document does not exist

⚠️ 未找到前置文档

品牌动效设计需要了解产品的品牌定位。

您可以选择:
A) 执行 /pm-position 生成产品定位方案
B) 执行 /pm-proto 生成原型设计方案
C) 手动输入品牌信息(快速模式)

是否继续?

Scenario 2: No logo file

⚠️ 未找到 logo 文件

品牌动效 demo 需要基于 logo 制作。

您可以选择:
A) 提供 logo 文件路径
B) 描述 logo 视觉结构(文字模式)
C) 先完成方案文档,后续再制作 demo

是否继续?

Scenario 3: User is unsure about the motion direction

Guide the user to think:

🤔 Unsure about the motion direction?

I can help you: A) Automatically recommend a choreography mode based on brand personality B) Show a comparison of the effects of different choreography modes C) Reference the motion style of similar products D) Derive motion personality from the logo's visual language


Notes

  1. Direction validation rather than delivery: the demo is directional, clearly marked as "not a final deliverable"
  2. Personality-word driven: all motion parameters are derived from personality words, not invented out of thin air
  3. Semantic parts: each SVG part has an independent id, making it easy for designers to refine later
  4. Performance first: animation only uses transform and opacity
  5. Accessibility required: prefers-reduced-motion handling cannot be omitted
  6. keyframes easing must be literal:@keyframes CSS variables cannot be used as timing-function inside
  7. Does not depend on external tools: demo is pure HTML + CSS + inline JS, with no dependency on pixel2motion, Playwright, headless Chrome, or any external scripts. Animation control uses CSS class toggle + CSS variables, not JS DOM rebuilding or getAnimations().playbackRate

Hard rules for Demo HTML visual quality (pitfall summary, must be followed)

The following rules come from actual testing pitfalls,violating any one = demo unqualified:

Centering rules

  1. html, body must be set to width: 100%; height: 100% — otherwise flex centering does not take effect and content is offset
  2. body uses display: flex; align-items: center; justify-content: center — this is the only reliable centering method
  3. Text inside SVG uses text-anchor="middle" + x="50%" — SVG <text> defaults to left-aligned, not centered
  4. HTML text uses text-align: center; display: block — inline elements are not centered
  5. Control panel uses position: fixed; left: 50%; transform: translateX(-50%) — fixed elements do not participate in flex centering

SVG visual center-of-gravity rules

  1. The visual center of gravity of SVG content must be near the center of the viewBox — when hand-drawing SVG, all shapes are distributed around the viewBox center (50%, 50%). If the dinosaur body leans right, the tail must extend left to balance the visual center of gravity.Visual offset within the viewBox = unqualified

Text rendering rules

  1. Brand text uses HTML <span> for rendering, not SVG <text> — SVG <text> — font rendering is inconsistent across different systems and alignment is uncontrollable. HTML <span> is cross-platform consistent and typography is controllable.Using SVG <text> for brand text = unqualified

Size rules

  1. Mark SVG size at least 120px — a mark that is too small lacks impact on screen and cannot convey a sense of brand.mark smaller than 100px = unqualified

Animation layering rules

  1. The protagonist animation must include at least 3 keyframe stages — a simple opacity 0→1 + translateY fade-in is too mechanical. It must include the three stages entrance → overshoot → settle (such as scale(0.8) → scale(1.03) → scale(0.99) → scale(1)), reflecting a bounce-back breathing feel.A simple fade-in with only 2 keyframes = unqualified

  2. There must be orchestrated offsets between parts (150-250ms) — all parts starting animation at the same time is the first source of mechanical feel. mark → wordmark → tagline appear in sequence, with increasing offsets.All parts having the same animation-delay = unqualified

Color rules

  1. On a dark background, the mark and wordmark must be bright enough — on a dark background (such as #0c0c14), the primary color must be at least at the brightness level of #4f8cff. Overall dark and dull = hard to see = unqualified

  2. SVG fill uses gradients (at least 2 colors), not solid colors — solid-color fill lacks richness. Use <linearGradient> a gradient from primary color to secondary color.SVG using solid-color fill = unqualified

  3. Background glow at least 500px + blur 100px — if the glow is too small or the blur is too light, the atmosphere is insufficient. The glow spreads from the center, creating a brand atmosphere.Glow smaller than 400px or blur smaller than 80px = unqualified

Shape rules (applicable to all marks)

  1. Mark uses smooth curves (round and full), not straight-line assembly (rough geometry) — Bezier curves must use C Draw smooth curves with commands; do not use L commands to draw straight-line segments.mark body has straight-line segments = unqualified

  2. Eyes/focal point must have a highlight dot — if the mark has eyes or a visual focal point, use a large white circle + black pupil + small white highlight dot (opacity 0.6) to make the focal point lively.Flat eyes with only black and white layers = unqualified

  3. Use characteristic shapes for decorative details, not generic arcs — dinosaur ridges use small triangles <path>(e.g. M72 50 L74 44 L76 50), flames use sharp points, water droplets use curved arcs. Decorative shapes should match the mark's semantic characteristics.Generic arcs used for decoration = unqualified

  4. Edges have a subtle glow highlight — add a stroke="#fff" opacity="0.15" stroke to the mark outline to increase refinement.No edge highlight = unqualified

Spacing rules

  1. mark → wordmark spacing 20-24px, wordmark → tagline 10-12px, tagline → decorative line 18-20px — decreasing spacing reflects information hierarchy (protagonist > supporting role > accent).Chaotic spacing or all the same = unqualified

Total duration rules

  1. Total duration must match the personality words — "precise · professional · reliable" requires a composed rhythm (1200-1500ms), "energetic · bold · enterprising" requires a fast rhythm (500-800ms).Total duration contradicts the personality words = unqualified

Output files

  • Brand motion plan → docs/02-方案设计/品牌动效方案.md
  • Directional demo → docs/02-方案设计/品牌动效demo.html

Output quality comparison

✅ Good example:

- 性格词明确:「精准·专业·可靠 → 克制稳定风格,总时长 1000ms」
- 编排有逻辑:「mark 先动(主角),wordmark 后动(配角),偏移 150ms」
- demo 可感知方向:「浏览器打开能看到动效节奏和编排顺序」
- 明确标注定位:「方向验证 demo,设计师需精修缓动曲线和衔接细节」

❌ Bad example:

- 性格词模糊:「动效要好看、有感觉」
- 编排无逻辑:「所有部件同时出现」
- demo 无法感知方向:「只有闪烁,看不出编排意图」
- 混淆定位:「demo 就是最终交付品」

Common pitfalls / Red Flags — STOP

If any of the following occurs, stop immediately and backtrack:

Pitfall Correct approach
html/body does not have width/height 100% set Must set width: 100%; height: 100%, otherwise flex centering will not work
Content is not centered (offset left/up) body uses display: flex; align-items: center; justify-content: center
Text inside SVG is left-aligned Use text-anchor="middle" + x="50%"
Brand text uses SVG <text> Use HTML <span>, consistent across platforms
mark SVG is smaller than 100px At least 120px, otherwise it lacks impact
Protagonist animation has only 2 keyframes Must have at least 3 stages (entrance → overshoot → settle), reflecting bounce-back
All parts have the same animation-delay Must have choreographed offsets (150-250ms), mark→wordmark→tagline in sequence
SVG uses a single-color fill Use <linearGradient> gradient fill (at least 2 colors)
Background glow is too small (<400px) At least 500px + blur 100px
Content is hard to see on a dark background Primary color must be at least as bright as #4f8cff
Mark body has straight-line segments Use C curves to draw rounded arcs, not L straight-line segments
Eyes/focal point have only black and white layers Add a white highlight dot (opacity 0.6)
Decoration uses generic arcs Use characteristic shapes (dinosaur→triangle, flame→sharp corner, water drop→arc)
No edge highlight Add stroke="#fff" opacity="0.15" stroke
Spacing is chaotic or all identical mark→wordmark 20-24px,wordmark→tagline 10-12px,tagline→line 18-20px
Total duration contradicts the personality words "Precise·Professional·Reliable"→1000-1500ms, "Energetic·Bold·Progressive"→600-900ms
@keyframes use var() as timing-function Must write literal cubic-bezier
Omit prefers-reduced-motion Accessibility handling cannot be omitted
Deliver the demo as a finished product Clearly label "direction validation, not final delivery"
Animation uses layout properties (width/height/margin) Use only transform + opacity
Rely on pixel2motion scripts or tools The demo must be pure HTML+CSS+inline JS, without relying on any external tools
Replay uses cloneNode/replaceChild or JS DOM rebuilding Use CSS class toggle (remove→reflow→add)
Speed uses JS getAnimations().playbackRate Use CSS variables --spm-speed + calc(duration/speed)

Output Quality Check / Verification Checklist

Process Check:

  • Prerequisite dependencies are satisfied (positioning plan or prototype plan has been read)
  • Personality words are determined and mapped to motion parameters
  • Choreography plan is laid out (parts, patterns, timing)
  • Plan document has been generated to docs/02-方案设计/
  • Both the demo and the document are labeled as "direction validation"
  • 2-3 follow-up skills have been recommended

Demo Visual Quality Check (confirm item by item after opening in the browser):

  • Content is fully centered (not offset to the left/top)
  • mark SVG ≥ 120px, visually impactful
  • Brand text uses HTML <span>(not SVG <text>)
  • The main animation has 3+ keyframe stages (entrance→overshoot→settle)
  • There is choreography offset between parts (150-250ms)
  • SVG fill uses gradients (not solid color)
  • Background glow ≥ 500px + blur ≥ 100px
  • Content is clearly legible on a dark background
  • Mark shape is rounded (C curves, no straight segments)
  • Eyes/focal point have highlight dots
  • Decorations use characteristic shapes (matching the mark semantics)
  • Edges have a subtle glow highlight stroke
  • Spacing has hierarchy (decreasing)
  • Total duration matches the personality words
  • prefers-reduced-motion is handled
  • @keyframes the timing-function is a literal cubic-bezier
  • Does not rely on any external tools (pixel2motion, Playwright, etc.)
  • Replay uses CSS class toggle, not cloneNode/JS DOM rebuilding
  • Speed uses CSS variables --spm-speed, not JS getAnimations().playbackRate

⚠️ If any item fails → complete it before marking as done.