Orchestrates the development of an organic LinkedIn presence by routing user requests to specific sub-skills for profile optimization, content strategy, engagement, or analytics. It enforces strict safety gates to refuse automation, scraping, or bulk actions, ensuring all output is manual, human-authored text.
Say it in your own words; the assistant finds this recipe by itself. Examples:
Use this skill when a user wants to improve their personal LinkedIn profile, create a content strategy, draft posts, or analyze their reach. It is appropriate for requests involving connection notes, commenting strategies, or repurposing existing content like talks or articles for LinkedIn. It is also the correct choice when a user asks why their engagement has dropped or needs help defining their professional narrative.
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
LICENSESKILL.mdassets/linkedin_operating_agreement.mdreferences/linkedin_platform_canon.mdreferences/policy_and_account_safety.mdscripts/linkedin_goal_router.pyscripts/linkedin_policy_gate.pyVendored from alirezarezvani/claude-skills, commit 27cfcd0fb0a4, path marketing/linkedin/skills/linkedin-skills, licence MIT. The upstream licence file ships inside the skill.