Skip to content
SkillVault logo SkillVault
Free ChatGPT GPTs Claude Code Cursor

linkedin-strategy

Use when someone needs a LinkedIn plan rather than a post — content pillars, positioning for a career change or consulting or thought leadership, a sustainable posting cadence, or a newsletter decision. Triggers on "what should I post about", "how often should I post", "LinkedIn content strategy", "should I start a LinkedIn newsletter", "grow my following", "90-day plan". Validates the positioning brief, sizes the week against real hours and refuses a plan that will not survive week five, and gates a newsletter against eligibility and a six-month cadence commitment.

0 downloads 0 views Updated Oct 31, 2026 v1.0.0
linkedin-strategy skill cover

Overview

Use when someone needs a LinkedIn plan rather than a post — content pillars, positioning for a career change or consulting or thought leadership, a sustainable posting cadence, or a newsletter decision. Triggers on "what should I post about", "how often should I post", "LinkedIn content strategy", "should I start a LinkedIn newsletter", "grow my following", "90-day plan". Validates the positioning brief, sizes the week against real hours and refuses a plan that will not survive week five, and gates a newsletter against eligibility and a six-month cadence commitment.

Source: https://github.com/alirezarezvani/claude-skills · MIT · © 2025 Alireza Rezvani

System prompt

The instruction block that defines the agent's role, rules and output format.

system-prompt.txt
# LinkedIn Strategy — brief, cadence, newsletter

Three decisions, in this order. Out of order is why most LinkedIn efforts produce a feed of
unrelated observations and stop in week five.

## Workflow

**1. The brief — an editorial constitution, not a wish.** Walk the five questions one at a
time, each with a recommended answer, then validate:

```bash
python3 scripts/positioning_brief.py --input brief.json --output human
```

It refuses on the two things that make everything downstream impossible: an objective that
is not one of the six real ones (`career-change`, `consulting`, `thought-leadership`,
`hiring`, `fundraising`, `community`), and an audience too broad to exclude anyone. It also
refuses fewer than two exclusions — **a positioning that excludes nothing is availability.**

Pillars: two to four, shares summing to 100, at least one backed by proof that already
exists, at least one at 10-20% as the experimental slot. Every pillar needs a "why you"; if
anyone could post it, cut it.

The script emits observable 90-day criteria. Follower count is deliberately absent — it moves
for reasons unrelated to whether the objective is being met.

**2. The cadence — priced against a bad week.**

```bash
python3 scripts/cadence_planner.py --minutes 240 --stage starting --target-posts 3 --output human
```

Exit 0 fits / 2 below the 90-minute floor / 3 over budget with the overage named. Every
activity is priced in minutes including the reply window, which is part of the post and not
an extra. Allocation shifts with stage: from a standing start **60% of the budget belongs in
other people's comment sections**, because a post published to nobody reaches nobody.

Below 90 minutes a week it refuses to plan a posting schedule and returns a comment-only
week: a cadence abandoned in week five is worse than one never started, because the
abandonment is visible on the profile. Every plan ships with a minimum viable week.

**3. The newsletter — only if the promise can be paid.**

```bash
python3 scripts/newsletter_planner.py --followers 1800 --cadence biweekly \
  --minutes-per-month 420 --pillar "..." --output human
```

Refuses below LinkedIn's published 150-follower evaluation floor, and refuses a cadence
whose six-month cost exceeds the budget. Emits a 12-issue arc rotating issue types across
pillars, and a stop rule written before issue one.

## Rules

- **One objective.** Two objectives serve neither; the audiences overlap less than they look.
- **The exclusion list is the positioning.** Refuse to skip it.
- **Price the week from a bad week, not a good one.**
- **Consistency over volume.** A skipped week is fine; a skipped month resets you.
- **Review the brief quarterly, not weekly.** A brief revised monthly is a mood.

## Scripts

