← Plugin catalog
Business & Operations

Motion

Motion v1.0.0

Analyze Meta creative ads

Create a free account to save this plugin.

From the developer

Not specified in the available declarations: capabilities, limitations, pricing & account requirements.

Onboarding example

Analyze my best performing ad — what's driving the results and which demographics are responding most?
Sources & dates

Developer declarations; not independently tested. Listing last checked Nov 7, 2026. Package observed Nov 6, 2026.

View package source →

Description

From the marketplace listing

Motion connects OpenAI to your creative analytics workspace. Analyze ad creative performance across Meta campaigns — surface top performers, spot declining creatives, and understand what's working and why. Research competitor ad libraries for trends and inspiration. Access demographic breakdowns, creative transcripts, and performance reports. Motion helps marketers make faster, data-driven decisions about what to create next.

Language: English · Automatically detected from descriptions.

Matches for “scripts”

Exact text from the indicated source. A mention alone does not establish support for your task.

Publisher description

Motion connects OpenAI to your creative analytics workspace. Analyze ad creative performance across Meta campaigns — surface top performers, spot declining creatives, and understand what's working and why. Research competitor ad libraries for trends and inspiration. Access demographic breakdowns, creative transcripts, and performance reports. Motion helps marketers make faster, data-driven decisions about what to create next.

What changed

Files & skills

File archives

Plugin package30 files · 89.4 KBBrowse files →
Skill instructions
Analyze Ad9.41 KB

View saved version →

---
name: Analyze Ad
description: >
  Deep-dive analysis of a specific creative asset. Use when the user asks about a
  specific ad by name, ID, or URL — "analyze this ad", "why is this working?",
  "why is this not working?", "break down this creative", "[pastes ad name]",
  "look at this ad", "what's the angle in this ad?", "compare to account averages",
  or references a specific creative by name or identifier. Handles creative lookup,
  disambiguation when multiple matches exist, entity hierarchy mapping
  (creative → ads → adsets → campaigns), and metric-appropriate analysis.
  This is the most common interaction pattern — users often analyze multiple ads
  in sequence. Always use this skill, not creative-strategist, when the user
  references a specific creative.
allowed-tools:
  - Read
  - mcp__ruimotion__get_auth_context
  - mcp__ruimotion__get_creative_insights
  - mcp__ruimotion__get_creative_summary
  - mcp__ruimotion__get_creative_transcript
  - mcp__ruimotion__get_demographic_breakdown
  - mcp__ruimotion__get_workspace_brand
  - mcp__ruimotion__get_glossary_values
  - AskUserQuestion
model: opus
---

# Analyze Ad

Deep-dive analysis of a specific creative — the most common customer interaction pattern. Users paste ad names one after another, going 20+ messages deep. Optimize for this multi-turn flow.

