linkedin-post-generatorlisted
Install: claude install-skill Roxabi/roxabi-plugins
# 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 → DP(B): topic/idea. → DP(C) 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 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