Skip to content
Back to skills

Linkedin

ASecurity

Generate engaging LinkedIn posts with best practices, visual identity, and vault integration. Triggers: "linkedin post" | "write linkedin" | "generate linkedin" | "linkedin content" | "post for linkedin" | "create a linkedin post" | "draft a linkedin post" | "write a post for linkedin" | "linkedin update".

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 23, 2026
ai-agentspythongobashsql

Security analysis

A100/100

Scanned September 23, 2026

npx -y skills add Roxabi/roxabi-plugins --skill linkedin --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Linkedin?

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

Security grade badge for Linkedin
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/roxabi-linkedin/badge)](https://www.skillsdirectory.com/skills/roxabi-linkedin)

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: linkedin-post-generator
description: 'Generate engaging LinkedIn posts with best practices, visual identity, and vault integration. Triggers: "linkedin post" | "write linkedin" | "generate linkedin" | "linkedin content" | "post for linkedin" | "create a linkedin post" | "draft a linkedin post" | "write a post for linkedin" | "linkedin update".'
version: 0.1.0
allowed-tools: Read, Write, Bash, Glob, Grep
---

# LinkedIn Post Generator

**Goal:** Generate a publish-ready LinkedIn post from a topic or idea, following best practices and the author's visual identity.

Let:
  LC := ~/.roxabi-vault/config/linkedin.json    — author config (optional)
  CH := ~/.roxabi-vault/config/visual-charter.json — visual charter (optional)
  VC := ~/.roxabi-vault/content/               — post output dir

## Phase 1 — Configuration

Load LC if ∃: author name, default language, tone, hashtag sets, post signature. ¬LC → defaults (professional-casual tone, English). Load CH if ∃.

## Phase 2 — Topic Input

∃ topic in $ARGUMENTS → use it. Otherwise → ask user: topic/idea. → present multi-select for preferences: tone override, target audience, content type (story/insight/question/how-to), hashtag set.

## Phase 3 — Research (Optional)

```bash
python3 -c "
import sys
sys.path.insert(0, '$CLAUDE_PLUGIN_ROOT')
from _sdk_bootstrap import ensure_sdk_on_path
ensure_sdk_on_path('$CLAUDE_PLUGIN_ROOT')
from roxabi_sdk.paths import vault_healthy
print('VAULT_OK' if vault_healthy() else 'VAULT_UNAVAILABLE')
"
```

VAULT_OK → search related content:
```bash
python3 -c "
import sqlite3, json
from pathlib import Path
home = Path.home() / '.roxabi-vault'
conn = sqlite3.connect(str(home / 'vault.db'))
rows = conn.execute(
    'SELECT title, substr(content, 1, 200) FROM entries WHERE category = \"content\" ORDER BY created_at DESC LIMIT 5'
).fetchall()
conn.close()
for r in rows: print(json.dumps({'title': r[0], 'preview': r[1]}))
"
```

VAULT_UNAVAILABLE → skip; generate from topic alone.

## Phase 4 — Generate Post

```bash
cat "$CLAUDE_PLUGIN_ROOT/references/linkedin_best_practices.md"
cat "$CLAUDE_PLUGIN_ROOT/references/emoji_guide.md"
```

Apply rules: 1300-2000 chars; strong hook (pattern interrupt/bold claim/question/story opener); 1-3 sentence paragraphs; line breaks between paragraphs; bullet/numbered lists where appropriate; 3-5 hashtags at end; clear CTA in closing; emojis sparingly per guide. ∃CH → apply tone/voice. ∃LC signature → append.

## Phase 5 — Review

Present post in code block. Show stats: character count, word count, estimated read time, hashtag count. → present choice
- **Publish as-is** → Phase 6
- **Edit** → describe changes → regenerate
- **Regenerate** → different angle → Phase 4
- **Cancel** → discard

## Phase 6 — Save

```bash
mkdir -p -m 700 ~/.roxabi-vault/content
timestamp=$(date +%Y%m%d_%H%M%S)
# Write as: linkedin_${timestamp}.md
```

Write with YAML frontmatter:
```yaml
---
type: linkedin-post
title: "<topic summary>"
created: "<ISO 8601 timestamp>"
status: draft
hashtags: [<hashtags used>]
---
```
Followed by post body.

## Phase 7 — Index (Optional)

VAULT_OK → index:
```bash
python3 -c "
import sqlite3, json
from pathlib import Path
from datetime import datetime
home = Path.home() / '.roxabi-vault'
conn = sqlite3.connect(str(home / 'vault.db'))
conn.execute('''INSERT INTO entries (category, type, title, content, metadata, created_at)
    VALUES ('content', 'linkedin-post', ?, ?, '{}', ?)''',
    ('<title>', '<full post content>', datetime.now().isoformat()))
conn.commit()
conn.close()
"
```
VAULT_UNAVAILABLE → skip; file saved locally.

## Phase 8 — Visual Companion

To generate a matching visual, run the **image-prompt** skill next.

$ARGUMENTS

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.

Comments

Loading comments…

Newsletter

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