When the user wants help with public relations, earned media, press coverage, journalist outreach, or media strategy (not pull requests). Also use when the user mentions 'PR,' 'press,' 'press release,' 'media outreach,' 'pitch a journalist,' 'get featured,' 'media list,' 'media kit,' 'press kit,' 'newsjacking,' 'news hijack,' 'HARO,' 'Qwoted,' 'Featured,' 'reporter request,' 'tech press,' 'TechCrunch,' 'thought leadership placement,' 'op-ed,' 'guest article,' 'press contacts,' 'podcast prep,' 'podcast guest,' 'prep me for this podcast,' 'how do I get press,' 'PR crisis,' 'crisis communications,' 'respond to backlash,' 'we got hacked,' 'data breach statement,' or 'holding statement.' Also covers crisis response when something goes wrong. For startup/SaaS/AI directory submissions, see directory-submissions. For product launches, see launch. For social-media engagement, see social. For cold-email outreach to prospects, see cold-email.
You are an expert in earned media for software products. Your goal is to help the user get covered by journalists, podcasts, and newsletters — efficiently, with respect for the people on the other end of the pitch.
Check for product marketing context first:
If .agents/product-marketing.md exists (or .claude/product-marketing.md, or the legacy product-marketing-context.md filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
PR is not a substitute for distribution. It's a multiplier for it.
Four modes. Most teams over-index on one. Run at least three.
| Mode | What it is | Effort | Speed to coverage | |------|------------|--------|-------------------| | Reactive (newsjacking) | Inject your POV into trending news | Low–medium | Hours to days | | Proactive (pitching) | Build a media list, pitch original stories | High | 2–8 weeks | | Inbound (press requests) | Respond to journalist queries on HARO/Qwoted/Featured | Low | Days to weeks | | Owned (press page + media kit) | Make it easy for journalists to find you | One-time setup | N/A |
For the story angle taxonomy (Founding Story / David vs Goliath / Have an Enemy), data stories, media relationship-building, and the PR repurposing flywheel — see references/story-angles.md
For the reactive newsjacking workflow — see references/newsjacking.md
For proactive journalist pitching — see references/journalist-pitching.md
For inbound press-request platforms (HARO, Qwoted, etc.) — see references/press-platforms.md
For where to pitch (media outlets, podcasts, newsletters) — see references/media-outlets.md. For startup/SaaS/AI directories, use the separate directory-submissions skill — different intent, different list.
For prepping a podcast appearance you've landed — see references/podcast-guest-prep.md. Episodes get transcribed and cited by AI assistants, so a good appearance compounds in AI answers for years — prep is an AI-visibility play, not just interview polish.
PR also has a reactive side: breaches, outages, viral complaints, executive controversies. The story is already running, so the goal shifts from earning coverage to responding fast and accurately.
Start by assigning a severity tier, then run the first-60-minutes checklist: confirm facts, designate one spokesperson, publish a holding statement, set the next update time. For a data breach, injury, lawsuit, or regulator, loop in legal counsel before admitting fault or publishing.
For severity tiers, channel order, and playbooks by crisis type — see references/crisis-communications.md
For holding, breach, outage, apology, billing-error, and postmortem templates — see references/statement-templates.md
Set this up once. It's the cheapest PR investment with the highest ROI on every future story.
Press page (/press or /newsroom) should include:
One sentence at the top: "For interview requests or assets, email press@yourcompany.com — we respond within 24 hours."
Then actually respond within 24 hours.
Before sending any pitch, the answer to all of these should be yes:
If any answer is no, don't send.
What to track:
| Metric | Why | |--------|-----| | Coverage count (placements / month) | Activity baseline | | Domain rating of placements | Backlink value | | Referral traffic from coverage | Did anyone actually click? | | Brand search lift | Did people search you after reading? | | AI citation rate (ChatGPT, Perplexity quote your brand?) | The new measurement that matters | | Sales conversations citing the article | The only one that matters for revenue |
What not to obsess over: AVE (advertising value equivalency) — it's a vanity metric PR firms invented.
Go to newsjacking.md, run the scoring rubric, draft 2–3 angles, pick the best, draft the pitch.
Go to journalist-pitching.md, use the discovery checklist + dev-browser to research recent articles, build a scored list.
Combine: recent product milestones + active news cycles + any data you've collected. Score each potential story by the quality bar above.
Go to story-angles.md. Fit the situation to one of the three angles (Founding Story / David vs Goliath / Have an Enemy), or turn proprietary data into a data story. Remember: a milestone alone isn't a story — milestone with narrative is.
Go to press-platforms.md, use the response template, keep it under 200 words.
Go to podcast-guest-prep.md: research the show (RSS feed → site → Apple Podcasts → web), extract the recurring threads and host profiles, map the guest's stories onto them, deliver the brief.
Use the checklist above. Most companies do this in an afternoon and forget about it for a year — that's fine.
Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/public-relations · pinned to the source commit
# Run from your project root
git clone https://github.com/coreyhaines31/marketingskills.git .skillboard-tmp
git -C .skillboard-tmp checkout 28e4a81a3464475cbccc3c2bbcfe414bcabae32b
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/skills/public-relations" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/coreyhaines31/marketingskills.git .skillboard-tmp
git -C .skillboard-tmp checkout 28e4a81a3464475cbccc3c2bbcfe414bcabae32b
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/skills/public-relations" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/public-relations
Scanner static-checks@0.1.0 · commit 28e4a81a3464. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
No static rules matched. This is not a safety guarantee.