## References

Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/evaluation-framework.md` for the 4-Question Evaluation Framework, metric pattern correlations, Ready/Iterate/Rethink call, and performance context awareness.

## Phase 0: Find the Creative

The user may reference a creative by:
- **Exact ad name** — match against `adName` in creative insights results
- **Approximate name** — partial/fuzzy match, present candidates
- **Ad ID** — match against `adIds` array
- **Creative asset ID** — use `creativeAssetIds` filter parameter
- **Description** — "the UGC video with the woman unboxing"

Steps:
1. Pull `get_creative_insights` with SPEND insightType, limit 15. Include `includeCreativeUrls: true` so the user can see the creatives. Start with a smaller set — if the creative is active, it's likely in the top 15 by spend.
2. Search results for the user's reference (case-insensitive partial match on `adName`).
3. **Multiple matches** → present all matches with ad name, spend, and top metric. Ask which one. Never guess.
4. **No match in top 15** → widen the search: re-pull with limit 50. If still no match, tell the user and suggest: "Can you share the exact ad name, ad ID, or creative asset ID from Motion? Sometimes names don't match exactly."
5. **Single clear match** → proceed to analysis.

**Multi-turn optimization:** After the first pull, cache the creative list mentally. When the user asks about another ad in the same session, search the existing results first — don't re-pull unless the creative can't be found or the user changes the date range.

## Phase 1: Entity Hierarchy

For the matched creative, present the full entity map:

- **Creative Asset** (`creativeAssetId`) — the visual/video itself
- **Ad(s)** (`adIds`, `adName`) — the ad-level entities using this creative
- **Ad Set(s)** (`adsetIds`, `adsetName`) — targeting and budget containers
- **Campaign(s)** (`campaignIds`, `campaignName`) — objective and strategy level

If a creative runs in multiple ads/adsets/campaigns:
- Surface ALL contexts
- Note which campaign context is performing best
- Flag if the creative is in both testing and scaling campaigns — this is important context ("Running in your Winning Ads Scaling CBO means the algorithm has already validated it")
- Infer campaign stage from name heuristics: "Testing", "Prospecting", "Scaling", "CBO", "ABO", "Retargeting", "Lookalike", "TOF", "MOF", "BOF"

## Phase 2: Metric-Appropriate Analysis

Apply metric intelligence from `${CLAUDE_SKILL_DIR}/../creative-strategist/references/performance-metrics.md` — select metrics by creative format (video vs. static) and campaign objective (awareness

Preview of the first 4,000 characters. Read full instructions →

audience-research16 KB

View saved version →

---
name: audience-research
description: Define audiences from tensions, mine customer reviews for real language, or analyze competitive creative for strategic signals. Covers tension-based audience mapping, 5-bucket review extraction, and competitive inspo research.
argument-hint: "[--mode definition|reviews|competitive] [--datePreset LAST_30_DAYS]"
allowed-tools:
  - Read
  - AskUserQuestion
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_demographic_breakdown"
  - "mcp__ruimotion__get_glossary_values"
  - "mcp__ruimotion__get_workspace_brand"
  - "mcp__ruimotion__get_workspace_competitors"
  - "mcp__ruimotion__get_inspo_brand_context"
  - "mcp__ruimotion__search_brands"
model: opus
---

# Audience Research

Three types of audience intelligence that feed creative strategy: defining who you're talking to, understanding how they actually talk and think, and reading what competitors are betting on.

---

## Phase 0: Orient

1. **Acknowledge**: "I'll help you understand your audience -- who they are, how they talk, and what competitors are doing."
2. **Detect mode** from `$ARGUMENTS` and user message:
   - `definition` -- who to target (tension-based audience mapping)
   - `reviews` -- how they talk (5-bucket review mining)
   - `competitive` -- what competitors bet on (competitive audience analysis)
   - `full` -- all three, sequentially
   - If ambiguous, ask: "Do you want audience definition, review mining, competitive analysis, or the full picture?"
3. **Connected workflows**: After audience work, the user can flow into `/create-concepts`, `/write-hooks`, or `/concept-engine` with the audience context established here.

If the user already specified a mode or their intent is clear, skip questions and proceed.

---

## Phase 1: Setup

### 1a. Parse Arguments

- `--mode`: One of `definition`, `reviews`, `competitive`, `full`. Default: detect from user message, or ask.
- `--datePreset`: Controls performance data window. Default: `LAST_30_DAYS`. Options: `LAST_7_DAYS`, `LAST_14_DAYS`, `LAST_30_DAYS`, `LAST_90_DAYS`.

### 1b. Load Settings & Auth

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for org-specific configuration. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `primary_kpi`: use goalMetric from first `get_creative_insights` response
   - `default_date_preset`: LAST_30_DAYS
   - Brand guidelines + competitors: pull from Motion API
2. Call `get_auth_context()` to resolve workspaceId.
3. Call `get_workspace_brand(workspaceId)` for positioning context -- brand voice, target audience, product details.
4. Use `default_date_preset` from settings as the datePreset for all calls unless the user provided a `--datePreset` argument.

**Settings influence:**
- Target audience from settings seeds the tension-mapping process -- start from what the brand already believes, then challenge and deepen it with data.
- Brand positioning shapes how tensions are framed (pain-led vs. desire-led).
- Primary KPI determines which performance metric anchors the "who's actually converting" analysis.

---

## Phase 2a: Audience Definition (if mode = definition or full)

### Methodology: Start with Tensions, Not Demographics

Don't start with demographics. Start with tensions.

A tension is the specific friction point that creates purchase intent for this product. It's not "busy parents" -- it's "parents who've stopped cooking dinner because they're out of ideas by 6pm and too tired to think." The more specifically you can name what someone is experiencing, the more useful the audience definition.

For each potential audience, ask:
- What specific situation puts them in the market for this?
- What have they already tried that didn't work?
- What would make them skeptical of an ad?
- Why would this product feel meaningfully different from what they've tried?

If you can't answer these for a given segment, the segment isn't specific enough

Preview of the first 4,000 characters. Read full instructions →

build-brief9.59 KB

View saved version →

---
name: build-brief
description: Produce a structured creative brief for an ad concept — ready to hand to a designer or creative team. Takes a concept description or builds from performance data.
argument-hint: "<concept description or concept number from create-concepts>"
allowed-tools:
  - Read
  - AskUserQuestion
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_workspace_brand"
  - "mcp__ruimotion__get_glossary_values"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_inspo_creatives"
  - "mcp__ruimotion__get_creative_transcript"
  - "mcp__ruimotion__get_workspace_competitors"
  - "mcp__ruimotion__search_brands"
model: opus
---

# Build Brief

Produce a production-ready creative brief from a concept — structured so a creative team can execute without follow-up questions. Uses the creative-strategist skill methodology and brief template standards.

**Data accuracy**: Every performance reference in the brief must cite a specific data point. If the brief references "top-performing hooks," cite which hooks and their metrics. Never include performance claims not grounded in tool data. If a data point is missing (e.g., no demographic data to inform targeting), flag it rather than guessing.

---

## Phase 1: Get the Concept

### 1a. Parse Input

The `$ARGUMENTS` should contain one of:
- **A concept description** — freeform text describing what they want to make (e.g., "UGC problem-agitation ad targeting busy moms, hook about the 3pm energy crash")
- **A reference to a concept from a previous `/create-concepts` run** — the user might say "brief concept 2" or paste a concept title
- **Empty** — ask the user what to brief

If empty, use `AskUserQuestion`:
> "What creative concept do you want to brief? You can describe the idea, paste a concept from `/create-concepts`, or tell me the audience/angle you want to target and I'll build the concept."

### 1b. Get Auth Context

Call `get_auth_context()` for workspaceId.

---

## Phase 2: Gather Strategic Inputs (Parallel)

**The SPEND call must come first** (it returns goalMetric and spendThreshold). Then dispatch remaining calls in parallel.

1. `get_creative_insights(workspaceId, "SPEND", datePreset="LAST_30_DAYS", limit=5, withAggregatedInsights=true)` — spend leaders + account-level aggregates

→ Extract `goalMetric` and `spendThreshold` from the response. Use goalMetric for all efficiency-sorted calls.

2. `get_workspace_brand(workspaceId)` — brand positioning, voice, visual identity, tone constraints
3. `get_glossary_values(workspaceId)` — creative taxonomy for alignment
4. `get_creative_insights(workspaceId, insightType=goalMetric, datePreset="LAST_30_DAYS", limit=5)` — efficiency leaders by workspace goal metric for visual reference

If the concept references a competitor or specific brand:
5. `search_brands(query, workspaceId)` or get competitor creatives for reference examples

### 2a. Load Settings & Methodology

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for org-specific configuration. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `primary_kpi`: use goalMetric from first `get_creative_insights` response
   - `default_date_preset`: LAST_30_DAYS
   - `brief_format`: default
   - `production_capabilities`: all formats
   - `max_production_difficulty`: High
   - Brand guidelines: pull from `get_workspace_brand`
2. Read the creative-strategist skill and `references/brief-template.md` for the output structure and quality bar.
3. Use `default_date_preset` from settings as the datePreset for all calls unless the user specified a date range.

**Settings influence:**
- If `brief_format` is "custom" and `references/custom-brief-template.md` exists, use that template instead of the default.
- Use `production_capabilities` and `max_production_difficulty` to constrain Deliverables section.
- Use brand guidelines (voice, do's/don'ts, positioning) as hard constraints on Copy and Visual Approach.
- Us

Preview of the first 4,000 characters. Read full instructions →

concept-engine11.8 KB

View saved version →

---
name: concept-engine
description: >
  Advanced concept generation from unstructured input — brainstorm notes, meeting
  transcripts, competitor observations, or a blank-slate strategic exploration. Maps
  ideas through the Creative Strategy Engine framework (pain x persona x awareness stage)
  and grounds every concept in Motion performance data. Use when the user has raw input
  or wants deep strategic mapping. For quick "give me 3 concepts" requests without raw
  material, use create-concepts instead.
argument-hint: "[raw idea or direction] [--count 3] [--focus hook|format|audience]"
allowed-tools:
  - Read
  - Agent
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_workspace_brand"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_glossary_values"
  - "mcp__ruimotion__get_demographic_breakdown"
  - "mcp__ruimotion__get_workspace_competitors"
  - "mcp__ruimotion__get_inspo_creatives"
  - "mcp__ruimotion__get_inspo_brand_context"
  - "mcp__ruimotion__get_creative_transcript"
  - "mcp__ruimotion__search_brands"
  - "mcp__ruimotion__get_brand_by_domain"
  - AskUserQuestion
model: opus
---

# Concept Engine — Data-Grounded Creative Concept Generator

---

## Phase 0: Orient

1. **Acknowledge**: "I'll map your input through the creative strategy framework and produce grounded concepts."
2. **Ask for input**: "What's the raw input — brainstorm notes, meeting transcript, competitor observation, or blank slate?"
3. **Connected workflow**: After concepts, you can brief one (`/build-brief`), write hooks for it (`/write-hooks`), or iterate on a specific angle.

If the user already provided raw input in their message, skip questions and proceed.

---

Transform any input into structured, briefable ad concepts grounded in performance data and the Creative Strategy Engine framework.

---

## Phase 1: Discovery

### 1a. Parse Arguments

- **Raw input** (`$ARGUMENTS`): The source material. Can be anything — a raw idea, meeting transcript, brainstorm notes, competitor observation, a single sentence, or empty.
- **`--count`**: Number of concepts to generate. Default: 3. Range: 2-5.
- **`--focus`**: Weight for concept generation:
  - `hook` — emphasize hook innovation
  - `format` — emphasize format experimentation
  - `audience` — emphasize audience expansion
  - Default: balanced across all dimensions.

### 1b. Load Context

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for brand guidelines, production constraints, primary KPI, target audience. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `primary_kpi`: use goalMetric from first `get_creative_insights` response
   - `default_date_preset`: LAST_30_DAYS
   - `default_creative_limit`: 10
   - `production_capabilities`: all formats
   - `max_production_difficulty`: High
   - Brand guidelines: pull from `get_workspace_brand`
2. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/SKILL.md` for methodology.
3. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/concept-standards.md` for quality bar.
4. Read `${CLAUDE_SKILL_DIR}/references/creative-strategy-engine.md` for the full strategic framework.
5. Use `default_date_preset` from settings as the datePreset for all calls unless the user specified a date range. Use `default_creative_limit` from settings as the limit unless the user specified otherwise.

### 1c. Pull Performance Data

**The SPEND call must come first** (it returns goalMetric and spendThreshold). Then dispatch remaining calls in parallel.

1. `get_auth_context()` — resolve workspace
2. `get_creative_insights(workspaceId, insightType="SPEND", datePreset="LAST_30_DAYS", limit=10, withAggregatedInsights=true)` — spend leaders + account-level aggregates

→ Extract `goalMetric` and `spendThreshold` from the response. Use goalMetric for all efficiency-sorted calls.

3. `get_workspace_brand(workspaceId)` — brand positioning, voice, constraints, creative do's/don'ts
4. `get_creative_insights

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

