Skip to content
Back to skills

Founder Brand

ASecurity

Draft and score founder LinkedIn posts on the Pillar, Proof, Process, Person rotation from real receipts. Drafts only, never posts. Use when the user says: \"write a LinkedIn post\", \"what should I post this week\", \"plan my founder content\", \"score my post\", \"my posts sound like AI\". For cold outreach, see cold-email. For email after opt-in, see email-sequence. For page copy, see landing-page.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
content-marketingpythongoshellbashsqlapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned November 11, 2026

npx -y skills add cmj-hub/gtm-operator-skills --skill founder-brand --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Founder Brand?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Founder Brand
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cmj-hub-founder-brand-gtm-operator-skills/badge)](https://www.skillsdirectory.com/skills/cmj-hub-founder-brand-gtm-operator-skills)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: founder-brand
description: "Draft and score founder LinkedIn posts on the Pillar, Proof, Process, Person rotation from real receipts. Drafts only, never posts. Use when the user says: \"write a LinkedIn post\", \"what should I post this week\", \"plan my founder content\", \"score my post\", \"my posts sound like AI\". For cold outreach, see cold-email. For email after opt-in, see email-sequence. For page copy, see landing-page."
argument-hint: "[content <pillar> | engine | critique <post> | hooks <topic> | format | status | setup]"
allowed-tools: Read Write(./drafts/**) Write(./SOUL.md) Write(./brand-config.json) Grep Glob Bash(python3 ${CLAUDE_PLUGIN_ROOT}/scripts/check_setup.py:*) Bash(python3 ${CLAUDE_PLUGIN_ROOT}/scripts/score_post.py:*)
license: MIT
models: ""

---

# Founder Brand — Founder-Led Social System

Compounding content engine for B2B founders. Produces LinkedIn-native
posts on a 4-pillar rotation, plans a 12-week content engine, and
critiques drafts against the founder-voice rubric (no thought-leader
voice, no LinkedIn-influencer cadence, no AI-detection signals).

## Before anything — load the operator

> **Scoring something pasted needs no setup.** If the operator handed you a line, post, draft, or file to score, run the scorer on it first and report the result; missing config only means some checks are skipped, so say which. Offer setup afterwards as the next step. Check whether files exist with Read or Glob, not a shell command.

Every mode starts here. No exceptions.

1. Read `brand-config.json` and `SOUL.md` from the operator's project
   folder (the current working directory). Both are shared by every
   pack in the suite; this pack reads `operator`, `audience`, `pillars`,
   `cadence`, `business_outcomes`, and its own `SOUL.md` sections.
2. Either missing, or `SOUL.md` still holds `<placeholder>` lines →
   run the `setup` mode and stop (scoring a pasted post is the exception above). A post without SOUL.md is
   generic by construction.
3. For state (what's filled, which pillar is next, this week's count), run:

   ```
   python3 ${CLAUDE_PLUGIN_ROOT}/scripts/check_setup.py --dir .
   ```

   Exit 0 = ready; the `Next:` line names the post to draft. Exit 1 =
   setup incomplete; each gap prints as `- what is wrong → what to
   change`.

## Modes

`$ARGUMENTS` picks the mode. If it names a mode, go straight to it.
Empty → `status`. Otherwise match the request to a row. Read the mode
file with the Read tool and follow it.

| You say / argument | Mode | Mode file |
|---|---|---|
| *(none)*, `status`, "where do I start" | State, this week's queue, the next step | [modes/status.md](modes/status.md) |
| `setup` / `onboarding` / `setup refresh` | First-run setup or quarterly voice refresh | [modes/setup.md](modes/setup.md) |
| `content <pillar>`, "write a LinkedIn post about…" | One post on a pillar, saved to `drafts/` | [modes/content.md](modes/content.md) |
| `engine`, "plan my content" | 12-week content plan across all 4 pillars | this file (below) |
| `critique <post or path>`, "score my post" | Score + weakest-line rewrite | [modes/craft.md](modes/craft.md) (Mode C) |
| `hooks <topic>` | 5 hook variants, one per archetype | [modes/craft.md](modes/craft.md) (Mode A) |
| `format` | Reformat a finished post for skim | [modes/craft.md](modes/craft.md) (Mode B) |

Moved in 0.7: the old sub-skills (`founder-brand-kickoff`,
`founder-brand-onboarding`, `founder-content`, `linkedin-craft`) are
these modes. Type `/founder-brand:founder-brand <mode>`.

Files: `brand-config.json` and `SOUL.md` at the project root (shared
with the suite). Posts go to `drafts/` at the project root, as before;
this pack keeps `drafts/` rather than `gtm/` so existing drafts and the
weekly count keep working.

## The framework — 4 content pillars

Rotate weekly. Don't do all four in one week (overwhelming) or skip a
pillar for 4+ weeks (drift). The 4 pillars:

| # | Pillar | Job | Example |
|---|---|---|---|
| 1 | **Pillar** | Big claim / point of view / contrarian take | "We don't run cold email programs that don't anchor on a PSP. Here's why." |
| 2 | **Proof** | Case study / specific metric / receipt | "Series-B SaaS — 14 SQLs in 30 days from one PSP rewrite. Here's the breakdown." (fictional example) |
| 3 | **Process** | How you actually do the work / SOP / framework | "Our 7-step Pain Signal Profile worksheet, with the 3 places teams get stuck." |
| 4 | **Person** | The human behind the work — story, stake, reason you care | "I shipped 3 outbound programs that failed before I figured out the PSP layer." |

The examples are fictional: the clients, results and figures in them are made up, and none is a JMC result. The operator's pillars come
from `brand-config.json` → `pillars.<pillar>.topic_pool`.

## The 5 hook archetypes

The first line of any post does one of these jobs. If it doesn't,
the post won't pull demand.

| # | Hook | Pattern | Example |
|---|---|---|---|
| 1 | **Contrarian** | "Most teams do X. We do Y instead — here's why." | "Most outbound programs blame the copy. The actual issue is upstream." |
| 2 | **Specific receipt** | "<Specific outcome>: <metric>. <The unexpected lever>." | "14 SQLs in 30 days. The lever wasn't the sequence — it was the PSP." |
| 3 | **Confession** | "I used to think X. I was wrong. Here's what I learned." | "I used to think cold email volume was the lever. After 3 failed programs, I figured out it wasn't." |
| 4 | **Pattern observation** | "I've reviewed N <thing>. Here's the one pattern that keeps showing up." | "Reviewed 60 cold email programs this year. One pattern shows up in every program that's hitting." |
| 5 | **Question reframe** | "Stop asking <usual question>. Ask <better question> instead." | "Stop asking 'what's our ICP?' Ask 'what just happened publicly that proves we should reach out?'" |

## The voice — what makes it sound like a founder

1. **Specificity over generality.** "14 SQLs in 30 days" beats "great results."
2. **One claim per post.** Stacked claims dilute.
3. **First-person, present-tense, conversational.** "We do X" not "One should consider X."
4. **A real receipt every time.** From the operator's stories reservoir in `SOUL.md`. Never invented.
5. **No engagement-bait closer.** No "What's been your experience?" No "Agree?" No "Thoughts?"
6. **Format for skim.** 1-sentence opener. 1-line body lines. Bullet receipts. White space. ≤200 words.

## Voice anti-patterns (banned)

The skill refuses to produce any of these:

- "Thought leadership" voice (capital-T thinking, no specifics)
- LinkedIn-influencer cadence ("Stop. Read this. Slowly.")
- AI-detection signals ("delve into", "navigate the landscape", "in today's fast-paced world")
- Hook-as-listicle ("3 things I learned this week" without specifics)
- Engagement-bait closers ("What's been your experience?" / "Agree? Disagree?")
- Generic gratitude posts (no specifics, "grateful to everyone who...")
- Multi-emoji blocks
- Hashtag stacks (>3 hashtags)
- Network blasts (one post aimed at 10+ networks; one post, one network)
- Anything on the operator's `SOUL.md` → "Phrases I refuse" list

## The scorer

`scripts/score_post.py` is the single rubric for every mode. Deterministic.
No LLM, no network.

```
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/score_post.py --file drafts/<draft>.md --soul SOUL.md
```

- 0-100 across 6 axes: hook 20, specificity 20, voice fingerprints 15,
  anti-patterns 20, format 15, receipt 10.
- Banned phrases, engagement bait, refused phrases, and >3 hashtags are
  **blockers** — exit 1 at any score.
- Pass `--network LinkedIn` (or `network`/`networks` in `--stdin` JSON)
  when the operator names a target. 10+ networks, or "ten-network" /
  "network blast", is a blocker. Optional; omitted means not checked.
- Exit 0 = ship (≥70, no blockers). Exit 1 = rewrite. Exit 2 = bad input.

Calibration pair: [a good Proof post](../../examples/proof.good.md)
scores 100; [an AI-pattern post](../../examples/proof.bad.md) scores 37
and is blocked.

If `cadence.auto_critique_before_post` is true (the default), every
draft runs through the scorer before it is shown. Never skip it.

## Workflow

### Mode: content generation

Run the [content](modes/content.md) mode. It locks the pillar, the
hook, and the receipt, drafts the post, scores it, and saves it to
`drafts/`.

### Mode: 12-week engine planning

1. Read the pillar topic pools from `brand-config.json` and the stories
   reservoir from `SOUL.md`.
2. Plan 12 weeks at `cadence.posts_per_week` (default 4 → 48 posts), in
   `cadence.rotation_order`. No pillar goes 4+ weeks without a slot.
3. For each slot, give:
   - Pillar
   - Hook archetype
   - Topic (from the operator's pool — never invented)
   - Receipt it rests on (story from `SOUL.md`, or "needs a receipt")
   - Drive-to (`business_outcomes.drive_to` / `lead_magnet` / `call_url`)
4. Output as one table per month. Save to `drafts/engine-<YYYY-MM-DD>.md`
   if the operator asks to keep it.
5. Flag every slot that has no receipt yet. Those are the operator's
   homework, not the agent's to fill.

### Mode: critique

Run the [craft](modes/craft.md) mode, Mode C. Run the scorer first;
the score is the scorer's, not a guess. Exit 1 prints every reason as
`- what is wrong → what to change`; fix those lines and score again.

## Never

- Post to LinkedIn / X. Drafts only — the operator publishes.
- Invent a receipt. No story in the reservoir → ask, or mark the line
  `[hypothetical]`.
- Skip the scorer when `auto_critique_before_post` is true.

## Finish every run with the next step

End with one `Next:` line. After a post scores exit 0:
`Next: /founder-brand:founder-brand status` (mark it published when the
founder posts it; status names the next pillar). After setup: the
checker's `Next:` line. This is the last pack in the suite; nothing
comes after it.

## Works with the suite

This is step 10 of the GTM operator suite (`/plugin marketplace add cmj-hub/gtm-operator-skills`). It runs standalone.

- **Reads:** `operator`, `audience`, `pillars`, `cadence`, `business_outcomes` from `brand-config.json`; `psp.vocabulary` (the buyer's words for the audience) and `evp.primary` (a Pillar post's claim) if present.
- **Writes:** `audience`, `pillars`, `cadence`, `business_outcomes`, and this pack's `SOUL.md` sections. Merge at the field level; never overwrite another pack's keys.
- **Before this:** `/gtm:setup` once, when `operator` is empty; psp (`/psp:psp`) and evp (`/evp:evp`), optional, when the posts should use the buyer's words and the outreach line.
- **After this:** nothing. The operator publishes the drafts.

If a companion pack is not installed, name it and its install line (`/plugin install <name>@gtm-operator-skills`); do not do its job inline.

## References

- [SOUL.md template](../../SOUL.md) — the founder-brand voice sections onboarding fills in

## Course

This skill is the agent form of the
[Founder-Brand Compounding](https://jaymountconsulting.com/learn/courses/founder-brand-compounding)
course. The course covers:

- 12-week content engine design end-to-end
- Per-pillar production cadences
- Drive-to-business mechanics (post → lead magnet → call)
- Format-by-platform (LinkedIn / X / Threads / podcast / newsletter)
- The "compounding" framework — why post #100 is 10x the lever of post #10

Files in this skill

  • SKILL.md11.1 KB
  • modes/content.md5.6 KB
  • modes/craft.md3.3 KB
  • modes/setup.md8.3 KB
  • modes/status.md3.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in content-marketing →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.