Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions package-index.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
{
"schemaVersion": 1,
"indexRevision": "initial-empty",
"packages": []
"indexRevision": "runneth-default-0.2.0",
"packages": [
{
"id": "runneth-default",
"name": "Runneth Default",
"description": "Baseline Runneth creative strategy skills installed outside the protected Runneth volume.",
"version": "0.2.0",
"packageManagerVersion": 1,
"categories": [
"baseline"
],
"source": {
"type": "github",
"owner": "Motion-Creative",
"repo": "runneth-apps",
"path": "runneth-default",
"ref": "main"
},
"installPolicy": "auto",
"updatePolicy": "auto",
"uninstallPolicy": "allowed"
}
]
}
9 changes: 9 additions & 0 deletions runneth-default/instructions/core-creative-skills.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Treat these as the core creative skills:

- `analyzing`
- `creative-generation`
- `briefing`

This package installs each skill under `/agent/brain/skills/<name>/SKILL.md`
(for example `/agent/brain/skills/analyzing/SKILL.md`). When a task calls for one
of these skills, read the matching `SKILL.md` from that path.
16 changes: 16 additions & 0 deletions runneth-default/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"schemaVersion": 1,
"id": "runneth-default",
"name": "Runneth Default",
"version": "0.2.0",
"description": "Baseline Runneth creative strategy skills installed outside the protected Runneth volume.",
"installPolicy": "auto",
"updatePolicy": "auto",
"uninstallPolicy": "allowed",
"resources": [
{ "id": "analyzing", "type": "directory", "sourcePath": "skills/analyzing", "target": { "root": "agent_brain", "path": "skills/analyzing" }, "executablePaths": [] },
{ "id": "briefing", "type": "directory", "sourcePath": "skills/briefing", "target": { "root": "agent_brain", "path": "skills/briefing" }, "executablePaths": [] },
{ "id": "creative-generation", "type": "directory", "sourcePath": "skills/creative-generation", "target": { "root": "agent_brain", "path": "skills/creative-generation" }, "executablePaths": [] },
{ "id": "core-creative-skills", "type": "package_instruction", "sourcePath": "instructions/core-creative-skills.md" }
]
}
150 changes: 150 additions & 0 deletions runneth-default/skills/analyzing/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
---
name: analyzing
description: |
Analyze creative performance, competitor strategy, uploaded creative, customer language,
audience fit, stage fit, or explain why something is working or not.
Use when the user asks "what's working", "what's not working", "top performers", "worst performers",
"show me", "pull", "compare", "trends", "over time", "winning combos", "losing combos",
"what combos", "what haven't we tried", "what are we missing", "review this", "feedback",
"critique", "why does this work", "who is this for", "which audience", "why this audience",
"audience fit", "segment fit", "stage fit", "customer reviews", "market research", or "teach me".
Do NOT use for Motion product how-to questions or for generating brand-new hooks, concepts, or briefs.
user-invocable: false
---

## Purpose

Use this skill to turn data, research, and creative review into decisions, not just summaries.

## Execution

### Choose the lightest valid path

- For benchmark or peer-comparison requests, use `motion benchmark-compare` first and treat `/runneth/references/creative-benchmarks.md` as the source of truth.
- For standard own-account analysis, use the standard Motion hot path already included in the current session prompt.
- For TikTok-specific performance analysis, use the TikTok branch of the standard Motion hot path.
- For competitor or inspirational-brand analysis, use the competitor branch of that same Motion hot path.
- If the user references a specific Meta competitor ad, call `motion meta competitor-ad-insights --ad-library-creative-id <id> --include-glossary --with-summary`.
- For uploaded-creative review:
- read uploaded images directly
- use `ls ./uploads/` and then `motion analyze-media` for uploaded videos
- For market or review research, use `WebSearch` and `WebFetch` following `/runneth/references/researching--review-mining.md`.
- Gather brand context only when it materially sharpens interpretation, review, or strategist explanation.

### Read only the references the question needs

