Aaron Marketing Skills

120 marketing skills — brand narrative, SEO/GEO, influencer, paid ads, email, launch, social — on one contract.

English | Deutsch | Español | Français | Italiano | 日本語 | 한국어 | Português | 简体中文 | 繁體中文

A library of Claude Skills and slash commands that turns a chat agent into a marketing operator. Seven disciplines and a shared protocol layer, at a glance:

Layer Skills Lifecycle (phase directories) Framework → gate Entrypoint
Narrative 16 trace → architect → land → evaluate TALE truth / system / effectiveness profiles /aaron-marketing:narrative
SEO/GEO 16 survey → implement → tune → evaluate CORE-EEATcontent-quality-auditor · CITEdomain-authority-auditor /aaron-marketing:seo-geo
Social 16 explore → craft → host → observe ECHO asset / program-maturity profiles /aaron-marketing:social
Email 16 setup → engage → nurture → deliver SENDemail-quality-auditor (EQS) /aaron-marketing:email
Paid ads 16 research → orchestrate → activate → scale ROASad-account-auditor (RQS) /aaron-marketing:ad
Influencer 16 scout → target → activate → report STARcreator-content-auditor (SQS); fit-scorer produces the Suitability (S) read /aaron-marketing:influencer
Launch 16 research → assemble → mobilize → prove RAMP preflight / execution / outcome profiles /aaron-marketing:launch
Protocol layer 8 — (shared machinery, outside the phase flows) 7 truth registries (entity · creator · offer/claims · consent · launch · channel · narrative) + HOT/WARM/COLD memory

/aaron-marketing:auto routes any natural-language goal across all of it. Skills and commands are plain Markdown; small Bash/Python-stdlib runtimes provide hooks, validation, scoring, registry events, private operational run events, connectors, and CI checks (no pip, no build step). Every skill runs at Tier 1 with data you provide; connectors only automate retrieval or an explicitly approved mutation.

The authoritative typed topology is references/system-catalog.json; see the generated system architecture for the readable four-layer map, all 120 paths, registry owners, auditor sinks, and distribution profiles.

The pre-merge standalone repos are now signpost repos pointing here — seo-geo-claude-skills (final 20-skill line preserved at tag v9.9.12) and influencer-marketing-agent-skills (final IMPACT line at tag standalone-final). Sibling-repo policy: docs/repo-family.md.


Contents


Why this library

Principle What it means in practice
Keyless by default Every skill works at Tier 1 with data you paste or pull from free/first-party sources. Paid tools and MCP servers are an opt-in convenience, never a precondition. Paid-ads skills score from your own-account manual export — keyed ad APIs are never required.
Content-first, executable contracts Skills remain Markdown. Small Bash/Python-stdlib runtimes make scoring, state, safety, and conformance deterministic without adding package dependencies.
One shared contract All 120 skills expose the same seven sections and self-declare discipline + phase metadata, so the library behaves like one operating system: each skill knows its inputs, outputs, and the next best skill to hand off to.
Gated quality Eight benchmarks drive eight auditor-class gates that emit structured, machine-checkable verdicts — not vibes. Success/failure/batch hooks surface invalid writes through bounded checks. Pre-commit/CI protect committed Git content from PII; they do not validate ignored runtime artifacts.
Truth lives in events Seven append-only registry streams are canonical; owner-controlled projections expose entity, creator, claims, consent, launch, channel, and narrative state without destructive queues.
Memory across turns A HOT/WARM/COLD memory model carries findings, scores, and open loops between skills and sessions, sanitized on the way in.
Plain voice Skills ship an AI-slop detector and a banned-phrase list so output reads like a human wrote it.

Install

Use it with Claude Code, any Agent Skills-compatible host, or a plain git clone:

Host Install
Claude Code /plugin marketplace add aaron-he-zhu/aaron-marketing-skills then /plugin install aaron-marketing@aaron
Codex · Cursor · OpenCode · Antigravity · Gemini CLI · Copilot CLI · OpenClaw · Hermes · 70+ hosts npx skills add aaron-he-zhu/aaron-marketing-skills
SkillHub.cn (中文社区) skillhub install <frontmatter-slug> (e.g. aaron-campaign-architect or legacy unprefixed slugs like keyword-research)
Any host git clone https://github.com/aaron-he-zhu/aaron-marketing-skills

In Claude Code, marketplace add only registers the catalog — run /plugin install aaron-marketing@aaron (or pick it from /plugin) to actually enable the skills and commands. To pull a single skill on a generic host: npx skills add aaron-he-zhu/aaron-marketing-skills -s keyword-research. Browse the bundle on the skills.sh registry. Per-agent directories, frontmatter quirks, and what degrades outside the plugin: docs/agent-compatibility.md (verified 120/120 installable, 2026-07).

Installing the plugin adds nothing to your /mcp list — the MCP catalogue lives in docs/mcp-catalog.json, deliberately outside the plugin-root .mcp.json path that Claude Code auto-registers, so it is a copy-paste reference only (see Connectors).


First run

If your host supports automatic skill routing, just describe the goal:

Research keywords for my SaaS product targeting small teams
Find TikTok creators for a skincare launch and score their fit
Audit this Google Ads account before I scale — exports attached

Or use the slash commands — /auto for routing, or a discipline entrypoint:

/aaron-marketing:auto turn our pricing page into an AI-citable comparison hub
/aaron-marketing:seo-geo https://example.com/blog/my-article --phase tune

/aaron-marketing:auto infers intent and runs the smallest useful workflow, stopping only at blocking decisions. Every skill works with pasted data; optional tools are documented in CONNECTORS.md.


Capability profiles

A fresh project runs Lite, including when you installed the full Governed-ceiling plugin. Choose a larger profile only when the job needs its mechanisms:

Profile Adds Typical use
Lite The 120 authored skills, /auto, deterministic scoring, inline delivery, canonical-state reads Briefs, plans, drafts, analysis, and most day-to-day work
Pro Connectors and explicitly requested saved audits Tool-assisted research and persistent audit artifacts
Governed Memory/registry writes, verified run evidence, deterministic context, controller, workflow and audit loops Stateful, recoverable, independently verifiable operations

v19 validation status: this is an engineering-validated release. The exact source passes CI, reproducible package checks, and real model/provider execution over simulated semantic fixtures. Those runs do not constitute real-project outcome evidence; real-project outcomes remain unvalidated. Lite remains the fresh-project default. Governed is available as an explicit capability choice, but availability does not validate Governed outcomes or Governed-by-default. That promotion requires the post-release cohort of 14 pilots + 70 paired Lite/Governed projects + 28 shadow projects.

The installed archive is a hard ceiling; the effective project profile may be lower. Select the archive in the installer/admin surface, or select the logical profile through a one-invocation --profile, AARON_MARKETING_PROFILE, or the closed .aaron-marketing/profile.json project config. These controls do not add a slash command: the public grammar remains exactly /auto plus the seven discipline commands, and every profile preserves the seven 4×4 loops and their TALE/SITE/ECHO/SEND/ROAS/STAR/RAMP acronyms.

Profiles never disable consent, claims, PII/secret handling, external-mutation approval, audit-verdict integrity, or release provenance. Switching profiles also never deletes existing state. Standalone one-folder installs have a Lite physical ceiling and degrade fail-closed when a root runtime is absent. Configuration, archive selection, legacy-project migration, and LEGACY_RUN_BLOCKED recovery are documented in references/capability-profiles.md.


Architecture

The shared skill contract