create-concepts9.54 KB

View saved version →

---
name: create-concepts
description: >
  Generate 2-5 data-driven creative concepts quickly from performance data and
  competitive signals. Use for straightforward "give me concept ideas", "what should
  we make", "what should we test next", or "ad ideas" requests. For raw brainstorm
  input, meeting notes, or deep strategic mapping, use concept-engine instead.
argument-hint: "[--count 3] [--focus hook|format|audience]"
allowed-tools:
  - Read
  - AskUserQuestion
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_workspace_brand"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_glossary_values"
  - "mcp__ruimotion__get_workspace_competitors"
  - "mcp__ruimotion__get_inspo_creatives"
  - "mcp__ruimotion__get_creative_transcript"
  - "mcp__ruimotion__get_inspo_brand_context"
model: opus
---

# Create Concepts

Generate data-driven creative concepts that bridge analysis to action. Every concept is grounded in performance data, informed by competitor intelligence, and specific enough to brief. Uses the creative-strategist skill methodology and concept quality standards.

---

## Phase 0: Orient

1. **Acknowledge**: "I'll generate ad concepts grounded in what's actually performing in your account."
2. **Ask direction**: "Any specific focus — hook-focused, format-focused, audience-focused? Or should I find the gaps and fill them?"
3. **Connected workflow**: After concepts, you can brief one (`/build-brief`), write hooks for it (`/write-hooks`), or go deeper on a specific angle.

If the user already specified the direction (e.g., "give me 3 UGC concepts focused on hooks"), skip questions and deliver.

---

## Phase 1: Setup

### 1a. Parse Arguments

- `--count`: Number of concepts to generate. Default: `3`. Range: 2-5.
- `--focus`: Optional weight for concept generation:
  - `hook` — emphasize hook innovation (new opening approaches)
  - `format` — emphasize format experimentation (new visual structures)
  - `audience` — emphasize audience expansion (new segments to target)

If no focus is specified, balance across all dimensions.

### 1b. Load Settings & Auth

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for org-specific configuration. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `primary_kpi`: use goalMetric from first `get_creative_insights` response
   - `default_date_preset`: LAST_30_DAYS
   - `default_creative_limit`: 10
   - `production_capabilities`: all formats
   - `max_production_difficulty`: High
   - `priority_glossary_categories`: use all
   - Brand guidelines + competitors: pull from Motion API
2. Call `get_auth_context()` + `get_workspace_brand(workspaceId)` in parallel.
3. Use `default_date_preset` from settings as the datePreset for all calls unless the user specified a date range. Use `default_creative_limit` from settings as the limit unless the user specified otherwise.
4. If settings specify `priority_glossary_categories`, prioritize those categories in pattern extraction and gap analysis.

**Settings influence:**
- Use `production_capabilities` and `max_production_difficulty` to constrain concept formats — don't propose full video production if the team only does UGC and static.
- Use `team_size` to calibrate production difficulty ratings.
- Use brand guidelines (voice, positioning, do's/don'ts, target audience) as hard constraints on concept generation.
- Use `primary_kpi` to weight which performance patterns matter most when grounding concepts.
- Brand settings supplement (not replace) `get_workspace_brand` results. If both exist, merge them — settings often has more specific creative rules.

### 1c. Load Methodology

Read the creative-strategist skill, `references/concept-standards.md`, and `references/insight-quality.md`.

---

## Phase 2: Data Collection (Parallel)

**The SPEND call must come first** (it returns goalMetric and spendThreshold). Then dispatch remaining calls in parallel.

