fix(marketing-plan): address review findings from codex + local audit

Resolves 12 issues found during comprehensive review:

Spec compliance:
- Trim description from 1025 to 963 chars (was over 1024 limit)
- Drop non-standard top-level version field (VERSIONS.md tracks repo-wide)

Cross-marketplace clarity:
- Note that audit-marketing/positioning live in adjacent cf-skills repo
- Document optional external skills in ops-stack-mapping (typefully, etc.)

Idea cross-reference fixes:
- Correct Activation count (7 -> 8) and Acquisition count (88 -> 116)
- Rename "ideas" to "entries" for accurate row vs unique-idea distinction
- Add "How to read this doc" legend explaining 139 unique / 144 entries
- Remove #86 Lifetime Deals from Revenue (off-brand, kept in Skip note)
- Replace machine-local ~/.claude paths with repo-relative references

AARRR consistency:
- Move signups from Acquisition to Activation per signup boundary rule
- Add explicit signup-intent vs signup-completion distinction

Resumption + state model:
- Define progress.md schema (phase, current_section, plan_version, etc.)
- Replace ambiguous resume condition with explicit decision tree
- Protect finalized plans from silent overwrite (terminal state check)
- Mandate sections/01..13.md as canonical persisted artifacts
- Codify draft order (2..13 then 1, present 1..13)
- Align file layout in SKILL.md with methodology.md