Every skill follows the same activation contract — seven sections in a fixed order:

  1. Trigger / when-to-use — when the skill should fire.
  2. Quick Start — copy-paste prompts.
  3. Skill Contract — Expected output · Reads · Writes · Promotes · Done-when · Primary next skill.
  4. Handoff Summary — the standard hand-off shape so the next skill picks up cleanly.
  5. Data Sources~~category placeholders, each with a keyless Tier-1 path.
  6. Instructions — the numbered method (treats all exports as untrusted input).
  7. Next Best Skill — where to go next (with visited-set + max-depth termination rules).

Every skill also self-declares metadata.discipline (narrative / seo-geo / influencer / ad / email / launch / social / protocol, where ad is Paid Ads/ROAS) and metadata.phase, so routing and clustering work uniformly. The contract is documented once in skill-contract.md; the shared cross-skill state lives in state-model.md.

The system: a four-layer marketing operating system

One brand voice, expressed through five always-on channels, concentrated into launch moments, all reading and writing a shared system of record. Seven disciplines, four altitudes — a system, not a pile.

Layer Adopt Disciplines Cadence
L1 · Strategy — what we say / who we are crawl Narrative · TALE always-on
L2 · Channels — always-on engines that express the strategy (owned → bought) walk SEO/GEO · CORE-EEAT + CITE · Organic Social · ECHO · Email · SEND · Paid Ads · ROAS · Influencer · STAR always-on (influencer episodic-leaning)
L3 · Orchestration — the time-boxed moment across channels run Product Launch · RAMP episodic
L4 · Protocol — the shared system of record 7 truth registries + working memory · 8 auditor gates · one skill contract

Narrative is the message; the channels are the mediums that express it. Each core builder records the exact canon ID/version and claims-projection offset it used, or an explicit approved fallback/block. Each discipline's 4-phase loop lives inside its layer (Narrative = Trace → Architect → Land → Evaluate).

All seven use phase directories in the catalog order: Narrative → SEO/GEO → Social → Email → Paid → Influencer → Launch. Note "activate" means creator outreach for influencer but account-gating for paid ads — same word, discipline-specific scope.

Quality system: eight frameworks, eight gates

Eight benchmarks make "good" measurable. Each defines dimensions, a rollup method, and a small set of veto items (hard fails that cap or block a score regardless of the rest):

Framework Scores Items / dimensions Rollup Veto items
TALE Brand narrative Truth / Architecture / Landing / Evidence T / A / L / E Separate truth, system, and effectiveness profile results; no overall composite T1/A1/L1/E1
CORE-EEAT Content quality with diagnostic CORE/GEO and EEAT/SEO views 80 items / 8 dimensions complete profile-weighted result; diagnostic views are not separate totals T04, C01, R10
CITE Domain authority & citation trust 40 items / 4 dimensions arithmetic weighted mean T03, T05, T09
STAR Influencer Suitability / Trust / Appeal / Return S / T / A / R · 40 items / 4 dimensions SQS = floor(profile-weighted mean) (arithmetic) STAR-S2/S6, STAR-T1/T2/T3
ROAS Paid ads Return / Offer / Audience / Spend-efficiency R / O / A / S RQS = floor(profile-weighted mean) (arithmetic) R1/R2/O1/O2/A1
SEND Email marketing Sender-integrity / Engagement / Nurture / Direct-response S / E / N / D EQS = floor(profile-weighted mean) (arithmetic) S1/S2/N1/D1
RAMP Product launch Readiness / Assets / Momentum / Proof R / A / M / P · 40 stable IDs Separate preflight, execution, and outcome profile results; never average time horizons R1/A1/M1/P1 (framework-qualified — distinct from ROAS R1/A1)
ECHO Organic social Embeddedness / Craft / Hosting / Observability E / C / H / O · 40 stable IDs One asset-gate or program-maturity profile per run; never combine asset and operating constructs E1/C1/C2/H1/H2/O1 (framework-qualified — distinct from ROAS O1/O2)