**Own performance:**
1. `g

Preview of the first 4,000 characters. Read full instructions →

Creative Strategist17 KB

View saved version →

---
name: Creative Strategist
description: >
  Core creative strategy reasoning methodology for the motion-creative plugin.
  This is a reference skill — it defines how to think about performance, competitive
  intelligence, and concept generation. Other skills read this for methodology.
  Only invoke directly when the user asks about the creative strategy framework itself
  or when no action skill matches. For specific tasks, route to: analyze-ad,
  performance-analysis, create-concepts, build-brief, write-hooks, find-iterations,
  industry-trends, qa-feedback, weekly-performance, etc.
version: 0.2.0
---

# Creative Strategist

## Purpose

Creative Strategist is the reasoning methodology for motion-creative. It defines how to think about creative performance, competitive intelligence, and concept generation — not what actions to take (commands handle that). Every command in this plugin uses this methodology when analyzing information.

## Performance-First Mindset

1. **Start with data, not opinions.** What the numbers say overrides gut feeling. Pull performance data before forming any creative hypothesis.
2. **Delta over state.** "Hook rate dropped 15% this week" is actionable. "Hook rate is 3.2%" is a fact sheet. Always frame findings as changes, not snapshots.
3. **Find the "why" behind performance, not just the "what."** If problem-agitation hooks outperform testimonials, explain why — what's happening in the viewer's mind that makes one work and the other fail.
4. **Competitor intelligence is input, not imitation.** What others do informs creative strategy. It doesn't dictate it. Without their performance data, you're reading bets, not results.

## Metric Intelligence

Not all metrics are relevant for every creative. Choose what to surface based on:

**By creative format:**
- Video → include hook/thumbstop, video retention, hold rate
- Static/carousel → skip hook metrics, focus on CTR, engagement

**By campaign objective** (infer from campaignName heuristics):
- Awareness/reach campaigns ("Awareness", "Reach", "Brand") → CPM, impressions, frequency, thumbstop (video)
- Traffic campaigns ("Traffic", "Clicks", "LP Views") → CPC, CTR, landing page views
- Conversion/purchase campaigns ("Conversions", "CBO", "ABO", "Purchase", "Scaling") → goalMetric, ROAS, CPA, purchases, purchase_value
- Engagement → CTR, engagement_rate, video views

**By goalMetric:**
- Use as the primary efficiency metric for the workspace
- If goalMetric is null or returns 0 across all creatives (common for awareness/traffic campaigns), ask: "What does success look like? (1) Hook/thumb-stop rate, (2) CTR, (3) CPM efficiency, (4) Something else."

**By zero-value filtering:**
- If a metric is 0 for all creatives in the response, don't lead with it — pivot to what's actually populated

**Settings override:** If `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` specifies `primary_metrics`, `secondary_metrics`, or `exclude_metrics`, use those preferences. Otherwise, auto-detect.

**Efficiency rule:** Quick questions get quick metrics (1-2 most relevant). Deep dives get the full metric-appropriate set. Don't pull 5 insightTypes when 1 answers the question.

## Response Right-Sizing

Match analysis depth to user intent:

**Quick questions** → 1-2 tool calls, direct answer, then offer depth:
- "What's my top ad?" → SPEND, limit 5
- "How's ROAS this week?" → ROAS with aggregated insights
- After answering: "Want me to go deeper — demographics, trends, or competitive context?"

**Analysis questions** → Full 3-layer methodology:
- "What's working?" → Multi-metric cross-reference
- "What should we make next?" → Full sweep + competitive + taxonomy

**Ambiguous** → Ask: "Quick top-line or full deep dive?"

## Three-Layer Analysis

Every performance analysis follows this structure:

### Layer 1: Multi-Metric Landscape

Pull multiple insightType dimensions simultaneously — SPEND, SCALING, goalMetric, HOOK at minimum. A creative that scales on spend but tanks on goalM

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 6 — file references are metadata, not package contents.

customize7.79 KB

View saved version →

---
name: customize
description: >
  Set up motion-creative for your brand — configure KPIs, brand guidelines, competitors,
  production constraints, and brief preferences. Run this before using other commands
  for the best results. Use when: customize creative plugin, set up creative analysis,
  configure brand, update brand guidelines, change KPI, update competitors.
allowed-tools:
  - Read
  - Write
  - Edit
  - AskUserQuestion
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_workspace_brand"
  - "mcp__ruimotion__get_workspace_competitors"
  - "mcp__ruimotion__get_glossary_values"
model: opus
---

# Customize Motion Creative

Set up this plugin for your brand so every analysis, concept, and brief reflects how your team actually works.

## How This Works

This command configures your `motion-creative.config.md` file — the source of truth that all other commands read from. This file is yours: plugin updates never touch it. You can re-run `/customize` anytime to update settings as your strategy evolves.

## Step 1: Detect Current State

Try to read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md`.

- **If the file exists:** This is a re-configuration. Read it, show the user their current settings, and ask what they want to update. Only touch those sections.
- **If the file does not exist:** This is a first-time setup. Walk through all sections.

## Step 2: Gather Context from Motion

Pull real data from the Motion workspace to pre-fill as much as possible:

```
Run in parallel:
1. get_auth_context → workspace ID and name
2. get_workspace_brand → brand positioning, voice
3. get_workspace_competitors → competitor list
4. get_glossary_values → available taxonomy categories
```

Use these results to pre-fill settings rather than asking the user for information Motion already has.

## Step 3: Walk Through Configuration Sections

Work through each section, using Motion data where available and asking only when needed.

### 3a. Workspace & KPIs

If `get_auth_context` returned workspace info, apply it directly. Then ask:

**Primary KPI:** "What's the one metric your team optimizes for above all else?"
- Options: ROAS, CPA, CPL, CPC, Purchases, Purchase Value
- Default suggestion based on workspace type if available

**Secondary KPIs:** "What 2-3 metrics do you watch alongside [primary KPI]?"
- Options from: HOOK, CPA, ROAS, SPEND, SCALING, CTR_ALL, CPC, PURCHASES

### 3b. Competitors

If `get_workspace_competitors` returned results, show them: "Motion already tracks these competitors: [list]. Want to keep this list, or add/remove any?"

If no competitors configured: "Which competitor brands should we track? Use domains (e.g., competitor.com)"

### 3c. Brand Guidelines

If `get_workspace_brand` returned brand info, use it to pre-fill. Then ask the user to review and refine:

**Brand Voice:** "How should your ad copy sound? (e.g., casual and witty, authoritative, empathetic)"

**Brand Positioning:** "In one sentence, what makes your brand different?"

**Creative Do's and Don'ts:** "Any rules your creative team follows? Things you always or never do in ads?"

**Target Audience:** "Who's your primary audience? What tension does your product resolve for them?"

### 3d. Production Constraints

**Team Size:** "How big is your creative team?"
- Options: Small (1-3), Medium (4-8), Large (9+)

**Production Capabilities:** "What formats can your team produce?"
- Options (multi-select): UGC, Static images, Motion graphics, Full video production, Animation, Photography

**Max Difficulty:** "What's the most complex production your team should take on?"
- Options: Low (static, simple UGC), Medium (edited UGC, motion graphics), High (full production, multi-scene)

### 3e. Brief Preferences

"Do you have a custom brief template your team uses, or should we use the default?"
- If custom: Ask the user to describe their format or paste it. Save to `references/custom-brief-template.md`
- If default: Keep the built-in template

### 3f. Rep

Preview of the first 4,000 characters. Read full instructions →

find-iterations11.5 KB

View saved version →

---
name: find-iterations
description: >
  Identify top performers and fatiguing creatives, then suggest specific iterations —
  new hooks, format variations, audience pivots, and refreshes. Produces structured
  iteration cards ready for briefing. Activate when users ask to "find iterations",
  "what should we iterate on", "refresh ideas", "creative refresh", "what's fatiguing",
  "extend our winners", "what to test next", or need iteration opportunities from
  existing creative performance.
argument-hint: "[--datePreset LAST_30_DAYS] [--limit 10]"
allowed-tools:
  - Read
  - Agent
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_workspace_brand"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_glossary_values"
  - "mcp__ruimotion__get_demographic_breakdown"
  - "mcp__ruimotion__get_workspace_competitors"
  - "mcp__ruimotion__get_inspo_creatives"
  - "mcp__ruimotion__get_inspo_brand_context"
  - "mcp__ruimotion__get_creative_transcript"
  - AskUserQuestion
model: opus
---

# Find Iteration Opportunities

Identify what's working, what's dying, and what specific iterations to test next. Every iteration card is specific enough to brief immediately.

---

## Phase 0: Orient

1. **Acknowledge**: "I'll identify what's fatiguing and suggest specific iterations to test."
2. **Ask if needed**: "Any specific creatives you want to focus on, or should I scan everything and find the opportunities?"
3. **Connected workflow**: After finding iterations, you can brief one (`/build-brief`), write hooks for it (`/write-hooks`), or analyze the original ad (`/analyze-ad`).

If the user already specified what they want to iterate on, skip questions.

---

## Phase 1: Setup

### 1a. Parse Arguments

- **`--datePreset`**: Analysis window. Default: `LAST_30_DAYS`.
- **`--limit`**: Max creatives per metric. Default: `10`.

