write-linkedin-post
Write or develop a LinkedIn post. Use ALWAYS for LinkedIn content - writing, drafting, developing ideas into drafts, or editing.
Install
npx skills add https://github.com/techwolf-ai/ai-first-toolkit/tree/main/plugins/content-studio/skills/write-linkedin-post
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install techwolf-ai-ai-first-toolkit@llmmart
git clone https://github.com/techwolf-ai/ai-first-toolkit.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole techwolf-ai/ai-first-toolkit collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Write LinkedIn Post
You are helping write a LinkedIn post for the author.
Before Writing (MANDATORY)
You MUST complete these steps before writing ANY content:
- Run
./scripts/print-published.sh linkedin-postto read ALL published posts in one call- This is critical to avoid repeating topics or angles already covered
- Note the core insights and data points already used
- Identify opportunities to reference or build on previous posts
- Pay attention to recent patterns (last 5-10 posts) to avoid repetitive structures, hooks, or phrases
- Read
guidelines/linkedin.mdfor style rules - Read
references/professional-profile.mdfor background
If developing an idea-stage post: Check if the idea's core insight or data points overlap with published posts. If so, either:
- Find a genuinely different angle
- Explicitly build on the previous post ("In my last post I discussed X. Here's the flip side...")
- Recommend against developing the idea
Avoid Repetitive Patterns
When reading recent posts, actively note and vary:
Hooks: If recent posts start with similar patterns, try a different structure Sentence patterns: Vary rhythm - don't always use short punchy sentences or always use longer flowing ones Closing lines: Don't repeat formulas Transition phrases: Rotate between "Here's what...", "The pattern...", "This matters because...", etc. Structure: If recent posts all use problem-solution-takeaway, try a different arc
The goal is a consistent voice with varied execution. Each post should feel fresh while still sounding like the author.
Style Requirements
- Target word count per
guidelines/linkedin.md(typically 150-250 words) - Personal hook first (under 210 characters before "see more")
- Specific > abstract
- Conversational tone
- No hype words ("revolutionary", "game-changing")
Hook Priority
- Personal anecdote
- Company experience
- Surprising outcome
- Counterintuitive framing
Process
- If given a topic, develop it into a draft
- If given an existing idea file (search with
./scripts/search-posts.sh), develop the content - Always check word count against target
- Save to content/posts/ with type: linkedin-post, stage: 02-drafts
Validation
After saving the draft, run the word count checker:
scripts/check-word-count.sh <yaml-file>
Adjust the content if the word count is outside the 150-250 target.
Sub-Agent Review
Before presenting the final draft, spawn a sub-agent to review with fresh eyes. The reviewer should:
- Check voice consistency against
guidelines/linkedin.md - Verify the hook works in the first 210 characters
- Flag any overlap with recently published posts
- Check for hype words or generic phrasing
Incorporate the reviewer's feedback before finalizing.
Creating New Files
Get timestamp first:
date -u +"%Y%m%d-%H%M%S" # For slug
date -u +"%Y-%m-%dT%H:%M:%S.000Z" # For created/lastUpdated
Files (ai-first-toolkit)
-
scripts
-
check-word-count.sh 958 B
#!/bin/bash # Validates LinkedIn post word count is within target range (150-250 words). # Usage: check-word-count.sh <yaml-file> FILE="$1" if [ -z "$FILE" ]; then echo "Usage: check-word-count.sh <yaml-file>" exit 1 fi if [ ! -f "$FILE" ]; then echo "FAIL: File not found: $FILE" exit 1 fi # Extract content field (everything after "content: |-" until next top-level key or EOF) CONTENT=$(sed -n '/^content: |-/,/^[a-zA-Z]/{ /^content: |-/d; /^[a-zA-Z]/d; p; }' "$FILE") if [ -z "$CONTENT" ]; then echo "FAIL: No content field found in $FILE" exit 1 fi WORD_COUNT=$(echo "$CONTENT" | wc -w | tr -d ' ') if [ "$WORD_COUNT" -lt 150 ]; then echo "WARN: $WORD_COUNT words (target: 150-250). Too short by $((150 - WORD_COUNT)) words." exit 1 elif [ "$WORD_COUNT" -gt 250 ]; then echo "WARN: $WORD_COUNT words (target: 150-250). Too long by $((WORD_COUNT - 250)) words." exit 1 else echo "PASS: $WORD_COUNT words (target: 150-250)" fi
-
-
SKILL.md 3.1 KB
--- name: write-linkedin-post description: Write or develop a LinkedIn post. Use ALWAYS for LinkedIn content - writing, drafting, developing ideas into drafts, or editing. --- # Write LinkedIn Post You are helping write a LinkedIn post for the author. ## Before Writing (MANDATORY) **You MUST complete these steps before writing ANY content:** 1. Run `./scripts/print-published.sh linkedin-post` to read ALL published posts in one call - This is critical to avoid repeating topics or angles already covered - Note the core insights and data points already used - Identify opportunities to reference or build on previous posts - **Pay attention to recent patterns** (last 5-10 posts) to avoid repetitive structures, hooks, or phrases 2. Read `guidelines/linkedin.md` for style rules 3. Read `references/professional-profile.md` for background **If developing an idea-stage post:** Check if the idea's core insight or data points overlap with published posts. If so, either: - Find a genuinely different angle - Explicitly build on the previous post ("In my last post I discussed X. Here's the flip side...") - Recommend against developing the idea ## Avoid Repetitive Patterns When reading recent posts, actively note and vary: **Hooks:** If recent posts start with similar patterns, try a different structure **Sentence patterns:** Vary rhythm - don't always use short punchy sentences or always use longer flowing ones **Closing lines:** Don't repeat formulas **Transition phrases:** Rotate between "Here's what...", "The pattern...", "This matters because...", etc. **Structure:** If recent posts all use problem-solution-takeaway, try a different arc The goal is a consistent voice with varied execution. Each post should feel fresh while still sounding like the author. ## Style Requirements - Target word count per `guidelines/linkedin.md` (typically 150-250 words) - Personal hook first (under 210 characters before "see more") - Specific > abstract - Conversational tone - No hype words ("revolutionary", "game-changing") ## Hook Priority 1. Personal anecdote 2. Company experience 3. Surprising outcome 4. Counterintuitive framing ## Process 1. If given a topic, develop it into a draft 2. If given an existing idea file (search with `./scripts/search-posts.sh`), develop the content 3. Always check word count against target 4. Save to content/posts/ with type: linkedin-post, stage: 02-drafts ## Validation After saving the draft, run the word count checker: ```bash scripts/check-word-count.sh <yaml-file> ``` Adjust the content if the word count is outside the 150-250 target. ## Sub-Agent Review Before presenting the final draft, spawn a sub-agent to review with fresh eyes. The reviewer should: - Check voice consistency against `guidelines/linkedin.md` - Verify the hook works in the first 210 characters - Flag any overlap with recently published posts - Check for hype words or generic phrasing Incorporate the reviewer's feedback before finalizing. ## Creating New Files Get timestamp first: ```bash date -u +"%Y%m%d-%H%M%S" # For slug date -u +"%Y-%m-%dT%H:%M:%S.000Z" # For created/lastUpdated ```
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.