Marketing team tracker

SkillDev tools

Maintains a curated roster of best-in-class marketing teams and harvests their most stealable plays on demand, each classified against five repeatable patterns (product-as-marketing, characters-and-series, community-as-distribution, weird-creative, pick-a-fight). Resolves each team's surfaces, scans for plays shipped since the last scan, ranks by engagement, and emits a dated marketing-plays brief plus an append-only swipe file and a living roster. Triggers: "track marketing teams", "marketing inspiration scan", "marketing swipe file", "what's X doing in marketing", "add X to the marketing tracker". Upstream: recommended signal-scan. Downstream: feeds content-strategy, marketing-ideas, thought-leadership, gtme-pulse, linkedin-weekly-content. NOT for competitor threat analysis (use /competitor-research), per-account buying signals (use /niche-signal), or one-off ideation from a brief (use /marketing-ideas).

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Marketing team tracker skill

What this skill tells your AI

The instructions your AI receives, as published by matteotitta/genesys-skills in skills/research/marketing-team-tracker/SKILL.md and read by ahel’s review.

Keep a living roster of the marketing teams worth stealing from, and harvest their best plays on demand. Each play is classified against five repeatable patterns, given a one-line "steal this", and filed in an append-only swipe file your content, ideation, and social skills can pull from. Knowledge type: temporal-signal-brief (per .claude/rules/ontology.md); maturity: emergent — each scan is fresh and time-bound, briefs are not locked.

Seeded from Tom Orbach's "Marketing Ideas" roundup (the 9 teams he follows + the five patterns they share), cite-only — same precedent as .claude/rules/linkedin-cold-dm-doctrine.md. The roster + swipe file are ours; the seed is attributed in the premium reference.

Cousin to /signal-scan — that skill answers "what happened with one topic in N days." This one carries a standing roster of marketing teams, classifies what it finds against a marketing-play taxonomy, and accumulates a swipe file across runs. Distinct from /marketing-ideas (ideation from a brief — the tracker feeds it raw plays) and /competitor-research (a deep static dossier on a threat, not an inspiration source).


When to run

Invoke for: track marketing teams, marketing inspiration scan, marketing swipe file, what's {company} doing in marketing, GTME Pulse sourcing, pre-content-calendar inspiration, add {company} to the tracker.

Do NOT invoke for:

  • A deep competitor threat dossier → /competitor-research (static, 13-dimension, adversarial).
  • Per-account buying signals / timing triggers → /niche-signal (outbound, "when to reach out").
  • Ideation from a brief → /marketing-ideas (this skill feeds it real plays to riff on).
  • One topic's last-N-days news → /signal-scan (topic-agnostic, no standing roster).

Brain-first (mandatory): before any external call, run the .claude/rules/brain-first-lookup.md ladder — /recall {team} + grep the swipe file. A play you logged last cycle may already answer the question. Annotate the brief if you went external after a miss.


Modes + flags

ModeWhat it does
/marketing-team-tracker (default)Scan the canonical roster for plays shipped since each team's last_scanned; emit a dated brief + append to the swipe file.
--seedBootstrap (or rebuild) the roster + swipe file from the premium reference. Idempotent.
--client {slug}Layer that client's overlay roster (roster/client-{slug}-roster.md) on the base; route the brief to projects/consulting/active/{slug}/content/strategy/.
--team {name}Deep single-team scan (full surface sweep, ignores last_scanned).
--add {company} / --remove {company}Roster management — resolve surfaces for a new team, or retire one.
FlagDefaultEffect
--days N30Lookback window per team. Marketing plays move slower than news — 30 is the floor, --days 90 for a quarterly sweep.
--emit=htmlmarkdownSelf-contained shareable HTML brief instead of markdown.
--xoffAdd X/Twitter via Apify actor (credit-gated). Many of these teams ship their best plays on X — opt in per run.

Inputs

The roster is the input — no required upstream skill. Recommended: /signal-scan (its resolved entities for a team transfer straight into the roster).

Read first, every run (brain-first):

  • projects/research/marketing-team-tracker/roster/canonical-roster.md — the tracked teams + per-team surfaces + last_scanned.
  • projects/research/marketing-team-tracker/swipe-file/{team}.md — what's already logged (so you don't re-surface it).
  • projects/research/marketing-team-tracker/marketing-team-strategy.md — the cross-cycle scratchpad (decisions locked, things to stop doing, open questions). Per .claude/rules/iterative-strategy-scratchpad.md.

The scan loop

