- name
- marketing-master
- description
- Run the full Marketing Mastery doctrine on a real project — a 12-Part gap-check that audits positioning, message, funnel, content, paid, pricing, partnerships, selling, retention against the doctrine and corrects the landing + strategy, then ships a 90-day plan. Also fires on EN: 'marketing master', 'run the marketing doctrine', 'full marketing audit', 'marketing gap-check', 'align my marketing', 'marketing mastery', '90-day marketing plan', 'audit my go-to-market'; and FR: 'marketing master', 'audit marketing complet', 'aligner mon marketing', 'gap-check marketing', 'doctrine marketing', 'plan marketing 90 jours', 'audite mon go-to-market'. Use to run all 12 mm-* doctrine skills as one orchestrated, self-correcting pass over a project.
- metadata
- {"version":"1.0.0"}
- allowed-tools
- ["Workflow","Read","Write","Bash"]
# /marketing-master — The Marketing Mastery Doctrine Orchestrator
The **top of the marketing doctrine stack**. It runs all **12 Parts** of *Marketing Mastery* on a
**real project** as one gap-checked, self-correcting pass: load the live assets → audit each Part's
alignment against the doctrine → correct the landing + strategy → adversarially verify → loop until
dry → ship a 90-day plan. **Doctrine routes, tactical skills execute.** It runs **one Workflow at the
top level** and applies the 12 `mm-*` doctrines as **lenses** — an agent *reads* each `mm-XX SKILL.md`
as its rubric — because a Workflow sub-agent **cannot nest another Workflow**.
## When to use
**EN:** "marketing master", "run the marketing doctrine", "full marketing audit", "marketing
gap-check", "align my marketing", "90-day marketing plan", "audit my go-to-market".
**FR:** "audit marketing complet", "aligner mon marketing", "gap-check marketing", "doctrine
marketing", "plan marketing 90 jours", "audite mon go-to-market".
Use it for a **full-project** marketing audit + alignment + 90-day plan — when you want the whole
go-to-market measured against the doctrine in one pass, not a single tactic. Run it **AFTER**
`/omg-brand-identity` (the visual + brand direction exists) and `/product-marketing-context` (the
positioning / ICP / messaging dossier `.agents/product-marketing.md` exists). It is the **apex of the
go-to-market layer** in R-MARKETING.
**Do NOT use it for a single tactic.** Need ad copy → `/ads-copy`; a price → `/mk-pricing-strategy`; a
funnel → `/ads-funnel`; one Part's doctrine → the matching `/mm-XX`. `marketing-master` is the
orchestrator that runs *all twelve* — point single-tactic work at its home skill.
## The 12-Part chain (book order = the sequence law)
You run the Parts **in order** because each depends on the one before — the **sequence law** the whole
doctrine obeys:
> **Positionnement → Message → Un canal → Conversion → Mesure → Scaling.**
| # | Doctrine skill | Role in the chain |
|---|---|---|
| 1 | `mm-01-foundations-2026` | The 2026-2027 map: what changed (channel) vs what never changes (the buying mechanism); the 6-block system. |
| 2 | `mm-02-positioning-category` | Positioning & category (Dunford's 5 components); the bet that contaminates everything downstream. |
| 3 | `mm-03-why-people-buy` | Jobs-to-be-Done, the 4 forces of progress, Schwartz awareness levels, Cialdini. |
| 4 | `mm-04-messaging-copy-offer` | Value prop, copy frameworks (PAS/BAB/AIDA), Hormozi offer, the landing section-by-section. |
| 5 | `mm-05-funnel-channels` | TOFU/MOFU/BOFU, AARRR, owned/earned/paid, product-channel fit, the Bullseye. |
| 6 | `mm-06-content-seo-geo` | Content engine, topical authority, SEO intent, GEO (be cited by the AIs), distribution > production. |
| 7 | `mm-07-paid-ads` | Paid as multiplier; CAC/LTV; creative-is-targeting; systematic creative testing; cold→retargeting. |
| 8 | `mm-08-pricing-monetization` | Value-based pricing, packaging/tiering, price psychology, NRR; price = positioning. |
| 9 | `mm-09-partnerships-network-effects` | The 7 partnership forms, referral loops & viral k, borrowed audience, community as moat. |
| 10 | `mm-10-selling` | Sales-led vs PLG, founder-led sales, the 5-step B2B process, objections, follow-up. |
| 11 | `mm-11-measure-loops-retention` | Retention > monetization > acquisition, the North Star, growth loops, cohorts, the composing system. |
| 12 | `mm-12-novice-to-expert` | The sequence law, the **90-day plan**, the weekly routine, judgment & taste. Owns the plan this skill ships. |
Each Part is a **prerequisite of the next**: positioning precedes message (the message is the verbal
translation of the position), message precedes channel (a channel only amplifies), channel precedes
conversion (you can't optimize a rate on traffic that doesn't exist), conversion precedes serious
measurement, measurement precedes scaling. Auditing out of order produces aligned tactics on a broken
spine — so the gap-check walks Part 1 → 12.
## Inputs it loads (REAL project assets — L1: runtime is truth)
- **Prod URL → Playwright CLI sweep via Bash** (R-TEST + R-BROWSER: scripted Playwright through the
Bash CLI, **NEVER** an MCP browser tool). Capture the landing **hero, sections, body copy, CTAs, and
proof elements** — the page as it actually renders is the artifact every Part is measured against.
- **`.agents/product-marketing.md`** — positioning / ICP / audience / messaging, produced by
`/product-marketing-context`. **If missing, stop and tell the user to run
`/product-marketing-context` first** — the doctrine has nothing to align against without it.
- **The marketing dossier / strategy docs present in the repo** — any `docs/` go-to-market notes,
pricing pages, existing `ADS-*.md` / `MARKET-*.md` outputs. Loaded as the current strategy of record.
The audit grades the **real, rendered project**, never an idealized description of it (L1). Code and
docs state intent; the running landing and the live dossier are the truth the gap-check scores.
## The protocol — load → gap-check (12 Parts) → correct → adversarially verify → loop → report
1. **Load.** Playwright-sweep the prod URL (hero/sections/copy/CTAs/proof) and Read
`.agents/product-marketing.md` + the repo dossier into one project context. Guard: no
`product-marketing.md` → abort with the instruction to run `/product-marketing-context`.
2. **Gap-check (12 Parts).** Each Part is gap-checked by an agent that **READS the matching
`mm-XX SKILL.md` as its rubric** and scores the project's **real** alignment on that Part's
dimensions — returning a strict schema of `{ part, aligned, score, gaps[], corrections[] }` with
**concrete** gaps (cite the hero line, the missing proof, the absent price anchor) and proposed
corrections. The agent **reads the doctrine, it never nests a Workflow.**
3. **Correct.** For each gap that carries a correction, an agent **applies or proposes** the fix to the
landing + strategy — writing a single corrections artifact. It only edits **live files when in
scope** (R-SCOPE: one writer per file); otherwise it proposes the diff for the operator.
4. **Adversarially verify.** Each correction is checked by **≥2-of-3 skeptics** (R-VERIFY): is the fix
*faithful* to the doctrine and *real* against the rendered page (Popper — actively try to falsify
it)? A correction the skeptics can't ratify is dropped back to a residual gap.
5. **Loop until dry.** Re-run the gap-check (bounded, K=2) until **no new gaps** surface or a hard
blocker (missing secret, out-of-scope file) is hit — the self-correcting pass.
6. **Report.** Render a branded PDF via the OmegaOS pdfgen (**R-PDF**): per-Part alignment, gaps,
corrections-verified, residual gaps, and the **mm-12 90-day plan**.
## Runnable Workflow script (copy-pasteable)
Run this with the **Workflow tool**. It is the whole pass: Load → GapCheck → Correct → Verify →
Report. **One Workflow at the top level**; the 12 `mm-*` doctrines are applied as **lenses** — each
audit agent `Read`s `skills/marketing-mastery/<skill>/SKILL.md` as its rubric. Honor *no nested
Workflow*: never launch a Workflow from inside an `agent()`. Keep it deterministic — no `Date.now()`,
no `Math.random()`, no shuffling; the Part order is the static `PARTS` array.
Set `PROD_URL` and `PROJECT_DIR` to the real project (or read them from `$ARGUMENTS`).
```javascript
// marketing-master — run all 12 Marketing Mastery Parts on a REAL project as one
// gap-checked, self-correcting pass. ONE Workflow at top level; mm-* are LENSES
// (an agent READS each mm-XX SKILL.md as its rubric — never a nested Workflow).
export const meta = {
name: "marketing-master",
description: "Full Marketing Mastery doctrine gap-check + self-correct + 90-day plan over a real project.",
phases: [
{ title: "Load" },
{ title: "GapCheck" },
{ title: "Correct" },
{ title: "Verify" },
{ title: "Loop" },
{ title: "Report" },
],
};
const PROD_URL = `<<<PASTE THE PROJECT'S PROD URL>>>`;
const PROJECT_DIR = `<<<PASTE THE ABSOLUTE PROJECT DIR>>>`;
const SKILLS_DIR = `${PROJECT_DIR}/skills/marketing-mastery`; // mm-* live here
const ART_DIR = `${PROJECT_DIR}/agentic/reports`; // artifacts go here (R-ENV)
// The 12 Parts in BOOK ORDER = the sequence law. Order is the law; do not reorder.
const PARTS = [
{ n: 1, skill: "mm-01-foundations-2026", lens: "fondations / carte du système / GEO" },
{ n: 2, skill: "mm-02-positioning-category", lens: "positionnement & catégorie (Dunford)" },
{ n: 3, skill: "mm-03-why-people-buy", lens: "JTBD / 4 forces / Schwartz / Cialdini" },
{ n: 4, skill: "mm-04-messaging-copy-offer", lens: "message / copy / offre / landing" },
{ n: 5, skill: "mm-05-funnel-channels", lens: "funnel TOFU/MOFU/BOFU / AARRR / canaux" },
{ n: 6, skill: "mm-06-content-seo-geo", lens: "content engine / SEO / GEO" },
{ n: 7, skill: "mm-07-paid-ads", lens: "paid / CAC-LTV / créatif testing" },
{ n: 8, skill: "mm-08-pricing-monetization", lens: "pricing / packaging / NRR" },
{ n: 9, skill: "mm-09-partnerships-network-effects", lens: "partenariats / referral loops / moat" },
{ n: 10, skill: "mm-10-selling", lens: "selling / PLG vs sales-led / closing" },
{ n: 11, skill: "mm-11-measure-loops-retention", lens: "mesure / growth loops / rétention" },
{ n: 12, skill: "mm-12-novice-to-expert", lens: "séquence / plan 90 jours / jugement" },
];
// ---- Phase 1: LOAD — the REAL project (L1: runtime is truth) ----------------
// Filesystem + Playwright + shell run INSIDE an agent() (a sub-agent owns Bash/Read/Write).
// The top-level script only orchestrates the declared primitives (agent/parallel/pipeline/meta) —
// it never calls a bare bash()/read()/write() global. The agent does the scripted Playwright sweep
// through the Bash CLI (R-TEST + R-BROWSER) — NEVER an MCP browser tool — and returns the context.
const projectContext = (await agent(
`You are the LOADER for a Marketing Mastery audit. Assemble the REAL project context. Do EXACTLY:
1. GUARD FIRST — if ${PROJECT_DIR}/.agents/product-marketing.md does NOT exist, return ONLY this one line:
BLOCKED: .agents/product-marketing.md is missing. Run /product-marketing-context first.
2. Playwright-sweep the prod URL through the Bash CLI (R-TEST + R-BROWSER — scripted Playwright via Bash,
NEVER an MCP browser tool). Run via your Bash tool:
cd ${PROJECT_DIR} && ( bun run scripts/pw-capture.ts ${PROD_URL} || ( npx --yes playwright screenshot --full-page ${PROD_URL} ${ART_DIR}/landing.png && npx --yes playwright pdf ${PROD_URL} ${ART_DIR}/landing.pdf ) )
Capture the rendered hero, sections, body copy, CTAs and proof elements.
3. Read ${PROJECT_DIR}/.agents/product-marketing.md (positioning / ICP / messaging) IN FULL.
4. Read the marketing dossier of record via Bash:
cd ${PROJECT_DIR} && cat docs/*market*.md docs/*gtm*.md ADS-*.md 2>/dev/null | head -c 40000
Return ONE assembled block, verbatim section contents, NOTHING else:
# PROJECT CONTEXT (real, runtime)
## Prod URL
${PROD_URL}
## Landing (Playwright sweep — hero / sections / copy / CTAs / proof)
<what the page actually renders>
## Positioning / ICP / messaging (.agents/product-marketing.md)
<file contents>
## Marketing dossier / strategy of record
<dossier contents>`,
{ model: "opus" }
)).trim();
// Guard: the dossier MUST exist (produced by /product-marketing-context) — abort cleanly otherwise.
if (projectContext.startsWith("BLOCKED")) {
return projectContext;
}
// ---- Phase 2: GAPCHECK — 12 Parts, each mm-XX SKILL.md READ as the rubric ----
// pipeline: per Part, an audit agent reads the doctrine and scores the REAL project.
const auditPart = (part) => `You are the Marketing Mastery auditor for PARTIE ${part.n} (${part.lens}).
STEP 1 — Read the doctrine as your rubric: read the file ${SKILLS_DIR}/${part.skill}/SKILL.md IN FULL.
That file's dimensions ARE your scoring rubric — you do NOT invent criteria.
STEP 2 — Audit the REAL project below against that rubric ONLY for this Part's scope. Cite concrete
evidence (the exact hero line, a missing proof block, an absent price anchor, the CTA text).
STEP 3 — Return STRICT JSON, nothing else:
{ "part": ${part.n}, "skill": "${part.skill}", "aligned": <bool>, "score": <0-100>,
"gaps": [ { "what": "...", "evidence": "<cited from the project>", "severity": "high|med|low" } ],
"corrections": [ { "target": "landing|strategy", "change": "<concrete, applyable edit>" } ] }
Do NOT nest a Workflow. Read the doctrine; judge the project; return JSON.
PROJECT CONTEXT:
${projectContext}`;
const rawAudits = await pipeline(
PARTS,
(part) => agent(auditPart(part), { model: "opus" })
);
const audits = rawAudits.map((r, i) => {
try { return JSON.parse(r.slice(r.indexOf("{"), r.lastIndexOf("}") + 1)); }
catch { return { part: PARTS[i].n, skill: PARTS[i].skill, aligned: false, score: 0,
gaps: [{ what: "audit JSON unparseable", evidence: r.slice(0, 280), severity: "high" }],
corrections: [] }; }
});
// ---- Phase 3: CORRECT — apply/propose each fix to landing + strategy ---------
const openGaps = audits.flatMap((a) =>
(a.corrections || []).map((c) => ({ part: a.part, skill: a.skill, ...c }))
);
const correctionArtifacts = await parallel(
openGaps.map((g) => agent(
`You correct the marketing for PARTIE ${g.part} (${g.skill}). Apply this doctrine-faithful fix to
GitHub에서 보기