- `/runneth/references/creative-analysis.md` for behavioral interpretation, combo extraction, metric translation, and performance context
- `/runneth/references/creative-strategy-engine.md` when the ask needs structural mapping across pain, desire, persona, angle, audience, or stage
- `/runneth/references/creative-benchmarks.md` for benchmark interpretation and next-test logic
- `/runneth/references/researching--review-mining.md` for customer-language extraction and review synthesis
- `/runneth/references/html-generation--design-system.md` only when the chosen deliverable is HTML or when you need a reusable visual component or layout pattern

### Match the depth to the ask

- If they want to see data, lead with the creatives and keep commentary minimal.
- If they want to understand what is working or not working, explain the pattern behaviorally and say why it matters.
- If they want competitor research, treat competitor creative choices as investment signals, not validated performance proof.
- If they want a creative review, start with a hard launch call and then focus on the highest-leverage fixes.
- If they want principle or teaching help, answer the question directly first, then support it with data only when the example genuinely improves the explanation.
- If they ask about combos, use the pattern extraction steps from `/runneth/references/creative-analysis.md`.
- If they want a teardown of a specific ad, go deep on that ad instead of broad account coverage.
- If they ask for benchmark plus diagnosis, start with `motion benchmark-compare` and only pull own-account examples if they materially improve the answer.

### Judgment rules

- Lead with the few insights that actually change a decision.
- Separate validated data from inference whenever both appear.
- Pair every weakness with what to change, test, or watch next.
- Decode ad names only when the naming structure is repeatable and materially useful. If the meaning is noisy or uncertain, skip it or ask instead of inventing meaning.
- Do not flatten prospecting, retargeting, and retention into one undifferentiated ranking.
- Weak results can reflect under-delivery against entrenched winners, not just bad creative.
- Competitor or inspo work is only useful if it answers what the brand could actually test, avoid, or differentiate on next.

### Competitor and inspo discipline

- Inspo is a strategy input, not a collection exercise. The question is what the brand would learn from this that they could actually act on.
- An ad is worth noting when you can explain what it does to the viewer, what is transferable about it, how it stands out from category background, and whether there is evidence of investment behind it.
- Understand why it works for the viewer, not just what it looks like.
- Read investment patterns, not just individual ads. Repeated investment matters more than one-offs.
- Separate category behavior from individual bets. Category convergence matters more than single-brand behavior.
- Absence is not automatically opportunity. It may mean untested whitespace, or it may mean others tried it and moved on.
- Treat competitor creative as evidence of what brands believe is worth investing in, not proof of what converts.

### Creative review framework

- Evaluate every creative by answering four questions in order:
- does this make sense fast?
- will the right person feel like it's for them?
- will they believe it?
- will they take the intended action?
- Use those questions in order. Failing an earlier one overrides strengths lower down.
- End every review with one clear call:
- Ready
- Iterate
- Rethink
- `Iterate` means there is a workable foundation but specific problems need fixing before launch. `Rethink` means the angle, brief, or approach is fundamentally wrong and surface edits will not save it.
- Lead with what will hurt performance most. Conversion blockers first. Attention failures second. Trust gaps third.
- Every piece of feedback should tell the team what to change, not just what is wrong.

### Insight quality bar

- An insight is the "why" behind performance.
- It is not a recap of metrics.
- It is not a description of what the ad looks like.
- It is not a list of observations.
- A good insight explains what changed in how people felt, trusted, understood, or cared.
- If the reasoning collapses when the metrics are removed, it is not yet a strong insight.

## Response Principles

Open by reflecting what source material you actually used in natural language. For `motion meta insights`, include the number of creatives returned, the time range, the sort order, and any filters actually applied. For `motion tiktok insights`, include the grain, row count, date range, sort, and filters actually applied. For benchmark-only responses, include the benchmark window, resolved benchmark label, and the main scope limit before recommendations. For competitor research, name the pulled brands and the launch-date or limit constraint that shaped the dataset. For uploaded-creative review, name the asset being reviewed.

If the response is data-grounded, add a short "What mattered" block before the main analysis or deliverable. Keep it to 2 to 4 bullets. Separate validated data from inference when both appear.

