- commands/strategy.md: extend frontmatter with authority triggers; insert Step 3.6 Authority Building (signature content map, greatest hits, derivative planning, content + network signals, action plan, monthly scorecard); add algorithm-signals-reference.md to Reference Files. - commands/audit.md: Step 5.5 trajectory-review and Step 7 report-block trajectory section now route to /linkedin:strategy (the canon); Step 6 profile-alignment routes to /linkedin:profile (the canon); drop trajectory-strategy-adjustments.md + algorithm-signals-reference.md from loaded references (canons own them). - commands/analyze.md: 'If Profile-Content Mismatch' subsection routes to /linkedin:profile for the per-section checklist; quick-triage list kept. - commands/authority.md: removed (absorbed by strategy.md). - commands/linkedin.md: drop authority table row, merge 'Build authority' into AskUser item #10 (Growth strategy & authority), renumber 14-23 to 13-22, broaden strategy routing trigger keywords, drop standalone authority routing rule. - skills/linkedin-strategy/SKILL.md, skills/linkedin-thought-leadership/SKILL.md, CLAUDE.md, README.md: drop /linkedin:authority rows; widen /linkedin:strategy descriptions to reflect new scope. Verification: - Literal Verify (plan.md:704) exits 1 (expected inversion). - Corrected predicate (test ! -f && ! grep -rqn …) exits 0 — clean. - Manifest: commands/strategy.md present; [Aa]uthority match count = 24. - Hooks: python3 hooks/scripts/compile-hooks.py --check → clean. - Command count: 25 → 24. - End-to-end Verification §849 (templates|publish|authority|collab|speaking) grep across commands/ agents/ skills/ hooks/ README.md CLAUDE.md → empty. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
7 KiB
LinkedIn Thought Leadership Plugin (v1.2.0)
Build LinkedIn thought leadership with algorithmic understanding, strategic consistency, and authentic engagement. January 2026 360Brew algorithm update integrated.
Architecture
- State file:
~/.claude/linkedin-thought-leadership.local.md(YAML frontmatter, auto-initialized fromconfig/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 (macOSpbcopy, Linuxxclip/xsel, WSLclip.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 byhooks/scripts/queue-manager.mjs) - Analytics CLI:
scripts/analytics/(TypeScript, requirestsxandnpm 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 (27)
All content commands (post, quick, react, pipeline, first-post, video, multiplatform, carousel) 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.
| 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: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 |
/linkedin:analyze |
Content/performance analysis |
/linkedin:audit |
Periodic content strategy audit |
/linkedin:import |
Import CSV export → structured JSON |
/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 |
/linkedin:outreach |
Outreach orchestrator — collaborations + speaking opportunities |
/linkedin:profile |
360Brew profile optimization |
Agents (16)
| Agent | Model | Color | Responsibility |
|---|---|---|---|
content-optimizer |
Sonnet | Blue | Optimize existing posts |
strategy-advisor |
Sonnet | Green | Growth recommendations |
analytics-interpreter |
Sonnet | Yellow | Audience pattern analysis |
engagement-coach |
Haiku | Magenta | 5x5x5 + first-hour tactics |
content-planner |
Sonnet | Cyan | Content audit + weekly/monthly plans |
performance-reporter |
Sonnet | Amber | Weekly/monthly performance reports |
network-builder |
Sonnet | Teal | Strategic networking + outreach |
content-repurposer |
Sonnet | Purple | Format conversion + evergreen refresh |
comment-strategist |
Sonnet | Red | CEA commenting + target selection |
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 resonance + hook-conversion 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:<name> — never the bare <name> (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
- Hook: 110-140 characters (mobile cutoff)
- Post length: 1,200-1,800 chars (standard), 150-500 chars (quick)
- No external links in post body (40-50% reach suppression)
- No corporate buzzwords: leverage, synergy, paradigm shift, thought leader, disruptive, value proposition, ecosystem, holistic approach
- Topic must align with user's 5 core expertise areas (360Brew signal)
- Topic rotation: no back-to-back same pillar, no pillar >50% in 14 days (warn-only)
- Progressive onboarding: personalization score hidden until 3+ posts; voice guardian suppressed until 5+ voice samples