From 227ccd58aedb24a0147bcf0aa56976c14fbcf5c6 Mon Sep 17 00:00:00 2001 From: rezakhadjavi Date: Wed, 29 Jul 2026 00:05:45 -0400 Subject: [PATCH 1/7] feat(runneth-default): baseline creative-strategy skills package (skills under /agent/brain/skills, auto install/update) --- package-index.json | 25 ++- .../instructions/core-creative-skills.md | 9 ++ runneth-default/package.json | 16 ++ runneth-default/skills/analyzing/SKILL.md | 150 ++++++++++++++++++ runneth-default/skills/briefing/SKILL.md | 118 ++++++++++++++ .../skills/creative-generation/SKILL.md | 134 ++++++++++++++++ 6 files changed, 450 insertions(+), 2 deletions(-) create mode 100644 runneth-default/instructions/core-creative-skills.md create mode 100644 runneth-default/package.json create mode 100644 runneth-default/skills/analyzing/SKILL.md create mode 100644 runneth-default/skills/briefing/SKILL.md create mode 100644 runneth-default/skills/creative-generation/SKILL.md diff --git a/package-index.json b/package-index.json index ddfb614d..c8ec70f4 100644 --- a/package-index.json +++ b/package-index.json @@ -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" + } + ] } diff --git a/runneth-default/instructions/core-creative-skills.md b/runneth-default/instructions/core-creative-skills.md new file mode 100644 index 00000000..ef461f29 --- /dev/null +++ b/runneth-default/instructions/core-creative-skills.md @@ -0,0 +1,9 @@ +Treat these as the core creative skills: + +- `analyzing` +- `creative-generation` +- `briefing` + +This package installs each skill under `/agent/brain/skills//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. diff --git a/runneth-default/package.json b/runneth-default/package.json new file mode 100644 index 00000000..4ed5dc9e --- /dev/null +++ b/runneth-default/package.json @@ -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" } + ] +} diff --git a/runneth-default/skills/analyzing/SKILL.md b/runneth-default/skills/analyzing/SKILL.md new file mode 100644 index 00000000..70e3bfb2 --- /dev/null +++ b/runneth-default/skills/analyzing/SKILL.md @@ -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 --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": "", "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 diff --git a/runneth-default/skills/briefing/SKILL.md b/runneth-default/skills/briefing/SKILL.md new file mode 100644 index 00000000..074ab4e0 --- /dev/null +++ b/runneth-default/skills/briefing/SKILL.md @@ -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 `. +- If the brief is anchored to a specific Meta competitor ad, call `motion meta competitor-ad-insights --ad-library-creative-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 diff --git a/runneth-default/skills/creative-generation/SKILL.md b/runneth-default/skills/creative-generation/SKILL.md new file mode 100644 index 00000000..46df0715 --- /dev/null +++ b/runneth-default/skills/creative-generation/SKILL.md @@ -0,0 +1,134 @@ +--- +name: creative-generation +description: | + Generate hooks, concepts, messaging angles, audience strategy, audience framings, + personas, stage-aware creative direction, or visual directions for ads. + Use when the user asks for "hooks", "headlines", "opening lines", "concepts", "ideas", + "creative directions", "messaging angles", "target audience", "audience strategy", + "segment", "persona", "ICP", "direct response", "DR concept", "offer angle", "big idea", + "campaign idea", "how should this be framed", "adapt this for", "seasonal angle", + "awareness stage", "decision stage", "funnel stage", or wants creative output short of a full production brief. + Do NOT use for account or competitor analysis, product how-to questions, or production-ready briefs. +user-invocable: false +--- + +## Purpose + +Use this skill to build creative output without bouncing through helper skills for hooks, concepts, messaging, audience direction, or format selection. + +## Execution + +### Gather only the context that changes the output + +- Use supplied direction first: approved concept, audience, hook, messaging angle, format, stage, or creative constraint. +- Gather brand context only when it materially sharpens the work. +- If the request is data-grounded, use the standard Motion hot path already included in the current session prompt. +- If the user is referencing a Meta competitor or wants Meta competitive context to shape new creative, call `motion inspo-context --brand-id ` or `motion meta competitor-ad-insights --ad-library-creative-id --include-glossary --with-summary` as needed. +- Use `customerVoiceAnalysis` from the relevant Motion brand foundations or competitor context first for customer language. It comes from `motion brand-context` or `motion inspo-context`, not a standalone tool. If it is still too thin, use `WebSearch` and `WebFetch` following `/runneth/references/researching--review-mining.md`. + +### Read only the references the ask needs + +- `/runneth/references/creative-strategy-engine.md` when the ask needs the strategic layer across audience, framing, pain, desire, persona, angle, or stage +- `/runneth/references/creative-analysis.md` when performance patterns need interpretation before generating +- `/runneth/references/hook-generation--standards.md` for hook quality, pressure checks, and hook-stage fit +- `/runneth/references/researching--review-mining.md` only when review mining or customer-language extraction is needed + +### Build the right output shape + +- For standalone hooks or headlines, deliver a compact numbered list. +- For concepts, keep them inline in the smallest readable structure that matches the ask. +- For messaging angles, audience strategy, personas, or format direction, deliver the smallest readable inline structure that matches the ask. +- Build hooks, messaging, audience framing, and format choice inline instead of dispatching to helper skills. +- If explicit workspace-valid tactic names materially help, call `motion ai-glossary` for only the categories you need. Skip the call when plain-language strategy is enough. +- If the user actually wants a production-ready brief or execution document, stop and hand off to `briefing` instead of stretching this skill into deliverable mode. + +### Concept quality bar + +- Every concept should be a clear strategic bet rooted in a real tension, problem, desire, or belief shift. +- The right person should feel personally recognized. If the idea could target almost anyone in the category, it is too broad. +- This is not TV. This is not brand film. Attention is short, skepticism is high, and the value has to land fast enough to work in a feed. +- Concepts should feel fresh for this brand without losing conversion logic. +- Competitor creative is a learning input, not a template. Learn the mechanism, then change the execution. + +Every concept should pass this fuller bar: + +- **Pain-point specificity:** the concept exists because a specific person is struggling with a specific lived experience, not because the brand has a feature to mention. +- **Strategic coherence:** audience, message, format, and hook should reinforce each other. Nothing should feel bolted on. +- **Differentiation:** the concept should not read like a category default or something a competitor could run unchanged. +- **Format ambition:** the visual format should be chosen intentionally because it helps attention or persuasion, not because it is the default thing to make. +- **Persuasive sharpness:** the hook or headline should create tension, challenge a belief, surface a risk, or name a payoff clearly enough to trigger a reaction. +- **Testable hypothesis:** you should be able to explain what bet is being made and why it might outperform what has already been tried. +- **Producibility:** a creative team should be able to execute the concept without major clarification. + +Fresh does not mean unfamiliar. It means the concept unlocks a tension, audience lens, or format bet this brand has not already exhausted. If it could have come from a generic category prompt, rethink it. + +### Direct-response pressure + +- Strong direct-response concepts start with a real pain point, frustration, fear, desire, or tension. Not a feature. Not a vague benefit. Not what the brand wishes people cared about. +- The format should feel native to the feed, and the message should be simple enough to understand on first pass. If someone has to think too hard about what the ad is saying, it will lose. +- The message should make the problem feel real and the solution feel clear. It should show why the current situation is not good enough, why this product is different, and why acting now makes sense. +- Ask: what does this person need to believe to buy, and what do they currently believe instead? The ad's job is to shift that belief. +- One sharp, well-reasoned bet beats ten vague ones. + +### Concept structure rules + +When you generate concepts, each concept should include: + +- a short title that captures the strategic move +- the asset type and visual format as deliberate creative choices, not category defaults +- a messaging angle that expresses the reason to buy or core motivation +- an intended audience specific enough to guide casting, tone, and message +- a hook tactic or headline tactic that names the psychological device being used to win attention +- a cohesive description that ties together asset type, visual format, messaging angle, and intended audience +- tags only when they materially help, with no duplicate category IDs and valid glossary values when those values are available +- one verbatim hook for video or one verbatim headline for static +- a short `why it can work` explanation grounded in evidence or strategic logic. Treat it as a hypothesis, not a sales pitch. + +When generating multiple concepts, vary at least two of: + +- intended audience +- messaging angle +- visual format +- hook or headline tactic + +Do not generate surface-level variants of the same idea. + +### Messaging, audience, and format standards + +- Messaging angles must create tension, challenge a belief, surface a risk, or name a payoff. If the angle only describes a benefit, it is not finished. +- Messaging angles should feel like they are talking to one person in one specific situation. If an angle could apply to almost anyone, it is too generic. +- Before finalizing a messaging angle, ask: + - does this clearly name a problem, mistake, risk, or payoff? + - does this make the viewer feel personally implicated? + - does this push toward action or change, even subtly? + - is this specific enough that it could not apply to a competitor unchanged? +- Audience definitions should start from tension, skepticism, and context, not demographics-first shorthand. +- Visual formats should be deliberate creative choices, not interchangeable defaults. +- A visual format should describe what makes the creative distinct, not what makes it similar to everything else in the category. +- A creative team should know exactly what to make from the format direction without asking clarifying questions. + +## Response Principles + +- Open by naming the few inputs that actually shaped the output: brand context used, whether performance data was pulled, and the tensions or patterns that mattered. +- If the output is data-grounded, add a short "What mattered" block first. Keep it to 2 to 4 bullets and separate validated data from inference when both appear. +- Keep hooks, concepts, angles, and audiences differentiated. Do not vary surface wording while repeating the same strategic move. +- Keep the writing direct and specific. Do not use em dashes unless directly quoting source text. + +## Artifacts + +Default to inline creative delivery in chat. + +Create a file only when the user explicitly asks for a document, export, or other artifact deliverable: + +- use Markdown for single readable creative documents +- 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 format +- use PDF only when the user explicitly asks for it, or when fixed-layout output is clearly the point + +Do not create a parallel artifact when the next real step is a brief. + +## Constraints + +- Do not generate a production brief here +- Do not call helper skills just to produce hooks, messaging, audiences, or formats +- Do not flatten multi-concept output into vague or repetitive numbered text. Keep the concepts structured and easy to scan inline. +- Do not repeat the same tension, hook move, or format logic across every output From 5ae99a571041042032472d20283f2459907c3362 Mon Sep 17 00:00:00 2001 From: thedumsieffect Date: Mon, 3 Aug 2026 02:01:54 -0500 Subject: [PATCH 2/7] fix(runneth-default): namespace installed skills --- package-index.json | 4 ++-- runneth-default/instructions/core-creative-skills.md | 7 ++++--- runneth-default/package.json | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/package-index.json b/package-index.json index c8ec70f4..e7eed3a7 100644 --- a/package-index.json +++ b/package-index.json @@ -1,12 +1,12 @@ { "schemaVersion": 1, - "indexRevision": "runneth-default-0.2.0", + "indexRevision": "runneth-default-0.2.1", "packages": [ { "id": "runneth-default", "name": "Runneth Default", "description": "Baseline Runneth creative strategy skills installed outside the protected Runneth volume.", - "version": "0.2.0", + "version": "0.2.1", "packageManagerVersion": 1, "categories": [ "baseline" diff --git a/runneth-default/instructions/core-creative-skills.md b/runneth-default/instructions/core-creative-skills.md index ef461f29..36975a20 100644 --- a/runneth-default/instructions/core-creative-skills.md +++ b/runneth-default/instructions/core-creative-skills.md @@ -4,6 +4,7 @@ Treat these as the core creative skills: - `creative-generation` - `briefing` -This package installs each skill under `/agent/brain/skills//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. +This package installs each skill under +`/agent/brain/skills/runneth-default//SKILL.md` (for example, +`/agent/brain/skills/runneth-default/analyzing/SKILL.md`). When a task calls for +one of these skills, read the matching `SKILL.md` from that path. diff --git a/runneth-default/package.json b/runneth-default/package.json index 4ed5dc9e..acb73453 100644 --- a/runneth-default/package.json +++ b/runneth-default/package.json @@ -2,15 +2,15 @@ "schemaVersion": 1, "id": "runneth-default", "name": "Runneth Default", - "version": "0.2.0", + "version": "0.2.1", "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": "analyzing", "type": "directory", "sourcePath": "skills/analyzing", "target": { "root": "agent_brain", "path": "skills/runneth-default/analyzing" }, "executablePaths": [] }, + { "id": "briefing", "type": "directory", "sourcePath": "skills/briefing", "target": { "root": "agent_brain", "path": "skills/runneth-default/briefing" }, "executablePaths": [] }, + { "id": "creative-generation", "type": "directory", "sourcePath": "skills/creative-generation", "target": { "root": "agent_brain", "path": "skills/runneth-default/creative-generation" }, "executablePaths": [] }, { "id": "core-creative-skills", "type": "package_instruction", "sourcePath": "instructions/core-creative-skills.md" } ] } From b99d8c161fc4acaea717e0c24c624d6133d8a197 Mon Sep 17 00:00:00 2001 From: thedumsieffect Date: Mon, 3 Aug 2026 11:39:09 -0500 Subject: [PATCH 3/7] refactor: rename package to creative strategy foundations --- .../instructions/core-creative-skills.md | 11 +++++++++++ .../package.json | 10 +++++----- .../skills/analyzing/SKILL.md | 0 .../skills/briefing/SKILL.md | 0 .../skills/creative-generation/SKILL.md | 0 package-index.json | 8 ++++---- runneth-default/instructions/core-creative-skills.md | 10 ---------- 7 files changed, 20 insertions(+), 19 deletions(-) create mode 100644 creative-strategy-foundations/instructions/core-creative-skills.md rename {runneth-default => creative-strategy-foundations}/package.json (70%) rename {runneth-default => creative-strategy-foundations}/skills/analyzing/SKILL.md (100%) rename {runneth-default => creative-strategy-foundations}/skills/briefing/SKILL.md (100%) rename {runneth-default => creative-strategy-foundations}/skills/creative-generation/SKILL.md (100%) delete mode 100644 runneth-default/instructions/core-creative-skills.md diff --git a/creative-strategy-foundations/instructions/core-creative-skills.md b/creative-strategy-foundations/instructions/core-creative-skills.md new file mode 100644 index 00000000..a85047b4 --- /dev/null +++ b/creative-strategy-foundations/instructions/core-creative-skills.md @@ -0,0 +1,11 @@ +Treat these as the core creative skills: + +- `analyzing` +- `creative-generation` +- `briefing` + +This package installs each skill under +`/agent/brain/skills/creative-strategy-foundations//SKILL.md` (for +example, `/agent/brain/skills/creative-strategy-foundations/analyzing/SKILL.md`). +When a task calls for one of these skills, read the matching `SKILL.md` from +that path. diff --git a/runneth-default/package.json b/creative-strategy-foundations/package.json similarity index 70% rename from runneth-default/package.json rename to creative-strategy-foundations/package.json index acb73453..ae8e5c82 100644 --- a/runneth-default/package.json +++ b/creative-strategy-foundations/package.json @@ -1,16 +1,16 @@ { "schemaVersion": 1, - "id": "runneth-default", - "name": "Runneth Default", + "id": "creative-strategy-foundations", + "name": "Creative Strategy Foundations", "version": "0.2.1", "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/runneth-default/analyzing" }, "executablePaths": [] }, - { "id": "briefing", "type": "directory", "sourcePath": "skills/briefing", "target": { "root": "agent_brain", "path": "skills/runneth-default/briefing" }, "executablePaths": [] }, - { "id": "creative-generation", "type": "directory", "sourcePath": "skills/creative-generation", "target": { "root": "agent_brain", "path": "skills/runneth-default/creative-generation" }, "executablePaths": [] }, + { "id": "analyzing", "type": "directory", "sourcePath": "skills/analyzing", "target": { "root": "agent_brain", "path": "skills/creative-strategy-foundations/analyzing" }, "executablePaths": [] }, + { "id": "briefing", "type": "directory", "sourcePath": "skills/briefing", "target": { "root": "agent_brain", "path": "skills/creative-strategy-foundations/briefing" }, "executablePaths": [] }, + { "id": "creative-generation", "type": "directory", "sourcePath": "skills/creative-generation", "target": { "root": "agent_brain", "path": "skills/creative-strategy-foundations/creative-generation" }, "executablePaths": [] }, { "id": "core-creative-skills", "type": "package_instruction", "sourcePath": "instructions/core-creative-skills.md" } ] } diff --git a/runneth-default/skills/analyzing/SKILL.md b/creative-strategy-foundations/skills/analyzing/SKILL.md similarity index 100% rename from runneth-default/skills/analyzing/SKILL.md rename to creative-strategy-foundations/skills/analyzing/SKILL.md diff --git a/runneth-default/skills/briefing/SKILL.md b/creative-strategy-foundations/skills/briefing/SKILL.md similarity index 100% rename from runneth-default/skills/briefing/SKILL.md rename to creative-strategy-foundations/skills/briefing/SKILL.md diff --git a/runneth-default/skills/creative-generation/SKILL.md b/creative-strategy-foundations/skills/creative-generation/SKILL.md similarity index 100% rename from runneth-default/skills/creative-generation/SKILL.md rename to creative-strategy-foundations/skills/creative-generation/SKILL.md diff --git a/package-index.json b/package-index.json index e7eed3a7..d802f9e4 100644 --- a/package-index.json +++ b/package-index.json @@ -1,10 +1,10 @@ { "schemaVersion": 1, - "indexRevision": "runneth-default-0.2.1", + "indexRevision": "creative-strategy-foundations-0.2.1", "packages": [ { - "id": "runneth-default", - "name": "Runneth Default", + "id": "creative-strategy-foundations", + "name": "Creative Strategy Foundations", "description": "Baseline Runneth creative strategy skills installed outside the protected Runneth volume.", "version": "0.2.1", "packageManagerVersion": 1, @@ -15,7 +15,7 @@ "type": "github", "owner": "Motion-Creative", "repo": "runneth-apps", - "path": "runneth-default", + "path": "creative-strategy-foundations", "ref": "main" }, "installPolicy": "auto", diff --git a/runneth-default/instructions/core-creative-skills.md b/runneth-default/instructions/core-creative-skills.md deleted file mode 100644 index 36975a20..00000000 --- a/runneth-default/instructions/core-creative-skills.md +++ /dev/null @@ -1,10 +0,0 @@ -Treat these as the core creative skills: - -- `analyzing` -- `creative-generation` -- `briefing` - -This package installs each skill under -`/agent/brain/skills/runneth-default//SKILL.md` (for example, -`/agent/brain/skills/runneth-default/analyzing/SKILL.md`). When a task calls for -one of these skills, read the matching `SKILL.md` from that path. From 4a84f8cf4fe0958006954e07f145906de23d6a26 Mon Sep 17 00:00:00 2001 From: thedumsieffect Date: Mon, 3 Aug 2026 12:01:36 -0500 Subject: [PATCH 4/7] chore: set creative strategy foundations version to 1.0 --- creative-strategy-foundations/package.json | 2 +- package-index.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/creative-strategy-foundations/package.json b/creative-strategy-foundations/package.json index ae8e5c82..0ce46e0d 100644 --- a/creative-strategy-foundations/package.json +++ b/creative-strategy-foundations/package.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "creative-strategy-foundations", "name": "Creative Strategy Foundations", - "version": "0.2.1", + "version": "1.0", "description": "Baseline Runneth creative strategy skills installed outside the protected Runneth volume.", "installPolicy": "auto", "updatePolicy": "auto", diff --git a/package-index.json b/package-index.json index d802f9e4..6812b97a 100644 --- a/package-index.json +++ b/package-index.json @@ -1,12 +1,12 @@ { "schemaVersion": 1, - "indexRevision": "creative-strategy-foundations-0.2.1", + "indexRevision": "creative-strategy-foundations-1.0", "packages": [ { "id": "creative-strategy-foundations", "name": "Creative Strategy Foundations", "description": "Baseline Runneth creative strategy skills installed outside the protected Runneth volume.", - "version": "0.2.1", + "version": "1.0", "packageManagerVersion": 1, "categories": [ "baseline" From c3d092db36cc9a8bdee7aeeca2563d81ee82557c Mon Sep 17 00:00:00 2001 From: thedumsieffect Date: Mon, 3 Aug 2026 12:05:16 -0500 Subject: [PATCH 5/7] fix: protect creative strategy foundations from uninstall --- creative-strategy-foundations/package.json | 2 +- package-index.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/creative-strategy-foundations/package.json b/creative-strategy-foundations/package.json index 0ce46e0d..4440239d 100644 --- a/creative-strategy-foundations/package.json +++ b/creative-strategy-foundations/package.json @@ -6,7 +6,7 @@ "description": "Baseline Runneth creative strategy skills installed outside the protected Runneth volume.", "installPolicy": "auto", "updatePolicy": "auto", - "uninstallPolicy": "allowed", + "uninstallPolicy": "protected", "resources": [ { "id": "analyzing", "type": "directory", "sourcePath": "skills/analyzing", "target": { "root": "agent_brain", "path": "skills/creative-strategy-foundations/analyzing" }, "executablePaths": [] }, { "id": "briefing", "type": "directory", "sourcePath": "skills/briefing", "target": { "root": "agent_brain", "path": "skills/creative-strategy-foundations/briefing" }, "executablePaths": [] }, diff --git a/package-index.json b/package-index.json index 6812b97a..bc1ab0eb 100644 --- a/package-index.json +++ b/package-index.json @@ -20,7 +20,7 @@ }, "installPolicy": "auto", "updatePolicy": "auto", - "uninstallPolicy": "allowed" + "uninstallPolicy": "protected" } ] } From 3baa7cffb4c06f36fbc4f68c61cade3e48b2ccb9 Mon Sep 17 00:00:00 2001 From: thedumsieffect Date: Mon, 3 Aug 2026 12:19:14 -0500 Subject: [PATCH 6/7] fix: sync creative strategy skills with agent builder --- .../skills/analyzing/SKILL.md | 10 +++++----- creative-strategy-foundations/skills/briefing/SKILL.md | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/creative-strategy-foundations/skills/analyzing/SKILL.md b/creative-strategy-foundations/skills/analyzing/SKILL.md index 70e3bfb2..597fa2ec 100644 --- a/creative-strategy-foundations/skills/analyzing/SKILL.md +++ b/creative-strategy-foundations/skills/analyzing/SKILL.md @@ -20,14 +20,14 @@ Use this skill to turn data, research, and creative review into decisions, not j ### 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 supported creative benchmark or peer-comparison requests, use `motion benchmark-compare` first and treat `/runneth/references/creative-benchmarks.md` as the source of truth. Do not use it for CTR, CPC, CPM, ROAS, CPA, thumbstop, hook rate, conversion rate, or platform-specific rate benchmarks. - 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 --include-glossary --with-summary`. - For uploaded-creative review: - read uploaded images directly - - use `ls ./uploads/` and then `motion analyze-media` for uploaded videos + - use `ls ./uploads/` and then `motion analyze-media` with repeated `--filename` flags or `--folder` 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. @@ -37,7 +37,7 @@ Use this skill to turn data, research, and creative review into decisions, not j - `/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 +- `/runneth/references/design-system.md` only when the chosen deliverable is HTML or when you need a Web Awesome visual component or layout pattern ### Match the depth to the ask @@ -48,7 +48,7 @@ Use this skill to turn data, research, and creative review into decisions, not j - 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. +- If they ask for supported creative benchmark plus diagnosis, start with `motion benchmark-compare` and only pull own-account examples if they materially improve the answer. ### Judgment rules @@ -101,7 +101,7 @@ Open by reflecting what source material you actually used in natural language. F 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. +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 card pattern from `/runneth/references/components/creative-card.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: diff --git a/creative-strategy-foundations/skills/briefing/SKILL.md b/creative-strategy-foundations/skills/briefing/SKILL.md index 074ab4e0..48612c54 100644 --- a/creative-strategy-foundations/skills/briefing/SKILL.md +++ b/creative-strategy-foundations/skills/briefing/SKILL.md @@ -32,7 +32,7 @@ Use this skill to turn an approved or newly formed concept into a production-rea - `/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 +- `/runneth/references/design-system.md` only when the output is HTML or the user needs a Web Awesome layout or reusable visual component pattern ### Build missing concept elements inline @@ -107,7 +107,7 @@ For execution-ready file outputs: - 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`. +Briefing owns the workflow; when the deliverable should be a browser-openable page, hand off rendering and serving to `app-builder`; when the user explicitly asked for standalone HTML source or a downloadable HTML file, hand off to `html-generation`. Do not skip the briefing workflow and jump straight to bare rendering. Do not duplicate artifact content inline. Write a brief preamble, then reference the artifact. From 7a3e5a7749b7cd664165cbebea68b7eac3cf16e0 Mon Sep 17 00:00:00 2001 From: Giselle Rogers <85512909+gbrogers@users.noreply.github.com> Date: Mon, 3 Aug 2026 17:57:48 -0500 Subject: [PATCH 7/7] fix(creative-strategy-foundations): align package versioning --- creative-strategy-foundations/package.json | 2 +- package-index.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/creative-strategy-foundations/package.json b/creative-strategy-foundations/package.json index 4440239d..907a2c53 100644 --- a/creative-strategy-foundations/package.json +++ b/creative-strategy-foundations/package.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "creative-strategy-foundations", "name": "Creative Strategy Foundations", - "version": "1.0", + "version": "1", "description": "Baseline Runneth creative strategy skills installed outside the protected Runneth volume.", "installPolicy": "auto", "updatePolicy": "auto", diff --git a/package-index.json b/package-index.json index bc1ab0eb..d375df7b 100644 --- a/package-index.json +++ b/package-index.json @@ -1,12 +1,12 @@ { "schemaVersion": 1, - "indexRevision": "creative-strategy-foundations-1.0", + "indexRevision": "2026-08-03-01", "packages": [ { "id": "creative-strategy-foundations", "name": "Creative Strategy Foundations", "description": "Baseline Runneth creative strategy skills installed outside the protected Runneth volume.", - "version": "1.0", + "version": "1", "packageManagerVersion": 1, "categories": [ "baseline"