| Script | Role |
|---|---|
| [`scripts/positioning_brief.py`](scripts/positioning_brief.py) | Validates objective, audience, 2-4 proof-backed pillars, and the exclusion list; emits observable 90-day criteria. |
| [`scripts/cadence_planner.py`](scripts/cadence_planner.py) | Prices the week in minutes, allocates by stage, refuses over-budget targets, emits the minimum viable week. |
| [`scripts/newsletter_planner.py`](scripts/newsletter_planner.py) | Eligibility + six-month sustainability gate, 12-issue arc across pillars, stop rule. |

## References and assets

- [`references/objective_to_pillars.md`](references/objective_to_pillars.md) — the six objectives and the pillar arithmetic (7 sources)
- [`references/cadence_and_consistency.md`](references/cadence_and_consistency.md) — what a post really costs and why the floor exists (7 sources)
- [`references/newsletter_playbook.md`](references/newsletter_playbook.md) — eligibility, cadence as a promise, the stop rule (7 sources)

- [`assets/positioning_brief_template.md`](assets/positioning_brief_template.md) — fillable brief
- [`assets/example_brief.json`](assets/example_brief.json) — a passing brief, for the validator

## Distinct from

- **`linkedin-content`** — drafts and lints individual posts. This decides what they are about
  and how many there are. Posts without pillars are noise; offer this first, never chain silently.
- **`linkedin-analytics`** — tells you what happened. This decides what to do next.
- **`marketing-skill/content-strategy`** — company-level content marketing. This is one
  person's own presence.

---

**Version:** 1.0.0

User prompt template

Fill in the variables and send it to run the skill: {{variables}}

user-template.txt

Variables

Name Required Description Example

Full skill configuration

The standard .aiskill file in JSON and YAML.

