refactor(linkedin)!: rename plugin linkedin-thought-leadership → linkedin-studio (v3.0.0)

BREAKING CHANGE: the marketplace slug, the agent namespace
(linkedin-studio:<agent>), and the runtime state-file path
(~/.claude/linkedin-studio.local.md) all change. Reinstall required;
existing state migrated in place (post metrics, streak, history preserved).
The /linkedin:* commands are unchanged — the command namespace is set
per-command in frontmatter and was always independent of the plugin slug.
Functionality is byte-identical to v2.4.0; this release is pure identity.

- dir + manifests: plugins/linkedin-studio + plugin.json + root marketplace.json
- agent namespace updated in commands/newsletter.md (only functional invoker)
- state path updated in 4 hook scripts + topic-rotation prompt + state template
- catch-all skill dir renamed skills/linkedin-studio (5 functional skills unchanged)
- docs + version bump to 3.0.0 across README badge, CHANGELOG, root README/CLAUDE.md
- historical records (CHANGELOG past entries, docs/ build artifacts,
  config-audit v5.0.0 snapshots) intentionally retain the old slug

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-05-29 11:32:02 +02:00
commit 7833d06dd3
59 changed files with 148 additions and 122 deletions

View file

@ -1,4 +1,4 @@
# LinkedIn Thought Leadership Plugin for Claude Code
# LinkedIn Studio Plugin for Claude Code
> Build authentic LinkedIn authority through algorithmic understanding, strategic consistency, and AI-assisted content creation.
@ -6,7 +6,7 @@
*AI-generated: all code produced by Claude Code through dialog-driven development. [Full disclosure →](../../README.md#ai-generated-code-disclosure)*
![Version](https://img.shields.io/badge/version-2.4.0-blue)
![Version](https://img.shields.io/badge/version-3.0.0-blue)
![Platform](https://img.shields.io/badge/platform-Claude_Code_Plugin-purple)
![Commands](https://img.shields.io/badge/commands-24-green)
![Agents](https://img.shields.io/badge/agents-16-orange)
@ -20,6 +20,7 @@ A comprehensive Claude Code plugin that turns LinkedIn from a chore into a full-
## Table of Contents
- [What's New in v3.0.0](#whats-new-in-v300)
- [What's New in v2.4.0](#whats-new-in-v240)
- [What's New in v2.3.0](#whats-new-in-v230)
- [What's New in v2.2.0](#whats-new-in-v220)
@ -43,6 +44,14 @@ A comprehensive Claude Code plugin that turns LinkedIn from a chore into a full-
---
## What's New in v3.0.0
**The plugin is renamed `linkedin-thought-leadership``linkedin-studio` ("LinkedIn Thought Leadership" → LinkedIn Studio).** The old display title read as pompous; the new name is plain and matches how the plugin already describes itself — a *LinkedIn content engine*. This is a **breaking** release because the identity changes at three levels, but **no functionality changes** — v3.0.0 is byte-for-byte v2.4.0 under a new name.
- **What changed:** the marketplace **slug** (`linkedin-studio`), the **agent namespace** (`linkedin-studio:<agent>`, used by `/linkedin:newsletter`), and the **runtime state-file path** (`~/.claude/linkedin-studio.local.md`, migrated in place — your post metrics, streak, and content history are preserved).
- **What did *not* change:** the **commands**. `/linkedin:post`, `/linkedin:newsletter`, `/linkedin:quick`, and every other command are invoked exactly as before — the `/linkedin:` namespace is set per-command in frontmatter and was always independent of the plugin slug. 24 commands, 16 agents, 9 hooks — all unchanged.
- **Action required:** **reinstall the plugin** so Claude Code registers the new slug and agent namespace, then reload the session. Until reload, the renamed agents won't resolve.
## What's New in v2.4.0
**An editor's craft gate becomes an explicit pipeline phase.** The Del 4 production run exposed a gap the existing gates could not see: the persona resonance sweep returned 15 flags across three personas and *every persona reported PASS / ready-to-publish* — yet the editor (KTG) found **eight fresh editorial points on first reading**, and only ~25 % overlapped anything the personas had touched. The other six were **craft and narrative-architecture blind spots** no agent measured. `persona-reviewer` measures *reader response* (does it land?); nothing measured *prose craft* or *narrative architecture* (is it well-made?). v2.4.0 adds the missing role.
@ -165,7 +174,7 @@ Or enable directly in `~/.claude/settings.json`:
```json
{
"enabledPlugins": {
"linkedin-thought-leadership@ktg-plugin-marketplace": true
"linkedin-studio@ktg-plugin-marketplace": true
}
}
```
@ -288,7 +297,7 @@ Parallel support agents: `strategy-advisor`, `analytics-interpreter`, `network-b
Longform quality gates (newsletter): **`persona-reviewer` (skjelett) run BEFORE prose** (v2.1, Step 2.5) → `voice-scrubber` de-AI / chronicle-voice scrub (v2.2, Step 4) → `fact-checker` (Step 5) → **`editorial-reviewer` craft gate run BEFORE the persona sweep** (v2.4, Step 5.5) → `persona-reviewer` (resonance) run BEFORE lock (Step 6) → `persona-reviewer` (conversion) run AFTER lock on the hook (Step 9).
> **Note (agent invocation + reload):** Commands invoke agents by their **namespaced**
> type — `subagent_type: linkedin-thought-leadership:<name>`, never the bare name. And a
> type — `subagent_type: linkedin-studio:<name>`, never the bare name. And a
> **newly added** agent file under `agents/` only becomes invokable after a Claude Code
> **session reload** (the plugin agent set is built at session start). Add the agent, then
> reload before invoking it.
@ -355,7 +364,7 @@ Six domain-specific skills organize the plugin's knowledge and route commands to
| Skill | Domain | Commands Routed |
|-------|--------|-----------------|
| `linkedin-thought-leadership` | Router + shared knowledge (algorithm, quality rules) | `/linkedin`, `/linkedin:setup` |
| `linkedin-studio` | Router + shared knowledge (algorithm, quality rules) | `/linkedin`, `/linkedin:setup` |
| `linkedin-content-creation` | Posts, batch, pipeline, video, calendar, newsletter | `/linkedin:post`, `:quick`, `:pipeline`, `:batch`, `:calendar`, `:video`, `:multiplatform`, `:newsletter`, `:carousel` |
| `linkedin-analytics` | Analysis, reporting, import, A/B testing | `/linkedin:analyze`, `:audit`, `:import`, `:report`, `:ab-test` |
| `linkedin-strategy` | Growth, authority (absorbed), competitive, monetization | `/linkedin:strategy`, `:competitive`, `:monetize` |
@ -548,7 +557,7 @@ Edit with your name, expertise areas, target audience, voice preferences, and Li
### State File
The plugin tracks posting metrics in `~/.claude/linkedin-thought-leadership.local.md`:
The plugin tracks posting metrics in `~/.claude/linkedin-studio.local.md`:
```yaml
---
@ -595,6 +604,7 @@ Scheduled posts are tracked in `assets/drafts/queue.json`:
| Version | Date | Highlights |
|---------|------|-----------|
| **3.0.0** | 2026-05-29 | **Renamed** `linkedin-thought-leadership``linkedin-studio` ("LinkedIn Thought Leadership" → **LinkedIn Studio**). Breaking (slug + agent namespace `linkedin-studio:<agent>` + runtime state path `~/.claude/linkedin-studio.local.md` all change; reinstall required, state migrated in place), but **functionality byte-identical to v2.4.0**. The `/linkedin:*` commands are unchanged (frontmatter-namespaced, slug-independent). Catch-all skill dir renamed to match (`skills/linkedin-studio/`); the five functional skills unchanged. |
| **2.4.0** | 2026-05-29 | Editor's craft gate as an explicit pipeline phase. New **`editorial-reviewer` agent** (Opus) + **Step 5.5 — Editorial review** in `/linkedin:newsletter` (between fact-check and the persona sweep): two axes — **prosa-håndverk** (em-dash density, verbatim repetition, postulated numbers, contradictions, versal-tic) + **narrativ-arkitektur** (concrete instantiation, theory-anchored hypotheses, series-title symmetry, equal action per addressee, un-overloaded conclusion); ≤10 flags BLOCK/REWORK/NICE as direction; operator-gated via `SendUserFile`; mirrors Maskinrommet §C2. Motivated by Del 4 (every persona PASS, yet 8 fresh editor points, ~6/8 craft/architecture blind spots). `editorial-review` phase + additive `editorialReview` state. Pipeline 14 → 15 phases; 15 → 16 agents. New agent + fasit fixture + lint test the only new files; commands (24) unchanged. |
| **2.3.0** | 2026-05-28 | Visual assets as an explicit pipeline phase. New **Step 7.5 — Visual assets** in `/linkedin:newsletter` (between annotation and lock): cover (+ optional inline figures) or carousel deck, generated (default `mcp-image`; external `cover-raw.png` accepted) and operator-gated via `SendUserFile` BEFORE lock so `build-linkedin.mjs` picks up `cover.png` without a post-lock re-render. Explicit `format: "carousel"` branch reusing `build-carousel.mjs`. New `config/image-credit-caption.template.md`; additive `visualAssets` state + naming convention (`cover.png` / `cover-v<N>-kandidat.png` / `cover-raw.png` / `fig<N>.png`). Pipeline 13 → 14 phases. Doc/orchestration-only (no new code); commands (24) + agents (15) unchanged. |
| **2.2.0** | 2026-05-28 | Longform gates hardened (2nd production run). Persona gate blocking with explicit hard-fail list (primær mistet meg / doesn't own action / sjargong-mur / modell-navne-katalog → BLOCK; «JA med forbehold» = NEI). Fact-check post-cutoff web-search mandate + high-frequency-error checklist. New `voice-scrubber` agent (Opus): de-AI scrub + Norwegian-chronicle voice-drift, gold standard = approved Norwegian editions (NOT the English post corpus). Render+annotate operator gates (Steps 2.5/3a). Edition state reconciled with STATE.md (ONE-system); `edition-HANDOVER.template.md` deleted. 14 → 15 agents; commands unchanged (24). |