playbook/antigravity-awesome-skills/skills/competitor-analysis/references/battle-card-subagent.md

5.3 KiB

Battle Card subagent prompt

Contents

  • Placeholders to substitute{OUTPUT_DIR}, {COMPETITOR_SLUG}, etc.
  • Prompt — full subagent instruction template (paste with placeholders filled in)
  • Wave management — launch policy: one Agent message per run, all competitors in parallel

Main agent substitutes placeholders per competitor. Launch AFTER Step 5c fact-check completes — this lane depends on matrix.json cells having sources URLs.

Placeholders to substitute

  • {OUTPUT_DIR} → the absolute path to the output directory (the per-run directory from Step 0; no ~ or $HOME)
  • {COMPETITOR_SLUG} → e.g. rival-co
  • {COMPETITOR_NAME} → e.g. Rival Co
  • {USER_SLUG} → e.g. exa
  • {USER_COMPANY_NAME} → e.g. Exa
  • {USER_PRODUCT_ONE_LINER} → pulled from Step 1 profile
  • {USER_WINNING_SUMMARY} → matrix.json userCompany.winningSummary
  • {USER_LOSING_SUMMARY} → matrix.json userCompany.losingSummary

Prompt

You are the Battle Card synthesis subagent. Produce an evidence-grounded
battle card a real AE would use on a call.

TOOL RULES — CRITICAL, FOLLOW EXACTLY:
1. You may ONLY use the Bash tool. No exceptions.
2. BANNED TOOLS: WebFetch, WebSearch, Write, Read, Glob, Grep, browse cloud search,
   browse cloud fetch — ALL BANNED. This is a SYNTHESIS lane, not a research lane.
   You read files that already exist; you do not make new network calls.
3. Read ALL inputs in ONE Bash call via `cat`. Write output in ONE heredoc.
4. NEVER use ~ or $HOME — full literal paths only.

INPUTS (all already exist on disk — read in one Bash call):
- {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.marketing.md
- {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.discussion.md
- {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.social.md
- {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.news.md
- {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.technical.md
- {OUTPUT_DIR}/{USER_SLUG}.md              # user's own merged file
- {OUTPUT_DIR}/matrix.json                 # fact-checked matrix — cells
                                           # must have a `sources` URL to
                                           # be trustworthy; reject any
                                           # cell without one

CONTEXT:
- User's company: {USER_COMPANY_NAME}
- User's product: {USER_PRODUCT_ONE_LINER}
- User's verified moats (from matrix.json userCompany.winningSummary):
  {USER_WINNING_SUMMARY}
- User's verified gaps (from matrix.json userCompany.losingSummary):
  {USER_LOSING_SUMMARY}
- Competitor: {COMPETITOR_NAME}
- Competitor slug: {COMPETITOR_SLUG}

TASK — produce three sections, every claim traceable to an input bullet
or matrix.sources URL:

1. LANDMINES (3-5 items) — concrete verifiable facts that HURT
   {COMPETITOR_NAME} in a deal. Each:
   - States a specific, verifiable fact (not "their results are weak" —
     "they scored 73% nDCG@10 on the Nov 2025 search-bench leaderboard")
   - Cites a source URL pulled from an actual bullet in one of the
     input partials (Mentions / Benchmarks / Research Findings)
   - Includes a one-line "how to use it" talking point
   - Prefers third-party sources over competitor's own marketing
   - If no evidence exists for a potential landmine, OMIT it. 3 cited
     landmines > 5 half-invented ones.

2. OBJECTION HANDLERS (3-5 items) — "If prospect says: {objection} →
   You say: {response}". Objections should reflect the competitor's
   strongest marketing lines (e.g. if their homepage says "99.99%
   uptime", the objection is "we hear {user} has no uptime guarantee").
   Responses must reference a real user moat from winningSummary —
   never a hallucinated feature.

3. TALK TRACKS (2-3 items) — 1-2 sentence opening pitches. Each leads
   with a user winningSummary differentiator and names a specific gap
   in {COMPETITOR_NAME}. Confident, factual, no hyperbole.

ADVERSARIAL SELF-CHECK before writing:
- [ ] Every landmine cites a URL that appears in one of the input
      partials. No invented URLs.
- [ ] No claim contradicts a fact-checked cell in matrix.json.
- [ ] No talk track claims a user feature where matrix.json shows
      userCompany.features[X] = false.
- [ ] Objections are realistic (what a prospect would actually raise),
      not strawmen.

OUTPUT — write via a single heredoc to
  {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.battle.md

cat << 'BATTLE_MD' > {OUTPUT_DIR}/partials/{COMPETITOR_SLUG}.battle.md
---
competitor_name: {COMPETITOR_NAME}
lane: battle
generated_at: {YYYY-MM-DD}
---

## Battle Card

### Landmines

- **{one-line fact}** — {how to use it in the call}. (source: {url})

### Objection Handlers

- If they say: "{objection verbatim}"
  You say: {response citing user's moat} (evidence: {url})

### Talk Tracks

1. {1-2 sentence pitch}
BATTLE_MD

REPORT BACK only one line:
  "{COMPETITOR_SLUG} battle: {N} landmines, {M} objections, {K} tracks, all cited."

Do NOT return the card content.

Wave management

  • Launch 1 battle-card subagent per competitor. All can run in parallel (synthesis is fast and uses no shared state beyond already-written partials).
  • Depth: only run in deep or deeper modes. quick mode does not have the research depth to ground battle cards credibly.
  • Budget: ~3-5 Bash calls per subagent (1 big cat, 1 big heredoc, maybe 1-2 sanity checks).