# /promo-copy — Positioning-Driven Promotional Copy Generator

## Usage
```
/promo-copy tweet-ship            # Ship announcement tweet (≤280 chars)
/promo-copy tweet-milestone       # KPI milestone tweet
/promo-copy tweet-update          # Product update tweet
/promo-copy tweet-thread          # Multi-tweet thread (3-5 tweets)
/promo-copy ad-google {keyword}   # Google Ads copy (3 headlines + 2 descriptions)
/promo-copy ad-meta {audience}    # Meta/Instagram ad copy
/promo-copy linkedin              # LinkedIn post (≤3000 chars)
/promo-copy landing {slug}        # Landing page copy block
/promo-copy email-subject {campaign}  # 5 email subject line variations
```

## Input
- `$ARGUMENTS` — required: copy type and optional parameters

## Process

Parse `$ARGUMENTS` to determine the copy type. The first token is the type, the rest are parameters.

## Positioning Integration (Required)

Before writing ANY copy, load `data/positioning.json` and extract:
- **Pain points** — Lead with the most relevant one for this channel/audience
- **Messaging pillars** — Weave 1-2 into the copy naturally
- **Objection handlers** — Preempt 1 relevant objection where appropriate
- **Social proof** — Include 1 credibility anchor (user count, shipped features, market validation)
- **CTA bank** — Pull CTAs from positioning rather than inventing generic ones
- **Headlines/Tagline** — Use copy_bank headlines as inspiration
- **Tone** — Match the founder's voice from positioning (confident, technical, direct)

Also load:
- `data/ideas.json` — For ship/milestone tweets, get specific feature details
- `data/goals.json` — For milestone copy, get KPI data
- `data/business-context.json` — Product info, audience, value proposition

## Copy Quality Rules

These rules apply to ALL copy types. They override generic instincts.

### Tone & Voice
- **Founder voice** — Write as a person, not a brand or marketing department
- **Confident, not hype** — "This changes how you work" not "We're SO excited!!!"
- **Technical credibility** — Don't dumb things down for developers
- **Respect the reader** — If it can be said in fewer words, do it
- **No corporate speak** — No "leverage", "synergy", "ecosystem", "revolutionize"

### CTA Rules
- First-person verbs: "Start my analysis" not "Get started"
- Be specific: "Run your first analysis" not "Learn more"
- One CTA per copy piece (except threads/landing pages)

### Banned Phrases
- "Game-changer", "Revolutionize", "Disrupt"
- "We're excited to announce"
- "Stay tuned", "Watch this space"
- "It's that simple" (if it takes more than 1 step, it's not)
- Generic hashtags like #startup #entrepreneur (use specific ones)

---

### Type: `tweet-ship`

Generate a "just shipped" tweet for the most recently shipped idea.

1. Load the most recently shipped idea from `data/ideas.json`
2. Write 3 tweet variations (pick the best one):
   - **Hook-first**: Lead with the problem it solves, then reveal the feature
   - **Result-first**: Lead with the outcome, then explain what shipped
   - **Story-first**: Brief build narrative → what shipped → result
3. Include: the feature name, what it does for users, 1-2 relevant hashtags
4. Must be ≤280 characters
5. Tone: excited but authentic, build-in-public energy

### Type: `tweet-milestone`

Generate a milestone celebration tweet.

1. Load KPI data from `data/goals.json` — find KPIs at or above target
2. Write the tweet: metric + achievement + what it means + hashtag
3. Include a forward-looking hook: "Next target: ..."
4. Must be ≤280 characters

### Type: `tweet-update`

Generate a product update tweet from positioning data.

1. Lead with tagline or value proposition hook
2. Include 1 specific differentiator
3. End with CTA or hashtag
4. Must be ≤280 characters

### Type: `tweet-thread`

Generate a 3-5 tweet thread on a positioning topic.

1. Tweet 1: Hook (pain point or bold claim)
2. Tweet 2-3: Evidence/story (what you built, why it's different)
3. Tweet 4: Social proof or result
4. Tweet 5: CTA
5. Each tweet ≤280 characters, numbered with emoji (1/, 2/, etc.)

### Type: `ad-google {keyword}`

Generate Google Ads copy for a target keyword.

1. **3 Headlines** (max 30 characters each):
   - H1: Keyword + core benefit
   - H2: Differentiator
   - H3: Social proof or urgency
2. **2 Descriptions** (max 90 characters each):
   - D1: Expand on benefit, address pain point
   - D2: CTA + differentiator
3. Include the keyword naturally (no keyword stuffing)

### Type: `ad-meta {audience}`

Generate Meta/Instagram ad copy.

1. **Primary text** (125 chars ideal, 250 max): Hook + benefit + CTA
2. **Headline** (40 chars max): Core value proposition
3. **Description** (30 chars max): Supporting detail
4. **CTA button**: Choose from (Learn More, Sign Up, Get Started, Try Free)
5. Write for the specified audience segment

### Type: `linkedin`

Generate a LinkedIn post for professional audience.

1. **Hook line** (first line visible before "see more"): Bold claim or question
2. **Body** (500-1500 chars): Problem → solution → proof → insight
3. **CTA**: Engagement prompt ("What's your take?" or link to product)
4. Format: Short paragraphs, line breaks between thoughts, 1-2 emoji max
5. Total ≤3000 characters

### Type: `landing {slug}`

Generate a landing page copy block.

1. **Headline** (8-12 words): Outcome-focused, addresses primary pain point
2. **Subheadline** (15-25 words): How the product delivers that outcome
3. **3 Benefits**: Icon-worthy phrases (3-8 words each) with 1-sentence descriptions
4. **CTA button text**: First-person, specific action
5. **Social proof line**: One credibility statement

### Type: `email-subject {campaign}`

Generate 5 email subject line variations for a campaign type.

1. Load campaign context from `data/email-campaigns/` if available
2. Generate 5 variations using these formulas:
   - Curiosity + outcome
   - Specific benefit + number
   - Pattern interrupt
   - Question format
   - FOMO / urgency (authentic, not fake)
3. Each under 50 characters
4. Include preview text for each (50-90 chars)

---

## Output

Save the generated copy to `data/copy/{type}-{slug}-{YYYY-MM-DD}.md`:

```markdown
# {Type} Copy — {Date}

## Metadata
- Type: {type}
- Generated: {date}
- Positioning version: {last_updated from positioning.json}
- Parameters: {any extra params}

## Copy

{The generated copy, clearly formatted}

## Variations

{Alternative versions if applicable}
```

Print a summary: copy preview, character count, file path.