Each framework is enforced by an auditor-class gate — a skill that emits a typed artifact (class: auditor-output) checked by the deterministic validator and bounded lifecycle hooks. Repository CI regression-tests the validator and contract; it does not inspect ignored host-runtime artifacts. Gates are workflow steps, so each lives in its discipline and is counted there:

Gate Framework Lives in Verdict
narrative-quality-auditor TALE profile gate narrative/evaluate/ (narrative) Separate truth/system/effectiveness results before adoption
content-quality-auditor CORE-EEAT seo-geo/tune/ (SEO/GEO) SHIP / FIX / BLOCK before publishing
domain-authority-auditor CITE seo-geo/evaluate/ (SEO/GEO) SHIP / FIX / BLOCK / UNDECIDED; trust labels are explanatory only
creator-content-auditor STAR SQS influencer/activate/ (influencer) SHIP / FIX / BLOCK / UNDECIDED plus creator-facing translation
ad-account-auditor ROAS RQS ad/activate/ (paid) SHIP / FIX / BLOCK before budgets scale
email-quality-auditor SEND EQS email/deliver/ (email) SHIP / FIX / BLOCK before send
launch-readiness-auditor RAMP lifecycle-profile gate launch/mobilize/ (launch) SHIP / FIX / BLOCK for one declared lifecycle read
social-quality-auditor ECHO asset/program gate social/host/ (social) SHIP / FIX / BLOCK for one declared unit/profile

Shared veto policy: one verified veto caps the final score at min(raw, 59); two or more verified vetoes produce status: DONE + verdict: BLOCK and no final score. Missing evidence is Unknown, resulting in NEEDS_INPUT/UNDECIDED, never an automatic failure. Gate mechanics live in auditor-runbook.md and are executed by the typed scorer.

The protocol layer

The protocol/ directory holds the shared truth & memory machinery that sits outside the discipline phase-flows — 8 skills, counted separately:

Skill Job Anchored to Canonical stream / role
entity-registry Owns machine-facing entity identity and recognition facts SEO/GEO memory/events/entities.ndjson
creator-registry Owns creator identity, audience, rights, terms, and compliance facts influencer memory/events/creators.ndjson
offer-claims-registry Owns accepted offer/claim wording and substantiation pointers paid memory/events/claims.ndjson
consent-registry Owns pseudonymous consent/suppression facts and live safety state email memory/events/consent.ndjson
launch-registry Owns launch stage, dates, submissions, manifests, and outcomes launch memory/events/launches.ndjson
channel-registry Owns channel state, cadence, voice pointers, and UGC permissions social memory/events/channels.ndjson
narrative-registry Owns complete versioned narrative canon records narrative memory/events/narrative.ndjson
memory-management Manages authorized HOT/WARM/COLD working notes without impersonating a registry all disciplines non-canonical memory/ working state

The registries follow a sole-writer rule (other skills submit via registry-events.py proposal events), and they curate — the gates judge. The genuinely horizontal layer beneath everything is the references/ protocols (auditor-runbook, state-model, skill-contract, context-resolution, runtime-protocol, audit-loop, humanizer-slop, measurement-protocol) — shared by design as documents, not skills.

Memory & automation hooks

Memory is temperature-tiered, so context survives across skills and sessions without bloating the prompt:

Tier Location Behavior
HOT memory/hot-cache.md Auto-loaded each session; capped at 80 lines AND 25 KB (whichever trips first).
WARM memory/<subdir>/ Per-skill working state and permissioned audit artifacts; registry projections are separate rebuildable views.
COLD memory/archive/ Demoted/older records, kept for recall.

Opt-in run evidence lives separately under memory/runs/<run-id>/: append-only metadata events, a derived session tree, turn snapshots, save points, and run envelopes. It is Git-ignored, retention-bounded, and explicitly non-authoritative — it cannot accept a registry proposal or authorize an external action. The stdlib run-events.py runtime and Runtime Protocol enforce this boundary.

