# Battlecard

> Turn a tracked competitor's profile + live sources into a 6-section, rep-ready, fully-cited battle card. Triggers: 'battle card', 'battlecard', 'build a battle card for', '/battlecard'.

- Skill: `tga-cheetung/battlecard` (Agent Skill)
- Install (CLI): `npx skillmds@latest add tga-cheetung/battlecard`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tga-cheetung/battlecard/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tga-cheetung (https://skillmd.com/u/tga-cheetung)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tga-cheetung/battlecard

---


# Battlecard

**Generate a competitive battle card a rep can read in 90 seconds where every claim is cited to a source.** The card is grounded, not guessed: each "where they win / where you win" line points to something the competitor actually published, so it survives contact with a skeptical prospect.

This skill reads a competitor profile you define once (`competitors/<slug>/competitor.yaml`), gathers evidence from that competitor's live sources, and writes a 6-section card to `competitors/<slug>/battlecard.md`.

## Deploy when

- You're setting up a competitor for the first time and need the initial card.
- `weekly-refresh.py` flagged a card STALE because a source changed, and you're regenerating it.
- A rep is about to walk into a competitive deal and wants the current card.

## What this is NOT

- Not a research tool that invents claims. If a differentiator can't be tied to a source, it does not go in the card.
- Not a one-time doc generator. It's designed to be re-run every time a source moves. The card is disposable; the profile is the asset.

## STEP 0: Parse input

Read the competitor slug from the argument (e.g. `/battlecard northwind`). Resolve `competitors/<slug>/competitor.yaml`. If it doesn't exist, stop and tell the user to `cp -r competitors/_template competitors/<slug>` and fill it in.

## STEP 1: Load the profile

Parse `competitor.yaml`. Extract:
- `name`, `domain`, `category`
- `your_product`, `your_differentiators` (the case you want the card to make)
- `their_known_strengths` (seed honesty; you'll verify and expand these)
- `sources[]` (label, url, type)
- `card_path` (where to write; default `competitors/<slug>/battlecard.md`)

## STEP 2: Gather evidence

For each source in `sources[]`, fetch the page and read it. Pay attention to source `type`:
- `changelog` / `docs` -> what they shipped recently; capabilities they now claim.
- `pricing` -> tiers, what's gated, what's "contact us", per-seat vs. usage.
- `reviews` -> recurring complaints and recurring praise in the competitor's own customers' words.
- `news` -> funding, leadership, marquee customers, positioning shifts.

Also run a web search for `"<name>" vs` and `<name> limitations` to surface how the market already frames the matchup. **Record the source URL next to every fact.** You will cite it in the card.

## STEP 3: Synthesize the 6 sections

Write the card with exactly these sections. Each factual line ends with a `[label]` citation matching a source.

1. **What they are** - one neutral sentence.
2. **Where you win** - exactly 3. Each must be specific ("no SSO below the $X tier [pricing]"), verifiable, and tied to `your_differentiators`. No vague "we're more flexible".
3. **Where they win** - exactly 2. Honest, cited. This is the credibility of the whole card.
4. **Objections they create + your response** - the top 3 objections a prospect will raise *because* this competitor exists, each with a calibrated 1-2 sentence response.
5. **Landmine questions** - 3 questions the rep can ask that expose a weakness you found in Step 2.
6. **Competitive verdict** - 1-2 sentences a rep can say out loud.

## STEP 4: Write output

Write the card to `card_path` using the exact structure in `competitors/example-northwind/battlecard.md`. Start the file with a front-matter block recording `competitor`, `generated` (today's date), and the list of `sources_cited`.

End the card with a **Sources** list mapping each `[label]` to its URL, so any claim can be checked in one click.

## STEP 5: Report

Print a 3-line summary: competitor name, how many claims are cited, and which sources were freshest (most recently changed). If any source in the profile was unreachable, say so explicitly. A card built on a dead source is a silent lie.

## Output format

`competitors/<slug>/battlecard.md`, matching the example card's structure exactly: the 6 numbered sections, then a `## Sources` block.

## Configuration

No API keys required for the skill itself - it uses Claude Code's built-in fetch + web search. The refresh script (`scripts/weekly-refresh.py`) optionally reads `SLACK_WEBHOOK_URL` from the environment.

## Installation

This skill ships inside the repo at `.claude/skills/battlecard/`. Opening the repo in Claude Code registers `/battlecard` automatically. To use it in another project, copy the `battlecard/` folder into that project's `.claude/skills/`.

