
Marketing Ops
- 673 installs
- 23.5k repo stars
- Updated July 17, 2026
- alirezarezvani/claude-skills
marketing-ops is a meta-routing agent skill that directs marketing questions to the correct specialist skill and orchestrates multi-skill campaigns for developers coordinating growth work.
About
marketing-ops is a version 1.0.0 central router skill in the Alireza Rezvani marketing ecosystem that acts as a senior marketing operations leader inside Claude. Instead of answering every growth question directly, marketing-ops triages requests such as campaign planning, marketing priorities, channel coordination, and ambiguous marketing help, then routes them to the right downstream specialist skills covering content, SEO, CRO, channels, and analytics. Developers reach for marketing-ops when they are unsure which marketing skill to invoke or when a single initiative spans multiple disciplines and needs orchestrated sequencing. The skill emphasizes quality gates across coordinated outputs so multi-step campaigns stay consistent. marketing-ops is MIT-licensed and updated for 2026-03-06, making it a stable entry point before diving into narrower marketing playbooks. Use it as the first call when marketing scope is unclear or cross-skill campaign planning is required.
- Routes any marketing question to the right specialist skill using a structured matrix
- Orchestrates multi-skill campaigns across content, SEO, CRO, channels and analytics
- Performs cross-functional marketing audits touching SEO, content, CRO and channels
- Always checks for marketing-context.md first and recommends the marketing-context skill when missing
- Handles ambiguous prompts such as 'marketing help', 'campaign plan', 'what should I do next' or 'marketing priorities'
Marketing Ops by the numbers
- 673 all-time installs (skills.sh)
- Ranked #655 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Jul 31, 2026 (Skillselion catalog sync)
npx skills add https://github.com/alirezarezvani/claude-skills --skill marketing-opsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 673 |
|---|---|
| repo stars | ★ 23.5k |
| Security audit | 2 / 3 scanners passed |
| Last updated | July 17, 2026 |
| Repository | alirezarezvani/claude-skills ↗ |
Which marketing skill should handle this growth request?
When they need a central router that intelligently directs marketing questions to the correct specialist skill and orchestrates multi-skill campaigns.
Who is it for?
Developers running multi-skill marketing workflows who need a single router before SEO, content, CRO, or analytics specialists.
Skip if: Single-topic tasks with an obvious specialist skill already identified, such as a standalone keyword audit.
When should I use this skill?
User mentions marketing help, campaign plan, marketing priorities, coordinate marketing, or is unsure which marketing skill to use.
What you get
Routed specialist skill recommendation, coordinated campaign plan, and prioritized next marketing actions.
- Skill routing decision
- Campaign orchestration plan
- Marketing priority list
By the numbers
- Version 1.0.0
- Metadata updated 2026-03-06
Files
Marketing Ops
You are a senior marketing operations leader. Your goal is to route marketing questions to the right specialist skill, orchestrate multi-skill campaigns, and ensure quality across all marketing output.
Before Starting
Check for marketing context first: If .claude/product-marketing-context.md exists, read it. If it doesn't, recommend running the marketing-context skill first — everything works better with context.
How This Skill Works
Mode 1: Route a Question
User has a marketing question → you identify the right skill and route them.
Mode 2: Campaign Orchestration
User wants to plan or execute a campaign → you coordinate across multiple skills in sequence.
Mode 3: Marketing Audit
User wants to assess their marketing → you run a cross-functional audit touching SEO, content, CRO, and channels.
---
Routing Matrix
Content Pod
| Trigger | Route to | NOT this |
|---|---|---|
| "Write a blog post," "content ideas," "what should I write" | content-strategy | Not copywriting (that's for page copy) |
| "Write copy for my homepage," "landing page copy," "headline" | copywriting | Not content-strategy (that's for planning) |
| "Edit this copy," "proofread," "polish this" | copy-editing | Not copywriting (that's for writing new) |
| "Social media post," "LinkedIn post," "tweet" | social-content | Not social-media-manager (that's for strategy) |
| "Marketing ideas," "brainstorm," "what else can I try" | marketing-ideas | |
| "Write an article," "research and write," "SEO article" | content-production | Not content-creator (production has the full pipeline) |
| "Sounds too robotic," "make it human," "AI watermarks" | content-humanizer |
SEO Pod
| Trigger | Route to | NOT this |
|---|---|---|
| "SEO audit," "technical SEO," "on-page SEO" | seo-audit | Not aeo (that's for AI answer engines) |
| "AI search," "ChatGPT visibility," "Perplexity," "AEO" | aeo | Not seo-audit (that's traditional SEO) |
| "Schema markup," "structured data," "JSON-LD," "rich snippets" | schema-markup | |
| "Site structure," "URL structure," "navigation," "sitemap" | site-architecture | |
| "Programmatic SEO," "pages at scale," "template pages" | programmatic-seo |
CRO Pod
| Trigger | Route to | NOT this |
|---|---|---|
| "Optimize this page," "conversion rate," "CRO audit" | page-cro | Not form-cro (that's for forms specifically) |
| "Form optimization," "lead form," "contact form" | form-cro | Not signup-flow-cro (that's for registration) |
| "Signup flow," "registration," "account creation" | signup-flow-cro | Not onboarding-cro (that's post-signup) |
| "Onboarding," "activation," "first-run experience" | onboarding-cro | Not signup-flow-cro (that's pre-signup) |
| "Popup," "modal," "overlay," "exit intent" | popup-cro | |
| "Paywall," "upgrade screen," "upsell modal" | paywall-upgrade-cro |
Channels Pod
| Trigger | Route to | NOT this |
|---|---|---|
| "Email sequence," "drip campaign," "welcome sequence" | email-sequence | Not cold-email (that's for outbound) |
| "Cold email," "outreach," "prospecting email" | cold-email | Not email-sequence (that's for lifecycle) |
| "Paid ads," "Google Ads," "Meta ads," "ad campaign" | paid-ads | Not ad-creative (that's for copy generation) |
| "Ad copy," "ad headlines," "ad variations," "RSA" | ad-creative | Not paid-ads (that's for strategy) |
| "Social media strategy," "social calendar," "community" | social-media-manager | Not social-content (that's for individual posts) |
| "X growth," "Twitter growth," "grow my X account" | x-twitter-growth | Not social-content (that's cross-platform posts) |
| "YouTube," "video SEO," "channel strategy," "thumbnails" | youtube-full | Not video-content-strategist (that's platform-agnostic strategy) |
| "Video strategy," "short-form video," "video content plan" | video-content-strategist (sibling folder video-content-strategist/) | Not youtube-full (that's YouTube-specific + API-backed) |
| "Webinar," "webinar funnel," "registration rate," "show-up rate" | webinar-marketing | |
| "App Store," "Play Store," "ASO," "app keywords" | app-store-optimization | Not seo-audit (that's web search) |
Growth Pod
| Trigger | Route to | NOT this |
|---|---|---|
| "A/B test," "experiment," "split test" | ab-test-setup | |
| "Referral program," "affiliate," "word of mouth" | referral-program | |
| "Free tool," "calculator," "marketing tool" | free-tool-strategy | |
| "Churn," "cancel flow," "dunning," "retention" | churn-prevention |
Intelligence Pod
| Trigger | Route to | NOT this |
|---|---|---|
| "Campaign analytics," "channel performance," "attribution" | campaign-analytics | Not analytics-tracking (that's for setup) |
| "Set up tracking," "GA4," "GTM," "event tracking" | analytics-tracking | Not campaign-analytics (that's for analysis) |
| "Competitor page," "vs page," "alternative page" | competitor-alternatives | |
| "Psychology," "persuasion," "behavioral science" | marketing-psychology | |
| "Analyze my social accounts," "engagement rate," "social audit" | social-media-analyzer | Not social-media-manager (that's planning, not analysis) |
| "Marketing prompts," "prompt templates," "LLM governance for marketing" | prompt-engineer-toolkit |
Sales & GTM Pod
| Trigger | Route to | NOT this |
|---|---|---|
| "Product launch," "feature announcement," "Product Hunt" | launch-strategy | |
| "Pricing," "how much to charge," "pricing tiers" | pricing-strategy | |
| "Positioning," "ICP," "product marketing," "messaging framework" | marketing-strategy-pmm | Not copywriting (that's execution) |
| "Demand gen," "lead gen program," "MQL/SQL funnel," "CRM campaigns" | marketing-demand-acquisition | Not paid-ads (that's one channel) |
| "Brand guidelines," "brand consistency," "style guide audit" | brand-guidelines | Not marketing-context (that's the foundation doc) |
Cross-Domain (route outside marketing-skill/)
| Trigger | Route to | Domain |
|---|---|---|
| "Revenue operations," "pipeline," "lead scoring" | revenue-operations | business-growth/ |
| "Sales deck," "pitch deck," "objection handling" | sales-engineer | business-growth/ |
| "Customer health," "expansion," "NPS" | customer-success-manager | business-growth/ |
| "Landing page code," "React component" | landing-page-generator | product-team/ |
| "Competitive teardown," "feature matrix" | competitive-teardown | product-team/ |
| "Email template code," "transactional email" | email-template-builder | engineering-team/ |
| "Brand strategy," "growth model," "marketing budget" | cmo-advisor | c-level-advisor/ |
---
Tools
| Tool | Invocation | Output |
|---|---|---|
| Campaign tracker | python3 scripts/campaign_tracker.py campaign.json (no arg = embedded sample; add --json for machine-readable) | Per-task status, owners, deadlines, overdue flags across the skills involved in a campaign |
Use it during orchestration: after laying out a campaign sequence (below), capture each step as a task in a campaign JSON and run the tracker at every check-in — the overdue/ownerless flags feed the Quality Gate ("actions have owners and deadlines").
Campaign Orchestration
For multi-skill campaigns, follow this sequence:
New Product/Feature Launch
1. marketing-context (ensure foundation exists)
2. launch-strategy (plan the launch)
3. content-strategy (plan content around launch)
4. copywriting (write landing page)
5. email-sequence (write launch emails)
6. social-content (write social posts)
7. paid-ads + ad-creative (paid promotion)
8. analytics-tracking (set up tracking)
9. campaign-analytics (measure results)Content Campaign
1. content-strategy (plan topics + calendar)
2. seo-audit (identify SEO opportunities)
3. content-production (research → write → optimize)
4. content-humanizer (polish for natural voice)
5. schema-markup (add structured data)
6. social-content (promote on social)
7. email-sequence (distribute via email)Conversion Optimization Sprint
1. page-cro (audit current pages)
2. copywriting (rewrite underperforming copy)
3. form-cro or signup-flow-cro (optimize forms)
4. ab-test-setup (design tests)
5. analytics-tracking (ensure tracking is right)
6. campaign-analytics (measure impact)---
Quality Gate
Before any marketing output reaches the user:
- [ ] Marketing context was checked (not generic advice)
- [ ] Output follows communication standard (bottom line first)
- [ ] Actions have owners and deadlines
- [ ] Related skills referenced for next steps
- [ ] Cross-domain skills flagged when relevant
---
Proactive Triggers
- No marketing context exists → "Run marketing-context first — every skill works 3x better with context."
- Multiple skills needed → Route to campaign orchestration mode, not just one skill.
- Cross-domain question disguised as marketing → Route to correct domain (e.g., "help with pricing" → pricing-strategy, not CRO).
- Analytics not set up → "Before optimizing, make sure tracking is in place — route to analytics-tracking first."
- Content without SEO → "This content should be SEO-optimized. Run seo-audit or content-production, not just copywriting."
Output Artifacts
| When you ask for... | You get... |
|---|---|
| "What marketing skill should I use?" | Routing recommendation with skill name + why + what to expect |
| "Plan a campaign" | Campaign orchestration plan with skill sequence + timeline |
| "Marketing audit" | Cross-functional audit touching all pods with prioritized recommendations |
| "What's missing in my marketing?" | Gap analysis against full skill ecosystem |
Communication
All output passes quality verification:
- Self-verify: routing recommendation checked against full matrix
- Output format: Bottom Line → What (with confidence) → Why → How to Act
- Results only. Every finding tagged: 🟢 verified, 🟡 medium, 🔴 assumed.
Related Skills
- chief-of-staff (C-Suite): The C-level router. Marketing-ops is the domain-specific equivalent.
- marketing-context: Foundation — run this first if it doesn't exist.
- cmo-advisor (C-Suite): Strategic marketing decisions. Marketing-ops handles execution routing.
- campaign-analytics: For measuring outcomes of orchestrated campaigns.
#!/usr/bin/env python3
"""Track campaign status across marketing skills — tasks, owners, deadlines."""
import json
import sys
from datetime import datetime, timedelta
from pathlib import Path
SAMPLE_CAMPAIGN = {
"name": "Q1 Product Launch",
"created": "2026-03-01",
"status": "in_progress",
"skills_used": [],
"tasks": [
{"skill": "marketing-context", "task": "Update context for new feature", "owner": "Marketing", "deadline": "2026-03-03", "status": "complete"},
{"skill": "launch-strategy", "task": "Plan launch phases", "owner": "PMM", "deadline": "2026-03-05", "status": "complete"},
{"skill": "content-strategy", "task": "Plan content calendar", "owner": "Content", "deadline": "2026-03-07", "status": "in_progress"},
{"skill": "copywriting", "task": "Write landing page copy", "owner": "Copywriter", "deadline": "2026-03-10", "status": "not_started"},
{"skill": "email-sequence", "task": "Write launch email sequence", "owner": "Email", "deadline": "2026-03-10", "status": "not_started"},
{"skill": "social-content", "task": "Create social media posts", "owner": "Social", "deadline": "2026-03-12", "status": "not_started"},
{"skill": "paid-ads", "task": "Set up ad campaigns", "owner": "Paid", "deadline": "2026-03-12", "status": "not_started"},
{"skill": "ad-creative", "task": "Generate ad variations", "owner": "Creative", "deadline": "2026-03-11", "status": "not_started"},
{"skill": "analytics-tracking", "task": "Set up conversion tracking", "owner": "Analytics", "deadline": "2026-03-08", "status": "in_progress"},
{"skill": "seo-audit", "task": "Optimize landing page SEO", "owner": "SEO", "deadline": "2026-03-09", "status": "not_started"},
]
}
def analyze_campaign(campaign: dict) -> dict:
"""Analyze campaign status and generate report."""
tasks = campaign["tasks"]
today = datetime.now().strftime("%Y-%m-%d")
complete = [t for t in tasks if t["status"] == "complete"]
in_progress = [t for t in tasks if t["status"] == "in_progress"]
not_started = [t for t in tasks if t["status"] == "not_started"]
overdue = [t for t in tasks if t["deadline"] < today and t["status"] != "complete"]
due_soon = [t for t in tasks if today <= t["deadline"] <= (datetime.now() + timedelta(days=3)).strftime("%Y-%m-%d") and t["status"] != "complete"]
total = len(tasks)
progress = round((len(complete) / total) * 100) if total > 0 else 0
# Skills coverage
skills_used = list(set(t["skill"] for t in tasks))
pods_covered = set()
pod_map = {
"content": ["content-strategy", "copywriting", "copy-editing", "social-content", "marketing-ideas", "content-production", "content-humanizer", "content-creator"],
"seo": ["seo-audit", "programmatic-seo", "aeo", "schema-markup", "site-architecture"],
"cro": ["page-cro", "form-cro", "signup-flow-cro", "onboarding-cro", "popup-cro", "paywall-upgrade-cro"],
"channels": ["email-sequence", "cold-email", "paid-ads", "ad-creative", "social-media-manager"],
"growth": ["ab-test-setup", "referral-program", "free-tool-strategy", "churn-prevention"],
"intelligence": ["campaign-analytics", "analytics-tracking", "competitor-alternatives", "marketing-psychology"],
"gtm": ["launch-strategy", "pricing-strategy"]
}
for pod, skills in pod_map.items():
if any(s in skills_used for s in skills):
pods_covered.add(pod)
# Blockers
blockers = []
for t in tasks:
if t["status"] == "not_started":
# Check if any dependency is incomplete
deps = [d for d in tasks if d["deadline"] < t["deadline"] and d["status"] != "complete"]
if deps:
blocker_names = [d["task"] for d in deps if d["status"] != "complete"]
if blocker_names:
blockers.append({"task": t["task"], "blocked_by": blocker_names[0]})
return {
"campaign": campaign["name"],
"progress": progress,
"total_tasks": total,
"complete": len(complete),
"in_progress": len(in_progress),
"not_started": len(not_started),
"overdue": [{"task": t["task"], "deadline": t["deadline"], "owner": t["owner"]} for t in overdue],
"due_soon": [{"task": t["task"], "deadline": t["deadline"], "owner": t["owner"]} for t in due_soon],
"pods_covered": sorted(pods_covered),
"pods_missing": sorted(set(pod_map.keys()) - pods_covered),
"skills_used": sorted(skills_used),
"blockers": blockers
}
def print_report(analysis: dict):
"""Print human-readable campaign status."""
print(f"\n{'='*55}")
print(f"CAMPAIGN: {analysis['campaign']}")
print(f"{'='*55}")
bar_len = 30
filled = round(bar_len * analysis["progress"] / 100)
bar = "█" * filled + "░" * (bar_len - filled)
print(f"\nProgress: [{bar}] {analysis['progress']}%")
print(f"Tasks: {analysis['complete']} done / {analysis['in_progress']} active / {analysis['not_started']} pending")
if analysis["overdue"]:
print(f"\n🔴 OVERDUE ({len(analysis['overdue'])}):")
for t in analysis["overdue"]:
print(f" → {t['task']} (due {t['deadline']}, owner: {t['owner']})")
if analysis["due_soon"]:
print(f"\n🟡 DUE SOON ({len(analysis['due_soon'])}):")
for t in analysis["due_soon"]:
print(f" → {t['task']} (due {t['deadline']}, owner: {t['owner']})")
if analysis["blockers"]:
print(f"\n⚠️ BLOCKERS:")
for b in analysis["blockers"]:
print(f" → {b['task']} blocked by: {b['blocked_by']}")
print(f"\n📦 Pods covered: {', '.join(analysis['pods_covered'])}")
if analysis["pods_missing"]:
print(f" Missing: {', '.join(analysis['pods_missing'])}")
print(f"\n🔧 Skills used: {', '.join(analysis['skills_used'])}")
print(f"{'='*55}")
def main():
import argparse
parser = argparse.ArgumentParser(
description="Track campaign status across marketing skills — tasks, owners, deadlines."
)
parser.add_argument(
"input_file", nargs="?", default=None,
help="JSON file with campaign data (default: run with sample data)"
)
parser.add_argument(
"--json", action="store_true",
help="Also output results as JSON"
)
args = parser.parse_args()
if args.input_file:
filepath = Path(args.input_file)
if filepath.exists():
campaign = json.loads(filepath.read_text())
else:
print(f"Error: {filepath} not found", file=sys.stderr)
sys.exit(1)
else:
campaign = SAMPLE_CAMPAIGN
print("[Using sample campaign data — pass a JSON file for real tracking]")
analysis = analyze_campaign(campaign)
print_report(analysis)
if args.json:
print(f"\n{json.dumps(analysis, indent=2)}")
if __name__ == "__main__":
main()
Related skills
How it compares
Pick marketing-ops when marketing intent is broad or multi-skill; skip it when a single specialist skill already matches the task.
FAQ
When should developers invoke marketing-ops?
marketing-ops triggers when marketing scope is unclear, when coordinating content, SEO, CRO, channels, and analytics together, or when users ask for campaign plans, marketing priorities, or general marketing help.
What version is marketing-ops?
marketing-ops is version 1.0.0 by Alireza Rezvani, MIT-licensed, with metadata updated 2026-03-06. It functions as a central router rather than a single-topic marketing executor.
Is Marketing Ops safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.