Every response that references specific ads must show them visually. For inline responses, use the active surface's visual presentation for the creatives in the same turn. For HTML artifacts, embed the creatives directly using the Creative Cards pattern from `/runneth/references/html-generation--design-system.md`. For Markdown artifacts, keep the document readable first and place `motionUrl` links or compact supporting references directly beside the insight they support.

Visual evidence rules:

- show the actual ad image or video for every referenced creative
- use `motionUrl` for plain reader-facing creative links when available
- use `url` for `motion meta insights` and `fileUrl` for `motion inspo-creatives` only when rendering or embedding the visual itself
- use `data.summaryRows[].creativeAssets[].url` for compact `motion tiktok insights` rows and pass `creativeOrigin: "tiktokCreativeAsset"` when rendering TikTok creative-gallery items
- place the visual directly after the insight it supports
- include only the metrics or tags that matter for that insight
- if a requested creative has no media URL, say that explicitly
- for inline web galleries, also include missing-media creatives in `excludedCreatives` with `{ "id": "<creative id>", "reason": "missing_url" }`
- if a requested creative has a media URL but unsupported or unknown format, say that explicitly and do not invent a widget exclusion reason
- if the user asked for ads by name, only state an exact creative count if it came from a server-side filtered `motion meta insights` call

For analysis responses, communicate:

- what the data or asset shows
- why it matters behaviorally
- what to change, test, or pay attention to next

If the user asked for a creative review or QA call, open with:

- Ready
- Iterate
- Rethink

If the user asked an educational question, answer the principle first and keep the explanation tight.

## Artifacts

Default to inline analysis in chat.

Create a file only when the user explicitly asks for a report, export, or document deliverable:

- use Markdown for single readable reports or notes
- use HTML only when the deliverable should be a page the user opens in the browser or be visually rich enough that Markdown is the wrong fit
- use PDF only when the user explicitly asks for it, or when fixed-layout output is clearly the point

Do not duplicate artifact content inline.

## Constraints

- Do not point out weaknesses without recommending what to change instead
- Do not read broad reference stacks when a narrower source will answer the question
- Do not treat competitor creative choices as validated patterns
- Do not pad educational answers into full analyses when the user asked a principle question
118 changes: 118 additions & 0 deletions runneth-default/skills/briefing/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
---
name: briefing
description: |
Produce execution-ready creative briefs for ad production.
Use when the user asks for a "brief", "creative brief", "production brief", "script",
"write a brief for this", "brief this", "turn this concept into a brief",
"adapt this concept into a brief", or "brief this for [audience/season/context]".
Do NOT use for account-level analysis, product how-to questions, or standalone creative ideation that does not yet need a deliverable.
user-invocable: false
---

## Purpose

Use this skill to turn an approved or newly formed concept into a production-ready brief without forcing extra helper-skill hops.

## Execution

### Start with the strongest available source material

- If the user already supplied a concept, hook, audience, or format direction, use it.
- If the user asks you to take the strongest concept from the current or prior turn and brief it, use that concept as the source material instead of rebuilding creative direction from scratch.
- Gather brand context per system rules only when it materially improves the brief.
- If the brief needs competitive differentiation, call `motion inspo-context --brand-id <brand-id>`.
- If the brief is anchored to a specific Meta competitor ad, call `motion meta competitor-ad-insights --ad-library-creative-id <id> --include-glossary --with-summary`.

### Pull performance only when it changes the brief

- If the user asks for a data-grounded brief or the concept still needs to be built, use the standard Motion hot path already included in the current session prompt.
- If the user already gave an approved concept and does not need fresh performance grounding, skip unnecessary retrieval.

### Read only the references the question needs

- `/runneth/references/hook-generation--standards.md` for hook quality and pressure checks
- `/runneth/references/creative-strategy-engine.md` only when the brief needs audience, stage, or context adaptation or clearer strategic mapping
- `/runneth/references/html-generation--design-system.md` only when the output is HTML or the user needs a visual example layout or reusable visual component pattern

### Build missing concept elements inline