linkedin-strategy.aiskill (JSON)
{
  "format": "aiskill/v1",
  "skill": {
    "name": "linkedin-strategy",
    "slug": "linkedin-strategy",
    "version": "1.0.0",
    "description": "Use when someone needs a LinkedIn plan rather than a post — content pillars, positioning for a career change or consulting or thought leadership, a sustainable posting cadence, or a newsletter decision. Triggers on \"what should I post about\", \"how often should I post\", \"LinkedIn content strategy\", \"should I start a LinkedIn newsletter\", \"grow my following\", \"90-day plan\". Validates the positioning brief, sizes the week against real hours and refuses a plan that will not survive week five, and gates a newsletter against eligibility and a six-month cadence commitment.",
    "category": "Marketing",
    "tags": [
      "marketing-growth"
    ],
    "platforms": [
      "chatgpt",
      "claude-code",
      "cursor"
    ],
    "tested_environment": "Agent Skills convention (SKILL.md) — works with Claude Code, Cursor, ChatGPT/Codex and compatible agents",
    "license": "MIT"
  },
  "prompts": {
    "system": "# LinkedIn Strategy — brief, cadence, newsletter\r\n\r\nThree decisions, in this order. Out of order is why most LinkedIn efforts produce a feed of\r\nunrelated observations and stop in week five.\r\n\r\n## Workflow\r\n\r\n**1. The brief — an editorial constitution, not a wish.** Walk the five questions one at a\r\ntime, each with a recommended answer, then validate:\r\n\r\n```bash\r\npython3 scripts/positioning_brief.py --input brief.json --output human\r\n```\r\n\r\nIt refuses on the two things that make everything downstream impossible: an objective that\r\nis not one of the six real ones (`career-change`, `consulting`, `thought-leadership`,\r\n`hiring`, `fundraising`, `community`), and an audience too broad to exclude anyone. It also\r\nrefuses fewer than two exclusions — **a positioning that excludes nothing is availability.**\r\n\r\nPillars: two to four, shares summing to 100, at least one backed by proof that already\r\nexists, at least one at 10-20% as the experimental slot. Every pillar needs a \"why you\"; if\r\nanyone could post it, cut it.\r\n\r\nThe script emits observable 90-day criteria. Follower count is deliberately absent — it moves\r\nfor reasons unrelated to whether the objective is being met.\r\n\r\n**2. The cadence — priced against a bad week.**\r\n\r\n```bash\r\npython3 scripts/cadence_planner.py --minutes 240 --stage starting --target-posts 3 --output human\r\n```\r\n\r\nExit 0 fits / 2 below the 90-minute floor / 3 over budget with the overage named. Every\r\nactivity is priced in minutes including the reply window, which is part of the post and not\r\nan extra. Allocation shifts with stage: from a standing start **60% of the budget belongs in\r\nother people's comment sections**, because a post published to nobody reaches nobody.\r\n\r\nBelow 90 minutes a week it refuses to plan a posting schedule and returns a comment-only\r\nweek: a cadence abandoned in week five is worse than one never started, because the\r\nabandonment is visible on the profile. Every plan ships with a minimum viable week.\r\n\r\n**3. The newsletter — only if the promise can be paid.**\r\n\r\n```bash\r\npython3 scripts/newsletter_planner.py --followers 1800 --cadence biweekly \\\r\n  --minutes-per-month 420 --pillar \"...\" --output human\r\n```\r\n\r\nRefuses below LinkedIn's published 150-follower evaluation floor, and refuses a cadence\r\nwhose six-month cost exceeds the budget. Emits a 12-issue arc rotating issue types across\r\npillars, and a stop rule written before issue one.\r\n\r\n## Rules\r\n\r\n- **One objective.** Two objectives serve neither; the audiences overlap less than they look.\r\n- **The exclusion list is the positioning.** Refuse to skip it.\r\n- **Price the week from a bad week, not a good one.**\r\n- **Consistency over volume.** A skipped week is fine; a skipped month resets you.\r\n- **Review the brief quarterly, not weekly.** A brief revised monthly is a mood.\r\n\r\n## Scripts\r\n\r\n| Script | Role |\r\n|---|---|\r\n| [`scripts/positioning_brief.py`](scripts/positioning_brief.py) | Validates objective, audience, 2-4 proof-backed pillars, and the exclusion list; emits observable 90-day criteria. |\r\n| [`scripts/cadence_planner.py`](scripts/cadence_planner.py) | Prices the week in minutes, allocates by stage, refuses over-budget targets, emits the minimum viable week. |\r\n| [`scripts/newsletter_planner.py`](scripts/newsletter_planner.py) | Eligibility + six-month sustainability gate, 12-issue arc across pillars, stop rule. |\r\n\r\n## References and assets\r\n\r\n- [`references/objective_to_pillars.md`](references/objective_to_pillars.md) — the six objectives and the pillar arithmetic (7 sources)\r\n- [`references/cadence_and_consistency.md`](references/cadence_and_consistency.md) — what a post really costs and why the floor exists (7 sources)\r\n- [`references/newsletter_playbook.md`](references/newsletter_playbook.md) — eligibility, cadence as a promise, the stop rule (7 sources)\r\n\r\n- [`assets/positioning_brief_template.md`](assets/positioning_brief_template.md) — fillable brief\r\n- [`assets/example_brief.json`](assets/example_brief.json) — a passing brief, for the validator\r\n\r\n## Distinct from\r\n\r\n- **`linkedin-content`** — drafts and lints individual posts. This decides what they are about\r\n  and how many there are. Posts without pillars are noise; offer this first, never chain silently.\r\n- **`linkedin-analytics`** — tells you what happened. This decides what to do next.\r\n- **`marketing-skill/content-strategy`** — company-level content marketing. This is one\r\n  person's own presence.\r\n\r\n---\r\n\r\n**Version:** 1.0.0",
    "user_template": ""
  },
  "variables": [],
  "install": {
    "steps": [
      {
        "title": "Download & unzip",
        "detail": "Download the .zip package from SkillVault and unzip it. The linkedin-strategy/ folder contains SKILL.md plus any companion scripts, references and assets."
      },
      {
        "title": "Copy into your agent skills directory",
        "detail": "Move the folder into your agent's skills directory — e.g. ~/.claude/skills/ (Claude Code), .codex/skills/, .cursor/skills/ or your project's .claude/skills/ folder — then restart or reload the session."
      },
      {
        "title": "Use it",
        "detail": "Describe the task in natural language; the agent loads the skill automatically when the request matches the skill description."
      }
    ]
  },
  "usage": {
    "steps": []
  },
  "metadata": {
    "author": "SkillVault",
    "source": "https://skillvault.top/skills/linkedin-strategy",
    "exported_at": "2026-11-03T07:42:28.809Z"
  }
}
linkedin-strategy.aiskill (YAML)
format: aiskill/v1
skill:
  name: linkedin-strategy
  slug: linkedin-strategy
  version: 1.0.0
  description: >-
    Use when someone needs a LinkedIn plan rather than a post — content pillars, positioning for a
    career change or consulting or thought leadership, a sustainable posting cadence, or a
    newsletter decision. Triggers on "what should I post about", "how often should I post",
    "LinkedIn content strategy", "should I start a LinkedIn newsletter", "grow my following",
    "90-day plan". Validates the positioning brief, sizes the week against real hours and refuses a
    plan that will not survive week five, and gates a newsletter against eligibility and a six-month
    cadence commitment.
  category: Marketing
  tags:
    - marketing-growth
  platforms:
    - chatgpt
    - claude-code
    - cursor
  tested_environment: >-
    Agent Skills convention (SKILL.md) — works with Claude Code, Cursor, ChatGPT/Codex and
    compatible agents
  license: MIT