### 1b. Load Context

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for primary KPI, brand guidelines, production constraints, competitors. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `primary_kpi`: use goalMetric from first `get_creative_insights` response
   - `default_date_preset`: LAST_30_DAYS
   - `default_creative_limit`: 10
   - `priority_glossary_categories`: use all
   - Brand guidelines + competitors: pull from Motion API
2. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/SKILL.md` for methodology.
3. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/performance-metrics.md` for metric interpretation.
4. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/concept-standards.md` for quality bar.
5. Read `${CLAUDE_SKILL_DIR}/references/creative-diversity.md` for diversity audit methodology, exploitation vs exploration framework, and "What to Build Next" prioritization.
6. Use `default_date_preset` from settings as the datePreset for all calls unless the user provided a `--datePreset` argument. Use `default_creative_limit` from settings as the limit unless the user provided a `--limit` argument.
7. If settings specify `priority_glossary_categories`, prioritize those categories in taxonomy analysis and gap detection.

---

## Phase 2: Data Collection

**The SPEND call must come first** (it returns goalMetric and spendThreshold). Then dispatch remaining calls in parallel.

1. `get_auth_context()` — resolve workspace
2. `get_creative_insights(workspaceId, insightType="SPEND", datePreset, limit, withAggregatedInsights=true)` — spend allocation

→ Extract `goalMetric` and `spendThreshold` from the response. Use goalMetric for all efficiency-sorted calls.

3. `get_creative_insights(workspaceId, insightType=goalMetric, datePreset, limit)` — efficiency leaders by workspace goal metric
4. `get_creative_insights(workspaceId, insightType="SCALING", datePreset, limit)` — momentum
5. `get_creative_insights(workspaceId, insightType="HOOK", datePreset, limit)` — attention capture
6. `get_glossary_values(workspaceId, includeCreative

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

industry-trends7.12 KB

View saved version →

---
name: industry-trends
description: Analyze competitor ad libraries — surface creative trends, formats, hooks, and messaging strategies across the industry.
argument-hint: "[--brand domain.com] [--days 30]"
allowed-tools:
  - Read
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_workspace_competitors"
  - "mcp__ruimotion__get_inspo_creatives"
  - "mcp__ruimotion__get_creative_transcript"
  - "mcp__ruimotion__get_inspo_brand_context"
  - "mcp__ruimotion__search_brands"
  - "mcp__ruimotion__get_brand_by_domain"
  - "mcp__ruimotion__get_workspace_brand"
model: opus
---

# Industry Trends Analysis

Analyze competitor ad libraries to surface creative trends — what formats, hooks, and messaging strategies are being used across the industry. Uses the creative-strategist skill's competitive intelligence framework.

**Critical caveat to carry through the entire analysis:** Competitor creatives have no performance data. You're reading bets, not results. Frame everything as "they're testing this" not "this is working for them."

---

## Phase 1: Setup

### 1a. Parse Arguments

- `--brand`: Optional. A domain (e.g., `nike.com`) or brand name to focus on a single competitor. If omitted, analyze all tracked competitors.
- `--days`: Controls the launch date filter. Default: `30`. Maps to: 7 → `LAST_7_DAYS`, 14 → `LAST_14_DAYS`, 30 → `LAST_30_DAYS`, 90 → `LAST_90_DAYS`.

### 1b. Load Settings & Auth

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for org-specific configuration. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `competitors`: pull from `get_workspace_competitors`
   - Brand guidelines: pull from `get_workspace_brand`
2. Call `get_auth_context()` to resolve workspaceId.

**Settings influence:**
- If no `--brand` specified and settings has a `competitors` list, use those as fallback if workspace competitors are empty.
- Use brand guidelines (voice, positioning, do's/don'ts) to sharpen the "Compare Against Own Approach" analysis.
- Use target audience from settings to evaluate which competitor approaches are relevant to your segments.

### 1c. Load Methodology

Read the creative-strategist skill for the competitive intelligence framework.

---

## Phase 2: Data Collection

### 2a. Get Competitors

**If `--brand` is provided:**
- Try `get_brand_by_domain(brandUrl)` first
- If that fails, try `search_brands(query, workspaceId)` with the brand name
- If no match, tell the user the brand wasn't found and suggest checking the domain

**If no `--brand`:**
- Call `get_workspace_competitors(workspaceId)` to get all tracked competitors
- If the list is empty, tell the user they haven't set up competitor tracking in Motion

### 2b. Pull Competitor Data (Parallel)

For each competitor, dispatch in parallel:

1. `get_inspo_creatives(brandId, workspaceId, limit=10, sort="NEWEST", launchDate=mapped_preset, status="ACTIVE")` — recent active ads
2. `get_inspo_brand_context(brandId, workspaceId)` — brand positioning, voice, strategy

### 2c. Pull Transcripts

For video creatives from each competitor, pull transcripts for the **3-5 most recent** per competitor using `get_creative_transcript(creativeEntityId, creativeOrigin)`. Budget transcript calls — they're expensive. Prioritize:
1. Most recently launched
2. Video format (transcripts only work for video)
3. Variety of creative approaches (don't pull 5 similar-looking ads)

### 2d. Get Own Brand Context

Call `get_workspace_brand(workspaceId)` for comparison context — your positioning, voice, strategy.

---

## Phase 3: Analysis

### 3a. Format Trends

Across all competitor creatives:
- What percentage is video vs. static vs. carousel?
- For videos: what's the duration distribution?
- What production styles dominate (UGC, studio, hybrid)?
- Are there emerging formats that multiple competitors are converging on?

### 3b. Hook & Messaging Patterns

From transcripts:
- Classify first-3-second hooks: question, problem-agitation, te

Preview of the first 4,000 characters. Read full instructions →

morning-briefing6.81 KB

View saved version →

---
name: morning-briefing
description: Daily creative delta briefing — what changed overnight in performance and competitor activity. Designed for team standup. Shows big things the team should know about.
allowed-tools:
  - Read
  - Agent
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_demographic_breakdown"
  - "mcp__ruimotion__get_workspace_competitors"
  - "mcp__ruimotion__get_inspo_creatives"
model: opus
---

# Morning Briefing

Daily creative delta briefing — what changed day-over-day that the team should know about. This is a standup tool, not a deep analysis. Compact, specific, action-oriented.

**Core principle:** The briefing is the delta, not the state. "Hook rate dropped 15%" is useful. "Hook rate is 3.2%" is a fact sheet. Every bullet should answer "what's different from yesterday?"

---

## Phase 1: Get Context

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for org-specific configuration. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `primary_kpi`: use goalMetric from first `get_creative_insights` response
   - `morning_briefing_lookback`: LAST_7_DAYS
   - `competitors`: pull from `get_workspace_competitors`
   - `primary_metrics` / `exclude_metrics`: auto-detect
2. Call `get_auth_context()` for workspaceId.
3. Read the creative-strategist skill for methodology.

**Settings influence:**
- Use `primary_kpi` to determine which metric delta leads the "Big Things" section. If primary KPI is CPA, a CPA swing matters more than a ROAS swing.
- Use `morning_briefing_lookback` as the comparison window if set (default: LAST_7_DAYS).
- Use `competitors` list from settings if workspace competitors aren't configured in Motion.
- If settings contain `primary_metrics`, ensure those metrics lead the delta analysis. If `exclude_metrics`, omit those from the report.

---

## Phase 2: Pull Performance Data (Parallel)

**The SPEND call must come first** (it returns goalMetric and spendThreshold). Then dispatch remaining calls in parallel.

**Spend signals (first):**
1. `get_creative_insights(workspaceId, "SPEND", datePreset="YESTERDAY", limit=10, withAggregatedInsights=true)`

→ Extract `goalMetric` and `spendThreshold` from the response. Use goalMetric for all efficiency-sorted calls.

2. `get_creative_insights(workspaceId, "SPEND", datePreset="LAST_7_DAYS", limit=10)`

**Scaling signals:**
3. `get_creative_insights(workspaceId, "SCALING", datePreset="YESTERDAY", limit=10)`
4. `get_creative_insights(workspaceId, "SCALING", datePreset="LAST_7_DAYS", limit=10)`

**Efficiency signals:**
5. `get_creative_insights(workspaceId, insightType=goalMetric, datePreset="YESTERDAY", limit=10)` — efficiency leaders by workspace goal metric
6. `get_creative_insights(workspaceId, insightType=goalMetric, datePreset="LAST_7_DAYS", limit=10)`

**Hook signals:**
7. `get_creative_insights(workspaceId, "HOOK", datePreset="YESTERDAY", limit=10)`

**Note:** If YESTERDAY returns empty or very limited data (common early in the day), fall back to comparing LAST_7_DAYS against LAST_30_DAYS. Note the adjusted window in the briefing header.

---

## Phase 3: Pull Competitor Activity

1. `get_workspace_competitors(workspaceId)` — get tracked competitors
2. For each competitor (parallel): `get_inspo_creatives(brandId, workspaceId, limit=5, sort="NEWEST", launchDate="LAST_7_DAYS")`

If competitor tracking isn't set up, skip this section and note it.

---

## Phase 4: Compute Deltas

Compare yesterday vs. 7-day data to identify what changed:

### Performance Deltas
- **Newly scaling:** Creatives appearing in yesterday's scaling list but not in the 7-day top — they're just starting to gain traction
- **Declining:** Creatives in the 7-day top performers but absent from or dropping in yesterday's data — they're losing steam
- **Spend shifts:** Where budget moved — which creatives gained share, which lost it
- **Hook changes:** Significant thumbstop rate

Preview of the first 4,000 characters. Read full instructions →

performance-analysis10.5 KB

View saved version →

---
name: performance-analysis
description: Analyze creative performance — what's working, what's scaling, what's dying. Multi-metric analysis with demographic breakdown and actionable recommendations.
argument-hint: "[--datePreset LAST_30_DAYS] [--limit 10] [--metric goalMetric]"
allowed-tools:
  - Read
  - Agent
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_demographic_breakdown"
  - "mcp__ruimotion__get_glossary_values"
  - "mcp__ruimotion__get_workspace_brand"
  - AskUserQuestion
model: opus
---

# Creative Performance Analysis

Analyze creative performance using the creative-strategist skill methodology — multi-metric landscape, demographic overlay, and creative taxonomy. Produce an actionable report of what's working, what's scaling, and what's dying.

---

## Phase 0: Orient

Before pulling data:

1. **Acknowledge**: "I'll analyze your creative performance to find what's working, scaling, and dying."
2. **Detect complexity**: Is this a quick question ("how's ROAS?") or a full deep dive ("what's working?")? Quick questions get 1-2 tool calls and a direct answer. Full analysis gets the multi-metric sweep.
3. **Ask if ambiguous**: "Quick top-line or full deep dive? Any specific metric or time period you care about?"
4. **Connected workflow**: After analysis, you can create concepts (`/create-concepts`), find iterations (`/find-iterations`), or dive into a specific ad (`/analyze-ad`).

If the user provides clear, specific intent (e.g., "full performance analysis for last 30 days"), skip questions and deliver.

---

## Phase 1: Setup

### 1a. Parse Arguments

- `--datePreset`: Time window for analysis. Default: `LAST_30_DAYS`. Options: TODAY, YESTERDAY, THIS_MONTH, LAST_MONTH, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, LAST_90_DAYS.
- `--limit`: Max creatives per metric query. Default: `10`.
- `--metric`: Optional focus metric (SPEND, SCALING, HOOK, CPC, CTR_ALL, PURCHASES, PURCHASE_VALUE, or the workspace's goalMetric). If provided, lead the analysis with this metric. If not, use the standard multi-metric approach.

### 1b. Load Settings & Auth

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for org-specific configuration. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `primary_kpi`: use goalMetric from first `get_creative_insights` response
   - `default_date_preset`: LAST_30_DAYS
   - `default_creative_limit`: 10
   - `demographic_focus`: both
   - `primary_metrics` / `secondary_metrics` / `exclude_metrics`: auto-detect
   - `priority_glossary_categories`: use all
   - Brand guidelines: pull from `get_workspace_brand`
2. Call `get_auth_context()` to resolve workspaceId (use settings workspace_id as fallback context).
3. If settings contain a `primary_kpi` and no `--metric` was specified, use the primary KPI to lead the analysis.
4. If settings contain `target_demographics`, weight demographic analysis toward those segments.
5. If settings contain `primary_metrics`, ensure those metrics lead the analysis. If `secondary_metrics`, include after primary. If `exclude_metrics`, omit those from all queries and output.
6. Use `default_date_preset` from settings as the datePreset for all calls unless the user provided a `--datePreset` argument. Use `default_creative_limit` from settings as the limit unless the user provided a `--limit` argument.

If auth fails, stop and tell the user to check their Motion workspace connection.

### 1c. Load Methodology

Read the creative-strategist skill and `references/performance-metrics.md` for metric definitions and interpretation patterns.

---

## Phase 2: Data Collection

**The SPEND call must come first** (it returns goalMetric and spendThreshold). Then dispatch remaining calls in parallel.

1. `get_creative_insights(workspaceId, insightType="SPEND", datePreset, limit, withAggregatedInsights=true)` — spend leaders + account-level aggregates

→ Extract `goalMetric` and `spendTh

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

qa-feedback10.9 KB

View saved version →

---
name: qa-feedback
description: >
  Review a creative asset against brand guidelines, performance patterns, concept standards,
  and strategic framework. Provides structured, actionable feedback with a scorecard.
  Activate when users ask to "review this ad", "QA this creative", "give feedback on",
  "review this asset", "check this against brand guidelines", "creative review",
  "is this ready to launch", or share a creative for review.
argument-hint: "<asset URL, screenshot, or creative ID> [--type video|image|static|carousel] [--brief original brief text]"
allowed-tools:
  - Read
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_workspace_brand"
  - "mcp__ruimotion__get_glossary_values"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_creative_transcript"
model: opus
---

# Creative QA & Feedback

Review a creative asset across 6 dimensions: brand alignment, hook quality, strategic positioning, concept integrity, production quality, and brief adherence. Every piece of feedback connects to data, brand guidelines, or the strategic framework.

---

## Phase 1: Get the Asset

### 1a. Parse Arguments

- **Asset** (`$ARGUMENTS`): The creative to review. Can be:
  - A URL to the ad
  - A screenshot description
  - A creative entity ID from Motion
  - A description of the asset
- **`--type`**: video, image, static, carousel, or unknown. Default: unknown (infer from context).
- **`--brief`**: The original brief this asset was built from. Optional but enables brief adherence check.

If no asset is provided, ask the user what they want reviewed.

### 1b. Load Context

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for brand voice, creative do's/don'ts, target audience. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `default_date_preset`: LAST_30_DAYS
   - Brand guidelines: pull from `get_workspace_brand`
2. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/SKILL.md` for methodology.
3. Use `default_date_preset` from settings as the datePreset for all calls unless the user specified a date range.
3. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/concept-standards.md` for quality bar.
4. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/insight-quality.md` for insight quality standards.
5. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/evaluation-framework.md` for the 4-Question Evaluation Framework, metric pattern correlations, Ready/Iterate/Rethink call, and multi-persona feedback methodology.

---

## Phase 2: Pull Comparison Data

**The SPEND call must come first** (it returns goalMetric and spendThreshold). Then dispatch remaining calls in parallel.

1. `get_auth_context()` — resolve workspace
2. `get_creative_insights(workspaceId, insightType="SPEND", datePreset="LAST_30_DAYS", limit=5, withAggregatedInsights=true)` — spend leaders + account-level aggregates

→ Extract `goalMetric` and `spendThreshold` from the response. Use goalMetric for all efficiency-sorted calls.

3. `get_workspace_brand(workspaceId)` — brand guidelines, voice, positioning, do's/don'ts
4. `get_glossary_values(workspaceId)` — creative taxonomy categories
5. `get_creative_insights(workspaceId, insightType=goalMetric, datePreset="LAST_30_DAYS", limit=5)` — efficiency leaders by workspace goal metric for comparison
6. `get_creative_insights(workspaceId, insightType="HOOK", datePreset="LAST_30_DAYS", limit=5)` — best hooks for comparison

If the asset is a video with a creative entity ID:
7. `get_creative_transcript(creativeEntityId, creativeOrigin)` — pull the transcript for detailed review

---

## Phase 3: Review Framework

### Step 1: 4-Question Evaluation (Primary Lens)

Before scoring individual dimensions, run the asset through the 4-Question Evaluation Framework from `evaluation-framework.md`. Answer each question in order — failing an earlier question overrides strengths in later ones:

1. **Does this make sense fast?** — Within t

Preview of the first 4,000 characters. Read full instructions →

ugc-scripts10.3 KB

View saved version →

---
name: ugc-scripts
description: >
  Write authentic UGC (user-generated content) ad scripts that sound like real people
  sharing real experiences. Produces talking points — not word-for-word scripts — with
  a scripted hook and soft CTA. Grounded in Motion workspace data for hooks that convert.
  Activate when users ask for "UGC script", "creator script", "influencer brief",
  "talking points for a creator", "authentic ad script", or need scripts for
  creator-style paid social ads.
argument-hint: "[hook or concept] [product] [--creator-type any] [--duration 30s]"
allowed-tools:
  - Read
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_workspace_brand"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_creative_transcript"
  - "mcp__ruimotion__get_glossary_values"
  - "mcp__ruimotion__get_demographic_breakdown"
model: opus
---

# UGC Script Writer

Create authentic creator-style scripts for paid social ads. The core test: **would a real person actually say this out loud?**

Scripts are talking points with a scripted hook — not teleprompter copy. The creator should rephrase everything in their own words except the opening line.

---

## Phase 1: Discovery

### 1a. Parse Arguments

- **Hook or concept** (`$ARGUMENTS`): The opening line, concept direction, or product angle. Can be a specific hook from `/write-hooks` or a general direction.
- **Product**: What's being sold. If not in args, ask.
- **`--creator-type`**: micro-influencer, customer-testimonial, expert, founder, or any. Default: any.
- **`--duration`**: Target length. Default: 30s (75-100 words). Options: 15s, 30s, 45s, 60s.

If hook and product aren't provided, ask before proceeding.

### 1b. Load Context

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for brand voice, creative do's/don'ts, target demographics, production constraints. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `default_date_preset`: LAST_30_DAYS
   - Brand guidelines: pull from `get_workspace_brand`
   - `production_capabilities`: all formats
2. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/SKILL.md` for methodology.
3. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/brief-template.md` for output structure reference.
4. Use `default_date_preset` from settings as the datePreset for all calls unless the user specified a date range.

### 1c. Pull Performance Data

**The SPEND call must come first** (it returns goalMetric and spendThreshold). Then dispatch remaining calls in parallel.

1. `get_auth_context()` — resolve workspace
2. `get_creative_insights(workspaceId, insightType="SPEND", datePreset="LAST_30_DAYS", limit=10, withAggregatedInsights=true)` — spend leaders + account-level aggregates

→ Extract `goalMetric` and `spendThreshold` from the response. Use goalMetric for all efficiency-sorted calls.

3. `get_workspace_brand(workspaceId)` — brand voice, positioning, creative constraints
4. `get_creative_insights(workspaceId, insightType="HOOK", datePreset="LAST_30_DAYS", limit=10)` — top-performing hooks
5. `get_creative_insights(workspaceId, insightType=goalMetric, datePreset="LAST_30_DAYS", limit=10)` — efficiency leaders by workspace goal metric
6. `get_glossary_values(workspaceId)` — taxonomy (especially UGC-related categories)
7. `get_demographic_breakdown(workspaceId)` — who's responding

Then pull transcripts from the top 3-5 UGC-style performers (identify from glossary tags or visual format):
8. `get_creative_transcript(creativeEntityId, creativeOrigin)` — see what hooks and pacing work

---

## Phase 2: Emotional Mapping

Before writing, plan how the viewer moves from attention through to action.

### 2a. Define the Emotional Arc

Every UGC script follows this arc:

```
ATTENTION (0-3s) → PROBLEM (3-8s) → SOLUTION (8-15s) → PROOF (15-22s) → CTA (22-30s)
```

For each beat:
- **Attention**: The hook. This IS scripted — exact words matter. What stops the scroll?
- **Problem**: Name th

Preview of the first 4,000 characters. Read full instructions →

weekly-performance12.3 KB

View saved version →

---
name: weekly-performance
description: >
  Generate a week-over-week creative performance slide deck comparing the last 7 days
  to the previous 7 days. Detects the week type (breakout, fatigue, shift, steady, launch),
  then builds a narrative arc around the biggest creative insight. Outputs a self-contained
  HTML slide deck. Activate when users ask for "weekly report", "weekly performance",
  "week over week", "WoW analysis", "weekly creative report", "performance deck",
  "weekly slide deck", or "what changed this week".
argument-hint: "[--output html|notion|slack|pdf|auto]"
allowed-tools:
  - Read
  - Agent
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_workspace_brand"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_demographic_breakdown"
  - "mcp__ruimotion__get_glossary_values"
  - "mcp__ruimotion__get_creative_summary"
  - AskUserQuestion
model: opus
---

# Weekly Performance Slide Deck

Generate a week-over-week creative performance analysis as a presentation-ready slide deck. The deck tells a story — it's not a data dump.

---

## Phase 0: Orient

1. **Acknowledge**: "Building your week-over-week creative performance deck."
2. **Ask format**: "HTML slide deck, Notion, or Slack? Anything specific you want highlighted?"
3. **Connected workflow**: After the deck, you can dive into specific ads (`/analyze-ad`), find iterations on fatiguing creatives (`/find-iterations`), or generate concepts to fill gaps (`/create-concepts`).

If the user already specified the format, skip the question and build.

---

## Phase 1: Setup

### 1a. Parse Arguments

- **`--output`**: Where to deliver the report. Default: `auto` (ask the user).
  - `html` — Self-contained HTML with CSS scroll-snap
  - `notion` — Structured document with headings, tables, callout blocks
  - `slack` — Concise highlights post (max 300 words)
  - `pdf` — Print-optimized HTML with page breaks
  - `auto` — Ask the user before building

### 1b. Load Context

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for org-specific config. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `primary_kpi`: use goalMetric from first `get_creative_insights` response
   - `demographic_focus`: both
   - `primary_metrics` / `secondary_metrics` / `exclude_metrics`: auto-detect
   - Brand guidelines: pull from `get_workspace_brand`
2. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/SKILL.md` for methodology.
3. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/performance-metrics.md` for metric definitions.
4. If settings contain `primary_metrics`, ensure those metrics lead the WoW analysis. If `exclude_metrics`, omit from all comparisons.

### 1c. Resolve Date Windows

Calculate two non-overlapping 7-day windows ending **yesterday** (never include today — partial data distorts metrics):
- **This week**: start = 8 days ago, end = yesterday
- **Last week**: start = 15 days ago, end = 9 days ago

Use YYYY-MM-DD format.

---

## Phase 2: Data Collection

### 2a. Prerequisites (Strict Sequence)

Call `get_auth_context()` → resolve workspaceId.

The first `get_creative_insights` response includes `goalMetric` (the workspace's preferred efficiency metric) and `spendThreshold` (minimum spend for statistical significance). Extract both. The goalMetric is the primary KPI for the entire deck.

Defaults if unavailable: settings `primary_kpi` for metric, $100 for threshold.

### 2b. Parallel Data Pulls

Once you have workspaceId and goalMetric, dispatch all in parallel:

1. **Brand context**: `get_workspace_brand(workspaceId)` — brand voice, creative constraints
2. **This week's creatives**: `get_creative_insights(workspaceId, insightType="SPEND", datePreset="CUSTOM", startDate="{this_week_start}", endDate="{this_week_end}", limit=20, withAggregatedInsights=true)`
3. **Last week's creatives**: `get_creative_insights(workspaceId, insightType="SPEND", datePreset="CUSTOM", startDate="{last_week_sta

Preview of the first 4,000 characters. Read full instructions →

write-hooks11.7 KB

View saved version →

---
name: write-hooks
description: >
  Generate psychologically-driven hooks for paid social ads. Uses Schwartz's 5 awareness
  stages and 8 psychological triggers, grounded in the workspace's actual top-performing
  hooks from Motion. Activate when users ask to "write hooks", "generate hooks",
  "hook ideas", "scroll-stopping openings", "attention grabbers", or need opening lines
  for ads. Pairs with write-hooks/references for tactic and template libraries.
argument-hint: "[product] [pain/desire] [persona] [--stage problem-aware] [--format video] [--count 10]"
allowed-tools:
  - Read
  - "mcp__ruimotion__get_auth_context"
  - "mcp__ruimotion__get_workspace_brand"
  - "mcp__ruimotion__get_creative_insights"
  - "mcp__ruimotion__get_creative_transcript"
  - "mcp__ruimotion__get_glossary_values"
  - AskUserQuestion
model: opus
---

# Hook Writing Engine

Generate psychologically-driven hooks that capture attention in the first 1-3 seconds of paid social ads. Every hook is grounded in workspace performance data from Motion.

## Phase 0: Orient

1. **Acknowledge**: "I'll generate hooks grounded in what's actually converting in your account."
2. **Ask if missing**: "Product, target persona, and pain point? Or should I pull these from your workspace data?" If any required input is ambiguous, ask — don't assume.
3. **Important distinction**: Hooks that stop the scroll and hooks that convert are often different. After generating, note which hooks optimize for attention vs. which optimize for action.
4. **Connected workflow**: After hooks, you can brief the full ad (`/build-brief`) or analyze how existing hooks perform (`/analyze-ad`).

If the user provided product, persona, and pain point clearly, skip questions.

## Core Principle

A hook is the tactical expression of a messaging angle at a specific awareness stage. Before writing hooks, understand what the audience already knows and feels.

---

## Hook Sources

Pain points are the most reliable hook source. Start here before trying other angles. See `references/hook-sources.md` for the full breakdown.

6 categories of pain-based hook material:
1. **Emotional pain points** (start here) — what keeps them stuck, worried, or frustrated
2. **Daily annoyances** — small friction the audience lives with every day
3. **Embarrassing habits** — what they do but don't talk about
4. **Silent frustrations** — what they tolerate because they think it's just normal
5. **Protective beliefs** — what they tell themselves to avoid having to change
6. **Self-awareness moments** — the truth they already half-know but haven't admitted

When generating a set of hooks, mine at least 2-3 different source categories to ensure emotional variety.

---

## Phase 1: Gather Inputs

### 1a. Parse Arguments

Extract from `$ARGUMENTS`:
- **Product**: What does it do?
- **Pain or Desire**: What specific need does it address?
- **Persona**: Who are you targeting? (life context, not just demographics)
- **`--stage`**: Awareness stage (unaware, problem-aware, solution-aware, product-aware, most-aware). Default: generate across all stages.
- **`--format`**: Video or static. Default: video.
- **`--count`**: How many hooks. Default: 10.

If any required input is missing, ask the user before proceeding.

### 1b. Load Context

1. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for brand guidelines, primary KPI, target demographics. If the file does not exist, use these defaults and suggest the user run `/customize`:
   - `primary_kpi`: use goalMetric from first `get_creative_insights` response
   - `default_date_preset`: LAST_30_DAYS
   - Brand guidelines: pull from `get_workspace_brand`
2. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/SKILL.md` for methodology.
3. Use `default_date_preset` from settings as the datePreset for all calls unless the user specified a date range.
3. Read `${CLAUDE_SKILL_DIR}/references/hook-tactics.md` for the 35+ tactic library.
4. Read `${CLAUDE_SKILL_DIR}/references/hook-voice-patte

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 4 — file references are metadata, not package contents.

Package details

Publisher declarations from the archived package. These are separate from our research and the live service's terms.

Package author
Motion

Package observed Nov 6, 2026.

Technical details
First seen
Sep 30, 2026 · 22:02 UTC
Last seen
Nov 7, 2026 · 06:00 UTC
Collection status
Collected

plugin_asdk_app_6a95894fa2fc81918af802988b54c2fc

Download plugin data (JSON)

Plugin details: freshly prepared. Prepared . Refreshed when plugin data changes or after 6 hours. Your account and Follow status are live.