Before a turn snapshot, the stdlib context-resolver.py can turn an explicit candidate request into a hash-bound context manifest. It deterministically applies required/optional/forbidden policy, authority and freshness order, conflict/supersession rules, sensitivity and byte budgets, content dedupe, and typed omission reasons. It does not perform semantic retrieval or copy source content into the manifest. /auto likewise reads a generated index plus at most three discipline/cross-discipline routing shards, while one maintenance source preserves all 88 cases.

The optional stdlib audit-loop.py adds a bounded proposal-only outer loop around validated FIX audits. It records immutable proposal, owner-review, non-empty intervention-evidence, and re-audit steps under the same ignored run namespace, with leases, idempotency, deadlines, deterministic retry timing, and 1–3 improvement cycles. Each v2 transition reserves its selected-ancestry event anchor before materializing the exact step; a missing step is recoverable only by replaying the same request, while the public loop-step command is verification-only. The final event slot stays reserved for terminal sealing. Runtime-derived loop_closure isolates sibling branches: success requires exact terminal loops; waiting/needs-input/blocked may retain exactly covered active loops; failed/aborted may preserve bounded unresolved evidence without claiming convergence. The loop never edits the audited target, performs an intervention, accepts registry truth, or authorizes an external mutation; only a distinct medium/high-confidence SHIP re-audit that passes the observation-time provenance floor can converge. audit-trends.py deduplicates exact artifact bytes, links all exact-hash edges through the verified loop graph (including non-adjacent series entries), enforces aggregate scan budgets, escapes terminal controls in human output, and reports relapse, oscillation, context/catalog drift, evidence growth, and confidence changes without guessing causality from display order.

Semantic conformance is also layered. The strict corpus projects 572 authored cases, 88 generated routing cases, and 40 generated auditor prompt-contract variants into one 700-case runner model. A fixed 24-case smoke profile, change-aware impact selection, and full nightly profile are credential-free to plan in CI. Optional protocol-v2 host adapters add hash-bound real execution provenance and keep behavior failures distinct from host failures; a real adapter run over a simulated case remains simulated case evidence. The eight generated auditor prompt contracts bind their skill, catalogs, framework rules, and runtime sources without becoming a second topology inventory; see the semantic evaluation docs for the source-only maintenance workflow.

Hooks (hooks/hooks.json, runner hooks/claude-hook.sh) wire seven Claude Code events:

Event Matcher What it does
SessionStart startup|resume|clear|compact Injects a combined-budget sanitized hot-cache/checkpoint/integrity view and, only when AARON_ACTIVE_RUN_ID is explicit, a bounded untrusted run-resume summary. Per-source truncation is labeled; symlinked records are rejected.
UserPromptSubmit (all) Lightweight per-prompt context hook; emits metadata-only turn lifecycle when an active run and stable turn ID are explicit.
PreToolUse known write-capable tools Exact-path direct memory/** writes must be Git-ignored; opaque shell/MCP memory mutations are unsupported and denied when identified. Registry/run runtimes repeat exact atomic-path checks. An active run records only hashed IDs and typed metadata.
PostToolUse known write-capable tools After successful writes, audits the full operational-memory namespace, validates the exact audit target or bounded reserved-sink sweep, and closes an opted-in tool lifecycle event.
PostToolUseFailure known write-capable tools Runs the same post-state checks after a reported failure and records a typed failed lifecycle event when tracing is active, because a failed command may still have written files.
PostToolBatch (all) Rechecks operational memory and the complete reserved sink after each parallel tool batch.
Stop (all) Performs a final bounded sweep and can block once for repair. The required stop_hook_active loop guard permits the subsequent stop. Pre-commit/CI remain Git/PII backstops only; they do not validate ignored runtime artifacts.

The Artifact Gate is framework-agnostic — the same hook validates TALE, CORE-EEAT, CITE, STAR, ROAS, SEND, RAMP, and ECHO artifacts with no per-framework code.


Skill catalog

Skill links open each SKILL.md. Expand the Details under each discipline for a one-line purpose per skill. Catalog order follows the four-layer strata — Narrative (L1 · Strategy) first, the five always-on channels next, Launch (L3 · Orchestration), then the Protocol layer.

Narrative — TALE (16) · 📖 Discipline guide

Four phase directories under narrative/ (4 skills each) follow the TALE loop (Trace → Architect → Land → Evaluate); the gate (⛩ narrative-quality-auditor) sits in Evaluate. It runs truth, system, and effectiveness profiles separately; a full review links three results and never averages them. Narrative is the L1 · Strategy layer: one brand voice the five always-on channels inherit. It absorbs positioning — positioning-mapper stays physically in launch/ but reads logically as the front of TALE Trace.

Phase Skills
Trace narrative-baseline-mapper, category-narrative-mapper, audience-belief-mapper, positioning-truth-tracer
Architect strategic-narrative-designer, message-system-architect, brand-language-codifier, story-bank-builder
Land narrative-cascade-planner, pitch-narrative-builder, narrative-enablement-kit, proof-point-packager
Evaluate narrative-quality-auditor, message-test-designer, narrative-resonance-monitor, narrative-drift-monitor
Skill TALE lever What it does
narrative-baseline-mapper T Capture the current, actual brand story as it lives across owned surfaces — the honest starting point before any redesign.
category-narrative-mapper T Map the category's dominant narratives and named alternatives so the brand can claim a defensible, differentiated position.
audience-belief-mapper T Surface what the target audience already believes, doubts, and cares about — the beliefs the narrative must move.
positioning-truth-tracer T Trace every positioning claim back to substantiation, retiring anything unsupported (upstream of the T1 truth veto).
strategic-narrative-designer A Design the core strategic narrative — the change-in-the-world story arc, stakes, and resolution the brand leads with.
message-system-architect A Architect the message system — tagline, pillars, proof points, and per-audience angles as one coherent structure.
brand-language-codifier A Codify voice, tone, lexicon, and do/don't language so every channel sounds like one brand.
story-bank-builder A Build a reusable bank of proof stories, customer narratives, and analogies channels can draw from.
narrative-cascade-planner L Plan how the narrative cascades into each channel and moment without dilution or drift.
pitch-narrative-builder L Shape the narrative into pitch form — deck spine, demo story, and investor/press framing.
narrative-enablement-kit L Enablement kit that lets every team tell the story consistently — talk track, FAQ, and message map.
proof-point-packager L Package proof points into channel-ready, claims-ledger-aware assets.
⛩ narrative-quality-auditor Truth / system / effectiveness profiles Auditor-class TALE gate: scores one typed profile, enforces T1/A1/L1/E1 when applicable, and emits SHIP/FIX/BLOCK; full mode preserves three linked results.
message-test-designer E Design message tests — variant matrix, audience cells, and resonance read for the strategic narrative.
narrative-resonance-monitor E Track how the narrative is landing across channels from keyless sources (proxy data labeled).
narrative-drift-monitor E Watch for narrative drift — where channels have wandered off the approved canon — and flag corrections.

Reused cross-discipline (counted in their home phases, not duplicated): positioning-mapper (logically the front of Trace, physically in launch/), message-house-builder, audience-mapper, share-of-voice-tracker (resonance denominator). No new connector — narrative resonance reuses bluesky.py / gdelt.py / tavily.py / wayback.py — see tale-benchmark.md.

SEO/GEO — SITE (16) · 📖 Discipline guide

Four phase directories (4 skills each) plus the discipline's two quality gates (marked ⛩).

Phase Skills
Survey keyword-research, competitor-analysis, serp-analysis, content-gap-analysis
Implement content-writer, [geo-content-optimizer](https://github.com/aaron-he-zhu/aaron-marketing-skills/blob/main/seo-geo/implement/geo-conten