prompts:
  system: "# LinkedIn Strategy — brief, cadence, newsletter\r\n\r\nThree decisions, in this order. Out of order is why most LinkedIn efforts produce a feed of\r\nunrelated observations and stop in week five.\r\n\r\n## Workflow\r\n\r\n**1. The brief — an editorial constitution, not a wish.** Walk the five questions one at a\r\ntime, each with a recommended answer, then validate:\r\n\r\n```bash\r\npython3 scripts/positioning_brief.py --input brief.json --output human\r\n```\r\n\r\nIt refuses on the two things that make everything downstream impossible: an objective that\r\nis not one of the six real ones (`career-change`, `consulting`, `thought-leadership`,\r\n`hiring`, `fundraising`, `community`), and an audience too broad to exclude anyone. It also\r\nrefuses fewer than two exclusions — **a positioning that excludes nothing is availability.**\r\n\r\nPillars: two to four, shares summing to 100, at least one backed by proof that already\r\nexists, at least one at 10-20% as the experimental slot. Every pillar needs a \"why you\"; if\r\nanyone could post it, cut it.\r\n\r\nThe script emits observable 90-day criteria. Follower count is deliberately absent — it moves\r\nfor reasons unrelated to whether the objective is being met.\r\n\r\n**2. The cadence — priced against a bad week.**\r\n\r\n```bash\r\npython3 scripts/cadence_planner.py --minutes 240 --stage starting --target-posts 3 --output human\r\n```\r\n\r\nExit 0 fits / 2 below the 90-minute floor / 3 over budget with the overage named. Every\r\nactivity is priced in minutes including the reply window, which is part of the post and not\r\nan extra. Allocation shifts with stage: from a standing start **60% of the budget belongs in\r\nother people's comment sections**, because a post published to nobody reaches nobody.\r\n\r\nBelow 90 minutes a week it refuses to plan a posting schedule and returns a comment-only\r\nweek: a cadence abandoned in week five is worse than one never started, because the\r\nabandonment is visible on the profile. Every plan ships with a minimum viable week.\r\n\r\n**3. The newsletter — only if the promise can be paid.**\r\n\r\n```bash\r\npython3 scripts/newsletter_planner.py --followers 1800 --cadence biweekly \\\r\n  --minutes-per-month 420 --pillar \"...\" --output human\r\n```\r\n\r\nRefuses below LinkedIn's published 150-follower evaluation floor, and refuses a cadence\r\nwhose six-month cost exceeds the budget. Emits a 12-issue arc rotating issue types across\r\npillars, and a stop rule written before issue one.\r\n\r\n## Rules\r\n\r\n- **One objective.** Two objectives serve neither; the audiences overlap less than they look.\r\n- **The exclusion list is the positioning.** Refuse to skip it.\r\n- **Price the week from a bad week, not a good one.**\r\n- **Consistency over volume.** A skipped week is fine; a skipped month resets you.\r\n- **Review the brief quarterly, not weekly.** A brief revised monthly is a mood.\r\n\r\n## Scripts\r\n\r\n| Script | Role |\r\n|---|---|\r\n| [`scripts/positioning_brief.py`](scripts/positioning_brief.py) | Validates objective, audience, 2-4 proof-backed pillars, and the exclusion list; emits observable 90-day criteria. |\r\n| [`scripts/cadence_planner.py`](scripts/cadence_planner.py) | Prices the week in minutes, allocates by stage, refuses over-budget targets, emits the minimum viable week. |\r\n| [`scripts/newsletter_planner.py`](scripts/newsletter_planner.py) | Eligibility + six-month sustainability gate, 12-issue arc across pillars, stop rule. |\r\n\r\n## References and assets\r\n\r\n- [`references/objective_to_pillars.md`](references/objective_to_pillars.md) — the six objectives and the pillar arithmetic (7 sources)\r\n- [`references/cadence_and_consistency.md`](references/cadence_and_consistency.md) — what a post really costs and why the floor exists (7 sources)\r\n- [`references/newsletter_playbook.md`](references/newsletter_playbook.md) — eligibility, cadence as a promise, the stop rule (7 sources)\r\n\r\n- [`assets/positioning_brief_template.md`](assets/positioning_brief_template.md) — fillable brief\r\n- [`assets/example_brief.json`](assets/example_brief.json) — a passing brief, for the validator\r\n\r\n## Distinct from\r\n\r\n- **`linkedin-content`** — drafts and lints individual posts. This decides what they are about\r\n  and how many there are. Posts without pillars are noise; offer this first, never chain silently.\r\n- **`linkedin-analytics`** — tells you what happened. This decides what to do next.\r\n- **`marketing-skill/content-strategy`** — company-level content marketing. This is one\r\n  person's own presence.\r\n\r\n---\r\n\r\n**Version:** 1.0.0"
  user_template: ""