Other:
- Add ## 1. Executive summary header to example-olo.md (was missing)
- Reconcile budget tier numbers ($5-15K canonical, was $5-10K elsewhere)
- Soften verification check to allow documented external skills

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Corey Haines
2026-05-27 18:52:08 -07:00
parent 0c166511c8
commit bc9522e750
6 changed files with 116 additions and 58 deletions
+18 -14
View File
@@ -1,7 +1,6 @@
---
name: marketing-plan
version: 1.0.0
description: When the user needs to build a comprehensive marketing plan for a client, a company they advise, or their own product. Also use when the user mentions "marketing plan," "growth plan," "GTM plan," "go-to-market plan," "AARRR plan," "90-day marketing plan," "12-month marketing roadmap," "fractional CMO plan," "fCMO plan," or wants a "comprehensive marketing strategy document." Generates an exhaustive 13-section plan structured by AARRR (Acquisition, Activation, Retention, Referral, Revenue), customized to the client's current budget, team, and stage, mapped to future funding milestones, cross-referenced with the 139-idea marketing-ideas library and the 17-section audit-marketing rubric, with a full marketing operations stack showing which skills and MCP/API integrations execute each part. Outputs a Notion-paste-ready markdown document. For scoring current state, see audit-marketing. For positioning before planning, see positioning. For stage-specific deep work, see onboarding, signup, emails, referrals, pricing.
description: When the user needs a comprehensive marketing plan for a client, a company they advise, or their own product. Also use when the user mentions "marketing plan," "growth plan," "GTM plan," "go-to-market plan," "AARRR plan," "90-day marketing plan," "12-month marketing roadmap," "fractional CMO plan," or "fCMO plan." Generates an exhaustive 13-section plan structured by AARRR (Acquisition, Activation, Retention, Referral, Revenue), customized to the client's current budget, team, and stage, mapped to future funding milestones, cross-referenced with the 139-idea marketing-ideas library and the 17-section audit-marketing rubric, with a full marketing operations stack showing which skills and MCP/API integrations execute each part. Outputs a Notion-paste-ready markdown document. For scoring current state, see audit-marketing. For positioning before planning, see positioning. For stage-specific deep work, see onboarding, signup, emails, referrals, pricing.
---
# Marketing Plan
@@ -33,9 +32,7 @@ Examples:
- `/marketing-plan acme-saas`
- `/marketing-plan` (will prompt for client name)
On invocation, the skill auto-detects whether this is a new plan or an in-progress one:
- If `~/marketing-plans/{client-slug}/` exists with a `research.md` or any phase markers, **resume** from the last completed phase.
- If no folder exists, **initialize** a new one.
On invocation, the skill reads `~/marketing-plans/{client-slug}/progress.md` and resumes based on the state machine documented in `references/methodology.md` Step 1.1.2 (fresh → INIT → REVIEW → FINALIZE → finalized). Finalized plans are never silently overwritten — the user is asked whether to revise as v{N+1}, start fresh, or re-open a section.
## The three phases
@@ -101,13 +98,15 @@ The plan's "Current State" section scores the client against the 17-section `aud
If the user has already run `/audit-marketing` on this client, ingest the scored output directly. If not, offer to run it before drafting Section 3, OR use the rubric as a lens against existing materials (faster, less rigorous — useful when client provides rich context but a formal audit hasn't happened).
## Cross-references — the three external skills this plan depends on
## Cross-references — skills this plan integrates with
1. **`marketing-ideas`** — 139 proven marketing tactics. Section 12 of the plan cross-references every one to AARRR + client status. Detail in `references/idea-cross-reference.md`.
2. **`audit-marketing`** — 17-section scored rubric. Section 3 of the plan uses this as the scoring lens. Detail in `references/current-state-rubric.md`.
3. **All AARRR-stage-specific skills**`onboarding`, `signup`, `emails`, `referrals`, `pricing`, etc. The "Marketing operations stack" (Section 11) maps these to AARRR stages.
Some referenced skills live in this `marketingskills` repo; others live in adjacent Claude Code marketplaces (notably `cf-skills` for `audit-marketing` and `positioning`). The plan still works without external skills — it falls back to using the embedded rubric as a lens (see `references/current-state-rubric.md`).
The plan is **opinionated about which skills serve which stages.** Full mapping in `references/ops-stack-mapping.md`.
1. **`marketing-ideas`** *(this repo)* — 139 proven marketing tactics. Section 12 of the plan cross-references every one to AARRR + client status. Detail in `references/idea-cross-reference.md`.
2. **`audit-marketing`** *(external — `cf-skills` repo)* — 17-section scored rubric. Section 3 uses this as the scoring lens; falls back to lens-only mode if the skill isn't installed.
3. **AARRR-stage-specific skills** *(mostly this repo)*`onboarding`, `signup`, `emails`, `referrals`, `pricing`, etc. The "Marketing operations stack" (Section 11) maps these to AARRR stages.
The plan is **opinionated about which skills serve which stages.** Full mapping in `references/ops-stack-mapping.md` (which also lists optional external skills and substitutions).
## The marketing operations stack
@@ -192,12 +191,17 @@ Length expectation: ~8,00012,000 words for a comprehensive plan. Shorter is f
```
~/marketing-plans/
└── {client-slug}/
├── materials/ # Client-provided files (positioning, decks, audit output, etc.)
├── research.md # Research record written during INIT
├── progress.md # Section-by-section progress tracker (REVIEW phase)
── final_plan.md # The finished plan (FINALIZE output)
├── materials/ # Client-provided files (decks, audit output, brand-voice doc, etc.)
├── research.md # Research record written during INIT
├── progress.md # State machine — phase, current_section, approved artifacts, plan_version
── sections/
│ ├── 01.md # Each approved section saved as a canonical artifact
│ └── ... # Zero-padded so they sort in order
└── final_plan.md # Compiled deliverable (FINALIZE output)
```
The full schema for `progress.md` and the resumption decision tree live in `references/methodology.md` Steps 1.1.1 and 1.1.2.
## Related skills
- **`audit-marketing`** — Run before planning to score current state across 17 sections. Output feeds Section 3 of the plan.
@@ -6,8 +6,10 @@ AARRR (Dave McClure's "pirate metrics") is the spine of every plan produced by t
| Stage | Question | Common metrics |
|---|---|---|
| **A**cquisition | How do strangers become aware of us? | Visits, MQLs, signups, app installs, CAC by channel |
| **A**ctivation | Once they try us, do they have an experience that converts? | Time-to-value, % completing first key action, trial → paid rate |
| **A**cquisition | How do strangers become aware of us? | Visits, MQLs, signup-page sessions, app-store visits, CAC by channel |
| **A**ctivation | Once they try us, do they have an experience that converts? | Signup completion rate, time-to-value, % completing first key action, trial → paid rate |
> **Signup boundary rule.** Signup *intent* (a stranger landing on the signup page) is Acquisition. Signup *completion* and everything after (first key action, trial-to-paid) is Activation. Apply this rule consistently across all docs and the plan template.
| **R**etention | Do they stay and deepen? | DAU/WAU/MAU, week-1/4/12 retention, churn |
| **R**eferral | Do retained users bring more users? | Viral coefficient, NPS, ambassador attribution |
| **R**evenue | What do they pay, who pays, how does it compound? | ARPU, LTV, expansion revenue, ARR / MRR |
@@ -24,6 +24,8 @@ Use this as the "what good looks like" reference when drafting a new plan. The s
**Date:** 2026-05-27
**Status:** Draft v1 — for team review
## 1. Executive summary
Olo has built something rare: a clinically validated, brand-coherent, founder-led product in a category that doesn't yet have a name. The opportunity in the next twelve months is not to invent a marketing engine from scratch — it's to **convert the existing organic gravity into a measurable, repeatable funnel**, then layer paid acquisition on top of that funnel once the seed round closes.
**Three big bets, ranked by leverage:**
@@ -4,11 +4,15 @@ The `marketing-ideas` skill catalogs 139 proven marketing tactics. This doc is t
The plan's Section 12 ("Tactical idea bank") uses this mapping as the base, then layers client-specific filters: brand voice rules might skip some ideas; funding stage might shift Q-status; client category might rule out others.
## Primary AARRR assignment for all 139 ideas
## How to read this doc
Numbers correspond exactly to the `marketing-ideas` skill ordering. If `marketing-ideas` reorders or expands, update this doc.
- **139 unique ideas, 144 entries.** Five ideas cross-cut multiple AARRR stages and appear under each stage they serve (#79 Early-Access Referrals, #86 Lifetime Deals, #91 In-App Upsells, #114 Moneyball Marketing, #117 Product Competitions). Each duplicate row carries a cross-cut note.
- **"Entries" counts rows; idea IDs are unique.** Section header counts reflect rows in this doc, not unique ideas from `marketing-ideas`.
- **Numbers correspond exactly to the `marketing-ideas` skill ordering.** If `marketing-ideas` reorders or expands, update this doc.
### Acquisition (88 ideas)
## AARRR assignment for all 139 ideas
### Acquisition (116 entries)
These ideas primarily serve top-of-funnel awareness, traffic, and lead generation.
@@ -131,7 +135,7 @@ These ideas primarily serve top-of-funnel awareness, traffic, and lead generatio
| 133 | Investor Marketing | Developer/etc | Now (when raising) |
| 138 | Podcast Tours | Audience-Specific | Q2+ |
### Activation (7 ideas)
### Activation (8 entries)
| # | Idea | Category | Typical stage available |
|---|---|---|---|
@@ -144,7 +148,7 @@ These ideas primarily serve top-of-funnel awareness, traffic, and lead generatio
| 96 | Onboarding Optimization | Product-Led | Now |
| 124 | App Store Optimization | Platforms | Now (App Store products) |
### Retention (8 ideas)
### Retention (8 entries)
| # | Idea | Category | Typical stage available |
|---|---|---|---|
@@ -157,7 +161,7 @@ These ideas primarily serve top-of-funnel awareness, traffic, and lead generatio
| 135 | Support as Marketing | Developer/etc | Q2+ |
| 134 | Certifications | Developer/etc | Q3+ (cross-cuts Referral) |
### Referral (5 ideas)
### Referral (5 entries)
| # | Idea | Category | Typical stage available |
|---|---|---|---|
@@ -167,22 +171,23 @@ These ideas primarily serve top-of-funnel awareness, traffic, and lead generatio
| 93 | Viral Loops | Product-Led | Q3+ |
| 137 | Two-Sided Referrals | Audience-Specific | Q2+ |
### Revenue (3 ideas — most monetization is strategy not tactic)
### Revenue (2 entries — most monetization is strategy not tactic)
| # | Idea | Category | Typical stage available |
|---|---|---|---|
| 86 | Lifetime Deals | Launches | Generally off-brand |
| 91 | In-App Upsells | Product-Led | Q2+ (cross-cuts Activation) |
| 132 | Price Localization | International | Q4+ |
### Cross-cutting / brand foundation (2 ideas)
> **Skipped from Revenue:** #86 Lifetime Deals appears under Launches (Acquisition section) only. It's generally off-brand for subscription products because it damages LTV math; recommend in Section 12's Skip list with rationale, not in stage totals.
### Cross-cutting / brand foundation (2 entries)
| # | Idea | Category | Typical stage available |
|---|---|---|---|
| 114 | Moneyball Marketing | Unconventional | Ongoing methodology |
| 139 | Customer Language | Audience-Specific | Now (foundational) |
### Developer-specific / dev tool products (2 ideas)
### Developer-specific / dev tool products (2 entries)
| # | Idea | Category | Use when |
|---|---|---|---|
@@ -249,12 +254,12 @@ After all five AARRR tables + skip list:
## How to maintain this doc
If `marketing-ideas` adds new ideas (it's a living skill — the 139 may become 145 or 160 over time):
1. Read `~/.claude/skill-packs/marketingskills/skills/marketing-ideas/references/ideas-by-category.md`
1. Read `skills/marketing-ideas/references/ideas-by-category.md` in the `marketingskills` repo
2. Assign each new idea to a primary AARRR stage using the rules above
3. Add to this doc's tables
4. Update SKILL.md's idea-count reference
## Sources
- `~/.claude/skill-packs/marketingskills/skills/marketing-ideas/SKILL.md`
- `~/.claude/skill-packs/marketingskills/skills/marketing-ideas/references/ideas-by-category.md`
- `skills/marketing-ideas/SKILL.md` (in the `marketingskills` repo)
- `skills/marketing-ideas/references/ideas-by-category.md` (in the `marketingskills` repo)
+71 -28
View File
@@ -8,14 +8,67 @@ The three-phase workflow that produces a comprehensive marketing plan. SKILL.md
### Step 1.1 — Set up the plan folder
Canonical file layout for every plan:
```
~/marketing-plans/{client-slug}/
├── materials/ # Client-provided files go here
├── research.md # Written by this phase
── progress.md # Phase markers, updated as REVIEW progresses
├── materials/ # Client-provided files (decks, audit output, brand-voice doc, etc.)
├── research.md # Written in Phase 1 (INIT)
── progress.md # State machine — see Step 1.1.1 for schema
├── sections/
│ ├── 01.md # Executive summary (written last, ordered first)
│ ├── 02.md # Strategic frame
│ ├── ...
│ └── 13.md # Measurement, RACI, open decisions, appendix
└── final_plan.md # Compiled deliverable (Phase 3 output)
```
If `~/marketing-plans/{client-slug}/research.md` already exists, this is a resumed plan — skip to Phase 2.
### Step 1.1.1 — `progress.md` state schema
Every plan tracks a single `progress.md` file at the plan root. It's the source of truth for resumption. Schema:
```markdown
# {Client} — Marketing Plan Progress
phase: init | review | finalize | finalized
current_section: <number, only meaningful during review phase>
plan_version: v1
last_updated: YYYY-MM-DD HH:MM
## Sections completed
- [ ] 2. Strategic frame
- [ ] 3. Current state
- [ ] 4. Acquisition
- [ ] 5. Activation
- [ ] 6. Retention
- [ ] 7. Referral
- [ ] 8. Revenue
- [ ] 9. 90-day roadmap
- [ ] 10. 12-month outlook
- [ ] 11. Marketing operations stack
- [ ] 12. Tactical idea bank
- [ ] 13. Measurement, RACI, open decisions, appendix
- [ ] 1. Executive summary (synthesized last)
## Approved artifacts
sections/02.md, sections/03.md, ... (list as they're written)
## Notes
<any open decisions, blockers, or out-of-band context that aren't in research.md>
```
### Step 1.1.2 — Resumption decision tree
On every invocation, check state in this order:
1. **No `{client-slug}/` folder** → fresh plan. Create folder + `materials/` + empty `sections/`. Start INIT (Step 1.2).
2. **Folder exists, no `research.md`** → INIT was interrupted. Resume from Step 1.2.
3. **`research.md` exists, no `progress.md`** → INIT done, REVIEW not started. Create `progress.md`, start REVIEW from Section 2.
4. **`progress.md` exists, `phase: review`** → REVIEW in progress. Resume from `current_section` (or first unchecked box).
5. **`progress.md` exists, `phase: finalize`** → FINALIZE was interrupted. Re-run Phase 3.
6. **`progress.md` exists, `phase: finalized`** → plan is done. **Do not silently overwrite.** Ask the user: *"This plan is finalized (v{N}). Want to (a) revise it as v{N+1}, (b) start a fresh plan in a new folder, or (c) re-open a specific section?"*
Update `phase` and `last_updated` whenever state changes.
### Step 1.2 — Read existing materials
@@ -200,39 +253,24 @@ Save. Move to Phase 2.
### Step 2.1 — Initialize progress.md
```markdown
# {Client} — Marketing Plan Progress
Use the schema defined in Step 1.1.1 above. Set `phase: review`, `current_section: 2`, `plan_version: v1`, and stamp `last_updated`.
## Sections completed
- [ ] 1. Executive summary
- [ ] 2. Strategic frame
- [ ] 3. Current state
- [ ] 4. Acquisition
- [ ] 5. Activation
- [ ] 6. Retention
- [ ] 7. Referral
- [ ] 8. Revenue
- [ ] 9. 90-day roadmap
- [ ] 10. 12-month outlook
- [ ] 11. Marketing operations stack
- [ ] 12. Tactical idea bank
- [ ] 13. Measurement, RACI, open decisions, appendix
```
### Step 2.2 — Walk each section in this order: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, then 1
### Step 2.2 — Walk each section in order
Section 1 (Executive Summary) is drafted **last** because it depends on every other section's conclusions. Walk Sections 2 → 13 in numeric order, then synthesize Section 1 from the others. The final compiled `final_plan.md` is always presented in canonical order 1 → 13.
For each section, use the template at `references/plan-template.md` to draft. Then in chat:
1. Present the draft (or key bullets — short sections inline, long sections as bullet outline first)
2. Ask: *"Approve, adjust, or expand?"*
3. Iterate until user confirms
4. Save the confirmed text to a per-section file (`section-1.md`, `section-2.md`, etc.) or to a single growing `draft_plan.md`
4. Save the confirmed text to `sections/01.md` ... `sections/13.md` (one file per section, zero-padded for sort order). This is the canonical persisted artifact — recovery depends on it.
5. Check the box in `progress.md`
6. Move to next section
### Step 2.3 — Section-specific guidance
**Section 1 (Executive summary)** is typically drafted **last** in actual writing time — easier after all the other sections exist. But present it first in the output document.
**Section 1 (Executive summary)** is synthesized from Sections 213 after they're all approved. Draft it last; present it first in the output document.
**Section 3 (Current state)** is where audit-marketing output gets integrated. If a formal audit was run, paste the scored rubric. If not, use the rubric as a lens (see `references/current-state-rubric.md`).
@@ -262,7 +300,7 @@ If a section's draft violates the brand voice, redo it before showing it to the
### Step 3.1 — Compile
Concatenate all 13 sections into `final_plan.md`. Add:
Set `phase: finalize` in `progress.md` before starting. Concatenate `sections/01.md` through `sections/13.md` into `final_plan.md` (canonical order 1 → 13, regardless of drafting order). Add:
- Title header with date and "v1" version marker
- "Prepared by / For / Date / Status" frontmatter
- Section anchors that work in Notion paste
@@ -271,7 +309,7 @@ Concatenate all 13 sections into `final_plan.md`. Add:
Before printing:
- **Cross-reference check** — every marketing-ideas number (e.g., "idea #17") matches the actual idea in `references/idea-cross-reference.md`. Every related-skill mention exists in the marketingskills repo.
- **Cross-reference check** — every marketing-ideas number (e.g., "idea #17") matches the actual idea in `references/idea-cross-reference.md`. Every related-skill mention either exists in the `marketingskills` repo or is documented as an external dependency (see ops-stack-mapping note on cross-marketplace skills).
- **MCP/API check** — every tool mentioned in Section 11 actually exists in the user's stack (per research.md intake) OR is flagged as "future / not yet wired."
- **Path check** — no machine-specific paths (`/Users/...`, `/home/...`) in the output. Replace with descriptive references.
- **Voice check** — final read against brand voice rules. Flag and fix violations.
@@ -299,13 +337,18 @@ If yes:
If no: leave it local. Done.
### Step 3.5 — Mark finalized
Set `phase: finalized` in `progress.md` and stamp `last_updated`. This is the terminal state and prevents future `/marketing-plan` invocations from silently overwriting the plan (see Step 1.1.2 case 6).
---
## Resuming a plan
If `progress.md` shows incomplete sections, resume from the next unfinished. Skip Phase 1 entirely. Open `research.md` to refresh context, then dive into the next section.
Resumption is governed entirely by the decision tree in Step 1.1.2 above — always check state in that order on every invocation.
If the user says *"start over"* or *"redo Section X,"* respect that — reset that section's progress marker and re-draft.
If the user says *"start over"* → ask whether they want to delete the existing folder or move it to `archive/` first; don't silently overwrite.
If the user says *"redo Section X"* → uncheck that box in `progress.md`, delete `sections/0X.md`, and re-draft.
## Failure modes to watch for
@@ -2,6 +2,8 @@
This doc maps every marketing-skill and every relevant MCP/API integration to the AARRR stage(s) it primarily serves. It's the source for Section 11 of every plan.
> **Note on scope.** Skills below are drawn from the broader Claude Code marketplace ecosystem — not all live in this `marketingskills` repo. Skills shown without a `:` prefix (e.g., `seo-audit`) are in this repo. Skills referenced from adjacent marketplaces (e.g., `cf-skills:audit-marketing`, `vercel:agent-browser`, `compound-engineering:diagram-maker`, `marketing-skills:typefully`) are optional — substitute equivalents if not installed. When a plan references a skill that isn't available, fall back to the underlying tactic and call it out in Section 13's open decisions.
## The thesis
A small team + fCMO + agentic tooling = output of a 1520-person traditional marketing org. The skills + MCPs encode workflows that previously required dedicated headcount per channel.
@@ -180,7 +182,7 @@ The plan's Section 11 must include this table (or equivalent), specific to the c
| Stage | Headcount | Tooling | Channels live |
|---|---|---|---|
| **Pre-seed / bootstrapped** | fCMO + founder team | All current tooling + marketing-skills library + MCP layer | Organic only (SEO, content, App Store, founder-led social, events, WOM, ambassador) |
| **Seed close** | + first marketing hire (lifecycle/content owner) | + paid ad accounts (Apple Search Ads, Meta, LinkedIn) + `ads` skill activated | + paid acquisition pilot ($510K/mo) |
| **Seed close** | + first marketing hire (lifecycle/content owner) | + paid ad accounts (Apple Search Ads, Meta, LinkedIn) + `ads` skill activated | + paid acquisition pilot ($515K/mo — see `funding-stage-unlocks.md` for canonical tiers) |
| **Seed deployment** | + designer (potentially fractional) | + analytics expansion (Mixpanel / Amplitude if needed) | + paid scaling ($2050K/mo) + first launches (PH, GA) |
| **Series A** | + performance marketing lead + content lead | + dedicated tooling spend ($25K/mo software) + sponsored event budget | + paid scaling ($50150K/mo) + international consideration + B2B vertical expansion |
| **Series B+** | Full-stack marketing org (10+ people) | + agency partnerships + PR firm | + brand campaigns + acquisitions + sponsorships at category level |