Six steps. Schemas in the premium reference. Surface→tool mapping in the premium reference.

  1. Read state (brain-first). Load the roster, the per-team swipe files, and the scratchpad. Apply locked decisions; suppress named anti-patterns. Only scan for the gap since last_scanned.
  2. Resolve each team's surfaces. From the roster: the named operator's LinkedIn + the company page + blog/changelog + X handle. Resolve before searching — this is the step that turns a brand-name keyword dump into actual plays (borrowed from /signal-scan). If a surface isn't in the roster, resolve it once and write it back.
  3. Scan since last_scanned. Per team, sweep the resolved surfaces for marketing moves (campaigns, launches, stunts, positioning shifts, content series, community plays) shipped inside the --days window. Engagement-ranked, recency-decayed. Free discovery before metered extraction (crawl-cost-discipline.md); gate paid Apify (apify-credits.md).
  4. Extract → classify → steal-this. For each new play: name it, classify it against the five patterns (the premium reference), write a one-line "steal this" takeaway, and tag confidence + source URL + access date. No quote, no metric you can't cite → mark [Not available], never invent (per evidence-bound-outputs.md).
  5. Cross-team cluster. Note where teams converge on the same pattern this cycle ("three teams ran a pick-a-fight play this month") — that convergence is the signal worth surfacing to Pulse.
  6. Emit + persist. Write the dated brief; append new plays to each swipe-file/{team}.md; bump each team's last_scanned; update the scratchpad with anything that should carry forward. Apply the thin-input guard before you ship.

The refresh discipline mirrors /competitor-research: read the existing swipe file first, compare don't append-blind, date-stamp a "Recent changes" line, no-change = no entry.


The five patterns

Every play classifies into one (occasionally two). Full rubric + worked examples in the premium reference.

PatternThe move
Product-as-marketingThe product itself is the campaign — a playable demo, a free tool, a feature that markets (Decart's Oasis, Ahrefs' free tools, Anthropic's import button).
Characters-and-seriesRecurring characters and series, not one-off ads (Ramp's Brian, Torq's TorqTV, tl;dv's sketches).
Community-as-distributionTurn the community into the distribution channel (Clay's certifications + Slack, Lovable's clippers, Cluely's creator army).
Weird-creativeCreative so weird people share it for you (Cluely's blank billboards, Ramp's wrecking ball, Anthropic's coffee shop).
Pick-a-fightPick a fight on purpose — a category, a competitor, a norm (Cluely's whole brand, Torq's "SOAR is Dead", tl;dv vs "bot-free").

Thin-input guard

If a scan surfaces fewer than 3 fresh plays worth stealing across the whole roster, say so — ship a short "thin cycle" note naming what was checked, rather than padding the brief with weak plays. Marketing teams don't ship a stealable move every 30 days; an honest dry note beats a manufactured one (pattern from /niche-signal's thin-input rule).


Credit gate

Default surfaces — Exa news + Firecrawl blog/LinkedIn-page/changelog — incur no Apify spend. --x runs through an Apify actor and is off by default: when on, follow .claude/rules/apify-credits.mdfetch-actor-details (free) first, estimate cost, gate before call-actor (soft <$5, hard ≥$5). Probe one team before fanning out across the roster (goal-driven-loops.md).


Quality gate (binary, before declaring done)

  • Brain-first ladder run before any external call; brief annotated if it went external after a miss.
  • Each team's surfaces resolved (operator + company page + blog + X handle named in the roster, or "none found").
  • Every play carries pattern + steal-this + source URL + access date; no invented engagement numbers (mark [Not available]).
  • Date window respected — nothing older than --days N as a fresh play (older context flagged as background).
  • Thin-input guard applied — < 3 fresh plays ships an honest dry note, not padding.
  • Cross-team pattern watch present when 2+ teams converge.
  • Scratchpad + last_scanned updated; new surfaces written back to the roster.
  • --x / paid calls: cost estimated + gated.

Composition

RuleRole
brain-first-lookup.mdStep 1 — check the swipe file + recall before external.
iterative-strategy-scratchpad.mdThe cross-cycle memory file that makes corrections compound.
exa-protocol.mdTool selection + citation standard for default surfaces.
crawl-cost-discipline.mdFree discovery before metered extraction.
apify-credits.mdGate --x and any paid Apify call.
goal-driven-loops.mdProbe one team before fanning out across the roster.
evidence-bound-outputs.mdCite the play or lower confidence — never invent the move or the metric.
output-tenets.md · output-simplicity.md · doc-output-structure.md · ai-speak-anti-patterns.mdBrief voice + structure.

Signals

GitHub stars
36
Forks
14
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
marketing-team-tracker
Source
github.com/matteotitta/genesys-skills