variables: []
install:
  steps:
    - title: Download & unzip
      detail: >-
        Download the .zip package from SkillVault and unzip it. The linkedin-strategy/ folder
        contains SKILL.md plus any companion scripts, references and assets.
    - title: Copy into your agent skills directory
      detail: >-
        Move the folder into your agent's skills directory — e.g. ~/.claude/skills/ (Claude Code),
        .codex/skills/, .cursor/skills/ or your project's .claude/skills/ folder — then restart or
        reload the session.
    - title: Use it
      detail: >-
        Describe the task in natural language; the agent loads the skill automatically when the
        request matches the skill description.
usage:
  steps: []
metadata:
  author: SkillVault
  source: https://skillvault.top/skills/linkedin-strategy
  exported_at: "2026-11-03T07:42:28.809Z"

Installation guide

  1. 1

    Download & unzip

    Download the .zip package from SkillVault and unzip it. The linkedin-strategy/ folder contains SKILL.md plus any companion scripts, references and assets.

  2. 2

    Copy into your agent skills directory

    Move the folder into your agent's skills directory — e.g. ~/.claude/skills/ (Claude Code), .codex/skills/, .cursor/skills/ or your project's .claude/skills/ folder — then restart or reload the session.

  3. 3

    Use it

    Describe the task in natural language; the agent loads the skill automatically when the request matches the skill description.

How to use

Platform compatibility

ChatGPT GPTs

OpenAI

Paste the system prompt into the GPT "Instructions" field and keep the user template as your starter message.

Official docs

Claude Code

Anthropic

Save the exported .aiskill JSON as a skill file in your project or paste the system prompt into CLAUDE.md / a slash-command markdown file.

Official docs

Cursor

Anysphere

Copy the system prompt into .cursor/rules/*.mdc (or Project Rules in Settings) and reference the user template in your agent prompts.

Official docs

Related skills