Marketing Foundation
Compact two-skill starter: clarify positioning and choose a lead magnet. Use Marketing Launch for the broader eight-skill go-to-market workflow.
The tunnel uses the same cards as the catalogue. Browse only as deep as needed — or load a broad bundle immediately.
SEO, Sales, Agents or another broad area → one bundle call → work.
Read-only access to published skills. Default 8, maximum 10 skills / 120,000 characters.
Compact two-skill starter: clarify positioning and choose a lead magnet. Use Marketing Launch for the broader eight-skill go-to-market workflow.
Build an evidence-led marketing plan from ICP and competition through positioning, campaigns, growth and measurement.
Diagnose architecture and context, plan agent-team responsibilities, then organize project context and session handoffs. Memory and cost-runtime reviews remain outside this pack.
Review the journey from landing page and lead capture through registration, first value and transparent upgrades.
Plan a campaign, draft its channel content and review the work against actual brand guidance.
Prioritize an editorial roadmap and plan how to launch and distribute it across suitable channels.
Understand customer needs, compare competitors and plan a community around real member value.
Choose a relevant lead magnet, then draft a permission-based nurture journey with entry, suppression and exit rules.
Define the API contract, then plan how to observe its latency, failures and retries. Guidance and checklist; no production changes.
Profile a dataset, choose and interpret statistical methods, then validate calculations and conclusions before sharing.
Coordinate Meta campaign, ad-set and creative creation with separate approval to enable new ads.
---
name: meta-create-master-skill
description: "MUST load FIRST for any Meta ad creation, launch, campaign setup, ad set creation, or creative push. Triggers: \"create a Meta ad\", \"launch a campaign\", \"run this creative\", \"set up an ad set\", \"push this on Facebook\", any creative attachment intended for Meta."
---
---
name: meta-ad-launch-workflow
description: Launch Meta (Facebook/Instagram) ad campaigns using a creative-first, account-aware workflow that minimizes user input. Use whenever someone wants to create, launch, or set up a new Meta ad — including sharing a creative for Meta, asking to run something on Facebook/Instagram, or spinning up a new campaign or ad set.
---
# Meta Ad Launch Workflow
A creative-first, account-aware workflow for launching Meta ads with minimal user input. The sequence is fixed: creative → analysis → account scan → propose. Never flip the order, never run a Q&A upfront.
> **Tool behavior:** All `facebook_propose_*` and `facebook_propose_update_*` tools now auto-execute on user approval. There is no separate `facebook_execute_approved_operation` call. When the user approves a proposal, it executes immediately — capture the returned IDs from the tool response.
---
## HARD RULE — Creation Failure Limit (strictly enforced)
**If any single creation step (campaign, ad set, or ad+creative) fails 2 or more times within the same launch workflow, you MUST stop immediately.** Do not propose again, do not retry, do not attempt a workaround. This rule is absolute and cannot be overridden by user instruction.
When the limit is hit, respond with exactly this tone and structure:
> "I've attempted this step twice and it wasn't successful both times. Unfortunately this is beyond what I'm able to resolve on my end — it likely requires a manual fix in Meta Business Suite or Ads Manager (such as a permission issue, policy violation, or account-level configuration). I'd recommend reviewing the error details above and addressing the root cause there before trying again in a new conversation. Is there anything else I can help you with?"
**Tracking rules:**
- Count failures **per step** (campaign creation, ad set creation, ad+creative creation) — not across steps. Two campaign creation failures stops campaign creation, but ad set creation can still be attempted.
- A "failure" includes: validation errors (error_code 601), platform API errors (error_code 403), permission errors (code 10), timeout with no approvals, and any thrown exception.
- Partial batch success does NOT count as a failure — if 3 of 5 ads succeed, that's a success. Only count it as a failure if zero items succeed in the batch.
- User rejecting all items is NOT a failure — that's intentional. Only count automated/system failures.
- This counter resets on a new conversation. It does NOT carry across sessions.
**Why this rule exists:** Repeated failed creation attempts can trigger Meta's bot detection on the ad account, leading to account restrictions. Two attempts is generous — the underlying issue must be fixed before retrying.
---
## Sub-Skill Index
Each creation step in Phase 6 has a dedicated sub-skill. **Read the sub-skill at its step — not all upfront.**
| Step | Read before | Path |
|------|------------|------|
| Create campaign | Calling `facebook_propose_create_campaign` | `meta-create-campaign` |
| Create ad set | Calling `facebook_propose_create_adset` | `meta-create-adset` |
| Create ad + creative | Calling `facebook_propose_create_ad_with_creative` | `meta-create-ad-with-creative` |
---
## Phase 1 — Get the Creative
The creative comes first. Always.
- If the user attached an image, video, or carousel — proceed to Phase 2.
- If they referenced an existing ad — pull it from the account and proceed.
- If nothing is attached — ask exactly one question: *"Share the creative, or point me to an existing ad to clone."* Nothing else. No objective, no budget, no audience questions.
---
## Phase 2 — Analyze the Creative
Extract the following before touching any account data:
- **Format** — image / video / carousel; aspect ratio
- **Hook style** — bold claim, UGC, problem-agitation, offer-led, curiosity
- **Value prop** — the core promise the viewer receives
- **CTA** — what action the creative drives (shop, sign up, learn more, get quote)
- **Audience signals** — demographic cues, lifestyle markers, occasion, problem context
- **Funnel stage** — TOF (cold awareness), MOF (consideration), BOF (offer / retargeting)
- **On-creative copy** — any text baked into the asset (to avoid redundancy in ad copy)
Output a 4–6 line readout of what you saw. Keep going — don't pause for confirmation.
---
## Phase 3 — Scan the Account
Pull everything needed to propose without asking. Synthesize into 1–2 lines — never dump raw data at the user.
Collect:
- Top 1–3 campaigns by performance (last 30 days) — objective, optimization event, bid strategy, geos, age range, placements
- Top performing creatives — format, hook style, copy length (what's already resonating)
- Active pixel(s)
- Connected Instagram account(s)
- Existing custom audiences and lookalikes
**If no active campaigns exist:** scan paused campaigns and paused ad sets. Use the most recently paused or historically best-performing paused campaign as the structural reference — treat it identically to an active top performer. Note it's paused in the Source column ("Paused reference: `<campaign>`"). Only fall back to cold-start defaults if the account has zero campaigns of any status.
**Synthesis output (1–2 lines max):** "Ref: `<campaign>` — Sales / Purchase / broad US 25–55 / $80/day / Advantage+ / ROAS 3.2x [paused]. Pixel `<n>`, IG `<handle>`."
---
## Phase 4 — Propose or Ask
After Phases 2 and 3, the configuration table should be mostly filled. Default to proposing. Only ask if something is genuinely undetermined.
**Propose directly — no question — when:**
- Funnel stage matches an existing top campaign type
- A single pixel and IG account exist
- A reusable audience is available (CA, LAL, or broad that's performing)
- Budget magnitude can be inferred from top performers
- Optimization is obvious from the objective
**Ask only when:**
- Multiple ad accounts exist and the right one is unclear
- Creative funnel stage could legitimately be TOF or BOF
- Brand-new account with no reference data and budget is unknown
- Multiple conflicting pixels with no clear top-campaign preference
When asking is unavoidable — batch into one turn, maximum 2 questions, use tappable options not open text.
**Targeting search:** When building audience targeting for the ad set, use `facebook_search_targeting` to find interest/behavior/demographic IDs:
- `search_type: "adinterest"` + `query` — free-text search (e.g., "yoga", "anime", "running shoes")
- `search_type: "adinterestsuggestion"` + `interest_list` — expand from existing interests
- `search_type: "adTargetingCategory"` + `class` — browse by category (interests, behaviors, demographics, life_events, income, industries, family_statuses, user_device, user_os, etc.)
- Always use the returned `id` and `name` in `targeting.flexible_spec[].interests/behaviors/etc.`
---
## Phase 5 — Propose Configuration
Before launching the proposal, show a configuration summary table:
| Field | Proposed value | Source |
|---|---|---|
| Objective | Sales | Mirrors top campaign |
| Optimization event | Purchase | Account default |
| Daily budget | $50 | Median of top 3 campaigns |
| Bid strategy | Highest volume | Mirrors top campaign |
| Audience | Broad, US/CA, 25–55 | Top campaign + creative signals |
| Placements | Advantage+ | Mirrors top campaign |
| Pixel | `<n>` | Active pixel |
| Instagram account | `<handle>` | Active IG |
| Primary text | `<drafted from value prop>` | Creative analysis |
| Headline | `<drafted from hook>` | Creative analysis |
| CTA button | Shop Now | Matches creative CTA |
| Schedule | Continuous, starts now | Default |
Then send the proposal. The proposal itself handles user confirmation — don't add a "shall I proceed?" message after it.
---
## Phase 6 — Execute & Enable
Execution order is strict: campaign → ad set → ad+creative. Each step is propose → approve (auto-executes). Never merge steps.
> **Reminder:** Proposals auto-execute on approval. Capture IDs from the tool response after each approval. Do not call a separate execute tool.
> **Reminder — failure limit:** If any step below fails twice (zero items succeed), stop the entire workflow. See the HARD RULE section above.
### 6.1 — Create Campaign
-> **Read `meta-create-campaign` now.**
Follow its workflow exactly. Propose campaign -> user approves -> executes automatically -> capture `new_campaign_id` from the tool response.
### 6.2 — Create Ad Set
-> **Read `meta-create-adset` now.**
Follow its workflow exactly. Propose ad set (using `new_campaign_id`) -> user approves -> executes automatically -> capture `new_adset_id` from the tool response.
### 6.3 — Create Ad + Creative
-> **Read `meta-create-ad-with-creative` now.**
Follow its workflow exactly. Propose all ads in ONE batched call (using `new_adset_id`) -> user approves -> executes automatically -> capture all `new_ad_id` values from the tool response.
Campaigns and ad sets are created as **ACTIVE**. Ads are created as **PAUSED** — they are the user's final gate before spending begins. After all creations succeed, enable only the ads.
---
### Enable Sequence — Enable ads (1 call)
Campaigns and ad sets are already ACTIVE. Only ads need enabling. Batch ALL ads into ONE `facebook_propose_update_ads` call:
```json
facebook_propose_update_ads({
"act_id": "act_XXX",
"ads": [
{
"ad_id": "<new_ad_id_1>",
"current_state": { "status": "PAUSED" },
"new_state": { "status": "ACTIVE" },
"description": "Enable ad: <ad_name_1>",
"thumbnail_url": "<thumbnail_url_1>",
"campaign_id": "<new_campaign_id>",
"campaign_name": "<campaign_name>",
"adset_id": "<new_adset_id>",
"adset_name": "<adset_name>",
"ad_name": "<ad_name_1>"
},
{
"ad_id": "<new_ad_id_2>",
"current_state": { "status": "PAUSED" },
"new_state": { "status": "ACTIVE" },
"description": "Enable ad: <ad_name_2>",
"thumbnail_url": "<thumbnail_url_2>",
"campaign_id": "<new_campaign_id>",
"campaign_name": "<campaign_name>",
"adset_id": "<new_adset_id>",
"adset_name": "<adset_name>",
"ad_name": "<ad_name_2>"
}
]
})
```
-> user approves each ad individually -> each executes automatically on approval
**CRITICAL: 5 ads = 1 call with 5 items in the ads array. NOT 5 separate calls.**
**Never skip the enable approval step.** The user must explicitly approve going live — even if they said "just launch it" earlier.
---
## Edge Cases
- **No active campaigns, paused exist:** Use best paused campaign as reference. Label source as "Paused ref" in the table.
- **No campaigns at all:** Cold-start defaults — $20/day, broad targeting, Advantage+ placements, objective from CTA. Flag once, briefly.
- **Multiple creatives at once:** One campaign, one ad set, multiple ads. If funnel stages clearly differ -> separate ad sets.
- **"Just launch it":** Fast version — one reference lookup, then propose. Never skip the scan.
- **Cloning an existing ad:** Pull structure, swap creative, only surface what's changing in the table.
- **Off-brand creative:** One sentence flag in the readout. Still propose.
- **"Launch it live" / "Make it active":** Campaigns and ad sets are created ACTIVE. Ads are always created PAUSED first — the enable step is the user's final gate before spending begins.
---
## Output Rules
Every response the user sees should be short and scannable. No walls of text.
- **Phase 2 readout:** 2–3 lines max. Format / Hook / Funnel stage / CTA. No headers.
- **Phase 3 synthesis:** 1–2 lines. Campaign name, key numbers, pixel, IG. Done.
- **Phase 4 (if asking):** One short message framing the question + tappable options. No preamble.
- **Phase 5:** Configuration table + proposal. No follow-up "shall I proceed?" message.
- **Phase 6 enable:** No extra message after proposing the enable. The approval cards are the confirmation. After execution, one line: "Live. Ads are now active under `<campaign>`."
- Never show raw API output. Never repeat information already shown in a previous phase.
Coordinate Meta campaign, ad-set and creative creation with separate approval to enable new ads.
The complete original GoMarble guidance, with source attribution and declared limits.
Clarify scope, use available evidence, and apply the relevant source workflow within actual user authorization.
Authorized account, business goal, creative assets, budget and live connector approval semantics.
Real proposal approval may execute immediately; do not repeat execution based on the older operations skill. New ads stay paused until explicitly approved for activation; actual platform state must confirm the outcome. GoMarble connectors, referenced sibling skills and runtime dependencies are not bundled or installed by M11. Brief obvious-danger screening only; no functional test or comprehensive safety certification. Loading this text authorizes no external calls, account mutations or ad spend.
Use Meta Ads Creation Workflow for [TASK]. Clarify Authorized account, business goal, creative assets, budget and live connector approval semantics. Separate observed evidence from heuristics and recommendations. Check actual connector availability and approval semantics before any external action.
Claiming installed GoMarble tools, proven campaign outcomes or authorization to launch ads merely from loading this source.
German routing and explicit scope. Original attribution: GoMarble. Real proposal approval may execute immediately; do not repeat execution based on the older operations skill. New ads stay paused until explicitly approved for activation; actual platform state must confirm the outcome. GoMarble connectors, referenced sibling skills and runtime dependencies are not bundled or installed by M11. Brief obvious-danger screening only; no functional test or comprehensive safety certification. Loading this text authorizes no external calls, account mutations or ad spend.
MIT License Copyright (c) 2026 GoMarble Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copy the text below, then paste it into your chat.