- If the user did not provide a concept, build the minimum viable concept inline from the gathered context and performance patterns.
- If the user did not provide a hook, generate it inline using `/runneth/references/hook-generation--standards.md`.
- If briefing has to build a missing concept inline, apply the same concept quality bar as `creative-generation`: specific tension, clear audience, differentiated bet, concrete format, and a believable reason this should work.
- Do not dispatch to helper skills just to create subcomponents for the brief.

### Choose the brief path

Use the path that matches the source material:

- **Strategic brief** when working from strategy, performance data, concepts, or direction with no uploaded raw assets
- **Assembly brief** when uploaded creative assets are being cut, stitched, recut, or assembled into an ad
- **Script brief** when the user already has a script and wants it packaged into a production-ready brief without uploaded creative assets

### Write the brief directly

For every path, keep the brief production-ready and complete enough that a team can execute without follow-up questions.

**Strategic brief sections**

- `CONCEPT OVERVIEW` — 1 to 2 sentences on what is being made and why it should work
- `COPY` — exact spoken or on-screen copy with timestamps and text overlays for video, or headline/subhead/body/CTA for static
- `VISUAL APPROACH` — specific shot, layout, pacing, production-style, and tone direction. Be concrete enough that two designers would make similar work.
- `DELIVERABLES` — number of assets, format, dimensions, duration
- `VISUAL EXAMPLE` — only when a strong own-account match exists

**Assembly brief sections**

- `OVERVIEW` — what is being made and what strategic job it needs to do
- `IDENTIFIED ASSETS` — source file, timestamp range, and strategic value of each usable moment
- `STRATEGIC FRAMING` — 3 to 5 bullets on what to emphasize, avoid, and prove
- `SHOT-BY-SHOT STRUCTURE` — a timestamped sequence with source clip, purpose, and pacing notes
- `AUDIO DIRECTION` — music, original audio, voiceover, and energy notes
- `COPY & TEXT OVERLAYS` — exact overlay text with timing
- `ASSETS TO PULL` — editor checklist in sequence order
- `WHY IT CAN WORK` — 2 to 3 sentences tying the assembly to account patterns or behavior

**Script brief sections**

- `CONCEPT OVERVIEW` — what the script is trying to do and why it should work
- `COPY` using the user's script as provided unless they explicitly asked for rewriting. If a compliance issue exists, flag it instead of silently fixing it.
- `VISUAL APPROACH` — concrete visual interpretation of the script
- `DELIVERABLES`
- `VISUAL EXAMPLE` when a strong own-account match exists

### Brief rules

- Carry hard constraints and legal guardrails through exactly
- Do not include performance metrics inside the brief itself
- Do not surface tags, IDs, categoryIds, or JSON-like objects
- Do not generate a separate concept deck inside the brief
- Keep each section tight and executable
- If the user supplied a script and did not ask for rewriting, package it. Do not silently rewrite it.

## Response Principles

Open with one sentence on what the brief is for and what informed it. If the concept was newly constructed on this turn, say so. If performance data materially shaped the brief, note the key pattern rather than narrating every retrieval step.

When performance or competitor data materially shaped the brief, add a short "What mattered" block before the brief body. Keep it to 2 to 4 bullets and separate validated data from inference when both are present.

Render the brief directly in the chosen schema for the active path. Do not add parallel strategy sections after the brief.

## Artifacts

If they only want a quick inline outline or talking points, stay inline.

For execution-ready file outputs:

- default to Markdown for single readable briefs and scripts
- use HTML only when the user explicitly asks for HTML, or when the deliverable should be a page the user opens in the browser or be visually rich enough that Markdown is the wrong fit
- use PDF only when the user explicitly asks for it, or when fixed-layout output is clearly the point

When HTML is the chosen format, briefing owns the workflow and then hands off to `html-generation` as the rendering layer. Do not skip straight to bare `html-generation`.

Do not duplicate artifact content inline. Write a brief preamble, then reference the artifact.

## Constraints

- The brief must be complete enough for production without follow-up questions
- Do not force a performance retrieval step when the user already supplied the needed creative direction
- Do not render concept cards alongside the brief
Loading
Loading