# LinkedIn Thought Leadership Plugin (v2.1.0) Full-spectrum LinkedIn content engine — short-form feed posts, carousels, video scripts, and long-form newsletter editions — with the January 2026 360Brew algorithm baked in. v2.0.0 consolidated the surface (27 commands → 24, 16 agents → 14) while adding the long-form `/linkedin:newsletter` orchestrator + two longform-quality gate agents (`fact-checker`, `persona-reviewer`). **v2.1.0** adds two new gates BEFORE prose to `/linkedin:newsletter` — Step 2.5 (skeleton + section pitch with operator-gate + persona-skjelett-sweep) and Step 3a (spine prose with operator-gate) — plus a third `persona-reviewer` mode (`skjelett`), encoding the Maskinrommet writing-contract §A discipline (premiss / problem / anbefaling / gevinst / vei videre) into the pipeline itself. Pipeline grows from 11 to 13 phases; commands and agents unchanged in count (24, 14). ## Architecture - **State file:** `~/.claude/linkedin-thought-leadership.local.md` (YAML frontmatter, auto-initialized from `config/state-file.template.md`) - **State updater:** `hooks/scripts/state-updater.mjs` — deterministic state mutations (post tracking, streak, content history pruning). Pure functions, tested, no AI involvement - **Clipboard helper:** `hooks/scripts/clipboard-helper.mjs` — cross-platform clipboard integration (macOS `pbcopy`, Linux `xclip`/`xsel`, WSL `clip.exe`). All content commands auto-copy to clipboard - **iCal generator:** `hooks/scripts/ical-generator.mjs` — RFC 5545 calendar file generation for batch scheduling. Standalone CLI + importable module - **Post queue:** `assets/drafts/queue.json` (managed by `hooks/scripts/queue-manager.mjs`) - **Analytics CLI:** `scripts/analytics/` (TypeScript, requires `tsx` and `npm install`) - **Analytics data:** `assets/analytics/` (gitignored) ## Hooks 9 hooks across 7 events. All Node.js (.mjs). PreToolUse/PostToolUse hooks use parameterized `content-gatekeeper.mjs` with `isLinkedInContent()` check. | Event | Purpose | |-------|---------| | `SessionStart` | Load state, REMEMBER.md, milestone tracker | | `PreToolUse` (Write\|Edit) | Content quality gate, voice guardian, topic rotation gate | | `Stop` | State update, pre-publish reminders, content history | | `UserPromptSubmit` | LinkedIn context enrichment (three-tier matching) | | `PostToolUse` (Write) | Post-creation automation (5x5x5, posting time) | | `PreCompact` | Preserve LinkedIn context during compaction | | `Notification` | Posting reminders (rate-limited 30min) | **Session markers:** `/tmp/linkedin-hooks/session-active` (Stop hook gating, 12h staleness). **Shared modules:** `linkedin-content-filter.mjs`, `queue-manager.mjs`, `personalization-score.mjs`, `state-updater.mjs`, `clipboard-helper.mjs`. **State updates:** Post tracking, streak management, and content history are handled deterministically by `state-updater.mjs` (called from Stop hook and commands). Content history entries older than 90 days are auto-pruned at session start. **Hook editing:** Edit `hooks/hooks.template.json` + `hooks/prompts/*.md`, then run `python3 hooks/scripts/compile-hooks.py`. Do not edit `hooks.json` directly. Prompts are loaded at runtime by gatekeeper scripts; the compile step is only needed when adding `type: prompt` hooks. ## Commands (24) All content commands (post, quick, react, pipeline, first-post, video, multiplatform, carousel, newsletter) auto-copy output to clipboard via `clipboard-helper.mjs`. Interactive steps are minimized — angle, format, and post type are inferred from context, with max 2 questions per post. **v2.0.0 net change:** 5 commands removed (`templates`, `publish`, `authority`, `collab`, `speaking` — absorbed into `quick`, `calendar`, `strategy`, `outreach` respectively) + 2 commands added (`newsletter`, `outreach`) = 27 → 24. | Command | Purpose | |---------|---------| | `/linkedin` | Router — status line + command menu | | `/linkedin:onboarding` | Multi-step onboarding wizard (profile → setup → first-post) | | `/linkedin:first-post` | First-post accelerator (10 min) | | `/linkedin:setup` | Guided personalization setup | | `/linkedin:react` | URL-to-post pipeline | | `/linkedin:post` | Full post creation (10-15 min) | | `/linkedin:quick` | 5-minute quick post (3-line formula) + 8 post-type templates | | `/linkedin:pipeline` | Full end-to-end content pipeline | | `/linkedin:newsletter` | Long-form orchestrator: newsletter edition / essay / series article — multi-session 13-phase pipeline with **skeleton + spine-prose gates BEFORE prose (v2.1)** and fact-check + persona-sweep BEFORE lock | | `/linkedin:batch` | Create a full week of content | | `/linkedin:calendar` | View/manage post scheduling queue + publish action (mark scheduled posts as published) | | `/linkedin:carousel` | Structured multi-slide carousel generator | | `/linkedin:video` | Video script generator (30s-2min) | | `/linkedin:multiplatform` | Adapt content for other platforms (short-form/cross-format; long-form → `/linkedin:newsletter`) | | `/linkedin:analyze` | Content/performance analysis | | `/linkedin:audit` | Periodic content strategy audit | | `/linkedin:import` | Import CSV export → structured JSON (delegates analysis to `/linkedin:report`) | | `/linkedin:report` | Generate weekly performance report | | `/linkedin:ab-test` | Design and manage A/B content tests | | `/linkedin:strategy` | Growth strategy + authority building (phase guidance, trajectory, signature content compounding) | | `/linkedin:competitive` | Competitive analysis of niche | | `/linkedin:monetize` | Monetization strategy and funnels (unlocks at ~1K followers) | | `/linkedin:outreach` | Outreach orchestrator — collaborations + speaking opportunities (unlocks at ~1K followers) | | `/linkedin:profile` | 360Brew profile optimization | ## Agents (14) | Agent | Model | Color | Responsibility | |-------|-------|-------|----------------| | `content-optimizer` | Sonnet | Blue | Optimize existing posts | | `strategy-advisor` | Sonnet | Green | Growth recommendations | | `analytics-interpreter` | Sonnet | Yellow | Audience pattern analysis + weekly/monthly performance reports (interpret/report modes) | | `engagement-coach` | Sonnet | Magenta | 5x5x5 + first-hour tactics + CEA commenting + target selection | | `content-planner` | Sonnet | Cyan | Content audit + weekly/monthly plans | | `network-builder` | Sonnet | Teal | Strategic networking + outreach | | `content-repurposer` | Sonnet | Purple | Format conversion + evergreen refresh | | `trend-spotter` | Sonnet | White | Trending topics + opportunity scores | | `voice-trainer` | Sonnet | Pink | Voice profile building + drift detection | | `differentiation-checker` | Sonnet | Gray | Originality scoring + commodity detection | | `post-feedback-monitor` | Haiku | Lime | Post-publish 48h monitoring | | `video-scripter` | Sonnet | Violet | Video script creation with pacing | | `fact-checker` | Opus | Brown | Factual-claim verification against primary sources (longform) | | `persona-reviewer` | Opus | Olive | Reader-persona skeleton (v2.1, before prose) + resonance (before lock) + hook-conversion (after lock) gate (longform) | **Rule:** Always read `assets/voice-samples/` before generating content. **Invocation form:** Commands invoke plugin agents by their **namespaced** type — `subagent_type: linkedin-thought-leadership:` — never the bare `` (a bare type does not resolve and the `Task` call fails). **Reload requirement:** Adding a NEW agent file under `agents/` registers it only after a Claude Code **session reload** — the plugin agent set is built at session start, so a freshly-added agent (e.g. `fact-checker`, `persona-reviewer` when first added) is not invokable until the session reloads. After adding an agent, reload before invoking it. ## Content Quality Rules 1. Hook: 110-140 characters (mobile cutoff) 2. Post length: 1,200-1,800 chars (standard), 150-500 chars (quick) 3. No external links in post body (40-50% reach suppression) 4. No corporate buzzwords: leverage, synergy, paradigm shift, thought leader, disruptive, value proposition, ecosystem, holistic approach 5. Topic must align with user's 5 core expertise areas (360Brew signal) 6. Topic rotation: no back-to-back same pillar, no pillar >50% in 14 days (warn-only) 7. Progressive onboarding: personalization score hidden until 3+ posts; voice guardian suppressed until 5+ voice samples