Use when someone wants to grow an organic LinkedIn presence — a content strategy for a career change or consulting or thought leadership, a rewritten profile or headline, post drafts and hooks, a posting cadence or newsletter plan, connection notes and outreach, a commenting strategy, repurposing an article or talk into posts, or a read on why their reach dropped. Triggers on "grow my LinkedIn", "fix my headline", "write a LinkedIn post", "what should I post about", "LinkedIn strategy", "connection request", "my reach dropped". Forks context to route to one of five sub-skills, and refuses automation, scraping, pods, and bulk DMs before any drafting starts.
Portability + safety: 17 stdlib-only Python scripts. No LinkedIn credentials, no API calls, no scraping, nothing auto-sent. Every output is text the account holder posts themselves — automated posting, connecting, and commenting are prohibited by LinkedIn's User Agreement §8.2, and a restricted account ends the whole project.
Building an authentic presence over months, not generating a post. The five lanes cover what actually moves: who you are (profile), what you stand for (strategy), what you publish (content), who you talk to (engagement), and what any of it did (analytics).
python3 scripts/linkedin_policy_gate.py --text "<the user's own words>" --output human
python3 scripts/linkedin_goal_router.py --text "<the goal>" --output human
Exit 0 routes — invoke that lane, surfacing any prerequisite as a question first.
Exit 2 is ambiguous — ask one question naming both candidates, with a recommendation.
Exit 3 has no signal — ask what they want to walk away with, rather than guessing.
| Lane | Typical ask |
|---|---|
| linkedin-profile | "fix my headline", "my profile gets views but nothing happens" |
| linkedin-strategy | "what should I post about", "how often", "should I start a newsletter" |
| linkedin-content | "write this post", "turn my talk into posts", "is this hook any good" |
| linkedin-engagement | "who should I comment on", "write a connection note" |
| linkedin-analytics | "why did reach drop", "what's working", "should I test this" |
One at a time, each with a recommended answer. Stop as soon as the lane can run honestly.
/cs:grill-linkedin walks all five with the recommendation and the canon behind each.
| Script | Role |
|---|---|
| scripts/linkedin_policy_gate.py | ALLOW / CONSTRAIN / REFUSE against User Agreement §8.2 + Community Policies. 7 refusal rules, each with a substitute. |
| scripts/linkedin_goal_router.py | Deterministic five-lane classifier: route (0) / ask (2) / no-signal (3), with cross-lane prerequisites. |
references/linkedin_platform_canon.md — how the feed ranks, evidence-graded (7 sources)references/policy_and_account_safety.md — §8.2, prohibited software, restriction triggers (7 sources)assets/linkedin_operating_agreement.md — the standing rules in one page, agreed before work startsmarketing-skill/x-twitter-growth — X/Twitter mechanics. Different platform and rules.marketing-skill/social-content / social-media-manager — multi-platform brand
calendars. This is one person's presence on one platform, in depth.marketing-skill/social-media-analyzer — cross-platform campaign reporting.Version: 1.0.0 · 5 lanes · 17 stdlib scripts · nothing auto-sent
Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/linkedin-skills · pinned to the source commit
# Run from your project root
git clone https://github.com/alirezarezvani/claude-skills.git .skillboard-tmp
git -C .skillboard-tmp checkout 19392f7a08264ed00486a251f5b2098321771f94
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/.gemini/skills/linkedin-skills" ".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/alirezarezvani/claude-skills.git .skillboard-tmp
git -C .skillboard-tmp checkout 19392f7a08264ed00486a251f5b2098321771f94
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/.gemini/skills/linkedin-skills" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/linkedin-skills
Scanner static-checks@0.1.0 · commit 19392f7a0826. 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.