diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 53e2f25..5cd44ab 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -26,9 +26,9 @@ "description": "Voyage — brief, research, plan, execute, review, continue. Contract-driven Claude Code pipeline with specialized agent swarms, external research triangulation, adversarial review, post-hoc independent review with Handover 6 feedback loop, multi-session resumption, session decomposition, and headless execution. /trekbrief, /trekplan, and /trekreview each end by building a self-contained operator-annotation HTML (scripts/annotate.mjs, modelled on claude-code-100x): pencil-toggle annotation mode, select text or click any element, pick intent (Fiks/Endre/Spørsmål), comment, Copy Prompt, paste back, Claude revises the .md." }, { - "name": "linkedin-thought-leadership", - "source": "./plugins/linkedin-thought-leadership", - "description": "Build LinkedIn thought leadership with algorithmic understanding, strategic consistency, and authentic engagement. Updated for the January 2026 360Brew algorithm change." + "name": "linkedin-studio", + "source": "./plugins/linkedin-studio", + "description": "LinkedIn Studio — a full-spectrum LinkedIn content engine: feed posts, carousels, video scripts, and long-form newsletter editions, built on algorithmic understanding, strategic consistency, and authentic engagement. Updated for the January 2026 360Brew algorithm change." }, { "name": "graceful-handoff", diff --git a/.gitleaksignore b/.gitleaksignore index d47ea0b..7860f5c 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -2,4 +2,4 @@ plugins/llm-security/examples/malicious-skill-demo/evil-project-health/lib/telemetry.mjs:generic-api-key:18 # False positive: word "conversational" matches linkedin-client-id entropy pattern -plugins/linkedin-thought-leadership/hooks/prompts/content-quality-gate.md:linkedin-client-id:14 +plugins/linkedin-studio/hooks/prompts/content-quality-gate.md:linkedin-client-id:14 diff --git a/CLAUDE.md b/CLAUDE.md index f009d5c..84fbeae 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,7 +9,7 @@ plugins/ ai-psychosis/ v1.0.0 — Interaction awareness (sycophancy, reinforcement loops) config-audit/ v3.1.0 — Configuration intelligence (health, opportunities, auto-fix, whats-active) graceful-handoff/ v2.1.0 — Auto-trigger handoff via Stop hook (skill + JSON pipeline + 4-step model-aware context resolution) - linkedin-thought-leadership/ v2.4.0 — Full-spectrum LinkedIn content engine (short-form feed + long-form newsletter). v2.0.0 consolidated surface (27→24 commands, 16→14 agents) + added `/linkedin:newsletter` orchestrator with fact-check + persona-sweep gates BEFORE lock. v2.1.0 added skeleton-gate BEFORE prose (Step 2.5 + Step 3a) + third `persona-reviewer` mode (`skjelett`); pipeline 11→13 phases. v2.2.0 hardened the longform gates (2nd production run): blocking persona hard-fails, fact-check post-cutoff web-search mandate + orthogonal-to-narrative rule, new `voice-scrubber` agent (Opus, de-AI + Norwegian-chronicle voice; gold standard = approved Norwegian editions NOT English post corpus), render+annotate operator gates (2.5/3a), edition-state reconciled with STATE.md (`edition-HANDOVER.md` deleted); agents 14→15. v2.3.0 added **Step 7.5 (visual-assets)** to `/linkedin:newsletter` — cover (+ inline figures) or carousel deck, generated (default mcp-image; external `cover-raw.png` accepted) + operator-gated via `SendUserFile` BEFORE lock so `build-linkedin.mjs` picks up `cover.png` without a post-lock re-render; pipeline 13→14 phases, new `config/image-credit-caption.template.md`, additive `visualAssets` state. v2.4.0 adds **Step 5.5 (editorial-review)** to `/linkedin:newsletter` — new `editorial-reviewer` agent (Opus) judging craft (prosa-håndverk + narrativ-arkitektur), not reader-response, ≤10 flags BLOCK/REWORK/NICE as direction, operator-gated via `SendUserFile` between fact-check (5) and persona-sweep (6), mirroring Maskinrommet skrivekontrakt §C2; motivated by Del 4 (every persona PASS yet 8 fresh editor points, ~6/8 craft/architecture blind spots). Pipeline 14→15 phases; agents 15→16; additive `editorialReview` state; doc/orchestration-only (new agent + fasit fixture + lint test the only new files). Commands unchanged (24); agents 16. Render pipeline self-hosted (OFL-1.1 fonts). + linkedin-studio/ v3.0.0 — Full-spectrum LinkedIn content engine (short-form feed + long-form newsletter). **v3.0.0 renamed from `linkedin-thought-leadership`** (LinkedIn Thought Leadership → LinkedIn Studio): slug + agent namespace (`linkedin-studio:`) + runtime state path (`~/.claude/linkedin-studio.local.md`) all change; the `/linkedin:*` commands are unchanged (frontmatter-namespaced, slug-independent). Breaking — reinstall required; functionality byte-identical to v2.4.0. v2.0.0 consolidated surface (27→24 commands, 16→14 agents) + added `/linkedin:newsletter` orchestrator with fact-check + persona-sweep gates BEFORE lock. v2.1.0 added skeleton-gate BEFORE prose (Step 2.5 + Step 3a) + third `persona-reviewer` mode (`skjelett`); pipeline 11→13 phases. v2.2.0 hardened the longform gates (2nd production run): blocking persona hard-fails, fact-check post-cutoff web-search mandate + orthogonal-to-narrative rule, new `voice-scrubber` agent (Opus, de-AI + Norwegian-chronicle voice; gold standard = approved Norwegian editions NOT English post corpus), render+annotate operator gates (2.5/3a), edition-state reconciled with STATE.md (`edition-HANDOVER.md` deleted); agents 14→15. v2.3.0 added **Step 7.5 (visual-assets)** to `/linkedin:newsletter` — cover (+ inline figures) or carousel deck, generated (default mcp-image; external `cover-raw.png` accepted) + operator-gated via `SendUserFile` BEFORE lock so `build-linkedin.mjs` picks up `cover.png` without a post-lock re-render; pipeline 13→14 phases, new `config/image-credit-caption.template.md`, additive `visualAssets` state. v2.4.0 adds **Step 5.5 (editorial-review)** to `/linkedin:newsletter` — new `editorial-reviewer` agent (Opus) judging craft (prosa-håndverk + narrativ-arkitektur), not reader-response, ≤10 flags BLOCK/REWORK/NICE as direction, operator-gated via `SendUserFile` between fact-check (5) and persona-sweep (6), mirroring Maskinrommet skrivekontrakt §C2; motivated by Del 4 (every persona PASS yet 8 fresh editor points, ~6/8 craft/architecture blind spots). Pipeline 14→15 phases; agents 15→16; additive `editorialReview` state; doc/orchestration-only (new agent + fasit fixture + lint test the only new files). Commands unchanged (24); agents 16. Render pipeline self-hosted (OFL-1.1 fonts). llm-security/ v7.7.2 — Security scanning, auditing, threat modeling. HTML report output for all 18 skill commands (render-report CLI + canonical ESM module mirrored bit-identical into the playground). v7.7.2 translated the remaining Norwegian surface text in the playground UI, the canonical renderer, the agent prompts, and the README/CLAUDE.md state sections to English. v7.7.1 stripped the playground to the catalog as the only routable surface. ms-ai-architect/ v1.15.0 — Microsoft AI architecture (Cosmo Skyberg persona) + manual KB-refresh slash command + v3 project-view (sidebar med 17 artifacts + main + import-modal overlay, v2-surface fjernet i v1.15.0) okr/ v1.0.0 — OKR guidance for Norwegian public sector diff --git a/README.md b/README.md index 1b7400b..8cc451e 100644 --- a/README.md +++ b/README.md @@ -206,11 +206,11 @@ Key commands: `/architect`, `/architect:ros`, `/architect:security`, `/architect --- -### [LinkedIn Thought Leadership](plugins/linkedin-thought-leadership/) `v2.4.0` +### [LinkedIn Studio](plugins/linkedin-studio/) `v3.0.0` Build authentic LinkedIn authority through algorithmic understanding, strategic consistency, and AI-assisted content creation. -v2.4.0 adds an **editor's craft gate as an explicit pipeline phase** in `/linkedin:newsletter`: a new **`editorial-reviewer` agent** (Opus) + **Step 5.5 (editorial-review)** between fact-check (Step 5) and the persona sweep (Step 6). It judges **craft** — **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) — not reader-response, returning **≤10 flags** (BLOCK / REWORK / NICE) as *direction* (never copy), operator-gated via `SendUserFile`, mirroring the Maskinrommet writing-contract §C2. Motivated by the Del 4 run, where **every persona reported PASS yet the editor found 8 fresh points on first reading, ~6/8 of them craft/architecture blind spots no agent measured.** Pipeline 14 → 15 phases; 15 → 16 agents; additive `editorialReview` state. v2.3.0 made **visual assets an explicit pipeline phase** (Step 7.5, between annotation and lock): the cover (+ optional inline figures) or a carousel deck is generated (default `mcp-image`; external `cover-raw.png` accepted) and operator-gated via `SendUserFile` **before lock**. v2.2.0 **hardened the longform gates** (blocking persona hard-fails, post-cutoff fact-check mandate, a Norwegian-chronicle `voice-scrubber`, render+annotate operator gates, STATE.md-reconciled edition state). Commands unchanged (24); 16 agents. v2.1.0's skeleton-gate-before-prose and v2.0.0's full-spectrum surface are preserved. Updated for the January 2026 360Brew algorithm change, which validates your creator profile before distributing content. +**v3.0.0 renames the plugin to LinkedIn Studio** (was `linkedin-thought-leadership`): the slug, agent namespace, and runtime state-file path are now `linkedin-studio` — the `/linkedin:*` commands are unchanged. Breaking: reinstall required and the state file moves to `~/.claude/linkedin-studio.local.md`. Functionality is identical to v2.4.0. v2.4.0 adds an **editor's craft gate as an explicit pipeline phase** in `/linkedin:newsletter`: a new **`editorial-reviewer` agent** (Opus) + **Step 5.5 (editorial-review)** between fact-check (Step 5) and the persona sweep (Step 6). It judges **craft** — **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) — not reader-response, returning **≤10 flags** (BLOCK / REWORK / NICE) as *direction* (never copy), operator-gated via `SendUserFile`, mirroring the Maskinrommet writing-contract §C2. Motivated by the Del 4 run, where **every persona reported PASS yet the editor found 8 fresh points on first reading, ~6/8 of them craft/architecture blind spots no agent measured.** Pipeline 14 → 15 phases; 15 → 16 agents; additive `editorialReview` state. v2.3.0 made **visual assets an explicit pipeline phase** (Step 7.5, between annotation and lock): the cover (+ optional inline figures) or a carousel deck is generated (default `mcp-image`; external `cover-raw.png` accepted) and operator-gated via `SendUserFile` **before lock**. v2.2.0 **hardened the longform gates** (blocking persona hard-fails, post-cutoff fact-check mandate, a Norwegian-chronicle `voice-scrubber`, render+annotate operator gates, STATE.md-reconciled edition state). Commands unchanged (24); 16 agents. v2.1.0's skeleton-gate-before-prose and v2.0.0's full-spectrum surface are preserved. Updated for the January 2026 360Brew algorithm change, which validates your creator profile before distributing content. - **Editorial-review craft gate BEFORE the persona sweep (v2.4)** — Step 5.5 runs the new `editorial-reviewer` (Opus) on the fact-checked draft, two axes (prosa-håndverk + narrativ-arkitektur), ≤10 flags severity-ranked BLOCK/REWORK/NICE, surfaced to the operator via `SendUserFile`. It runs *before* the persona sweep so the personas measure resonance instead of stumbling on craft noise; `persona-reviewer` is unchanged (one measures craft, one measures response). Mirrors Maskinrommet §C2. - **Visual-assets gate BEFORE lock (v2.3)** — Step 7.5 decides image needs from the article type (method-heavy → 1–2 inline figures; diagnosis-heavy → cover only), briefs each image, generates via mcp-image or an external `cover-raw.png`, surfaces candidates with `SendUserFile`, and copies the approved one to the fixed `cover.png` name. Explicit `format: "carousel"` branch reusing `build-carousel.mjs`. @@ -237,7 +237,7 @@ Key commands: `/linkedin:onboarding`, `/linkedin:post`, `/linkedin:quick`, `/lin 15 specialized agents · 24 commands · 6 skills · 9 hooks · 24 reference docs -→ [Full documentation](plugins/linkedin-thought-leadership/README.md) +→ [Full documentation](plugins/linkedin-studio/README.md) --- diff --git a/plugins/human-friendly-style/README.md b/plugins/human-friendly-style/README.md index 341c9fa..7e1ddb8 100644 --- a/plugins/human-friendly-style/README.md +++ b/plugins/human-friendly-style/README.md @@ -172,7 +172,7 @@ If you need: - **Persona shaping** (Cosmo Skyberg / specific advisor voices) — see `ms-ai-architect` - **Behavioral overrides** (anti-sycophancy, reinforcement-loop detection) — see `ai-psychosis` -- **Voice training** (your own LinkedIn writing style) — see `linkedin-thought-leadership` +- **Voice training** (your own LinkedIn writing style) — see `linkedin-studio` - **Domain-specific workflows** (OKR, security audits, planning pipelines) — see the other plugins Those are domain plugins. This one is the shared chassis underneath them. diff --git a/plugins/linkedin-studio/.claude-plugin/plugin.json b/plugins/linkedin-studio/.claude-plugin/plugin.json new file mode 100644 index 0000000..57ae084 --- /dev/null +++ b/plugins/linkedin-studio/.claude-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "linkedin-studio", + "version": "3.0.0", + "description": "LinkedIn Studio — full-spectrum LinkedIn content engine: feed posts, carousels, video scripts, and long-form newsletter editions, with the January 2026 360Brew algorithm baked in. v3.0.0 renames the plugin (was `linkedin-thought-leadership`): the slug, agent namespace, and runtime state-file path are now `linkedin-studio` — the `/linkedin:*` commands are unchanged. Breaking: reinstall required and the state file moves to `~/.claude/linkedin-studio.local.md`.", + "author": { + "name": "Kjell Tore Guttormsen" + }, + "license": "MIT", + "repository": "https://git.fromaitochitta.com/open/ktg-plugin-marketplace", + "keywords": ["linkedin", "content-creation", "newsletter", "analytics", "360brew"] +} diff --git a/plugins/linkedin-thought-leadership/.gitignore b/plugins/linkedin-studio/.gitignore similarity index 100% rename from plugins/linkedin-thought-leadership/.gitignore rename to plugins/linkedin-studio/.gitignore diff --git a/plugins/linkedin-thought-leadership/CHANGELOG.md b/plugins/linkedin-studio/CHANGELOG.md similarity index 92% rename from plugins/linkedin-thought-leadership/CHANGELOG.md rename to plugins/linkedin-studio/CHANGELOG.md index 8731b6e..2b584b8 100644 --- a/plugins/linkedin-thought-leadership/CHANGELOG.md +++ b/plugins/linkedin-studio/CHANGELOG.md @@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.0.0] - 2026-05-29 + +### Summary +**Plugin 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 ("LinkedIn content engine"). This is a **breaking change** — the marketplace slug, the agent namespace (`linkedin-studio:`), and the runtime state-file path all change — so it bumps to a major version. Functionality is byte-for-byte identical to v2.4.0; this release is pure identity. + +### Changed (breaking) +- **Slug / directory / manifests:** `plugins/linkedin-thought-leadership/` → `plugins/linkedin-studio/`; `plugin.json` and root `marketplace.json` `name`/`source` updated. **Reinstall required.** +- **Agent namespace:** commands invoke plugin agents as `linkedin-studio:` (was `linkedin-thought-leadership:`). Functional change in `commands/newsletter.md`; docs updated to match. +- **Runtime state path:** `~/.claude/linkedin-thought-leadership.local.md` → `~/.claude/linkedin-studio.local.md`. Hardcoded in `hooks/scripts/{state-updater,session-start,posting-reminder,user-prompt-context}.mjs`, `hooks/prompts/topic-rotation-gate.md`, and `config/state-file.template.md`. **Existing state migrated in place** (post metrics, streak, content history preserved). +- **Catch-all skill** `skills/linkedin-thought-leadership/` → `skills/linkedin-studio/` (frontmatter `name: linkedin-studio`); the five functional skills (`linkedin-analytics`, `-content-creation`, `-networking`, `-strategy`, `-voice`) are unchanged. + +### Not changed (explicit non-deltas) +- **Command namespace `/linkedin:*`** — set per-command in frontmatter (`name: linkedin:post`), already independent of the plugin slug. Every command (`/linkedin:post`, `/linkedin:newsletter`, …) is invoked exactly as before. 24 commands, 16 agents — counts unchanged. +- **All hooks, scripts, renderers, agent contracts, content** — bit-for-bit identical to v2.4.0. +- **History preserved:** `config-audit` v5.0.0 test snapshots and the `docs/` build artifacts retain the old slug as point-in-time records and were intentionally not rewritten. + ## [2.4.0] - 2026-05-29 ### Summary diff --git a/plugins/linkedin-thought-leadership/CLAUDE.md b/plugins/linkedin-studio/CLAUDE.md similarity index 97% rename from plugins/linkedin-thought-leadership/CLAUDE.md rename to plugins/linkedin-studio/CLAUDE.md index 3694e9c..2c0e684 100644 --- a/plugins/linkedin-thought-leadership/CLAUDE.md +++ b/plugins/linkedin-studio/CLAUDE.md @@ -1,10 +1,10 @@ -# LinkedIn Thought Leadership Plugin (v2.4.0) +# LinkedIn Studio Plugin (v2.4.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 added two gates BEFORE prose (Step 2.5 skeleton + Step 3a spine prose) + a third `persona-reviewer` mode (`skjelett`). v2.2.0 hardened the longform gates with the lessons from the second production run (Seres-serien): blocking persona hard-fails, a post-cutoff fact-check mandate, a `voice-scrubber` agent, render+annotate operator gates, and STATE.md-reconciled edition state. v2.3.0 made **visual assets an explicit pipeline phase** — Step 7.5 (visual-assets) between annotation (Step 7) and lock (Step 8): cover (+ optional inline figures) or a carousel deck, generated (default `mcp-image`, external `cover-raw.png` accepted) and operator-gated BEFORE lock so `render/build-linkedin.mjs` picks up `cover.png` at lock without a post-lock re-render. **v2.4.0** makes an **editor's craft gate an explicit pipeline phase** — new **Step 5.5 (editorial-review)** between fact-check (Step 5) and the persona sweep (Step 6): a new **`editorial-reviewer` agent** (Opus) judges **craft** (prosa-håndverk + narrativ-arkitektur), not reader-response, returning ≤10 flags (BLOCK/REWORK/NICE) as direction, **operator-gated via `SendUserFile` BEFORE the persona sweep** so the personas measure resonance instead of stumbling on craft noise. Motivated by Del 4: every persona reported PASS, yet the editor found 8 fresh points on first reading, ~6/8 of them craft/architecture blind spots no agent measured. Mirrors the Maskinrommet writing-contract §C2. Pipeline 14 → 15 phases; agents 15 → 16; additive `editorialReview` state. Doc/orchestration-only for the wiring (the new agent + its fasit fixture + lint test are the only new files); commands unchanged (24). ## Architecture -- **State file:** `~/.claude/linkedin-thought-leadership.local.md` (YAML frontmatter, auto-initialized from `config/state-file.template.md`) +- **State file:** `~/.claude/linkedin-studio.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 @@ -87,7 +87,7 @@ All content commands (post, quick, react, pipeline, first-post, video, multiplat **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 +`subagent_type: linkedin-studio:` — 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 diff --git a/plugins/linkedin-thought-leadership/CODE_OF_CONDUCT.md b/plugins/linkedin-studio/CODE_OF_CONDUCT.md similarity index 100% rename from plugins/linkedin-thought-leadership/CODE_OF_CONDUCT.md rename to plugins/linkedin-studio/CODE_OF_CONDUCT.md diff --git a/plugins/linkedin-thought-leadership/CONTRIBUTING.md b/plugins/linkedin-studio/CONTRIBUTING.md similarity index 92% rename from plugins/linkedin-thought-leadership/CONTRIBUTING.md rename to plugins/linkedin-studio/CONTRIBUTING.md index 0762a13..b43aaab 100644 --- a/plugins/linkedin-thought-leadership/CONTRIBUTING.md +++ b/plugins/linkedin-studio/CONTRIBUTING.md @@ -1,4 +1,4 @@ -# Contributing to linkedin-thought-leadership +# Contributing to linkedin-studio This is a solo project. Bug reports and feature requests are welcome, but pull requests are not accepted. @@ -29,7 +29,7 @@ Changes to this plugin must preserve: ## Testing locally ```bash -claude plugin add /path/to/linkedin-thought-leadership +claude plugin add /path/to/linkedin-studio # In a Claude Code session: /linkedin # Check status and command menu diff --git a/plugins/linkedin-thought-leadership/GOVERNANCE.md b/plugins/linkedin-studio/GOVERNANCE.md similarity index 100% rename from plugins/linkedin-thought-leadership/GOVERNANCE.md rename to plugins/linkedin-studio/GOVERNANCE.md diff --git a/plugins/linkedin-thought-leadership/LICENSE b/plugins/linkedin-studio/LICENSE similarity index 100% rename from plugins/linkedin-thought-leadership/LICENSE rename to plugins/linkedin-studio/LICENSE diff --git a/plugins/linkedin-thought-leadership/README.md b/plugins/linkedin-studio/README.md similarity index 95% rename from plugins/linkedin-thought-leadership/README.md rename to plugins/linkedin-studio/README.md index 875149c..76d3818 100644 --- a/plugins/linkedin-thought-leadership/README.md +++ b/plugins/linkedin-studio/README.md @@ -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:`, 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:`, never the bare name. And a +> type — `subagent_type: linkedin-studio:`, 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:` + 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-kandidat.png` / `cover-raw.png` / `fig.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). | diff --git a/plugins/linkedin-thought-leadership/SECURITY.md b/plugins/linkedin-studio/SECURITY.md similarity index 100% rename from plugins/linkedin-thought-leadership/SECURITY.md rename to plugins/linkedin-studio/SECURITY.md diff --git a/plugins/linkedin-thought-leadership/agents/__tests__/editorial-reviewer-fixture.test.mjs b/plugins/linkedin-studio/agents/__tests__/editorial-reviewer-fixture.test.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/agents/__tests__/editorial-reviewer-fixture.test.mjs rename to plugins/linkedin-studio/agents/__tests__/editorial-reviewer-fixture.test.mjs diff --git a/plugins/linkedin-thought-leadership/agents/__tests__/fact-checker-fixture.test.mjs b/plugins/linkedin-studio/agents/__tests__/fact-checker-fixture.test.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/agents/__tests__/fact-checker-fixture.test.mjs rename to plugins/linkedin-studio/agents/__tests__/fact-checker-fixture.test.mjs diff --git a/plugins/linkedin-thought-leadership/agents/__tests__/persona-reviewer-fixture.test.mjs b/plugins/linkedin-studio/agents/__tests__/persona-reviewer-fixture.test.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/agents/__tests__/persona-reviewer-fixture.test.mjs rename to plugins/linkedin-studio/agents/__tests__/persona-reviewer-fixture.test.mjs diff --git a/plugins/linkedin-thought-leadership/agents/analytics-interpreter.md b/plugins/linkedin-studio/agents/analytics-interpreter.md similarity index 99% rename from plugins/linkedin-thought-leadership/agents/analytics-interpreter.md rename to plugins/linkedin-studio/agents/analytics-interpreter.md index 60147e7..0b370dc 100644 --- a/plugins/linkedin-thought-leadership/agents/analytics-interpreter.md +++ b/plugins/linkedin-studio/agents/analytics-interpreter.md @@ -70,7 +70,7 @@ Always load these for pattern comparison: ## Manual Data Sources (fallback) When structured analytics aren't available: -- `~/.claude/linkedin-thought-leadership.local.md` — Posting history, streaks, weekly stats +- `~/.claude/linkedin-studio.local.md` — Posting history, streaks, weekly stats - `${CLAUDE_PLUGIN_ROOT}/assets/plans/` — Planned vs. actual content - `${CLAUDE_PLUGIN_ROOT}/assets/drafts/` — Draft history - See `${CLAUDE_PLUGIN_ROOT}/assets/analytics/README.md` for data format and directory structure. diff --git a/plugins/linkedin-thought-leadership/agents/content-optimizer.md b/plugins/linkedin-studio/agents/content-optimizer.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/content-optimizer.md rename to plugins/linkedin-studio/agents/content-optimizer.md diff --git a/plugins/linkedin-thought-leadership/agents/content-planner.md b/plugins/linkedin-studio/agents/content-planner.md similarity index 98% rename from plugins/linkedin-thought-leadership/agents/content-planner.md rename to plugins/linkedin-studio/agents/content-planner.md index 8b7ed8e..2965f03 100644 --- a/plugins/linkedin-thought-leadership/agents/content-planner.md +++ b/plugins/linkedin-studio/agents/content-planner.md @@ -28,13 +28,13 @@ You are a LinkedIn content planning specialist. You create strategic content pla Read these files before planning: ``` -${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → expertise areas, voice +${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → expertise areas, voice ${CLAUDE_PLUGIN_ROOT}/references/thought-leadership-angles.md → 8 universal angles ${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → growth strategies ${CLAUDE_PLUGIN_ROOT}/references/low-frequency-posting-strategy.md → sustainable posting ${CLAUDE_PLUGIN_ROOT}/references/linkedin-formats.md → format options ${CLAUDE_PLUGIN_ROOT}/assets/templates/weekly-content-calendar-2-3x.md → calendar template -~/.claude/linkedin-thought-leadership.local.md → user state + recent posts +~/.claude/linkedin-studio.local.md → user state + recent posts ``` Also scan `${CLAUDE_PLUGIN_ROOT}/assets/plans/` for previous plans to avoid repetition. @@ -469,7 +469,7 @@ Create the `plans/` directory if it doesn't exist. ### Update State File -After plan approval, update `~/.claude/linkedin-thought-leadership.local.md`: +After plan approval, update `~/.claude/linkedin-studio.local.md`: - Set `next_planned_topic` to the first upcoming topic - Add planned topics to the recent topics list for dedup - Update `last_plan_date` diff --git a/plugins/linkedin-thought-leadership/agents/content-repurposer.md b/plugins/linkedin-studio/agents/content-repurposer.md similarity index 99% rename from plugins/linkedin-thought-leadership/agents/content-repurposer.md rename to plugins/linkedin-studio/agents/content-repurposer.md index a1e1fe5..76a0103 100644 --- a/plugins/linkedin-thought-leadership/agents/content-repurposer.md +++ b/plugins/linkedin-studio/agents/content-repurposer.md @@ -37,7 +37,7 @@ ${CLAUDE_PLUGIN_ROOT}/references/newsletter-strategy-guide.md → newslette ${CLAUDE_PLUGIN_ROOT}/references/thought-leadership-angles.md → 8 universal angles ${CLAUDE_PLUGIN_ROOT}/assets/case-studies/case-study-template.md → case study structure + 4 LinkedIn post angles ${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md → proven patterns to replicate -~/.claude/linkedin-thought-leadership.local.md → user state + performance data +~/.claude/linkedin-studio.local.md → user state + performance data ``` ## Step 1: Source Content Analysis diff --git a/plugins/linkedin-thought-leadership/agents/differentiation-checker.md b/plugins/linkedin-studio/agents/differentiation-checker.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/differentiation-checker.md rename to plugins/linkedin-studio/agents/differentiation-checker.md diff --git a/plugins/linkedin-thought-leadership/agents/editorial-reviewer.md b/plugins/linkedin-studio/agents/editorial-reviewer.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/editorial-reviewer.md rename to plugins/linkedin-studio/agents/editorial-reviewer.md diff --git a/plugins/linkedin-thought-leadership/agents/engagement-coach.md b/plugins/linkedin-studio/agents/engagement-coach.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/engagement-coach.md rename to plugins/linkedin-studio/agents/engagement-coach.md diff --git a/plugins/linkedin-thought-leadership/agents/fact-checker.md b/plugins/linkedin-studio/agents/fact-checker.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/fact-checker.md rename to plugins/linkedin-studio/agents/fact-checker.md diff --git a/plugins/linkedin-thought-leadership/agents/fixtures/editorial-reviewer-cases.md b/plugins/linkedin-studio/agents/fixtures/editorial-reviewer-cases.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/fixtures/editorial-reviewer-cases.md rename to plugins/linkedin-studio/agents/fixtures/editorial-reviewer-cases.md diff --git a/plugins/linkedin-thought-leadership/agents/fixtures/fact-checker-cases.md b/plugins/linkedin-studio/agents/fixtures/fact-checker-cases.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/fixtures/fact-checker-cases.md rename to plugins/linkedin-studio/agents/fixtures/fact-checker-cases.md diff --git a/plugins/linkedin-thought-leadership/agents/fixtures/persona-reviewer-cases.md b/plugins/linkedin-studio/agents/fixtures/persona-reviewer-cases.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/fixtures/persona-reviewer-cases.md rename to plugins/linkedin-studio/agents/fixtures/persona-reviewer-cases.md diff --git a/plugins/linkedin-thought-leadership/agents/network-builder.md b/plugins/linkedin-studio/agents/network-builder.md similarity index 99% rename from plugins/linkedin-thought-leadership/agents/network-builder.md rename to plugins/linkedin-studio/agents/network-builder.md index 156f1fe..e915616 100644 --- a/plugins/linkedin-thought-leadership/agents/network-builder.md +++ b/plugins/linkedin-studio/agents/network-builder.md @@ -34,8 +34,8 @@ ${CLAUDE_PLUGIN_ROOT}/references/collaborations-guide.md → coll ${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md → engagement methods ${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → growth strategies ${CLAUDE_PLUGIN_ROOT}/references/opportunity-generation.md → conversion + DM strategy -${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → user expertise + voice -~/.claude/linkedin-thought-leadership.local.md → user state + network data +${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → user expertise + voice +~/.claude/linkedin-studio.local.md → user state + network data ``` Also check `${CLAUDE_PLUGIN_ROOT}/assets/network/` for existing tracker files. diff --git a/plugins/linkedin-thought-leadership/agents/persona-reviewer.md b/plugins/linkedin-studio/agents/persona-reviewer.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/persona-reviewer.md rename to plugins/linkedin-studio/agents/persona-reviewer.md diff --git a/plugins/linkedin-thought-leadership/agents/post-feedback-monitor.md b/plugins/linkedin-studio/agents/post-feedback-monitor.md similarity index 99% rename from plugins/linkedin-thought-leadership/agents/post-feedback-monitor.md rename to plugins/linkedin-studio/agents/post-feedback-monitor.md index 571570d..af057dc 100644 --- a/plugins/linkedin-thought-leadership/agents/post-feedback-monitor.md +++ b/plugins/linkedin-studio/agents/post-feedback-monitor.md @@ -36,7 +36,7 @@ Before analyzing anything, load these files: 1. **Algorithm knowledge:** Read `${CLAUDE_PLUGIN_ROOT}/references/algorithm-signals-reference.md` 2. **Engagement frameworks:** Read `${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md` -3. **State file:** Read `~/.claude/linkedin-thought-leadership.local.md` (if exists) +3. **State file:** Read `~/.claude/linkedin-studio.local.md` (if exists) 4. **Latest analytics:** Use Glob to find the most recent file in `${CLAUDE_PLUGIN_ROOT}/assets/analytics/posts/` and read it This gives you the user's baseline performance and algorithm context for accurate benchmarking. diff --git a/plugins/linkedin-thought-leadership/agents/strategy-advisor.md b/plugins/linkedin-studio/agents/strategy-advisor.md similarity index 99% rename from plugins/linkedin-thought-leadership/agents/strategy-advisor.md rename to plugins/linkedin-studio/agents/strategy-advisor.md index c5a8842..54c104a 100644 --- a/plugins/linkedin-thought-leadership/agents/strategy-advisor.md +++ b/plugins/linkedin-studio/agents/strategy-advisor.md @@ -43,7 +43,7 @@ ${CLAUDE_PLUGIN_ROOT}/assets/audience-insights/demographics.md → audience ${CLAUDE_PLUGIN_ROOT}/assets/audience-insights/engagement-patterns.md → timing, topic, and format patterns ${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md → proven patterns from top posts ${CLAUDE_PLUGIN_ROOT}/references/trajectory-strategy-adjustments.md → trajectory-to-action mappings -~/.claude/linkedin-thought-leadership.local.md → user state + posting history +~/.claude/linkedin-studio.local.md → user state + posting history ``` Use demographics data to compare the user's **intended** audience vs **actual** engagers when making strategic recommendations. diff --git a/plugins/linkedin-thought-leadership/agents/trend-spotter.md b/plugins/linkedin-studio/agents/trend-spotter.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/trend-spotter.md rename to plugins/linkedin-studio/agents/trend-spotter.md diff --git a/plugins/linkedin-thought-leadership/agents/video-scripter.md b/plugins/linkedin-studio/agents/video-scripter.md similarity index 98% rename from plugins/linkedin-thought-leadership/agents/video-scripter.md rename to plugins/linkedin-studio/agents/video-scripter.md index 34308dd..639e6d4 100644 --- a/plugins/linkedin-thought-leadership/agents/video-scripter.md +++ b/plugins/linkedin-studio/agents/video-scripter.md @@ -36,7 +36,7 @@ ${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md → Hook ${CLAUDE_PLUGIN_ROOT}/references/thought-leadership-angles.md → 8 universal angles ${CLAUDE_PLUGIN_ROOT}/assets/voice-samples/ → User's authentic voice (ALWAYS read before scripting) ${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md → Successful content patterns -~/.claude/linkedin-thought-leadership.local.md → User state, recent topics, streak +~/.claude/linkedin-studio.local.md → User state, recent topics, streak ``` ## Step 1: Video Type Selection @@ -218,7 +218,7 @@ Examples: video-2026-01-30-copilot-demo-screen-recording-60s.md ``` -Update state in `~/.claude/linkedin-thought-leadership.local.md`: +Update state in `~/.claude/linkedin-studio.local.md`: - Update `last_post_date`, `posts_this_week`, streak (same as text posts) - Add to "Recent Posts" section with format note: `[VIDEO/talking-head/90s]` diff --git a/plugins/linkedin-thought-leadership/agents/voice-scrubber.md b/plugins/linkedin-studio/agents/voice-scrubber.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/voice-scrubber.md rename to plugins/linkedin-studio/agents/voice-scrubber.md diff --git a/plugins/linkedin-thought-leadership/agents/voice-trainer.md b/plugins/linkedin-studio/agents/voice-trainer.md similarity index 100% rename from plugins/linkedin-thought-leadership/agents/voice-trainer.md rename to plugins/linkedin-studio/agents/voice-trainer.md diff --git a/plugins/linkedin-thought-leadership/assets/README.md b/plugins/linkedin-studio/assets/README.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/README.md rename to plugins/linkedin-studio/assets/README.md diff --git a/plugins/linkedin-thought-leadership/assets/analytics/README.md b/plugins/linkedin-studio/assets/analytics/README.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/analytics/README.md rename to plugins/linkedin-studio/assets/analytics/README.md diff --git a/plugins/linkedin-thought-leadership/assets/analytics/ab-tests/.gitkeep b/plugins/linkedin-studio/assets/analytics/ab-tests/.gitkeep similarity index 100% rename from plugins/linkedin-thought-leadership/assets/analytics/ab-tests/.gitkeep rename to plugins/linkedin-studio/assets/analytics/ab-tests/.gitkeep diff --git a/plugins/linkedin-thought-leadership/assets/audience-insights/demographics.md b/plugins/linkedin-studio/assets/audience-insights/demographics.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/audience-insights/demographics.md rename to plugins/linkedin-studio/assets/audience-insights/demographics.md diff --git a/plugins/linkedin-thought-leadership/assets/audience-insights/engagement-patterns.md b/plugins/linkedin-studio/assets/audience-insights/engagement-patterns.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/audience-insights/engagement-patterns.md rename to plugins/linkedin-studio/assets/audience-insights/engagement-patterns.md diff --git a/plugins/linkedin-thought-leadership/assets/case-studies/case-study-template.md b/plugins/linkedin-studio/assets/case-studies/case-study-template.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/case-studies/case-study-template.md rename to plugins/linkedin-studio/assets/case-studies/case-study-template.md diff --git a/plugins/linkedin-thought-leadership/assets/checklists/quality-scorecard.md b/plugins/linkedin-studio/assets/checklists/quality-scorecard.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/checklists/quality-scorecard.md rename to plugins/linkedin-studio/assets/checklists/quality-scorecard.md diff --git a/plugins/linkedin-thought-leadership/assets/drafts/.gitkeep b/plugins/linkedin-studio/assets/drafts/.gitkeep similarity index 100% rename from plugins/linkedin-thought-leadership/assets/drafts/.gitkeep rename to plugins/linkedin-studio/assets/drafts/.gitkeep diff --git a/plugins/linkedin-thought-leadership/assets/examples/high-engagement-posts.md b/plugins/linkedin-studio/assets/examples/high-engagement-posts.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/examples/high-engagement-posts.md rename to plugins/linkedin-studio/assets/examples/high-engagement-posts.md diff --git a/plugins/linkedin-thought-leadership/assets/frameworks/framework-template.md b/plugins/linkedin-studio/assets/frameworks/framework-template.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/frameworks/framework-template.md rename to plugins/linkedin-studio/assets/frameworks/framework-template.md diff --git a/plugins/linkedin-thought-leadership/assets/plans/.gitkeep b/plugins/linkedin-studio/assets/plans/.gitkeep similarity index 100% rename from plugins/linkedin-thought-leadership/assets/plans/.gitkeep rename to plugins/linkedin-studio/assets/plans/.gitkeep diff --git a/plugins/linkedin-thought-leadership/assets/quick-post-resources.md b/plugins/linkedin-studio/assets/quick-post-resources.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/quick-post-resources.md rename to plugins/linkedin-studio/assets/quick-post-resources.md diff --git a/plugins/linkedin-thought-leadership/assets/templates/carousel-templates.md b/plugins/linkedin-studio/assets/templates/carousel-templates.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/templates/carousel-templates.md rename to plugins/linkedin-studio/assets/templates/carousel-templates.md diff --git a/plugins/linkedin-thought-leadership/assets/templates/linkedin-article-template.md b/plugins/linkedin-studio/assets/templates/linkedin-article-template.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/templates/linkedin-article-template.md rename to plugins/linkedin-studio/assets/templates/linkedin-article-template.md diff --git a/plugins/linkedin-thought-leadership/assets/templates/my-post-templates.md b/plugins/linkedin-studio/assets/templates/my-post-templates.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/templates/my-post-templates.md rename to plugins/linkedin-studio/assets/templates/my-post-templates.md diff --git a/plugins/linkedin-thought-leadership/assets/templates/post-type-templates.md b/plugins/linkedin-studio/assets/templates/post-type-templates.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/templates/post-type-templates.md rename to plugins/linkedin-studio/assets/templates/post-type-templates.md diff --git a/plugins/linkedin-thought-leadership/assets/templates/weekly-content-calendar-2-3x.md b/plugins/linkedin-studio/assets/templates/weekly-content-calendar-2-3x.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/templates/weekly-content-calendar-2-3x.md rename to plugins/linkedin-studio/assets/templates/weekly-content-calendar-2-3x.md diff --git a/plugins/linkedin-thought-leadership/assets/voice-samples/authentic-voice-samples.md b/plugins/linkedin-studio/assets/voice-samples/authentic-voice-samples.md similarity index 100% rename from plugins/linkedin-thought-leadership/assets/voice-samples/authentic-voice-samples.md rename to plugins/linkedin-studio/assets/voice-samples/authentic-voice-samples.md diff --git a/plugins/linkedin-thought-leadership/commands/ab-test.md b/plugins/linkedin-studio/commands/ab-test.md similarity index 99% rename from plugins/linkedin-thought-leadership/commands/ab-test.md rename to plugins/linkedin-studio/commands/ab-test.md index baabacc..5d7790f 100644 --- a/plugins/linkedin-thought-leadership/commands/ab-test.md +++ b/plugins/linkedin-studio/commands/ab-test.md @@ -40,7 +40,7 @@ ls -1 ${CLAUDE_PLUGIN_ROOT}/assets/analytics/ab-tests/ 2>/dev/null | head -20 ls -1 ${CLAUDE_PLUGIN_ROOT}/assets/analytics/posts/ 2>/dev/null | grep -E '\.json$' | head -10 ``` -If `~/.claude/linkedin-thought-leadership.local.md` exists, read it for user context (posting frequency, follower level, topics). +If `~/.claude/linkedin-studio.local.md` exists, read it for user context (posting frequency, follower level, topics). ## Step 1: Determine Intent diff --git a/plugins/linkedin-thought-leadership/commands/analyze.md b/plugins/linkedin-studio/commands/analyze.md similarity index 99% rename from plugins/linkedin-thought-leadership/commands/analyze.md rename to plugins/linkedin-studio/commands/analyze.md index 9ae22e6..b0a7500 100644 --- a/plugins/linkedin-thought-leadership/commands/analyze.md +++ b/plugins/linkedin-studio/commands/analyze.md @@ -20,7 +20,7 @@ You are a LinkedIn performance analyst. Help the user diagnose why their content Read these reference files: - `references/troubleshooting-guide.md` - Failure patterns and solutions - `references/algorithm-signals-reference.md` - Algorithm mechanics -- `skills/linkedin-thought-leadership/SKILL.md` - User's profile and goals +- `skills/linkedin-studio/SKILL.md` - User's profile and goals ## Step 1: Diagnose the Problem diff --git a/plugins/linkedin-thought-leadership/commands/audit.md b/plugins/linkedin-studio/commands/audit.md similarity index 96% rename from plugins/linkedin-thought-leadership/commands/audit.md rename to plugins/linkedin-studio/commands/audit.md index 8d60245..eacc9de 100644 --- a/plugins/linkedin-thought-leadership/commands/audit.md +++ b/plugins/linkedin-studio/commands/audit.md @@ -20,9 +20,9 @@ You are a LinkedIn content strategy auditor. Conduct a thorough review of the us ## Step 0: Gather Data Load all available data: -- Read `~/.claude/linkedin-thought-leadership.local.md` for posting history +- Read `~/.claude/linkedin-studio.local.md` for posting history - Read `${CLAUDE_PLUGIN_ROOT}/assets/plans/` for planned content -- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` for strategy reference +- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` for strategy reference - Check for any analytics data in `${CLAUDE_PLUGIN_ROOT}/assets/analytics/` - Read `assets/audience-insights/demographics.md` for audience composition — compare intended vs actual audience - Read `assets/audience-insights/engagement-patterns.md` for tracked patterns (timing, topics, formats, hooks) @@ -103,7 +103,7 @@ Analyze trajectory: ## Step 5.5: Milestone Progress Check -If `follower_count > 0` in the state file (`~/.claude/linkedin-thought-leadership.local.md`), analyze milestone progress: +If `follower_count > 0` in the state file (`~/.claude/linkedin-studio.local.md`), analyze milestone progress: ### Growth Trajectory diff --git a/plugins/linkedin-thought-leadership/commands/batch.md b/plugins/linkedin-studio/commands/batch.md similarity index 97% rename from plugins/linkedin-thought-leadership/commands/batch.md rename to plugins/linkedin-studio/commands/batch.md index aef13ba..af0b825 100644 --- a/plugins/linkedin-thought-leadership/commands/batch.md +++ b/plugins/linkedin-studio/commands/batch.md @@ -23,8 +23,8 @@ You are a LinkedIn batch content creator. Help the user create an entire week's ## Step 0: Load Context Load state and personalization: -- Read `~/.claude/linkedin-thought-leadership.local.md` for recent topics and weekly goals -- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` for profile and preferences +- Read `~/.claude/linkedin-studio.local.md` for recent topics and weekly goals +- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` for profile and preferences - Check `${CLAUDE_PLUGIN_ROOT}/assets/plans/` for existing weekly plan - Read `assets/templates/my-post-templates.md` for proven templates — vary templates across the batch for format diversity diff --git a/plugins/linkedin-thought-leadership/commands/calendar.md b/plugins/linkedin-studio/commands/calendar.md similarity index 98% rename from plugins/linkedin-thought-leadership/commands/calendar.md rename to plugins/linkedin-studio/commands/calendar.md index 41e0a4d..398a782 100644 --- a/plugins/linkedin-thought-leadership/commands/calendar.md +++ b/plugins/linkedin-studio/commands/calendar.md @@ -42,7 +42,7 @@ console.log(JSON.stringify(queueCount(), null, 2)); ``` Also read state for context: -- `~/.claude/linkedin-thought-leadership.local.md` for weekly goal and current progress +- `~/.claude/linkedin-studio.local.md` for weekly goal and current progress ## Step 2: Display Calendar View diff --git a/plugins/linkedin-thought-leadership/commands/carousel.md b/plugins/linkedin-studio/commands/carousel.md similarity index 98% rename from plugins/linkedin-thought-leadership/commands/carousel.md rename to plugins/linkedin-studio/commands/carousel.md index 94ea359..24e0729 100644 --- a/plugins/linkedin-thought-leadership/commands/carousel.md +++ b/plugins/linkedin-studio/commands/carousel.md @@ -22,7 +22,7 @@ You are a LinkedIn carousel content specialist. Create high-engagement carousel ## Step 0: Load Context -- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state and expertise areas +- Read `~/.claude/linkedin-studio.local.md` for posting state and expertise areas - Read `assets/voice-samples/authentic-voice-samples.md` for voice profile - Check recent posts to avoid topic repetition diff --git a/plugins/linkedin-thought-leadership/commands/competitive.md b/plugins/linkedin-studio/commands/competitive.md similarity index 95% rename from plugins/linkedin-thought-leadership/commands/competitive.md rename to plugins/linkedin-studio/commands/competitive.md index fff661c..1d61a8f 100644 --- a/plugins/linkedin-thought-leadership/commands/competitive.md +++ b/plugins/linkedin-studio/commands/competitive.md @@ -20,8 +20,8 @@ You are a LinkedIn competitive intelligence analyst. Help the user learn from ot ## Step 0: Load Context Read the user's profile and strategy: -- `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` — Expertise areas and positioning -- `~/.claude/linkedin-thought-leadership.local.md` — Current posting patterns +- `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` — Expertise areas and positioning +- `~/.claude/linkedin-studio.local.md` — Current posting patterns ## Step 1: Identify Competitors diff --git a/plugins/linkedin-thought-leadership/commands/first-post.md b/plugins/linkedin-studio/commands/first-post.md similarity index 98% rename from plugins/linkedin-thought-leadership/commands/first-post.md rename to plugins/linkedin-studio/commands/first-post.md index c67015a..6f7ccba 100644 --- a/plugins/linkedin-thought-leadership/commands/first-post.md +++ b/plugins/linkedin-studio/commands/first-post.md @@ -23,7 +23,7 @@ The first post doesn't need to be perfect. It needs to EXIST. Every day without ## Step 0: Load Context -Read `~/.claude/linkedin-thought-leadership.local.md` for current state. +Read `~/.claude/linkedin-studio.local.md` for current state. Read `assets/voice-samples/authentic-voice-samples.md` for voice profile (if it exists). Check: If `first_post_date` is already set, this user has posted before. Suggest `/linkedin:post` or `/linkedin:quick` instead, and explain this command is for true first-timers. diff --git a/plugins/linkedin-thought-leadership/commands/import.md b/plugins/linkedin-studio/commands/import.md similarity index 98% rename from plugins/linkedin-thought-leadership/commands/import.md rename to plugins/linkedin-studio/commands/import.md index bed163d..dcd3d8f 100644 --- a/plugins/linkedin-thought-leadership/commands/import.md +++ b/plugins/linkedin-studio/commands/import.md @@ -222,7 +222,7 @@ Run /linkedin:report (period: 4w) `/linkedin:report` will: -1. Read `expertise_areas` from `~/.claude/linkedin-thought-leadership.local.md` +1. Read `expertise_areas` from `~/.claude/linkedin-studio.local.md` 2. Call `trends` for impressions and engagement_rate over the last 4 weeks: ```bash ANALYTICS_ROOT="${CLAUDE_PLUGIN_ROOT}/assets/analytics" node --import tsx "${CLAUDE_PLUGIN_ROOT}/scripts/analytics/src/cli.ts" trends --period 4w --metric impressions @@ -241,7 +241,7 @@ manually when analytics are ready." After successful import and analysis, update the state file: ``` -Read ~/.claude/linkedin-thought-leadership.local.md +Read ~/.claude/linkedin-studio.local.md Set last_import_date to today (YYYY-MM-DD) Set last_import_week to current ISO week (YYYY-WXX) Write the updated state file diff --git a/plugins/linkedin-thought-leadership/commands/linkedin.md b/plugins/linkedin-studio/commands/linkedin.md similarity index 98% rename from plugins/linkedin-thought-leadership/commands/linkedin.md rename to plugins/linkedin-studio/commands/linkedin.md index 8e8e150..49ea3ae 100644 --- a/plugins/linkedin-thought-leadership/commands/linkedin.md +++ b/plugins/linkedin-studio/commands/linkedin.md @@ -11,13 +11,13 @@ allowed-tools: - AskUserQuestion --- -# LinkedIn Thought Leadership Command Router +# LinkedIn Studio Command Router You are a LinkedIn thought leadership assistant. The user has invoked the main `/linkedin` command. Your job is to help them navigate to the right subcommand. ## Session Status -If `~/.claude/linkedin-thought-leadership.local.md` exists, read it and show a brief status line: +If `~/.claude/linkedin-studio.local.md` exists, read it and show a brief status line: ``` LinkedIn: X/Y posts this week | Streak: N days | Last: YYYY-MM-DD | X/10000 followers (Phase) @@ -200,4 +200,4 @@ If the user's intent is clear from context: ## Reference For full skill documentation, see: -- `skills/linkedin-thought-leadership/SKILL.md` - Complete skill with personalization settings +- `skills/linkedin-studio/SKILL.md` - Complete skill with personalization settings diff --git a/plugins/linkedin-thought-leadership/commands/monetize.md b/plugins/linkedin-studio/commands/monetize.md similarity index 98% rename from plugins/linkedin-thought-leadership/commands/monetize.md rename to plugins/linkedin-studio/commands/monetize.md index 332b5fb..df97fc5 100644 --- a/plugins/linkedin-thought-leadership/commands/monetize.md +++ b/plugins/linkedin-studio/commands/monetize.md @@ -28,8 +28,8 @@ ${CLAUDE_PLUGIN_ROOT}/references/linkedin-monetization-strategies.md → pricin ${CLAUDE_PLUGIN_ROOT}/references/opportunity-generation.md → conversion funnels, DM strategy ${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → algorithm context ${CLAUDE_PLUGIN_ROOT}/references/growth-roadmaps.md → stage progression -~/.claude/linkedin-thought-leadership.local.md → user state + posting data -${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → expertise areas +~/.claude/linkedin-studio.local.md → user state + posting data +${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → expertise areas ``` ## Step 1: Readiness Assessment diff --git a/plugins/linkedin-thought-leadership/commands/multiplatform.md b/plugins/linkedin-studio/commands/multiplatform.md similarity index 97% rename from plugins/linkedin-thought-leadership/commands/multiplatform.md rename to plugins/linkedin-studio/commands/multiplatform.md index f7ad382..fa4db82 100644 --- a/plugins/linkedin-thought-leadership/commands/multiplatform.md +++ b/plugins/linkedin-studio/commands/multiplatform.md @@ -22,7 +22,7 @@ You are a multi-platform content strategist. Help the user adapt their LinkedIn Ask the user to provide their LinkedIn content or read from drafts: - Read `${CLAUDE_PLUGIN_ROOT}/assets/drafts/` for recent content -- Read `~/.claude/linkedin-thought-leadership.local.md` for recent posts +- Read `~/.claude/linkedin-studio.local.md` for recent posts ## Step 1: Select Target Platform diff --git a/plugins/linkedin-thought-leadership/commands/newsletter.md b/plugins/linkedin-studio/commands/newsletter.md similarity index 99% rename from plugins/linkedin-thought-leadership/commands/newsletter.md rename to plugins/linkedin-studio/commands/newsletter.md index 198dc10..1d80d1d 100644 --- a/plugins/linkedin-thought-leadership/commands/newsletter.md +++ b/plugins/linkedin-studio/commands/newsletter.md @@ -60,8 +60,8 @@ This command is **fundamentally different** from the short-form commands: delegate the fan-out to a nested background agent. > **Agent invocation form (required).** Plugin agents resolve only under their -> namespaced type — `subagent_type: linkedin-thought-leadership:` (e.g. -> `linkedin-thought-leadership:fact-checker`), never the bare ``. A bare +> namespaced type — `subagent_type: linkedin-studio:` (e.g. +> `linkedin-studio:fact-checker`), never the bare ``. A bare > `subagent_type` does not resolve and the `Task` call fails. Every > `subagent_type` below is written in the namespaced form for this reason. @@ -428,7 +428,7 @@ Next: Step 2.5 — Skeleton + section pitch (operator + persona gate BEFORE pros 5. **Persona-skjelett-sweep — fan out `persona-reviewer` in skjelett-mode.** Issue one `persona-reviewer` call per active persona in parallel — a SINGLE message with multiple `Task` tool-uses, `subagent_type: - linkedin-thought-leadership:persona-reviewer`, from THIS command layer in + linkedin-studio:persona-reviewer`, from THIS command layer in the foreground (principle 4). Pass each call the persona name, the path to `/NN-skjelett.md`, and **`mode: skjelett`** (the before-prose mode — five spine axes, ≤3 flags as direction, HOLDER/TVILER/MANGLER scoring). @@ -622,7 +622,7 @@ turning-points the spine already named. 3. **Expand with the `content-repurposer` muscle.** Reuse `agents/content-repurposer.md` (its article→long-form conversion discipline) for individual section expansions — invoke it via `Task` (`subagent_type: - linkedin-thought-leadership:content-repurposer`) when useful, *from this + linkedin-studio:content-repurposer`) when useful, *from this command layer* (foreground, principle 4). The command owns assembly and voice; the agent assists with conversion. The draft is voice-matched by THIS session, not self-certified for voice — voice-match remains an @@ -683,7 +683,7 @@ checklist (full detail + pass/flag criteria in the reference file): **De-AI / voice scrub (sub-pass — `voice-scrubber`).** After the rule pass, run the draft through `voice-scrubber` (Opus) — `Task`, `subagent_type: -linkedin-thought-leadership:voice-scrubber`, from THIS command layer in the +linkedin-studio:voice-scrubber`, from THIS command layer in the foreground (principle 4). Pass it the draft path AND the paths to the **approved Norwegian editions** as the gold standard (e.g. earlier parts' locked `linkedin/NN/POST.html` or their approved `NN-utkast.md`). **Do NOT** point it at @@ -742,7 +742,7 @@ because it "feels" right or because it sits in your own research notes. block can be verified independently without overlap. 3. **Fan out in parallel — issue all N `fact-checker` calls in a SINGLE message** - (multiple `Task` tool-uses in one turn, `subagent_type: linkedin-thought-leadership:fact-checker`) so they + (multiple `Task` tool-uses in one turn, `subagent_type: linkedin-studio:fact-checker`) so they run concurrently, from THIS command layer in the foreground (principle 4, plan §3). Each call gets one claim-block and returns the agent's standard verification log + risk-sort (🔴/🟡/🟢) + gate decision (PASS/REWORK/BLOCK). @@ -834,7 +834,7 @@ and `persona-reviewer` never flags em-dash density (that is this step). settled text, not on a draft still moving under fact fixes. 2. **Run `editorial-reviewer` (single foreground `Task` call).** Invoke - `subagent_type: linkedin-thought-leadership:editorial-reviewer` from THIS + `subagent_type: linkedin-studio:editorial-reviewer` from THIS command layer in the foreground (principle 4), passing the draft path (`/NN-utkast.md`) and — when the edition is part of a series — the series title (for the A3 series-title-symmetry check). The agent returns a @@ -924,7 +924,7 @@ reopening locked texts — the biggest single process error of the series (plan 2. **Fan out one `persona-reviewer` call per persona, in parallel** — issue them in a SINGLE message (multiple `Task` tool-uses, `subagent_type: - linkedin-thought-leadership:persona-reviewer`), from THIS command layer in the + linkedin-studio:persona-reviewer`), from THIS command layer in the foreground (principle 4). Pass each call its persona name and **`mode: resonans`** (the before-lock mode — all six axes, ≤5 flags as direction). This is NOT conversion mode, which is @@ -1258,7 +1258,7 @@ the post-lock conversion sweep, distinct from the pre-lock resonance sweep collected post). This is what the reader sees before "…see more". 2. **Run `persona-reviewer` in conversion mode** (`subagent_type: - linkedin-thought-leadership:persona-reviewer`) for the **primær** persona + linkedin-studio:persona-reviewer`) for the **primær** persona only, from THIS command layer in the foreground. Pass **`mode: konverter`** (the after-lock, hook-only mode — NOT resonans). The agent returns a single binary verdict, **JA / NEI**, on «would YOU click?» — diff --git a/plugins/linkedin-thought-leadership/commands/onboarding.md b/plugins/linkedin-studio/commands/onboarding.md similarity index 99% rename from plugins/linkedin-thought-leadership/commands/onboarding.md rename to plugins/linkedin-studio/commands/onboarding.md index c25789a..cac4c0e 100644 --- a/plugins/linkedin-thought-leadership/commands/onboarding.md +++ b/plugins/linkedin-studio/commands/onboarding.md @@ -18,7 +18,7 @@ You are a LinkedIn thought leadership onboarding guide. Walk the user through pr ## Step 0: Load Context and Check State -Read `~/.claude/linkedin-thought-leadership.local.md` for current state. +Read `~/.claude/linkedin-studio.local.md` for current state. **Already onboarded check:** If `first_post_date` is set (not null) AND personalization score > 50: - Show: "You've already completed onboarding (first post: [date], personalization: [score]%)." diff --git a/plugins/linkedin-thought-leadership/commands/outreach.md b/plugins/linkedin-studio/commands/outreach.md similarity index 99% rename from plugins/linkedin-thought-leadership/commands/outreach.md rename to plugins/linkedin-studio/commands/outreach.md index ab7ed97..0c2a026 100644 --- a/plugins/linkedin-thought-leadership/commands/outreach.md +++ b/plugins/linkedin-studio/commands/outreach.md @@ -70,8 +70,8 @@ ${CLAUDE_PLUGIN_ROOT}/references/collaborations-guide.md → format ${CLAUDE_PLUGIN_ROOT}/references/opportunity-generation.md → opportunity funnels, DM strategy ${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md → CEA, engagement strategies, content structures ${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → algorithm context -~/.claude/linkedin-thought-leadership.local.md → user state + posting data -${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → expertise areas +~/.claude/linkedin-studio.local.md → user state + posting data +${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → expertise areas ``` ## Step 1: Choose Your Outreach Track diff --git a/plugins/linkedin-thought-leadership/commands/pipeline.md b/plugins/linkedin-studio/commands/pipeline.md similarity index 97% rename from plugins/linkedin-thought-leadership/commands/pipeline.md rename to plugins/linkedin-studio/commands/pipeline.md index 186c771..360564f 100644 --- a/plugins/linkedin-thought-leadership/commands/pipeline.md +++ b/plugins/linkedin-studio/commands/pipeline.md @@ -24,8 +24,8 @@ You are a LinkedIn content pipeline orchestrator. Guide the user through the com ## Step 0: Load Context Load persistent state and personalization: -- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state -- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` for profile and preferences +- Read `~/.claude/linkedin-studio.local.md` for posting state +- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` for profile and preferences - Check `assets/voice-samples/` for voice matching - Read `assets/templates/my-post-templates.md` for proven post templates — use these in Step 2 (Draft) - Read `assets/frameworks/framework-template.md` if the topic involves a framework or methodology diff --git a/plugins/linkedin-thought-leadership/commands/post.md b/plugins/linkedin-studio/commands/post.md similarity index 97% rename from plugins/linkedin-thought-leadership/commands/post.md rename to plugins/linkedin-studio/commands/post.md index 1dc05c1..b7fee3c 100644 --- a/plugins/linkedin-thought-leadership/commands/post.md +++ b/plugins/linkedin-studio/commands/post.md @@ -22,8 +22,8 @@ You are a LinkedIn thought leadership content creator. Guide the user through cr ## Step 0: Load Context First, load persistent state and personalization: -- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state (streak, weekly progress, recent topics) -- Read `skills/linkedin-thought-leadership/SKILL.md` for user profile, voice settings, and preferences +- Read `~/.claude/linkedin-studio.local.md` for posting state (streak, weekly progress, recent topics) +- Read `skills/linkedin-studio/SKILL.md` for user profile, voice settings, and preferences Check state for topic planning: - Compare intended topic against "Recent Posts" in state file diff --git a/plugins/linkedin-thought-leadership/commands/profile.md b/plugins/linkedin-studio/commands/profile.md similarity index 98% rename from plugins/linkedin-thought-leadership/commands/profile.md rename to plugins/linkedin-studio/commands/profile.md index 3ff24e3..6085f1b 100644 --- a/plugins/linkedin-thought-leadership/commands/profile.md +++ b/plugins/linkedin-studio/commands/profile.md @@ -201,4 +201,4 @@ If the answer is no, fix the profile FIRST before posting. - `references/algorithm-signals-reference.md` - 360Brew mechanics and signals - `references/troubleshooting-guide.md` - Recovery if reach is already down -- `skills/linkedin-thought-leadership/SKILL.md` - User's expertise areas and topics +- `skills/linkedin-studio/SKILL.md` - User's expertise areas and topics diff --git a/plugins/linkedin-thought-leadership/commands/quick.md b/plugins/linkedin-studio/commands/quick.md similarity index 98% rename from plugins/linkedin-thought-leadership/commands/quick.md rename to plugins/linkedin-studio/commands/quick.md index 479b445..941a383 100644 --- a/plugins/linkedin-thought-leadership/commands/quick.md +++ b/plugins/linkedin-studio/commands/quick.md @@ -22,12 +22,12 @@ You are a LinkedIn quick-post assistant. Help the user create a short, impactful ## Load Context -Read `~/.claude/linkedin-thought-leadership.local.md` for: +Read `~/.claude/linkedin-studio.local.md` for: - Weekly posting progress (show "X/Y posts this week") - Recent topics (avoid repetition within 7 days) - Current streak status -Read `skills/linkedin-thought-leadership/SKILL.md` for: +Read `skills/linkedin-studio/SKILL.md` for: - User's voice profile and tone preferences - Core expertise areas (for topical alignment) - Phrases they commonly use diff --git a/plugins/linkedin-thought-leadership/commands/react.md b/plugins/linkedin-studio/commands/react.md similarity index 98% rename from plugins/linkedin-thought-leadership/commands/react.md rename to plugins/linkedin-studio/commands/react.md index a8dc7a3..81550a5 100644 --- a/plugins/linkedin-thought-leadership/commands/react.md +++ b/plugins/linkedin-studio/commands/react.md @@ -23,7 +23,7 @@ You are a LinkedIn content creator specializing in turning external content into ## Step 0: Load Context First, load persistent state and personalization: -- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state (streak, weekly progress, recent topics) +- Read `~/.claude/linkedin-studio.local.md` for posting state (streak, weekly progress, recent topics) - Read `assets/voice-samples/authentic-voice-samples.md` for voice profile - Check recent posts to avoid topic repetition within 7 days diff --git a/plugins/linkedin-thought-leadership/commands/report.md b/plugins/linkedin-studio/commands/report.md similarity index 99% rename from plugins/linkedin-thought-leadership/commands/report.md rename to plugins/linkedin-studio/commands/report.md index 0da00db..1397988 100644 --- a/plugins/linkedin-thought-leadership/commands/report.md +++ b/plugins/linkedin-studio/commands/report.md @@ -383,7 +383,7 @@ Show detailed metrics for that post and suggest what made it perform well/poorly After generating report, optionally update user's posting state: -Read `~/.claude/linkedin-thought-leadership.local.md` and suggest: +Read `~/.claude/linkedin-studio.local.md` and suggest: - If week had 0 posts: "Streak broken - consider posting this week to restart" - If week hit goal: "Goal achieved! Maintaining consistency." - If week exceeded goal: "Exceeding goal - strong momentum!" @@ -457,7 +457,7 @@ Save to: `${CLAUDE_PLUGIN_ROOT}/assets/analytics/weekly-reports/YYYY-WXX-report. 3. [Actionable recommendation based on data] --- -*Generated by linkedin-thought-leadership plugin* +*Generated by linkedin-studio plugin* ``` **Important notes:** diff --git a/plugins/linkedin-thought-leadership/commands/setup.md b/plugins/linkedin-studio/commands/setup.md similarity index 100% rename from plugins/linkedin-thought-leadership/commands/setup.md rename to plugins/linkedin-studio/commands/setup.md diff --git a/plugins/linkedin-thought-leadership/commands/strategy.md b/plugins/linkedin-studio/commands/strategy.md similarity index 98% rename from plugins/linkedin-thought-leadership/commands/strategy.md rename to plugins/linkedin-studio/commands/strategy.md index 25ba31e..b65a971 100644 --- a/plugins/linkedin-thought-leadership/commands/strategy.md +++ b/plugins/linkedin-studio/commands/strategy.md @@ -27,11 +27,11 @@ Read these files: - `references/growth-roadmaps.md` - Detailed phase roadmaps - `references/linkedin-growth-playbook-2025-2026.md` - Comprehensive tactics - `references/trajectory-strategy-adjustments.md` - Trajectory-based strategy adjustments -- `skills/linkedin-thought-leadership/SKILL.md` - User's goals and context +- `skills/linkedin-studio/SKILL.md` - User's goals and context ## Step 0.5: Auto-Detect from State -Before asking questions, check `~/.claude/linkedin-thought-leadership.local.md`: +Before asking questions, check `~/.claude/linkedin-studio.local.md`: - If `follower_count > 0`: Auto-detect the user's phase. Skip the "How many followers?" question in Step 1. - 0-1K → Phase 0: Foundation @@ -249,7 +249,7 @@ Based on their phase, provide detailed guidance. ## Step 3.5: Apply Trajectory Adjustments -If milestone data is available from `~/.claude/linkedin-thought-leadership.local.md`, overlay trajectory-specific adjustments on top of the phase strategy. +If milestone data is available from `~/.claude/linkedin-studio.local.md`, overlay trajectory-specific adjustments on top of the phase strategy. ### Determine Schedule Status diff --git a/plugins/linkedin-thought-leadership/commands/video.md b/plugins/linkedin-studio/commands/video.md similarity index 97% rename from plugins/linkedin-thought-leadership/commands/video.md rename to plugins/linkedin-studio/commands/video.md index c7cfba1..bf2f8e3 100644 --- a/plugins/linkedin-thought-leadership/commands/video.md +++ b/plugins/linkedin-studio/commands/video.md @@ -21,8 +21,8 @@ You are a LinkedIn video scripting assistant. Guide the user through creating a ## Step 0: Load Context First, load persistent state and personalization: -- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state (streak, weekly progress, recent topics) -- Read `skills/linkedin-thought-leadership/SKILL.md` for user profile, voice settings, and preferences +- Read `~/.claude/linkedin-studio.local.md` for posting state (streak, weekly progress, recent topics) +- Read `skills/linkedin-studio/SKILL.md` for user profile, voice settings, and preferences Check state for topic planning: - Compare intended topic against "Recent Posts" in state file diff --git a/plugins/linkedin-thought-leadership/config/REMEMBER.template.md b/plugins/linkedin-studio/config/REMEMBER.template.md similarity index 93% rename from plugins/linkedin-thought-leadership/config/REMEMBER.template.md rename to plugins/linkedin-studio/config/REMEMBER.template.md index 5e6b008..63d389d 100644 --- a/plugins/linkedin-thought-leadership/config/REMEMBER.template.md +++ b/plugins/linkedin-studio/config/REMEMBER.template.md @@ -1,4 +1,4 @@ -# LinkedIn Thought Leadership — Session State +# LinkedIn Studio — Session State **Last updated:** [Auto-filled by session-start hook] diff --git a/plugins/linkedin-thought-leadership/config/content-history.template.md b/plugins/linkedin-studio/config/content-history.template.md similarity index 100% rename from plugins/linkedin-thought-leadership/config/content-history.template.md rename to plugins/linkedin-studio/config/content-history.template.md diff --git a/plugins/linkedin-thought-leadership/config/edition-config.template.json b/plugins/linkedin-studio/config/edition-config.template.json similarity index 100% rename from plugins/linkedin-thought-leadership/config/edition-config.template.json rename to plugins/linkedin-studio/config/edition-config.template.json diff --git a/plugins/linkedin-thought-leadership/config/edition-delingstekst.template.md b/plugins/linkedin-studio/config/edition-delingstekst.template.md similarity index 100% rename from plugins/linkedin-thought-leadership/config/edition-delingstekst.template.md rename to plugins/linkedin-studio/config/edition-delingstekst.template.md diff --git a/plugins/linkedin-thought-leadership/config/edition-state.template.json b/plugins/linkedin-studio/config/edition-state.template.json similarity index 100% rename from plugins/linkedin-thought-leadership/config/edition-state.template.json rename to plugins/linkedin-studio/config/edition-state.template.json diff --git a/plugins/linkedin-thought-leadership/config/image-credit-caption.template.md b/plugins/linkedin-studio/config/image-credit-caption.template.md similarity index 100% rename from plugins/linkedin-thought-leadership/config/image-credit-caption.template.md rename to plugins/linkedin-studio/config/image-credit-caption.template.md diff --git a/plugins/linkedin-thought-leadership/config/personas.template.md b/plugins/linkedin-studio/config/personas.template.md similarity index 100% rename from plugins/linkedin-thought-leadership/config/personas.template.md rename to plugins/linkedin-studio/config/personas.template.md diff --git a/plugins/linkedin-thought-leadership/config/state-file.template.md b/plugins/linkedin-studio/config/state-file.template.md similarity index 87% rename from plugins/linkedin-thought-leadership/config/state-file.template.md rename to plugins/linkedin-studio/config/state-file.template.md index 501cf5d..b241bff 100644 --- a/plugins/linkedin-thought-leadership/config/state-file.template.md +++ b/plugins/linkedin-studio/config/state-file.template.md @@ -1,7 +1,7 @@ --- -# LinkedIn Thought Leadership State -# Auto-managed by the linkedin-thought-leadership plugin -# Copy to ~/.claude/linkedin-thought-leadership.local.md +# LinkedIn Studio State +# Auto-managed by the linkedin-studio plugin +# Copy to ~/.claude/linkedin-studio.local.md # Posting metrics last_post_date: null diff --git a/plugins/linkedin-thought-leadership/config/user-profile.template.md b/plugins/linkedin-studio/config/user-profile.template.md similarity index 100% rename from plugins/linkedin-thought-leadership/config/user-profile.template.md rename to plugins/linkedin-studio/config/user-profile.template.md diff --git a/plugins/linkedin-thought-leadership/docs/agents-capability-matrix.md b/plugins/linkedin-studio/docs/agents-capability-matrix.md similarity index 100% rename from plugins/linkedin-thought-leadership/docs/agents-capability-matrix.md rename to plugins/linkedin-studio/docs/agents-capability-matrix.md diff --git a/plugins/linkedin-thought-leadership/docs/brief-fullspektrum-innholdsmotor.md b/plugins/linkedin-studio/docs/brief-fullspektrum-innholdsmotor.md similarity index 99% rename from plugins/linkedin-thought-leadership/docs/brief-fullspektrum-innholdsmotor.md rename to plugins/linkedin-studio/docs/brief-fullspektrum-innholdsmotor.md index fb56042..b269787 100644 --- a/plugins/linkedin-thought-leadership/docs/brief-fullspektrum-innholdsmotor.md +++ b/plugins/linkedin-studio/docs/brief-fullspektrum-innholdsmotor.md @@ -1,6 +1,6 @@ # Brief — LTL som fullspektrum LinkedIn-innholdsmotor (idé → publisering) -> **Til:** linkedin-thought-leadership-pluginens utviklingsrepo. +> **Til:** linkedin-studio-pluginens utviklingsrepo. > **Skrevet:** 2026-05-26, etter produksjon av den første kronikkserien (Seres-serien, 6 deler). > **Type:** retningsbrief — beslutningsgrunnlag før planlegging/bygging. Selvstendig (kan leses uten annen kontekst). diff --git a/plugins/linkedin-thought-leadership/docs/brief-maskinrommet-feltkunnskap.md b/plugins/linkedin-studio/docs/brief-maskinrommet-feltkunnskap.md similarity index 100% rename from plugins/linkedin-thought-leadership/docs/brief-maskinrommet-feltkunnskap.md rename to plugins/linkedin-studio/docs/brief-maskinrommet-feltkunnskap.md diff --git a/plugins/linkedin-thought-leadership/docs/integration-test-guide.md b/plugins/linkedin-studio/docs/integration-test-guide.md similarity index 98% rename from plugins/linkedin-thought-leadership/docs/integration-test-guide.md rename to plugins/linkedin-studio/docs/integration-test-guide.md index 649bad1..f018ac1 100644 --- a/plugins/linkedin-thought-leadership/docs/integration-test-guide.md +++ b/plugins/linkedin-studio/docs/integration-test-guide.md @@ -1,11 +1,11 @@ -# Integration Test Guide: LinkedIn Thought Leadership Plugin +# Integration Test Guide: LinkedIn Studio Plugin Manual integration testing scenarios for commands, agents, and hooks in the plugin. ## Prerequisites Before testing, ensure: -- [ ] `~/.claude/linkedin-thought-leadership.local.md` exists (create from `config/state-file.template.md`) +- [ ] `~/.claude/linkedin-studio.local.md` exists (create from `config/state-file.template.md`) - [ ] Voice samples exist in `assets/voice-samples/authentic-voice-samples.md` - [ ] Quality scorecard exists at `assets/checklists/quality-scorecard.md` - [ ] Plugin is installed: appears in Claude Code's skill/command list @@ -62,7 +62,7 @@ Before testing, ensure: **Goal:** Graceful handling when state file doesn't exist. **Steps:** -1. Temporarily rename `~/.claude/linkedin-thought-leadership.local.md` +1. Temporarily rename `~/.claude/linkedin-studio.local.md` 2. Run `/linkedin:pipeline` 3. Verify: no crash, reasonable fallback (e.g., "No posting data found. Starting fresh.") 4. Complete the pipeline @@ -220,7 +220,7 @@ Before testing, ensure: 1. Run `/linkedin:pipeline` and create a post 2. Note the topic and hook 3. End the session (or let Stop hook fire) -4. Read `~/.claude/linkedin-thought-leadership.local.md` +4. Read `~/.claude/linkedin-studio.local.md` 5. Verify: - `last_post_date` = today - `last_post_topic` = the topic used diff --git a/plugins/linkedin-thought-leadership/docs/plan-fullspektrum-innholdsmotor.md b/plugins/linkedin-studio/docs/plan-fullspektrum-innholdsmotor.md similarity index 99% rename from plugins/linkedin-thought-leadership/docs/plan-fullspektrum-innholdsmotor.md rename to plugins/linkedin-studio/docs/plan-fullspektrum-innholdsmotor.md index aed4fe9..292704d 100644 --- a/plugins/linkedin-thought-leadership/docs/plan-fullspektrum-innholdsmotor.md +++ b/plugins/linkedin-studio/docs/plan-fullspektrum-innholdsmotor.md @@ -1,6 +1,6 @@ # Plan — LTL som fullspektrum LinkedIn-innholdsmotor -> **Type:** Renoverings- og byggeplan for `linkedin-thought-leadership`-pluginen («LTL»). +> **Type:** Renoverings- og byggeplan for `linkedin-studio`-pluginen («LTL»). > **Skrevet:** 2026-05-26. **Status:** Til godkjenning før bygging. **Versjonsmål:** v1.2.0 → v2.0.0. > **Følger av:** [brief-fullspektrum-innholdsmotor.md](./brief-fullspektrum-innholdsmotor.md) (samme mappe). > @@ -16,7 +16,7 @@ Denne seksjonen gjør planen selvstendig. Hvis et begrep brukes senere uten fork | Det | Hva | Absolutt sti | Rolle her | |-----|-----|--------------|-----------| -| **LTL-pluginen** | Claude Code-plugin for LinkedIn thought leadership. v1.2.0. 27 kommandoer, 16 agenter, 9 hooks, 6 skills. | `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-thought-leadership/` | **DETTE er repoet vi bygger i.** All plugin-endring skjer her. | +| **LTL-pluginen** | Claude Code-plugin for LinkedIn thought leadership. v1.2.0. 27 kommandoer, 16 agenter, 9 hooks, 6 skills. | `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-studio/` | **DETTE er repoet vi bygger i.** All plugin-endring skjer her. | | **Marketplace-rot** | Open-source plugin-marketplace (flere plugins + `shared/`). Distribueres via Forgejo: `git.fromaitochitta.com/open/ktg-plugin-marketplace` (aldri GitHub). | `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/` | Rot-`README.md` må oppdateres ved feature-endring (doc-plikt). | | **maskinrommet** | Privat, lokalt repo (INGEN git-remote) der operatøren produserer alt LinkedIn-innhold. Inneholder `tools/` (4 render-skript + `fonts/`) og `serier//` (én innholdsserie per mappe). | `/Users/ktg/repos/maskinrommet/` | **Annet repo enn pluginen.** Skriving hit krever eksplisitt instruks (cross-repo). Vi leser render-skriptene herfra i S1. | | **Voyage-pluginen** | En annen plugin i samme marketplace. Implementerer en kontrakt-drevet, multi-sesjons pipeline for KODE-prosjekter: kommandoene `/trekbrief` → `/trekresearch` → `/trekplan` → `/trekexecute` → `/trekreview`, med parallelle spesialist-agenter og adversarielle reviewere. | `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/voyage/` | **Referanse/inspirasjon, IKKE avhengighet.** Vi løfter *mønsteret* (faset pipeline, parallelle agenter, adversariell review før lås, multi-sesjon), men kopierer ALDRI koden — Voyage er kode-spesifikk (`file:line`, kode-reviewere, RULE_CATALOGUE). Les den for mønster-inspirasjon. | @@ -441,7 +441,7 @@ Enhver feature-endring oppdaterer i SAMME commit: plugin-`README.md`, plugin-`CL ## 12. Filmanifest -Alle stier relativt til pluginen `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-thought-leadership/` med mindre annet er angitt. +Alle stier relativt til pluginen `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-studio/` med mindre annet er angitt. **Nye filer:** - `commands/newsletter.md` — orkestrator-kommandoen (§5) diff --git a/plugins/linkedin-thought-leadership/docs/voyage-build-brief.md b/plugins/linkedin-studio/docs/voyage-build-brief.md similarity index 94% rename from plugins/linkedin-thought-leadership/docs/voyage-build-brief.md rename to plugins/linkedin-studio/docs/voyage-build-brief.md index ac9ccbc..70cb832 100644 --- a/plugins/linkedin-thought-leadership/docs/voyage-build-brief.md +++ b/plugins/linkedin-studio/docs/voyage-build-brief.md @@ -8,7 +8,7 @@ ## 1. Oppgave -Løft `linkedin-thought-leadership`-pluginen («LTL», v1.2.0) til **v2.0.0**: en fullspektrum-motor for ALT LinkedIn-innhold — fra kortform-post til nyhetsbrev-edition — samtidig som den totale kommando-/agent-overflaten **reduseres** gjennom konsolidering. +Løft `linkedin-studio`-pluginen («LTL», v1.2.0) til **v2.0.0**: en fullspektrum-motor for ALT LinkedIn-innhold — fra kortform-post til nyhetsbrev-edition — samtidig som den totale kommando-/agent-overflaten **reduseres** gjennom konsolidering. Tre arbeidskropper: 1. **Renovering** — konsolider reell redundans (27→~23 kommandoer, 16→~14 agenter). Plan §4. @@ -17,7 +17,7 @@ Tre arbeidskropper: ## 2. Orientering (kritisk — repoer og stier) -- **LTL-pluginen (bygg her):** `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-thought-leadership/`. Plugin-i-monorepo: steg-stier er relative til denne mappa (sett Execution Strategy `cwd:` deretter). +- **LTL-pluginen (bygg her):** `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-studio/`. Plugin-i-monorepo: steg-stier er relative til denne mappa (sett Execution Strategy `cwd:` deretter). - **Marketplace-rot:** `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/` (Forgejo, aldri GitHub). - **maskinrommet (annet repo):** `/Users/ktg/repos/maskinrommet/` — render-skriptene kopieres HERFRA inn i pluginen. Skriving TIL maskinrommet krever eksplisitt instruks (cross-repo, eget spor). - **Voyage:** `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/voyage/` — harness for denne byggingen. diff --git a/plugins/linkedin-thought-leadership/docs/voyage-build/brief.md b/plugins/linkedin-studio/docs/voyage-build/brief.md similarity index 100% rename from plugins/linkedin-thought-leadership/docs/voyage-build/brief.md rename to plugins/linkedin-studio/docs/voyage-build/brief.md diff --git a/plugins/linkedin-thought-leadership/docs/voyage-build/dogfood-S13-friction.md b/plugins/linkedin-studio/docs/voyage-build/dogfood-S13-friction.md similarity index 100% rename from plugins/linkedin-thought-leadership/docs/voyage-build/dogfood-S13-friction.md rename to plugins/linkedin-studio/docs/voyage-build/dogfood-S13-friction.md diff --git a/plugins/linkedin-thought-leadership/docs/voyage-build/plan.md b/plugins/linkedin-studio/docs/voyage-build/plan.md similarity index 100% rename from plugins/linkedin-thought-leadership/docs/voyage-build/plan.md rename to plugins/linkedin-studio/docs/voyage-build/plan.md diff --git a/plugins/linkedin-thought-leadership/hooks/hooks.json b/plugins/linkedin-studio/hooks/hooks.json similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/hooks.json rename to plugins/linkedin-studio/hooks/hooks.json diff --git a/plugins/linkedin-thought-leadership/hooks/hooks.template.json b/plugins/linkedin-studio/hooks/hooks.template.json similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/hooks.template.json rename to plugins/linkedin-studio/hooks/hooks.template.json diff --git a/plugins/linkedin-thought-leadership/hooks/prompts/content-quality-gate.md b/plugins/linkedin-studio/hooks/prompts/content-quality-gate.md similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/prompts/content-quality-gate.md rename to plugins/linkedin-studio/hooks/prompts/content-quality-gate.md diff --git a/plugins/linkedin-thought-leadership/hooks/prompts/post-creation-automation.md b/plugins/linkedin-studio/hooks/prompts/post-creation-automation.md similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/prompts/post-creation-automation.md rename to plugins/linkedin-studio/hooks/prompts/post-creation-automation.md diff --git a/plugins/linkedin-thought-leadership/hooks/prompts/state-update-reminder.md b/plugins/linkedin-studio/hooks/prompts/state-update-reminder.md similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/prompts/state-update-reminder.md rename to plugins/linkedin-studio/hooks/prompts/state-update-reminder.md diff --git a/plugins/linkedin-thought-leadership/hooks/prompts/topic-rotation-gate.md b/plugins/linkedin-studio/hooks/prompts/topic-rotation-gate.md similarity index 97% rename from plugins/linkedin-thought-leadership/hooks/prompts/topic-rotation-gate.md rename to plugins/linkedin-studio/hooks/prompts/topic-rotation-gate.md index 0458d87..0ae91ee 100644 --- a/plugins/linkedin-thought-leadership/hooks/prompts/topic-rotation-gate.md +++ b/plugins/linkedin-studio/hooks/prompts/topic-rotation-gate.md @@ -1,7 +1,7 @@ LINKEDIN TOPIC ROTATION GATE: If the file being written/edited is LinkedIn content (a post draft, article, or content file — NOT config files, state files, scripts, documentation, JSON, or plan files), check topic diversity before proceeding. **Step 1: Read State** -Read `~/.claude/linkedin-thought-leadership.local.md` and extract: +Read `~/.claude/linkedin-studio.local.md` and extract: - `last_post_topic` — the pillar of the most recent post - `expertise_areas` — the user's 5 content pillars - `## Recent Posts` section — post history with topic_area tags diff --git a/plugins/linkedin-thought-leadership/hooks/prompts/voice-guardian.md b/plugins/linkedin-studio/hooks/prompts/voice-guardian.md similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/prompts/voice-guardian.md rename to plugins/linkedin-studio/hooks/prompts/voice-guardian.md diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/__tests__/clipboard-helper.test.mjs b/plugins/linkedin-studio/hooks/scripts/__tests__/clipboard-helper.test.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/scripts/__tests__/clipboard-helper.test.mjs rename to plugins/linkedin-studio/hooks/scripts/__tests__/clipboard-helper.test.mjs diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/__tests__/ical-generator.test.mjs b/plugins/linkedin-studio/hooks/scripts/__tests__/ical-generator.test.mjs similarity index 98% rename from plugins/linkedin-thought-leadership/hooks/scripts/__tests__/ical-generator.test.mjs rename to plugins/linkedin-studio/hooks/scripts/__tests__/ical-generator.test.mjs index 5c17e22..4dab750 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/__tests__/ical-generator.test.mjs +++ b/plugins/linkedin-studio/hooks/scripts/__tests__/ical-generator.test.mjs @@ -29,7 +29,7 @@ describe('generateIcal', () => { const ical = generateIcal([]); assert.match(ical, /^BEGIN:VCALENDAR\r\n/); assert.match(ical, /\r\nEND:VCALENDAR\r\n$/); - assert.match(ical, /PRODID:-\/\/linkedin-thought-leadership\/\/EN/); + assert.match(ical, /PRODID:-\/\/linkedin-studio\/\/EN/); assert.match(ical, /VERSION:2\.0/); assert.ok(!ical.includes('BEGIN:VEVENT'), 'should not contain VEVENT'); }); @@ -39,7 +39,7 @@ describe('generateIcal', () => { assert.match(ical, /BEGIN:VEVENT/); assert.match(ical, /DTSTART;TZID=Europe\/Oslo:20260414T083000/); assert.match(ical, /SUMMARY:LinkedIn: AI strategy in public sector/); - assert.match(ical, /UID:post-2026-04-14-ai-strategy@linkedin-thought-leadership/); + assert.match(ical, /UID:post-2026-04-14-ai-strategy@linkedin-studio/); assert.match(ical, /END:VEVENT/); }); diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/__tests__/state-updater.test.mjs b/plugins/linkedin-studio/hooks/scripts/__tests__/state-updater.test.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/scripts/__tests__/state-updater.test.mjs rename to plugins/linkedin-studio/hooks/scripts/__tests__/state-updater.test.mjs diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/__tests__/week-rollover.test.mjs b/plugins/linkedin-studio/hooks/scripts/__tests__/week-rollover.test.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/scripts/__tests__/week-rollover.test.mjs rename to plugins/linkedin-studio/hooks/scripts/__tests__/week-rollover.test.mjs diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/clipboard-helper.mjs b/plugins/linkedin-studio/hooks/scripts/clipboard-helper.mjs similarity index 97% rename from plugins/linkedin-thought-leadership/hooks/scripts/clipboard-helper.mjs rename to plugins/linkedin-studio/hooks/scripts/clipboard-helper.mjs index 82a0e9e..62ef427 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/clipboard-helper.mjs +++ b/plugins/linkedin-studio/hooks/scripts/clipboard-helper.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -// Cross-platform clipboard helper for linkedin-thought-leadership plugin +// Cross-platform clipboard helper for linkedin-studio plugin // Copies text to system clipboard using platform-native commands. // Standalone: reads stdin and copies it. Import: export { copyToClipboard, clipboardAvailable } diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/compile-hooks.py b/plugins/linkedin-studio/hooks/scripts/compile-hooks.py similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/scripts/compile-hooks.py rename to plugins/linkedin-studio/hooks/scripts/compile-hooks.py diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/content-gatekeeper.mjs b/plugins/linkedin-studio/hooks/scripts/content-gatekeeper.mjs similarity index 96% rename from plugins/linkedin-thought-leadership/hooks/scripts/content-gatekeeper.mjs rename to plugins/linkedin-studio/hooks/scripts/content-gatekeeper.mjs index 869bc3d..4be3db1 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/content-gatekeeper.mjs +++ b/plugins/linkedin-studio/hooks/scripts/content-gatekeeper.mjs @@ -1,6 +1,6 @@ #!/usr/bin/env node // content-gatekeeper.mjs -// Unified PreToolUse/PostToolUse gatekeeper for linkedin-thought-leadership plugin +// Unified PreToolUse/PostToolUse gatekeeper for linkedin-studio plugin // // Replaces 4 nearly identical bash scripts: // pre-content-quality-gate.sh, pre-voice-guardian.sh, diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/ical-generator.mjs b/plugins/linkedin-studio/hooks/scripts/ical-generator.mjs similarity index 97% rename from plugins/linkedin-thought-leadership/hooks/scripts/ical-generator.mjs rename to plugins/linkedin-studio/hooks/scripts/ical-generator.mjs index c828249..17d6ee2 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/ical-generator.mjs +++ b/plugins/linkedin-studio/hooks/scripts/ical-generator.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -// RFC 5545 iCal generator for linkedin-thought-leadership plugin +// RFC 5545 iCal generator for linkedin-studio plugin // Import: import { generateIcal, generateIcalFromQueue, writeIcalFile } from './ical-generator.mjs'; // Standalone: node ical-generator.mjs --from-queue --output path/to/schedule.ics @@ -136,7 +136,7 @@ export function generateIcal(events, options = {}) { const lines = [ 'BEGIN:VCALENDAR', 'VERSION:2.0', - 'PRODID:-//linkedin-thought-leadership//EN', + 'PRODID:-//linkedin-studio//EN', 'CALSCALE:GREGORIAN', 'METHOD:PUBLISH', ]; @@ -153,7 +153,7 @@ export function generateIcal(events, options = {}) { lines.push( 'BEGIN:VEVENT', - `UID:${event.id}@linkedin-thought-leadership`, + `UID:${event.id}@linkedin-studio`, `DTSTAMP:${now}`, `DTSTART;TZID=${tz}:${dtstart}`, `DTEND;TZID=${tz}:${dtend}`, diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/linkedin-content-filter.mjs b/plugins/linkedin-studio/hooks/scripts/linkedin-content-filter.mjs similarity index 95% rename from plugins/linkedin-thought-leadership/hooks/scripts/linkedin-content-filter.mjs rename to plugins/linkedin-studio/hooks/scripts/linkedin-content-filter.mjs index 6e3c89a..a93bed1 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/linkedin-content-filter.mjs +++ b/plugins/linkedin-studio/hooks/scripts/linkedin-content-filter.mjs @@ -33,7 +33,7 @@ export function isLinkedInContent(filePath) { // POSITIVE: explicit LinkedIn content paths only if (normalized.startsWith('assets/drafts/') || normalized.includes('/assets/drafts/')) return true; if (normalized.includes('/linkedin-posts/')) return true; - if (normalized.includes('/linkedin-thought-leadership/assets/')) return true; + if (normalized.includes('/linkedin-studio/assets/')) return true; // DEFAULT: everything else is NOT LinkedIn content return false; diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/personalization-score.mjs b/plugins/linkedin-studio/hooks/scripts/personalization-score.mjs similarity index 98% rename from plugins/linkedin-thought-leadership/hooks/scripts/personalization-score.mjs rename to plugins/linkedin-studio/hooks/scripts/personalization-score.mjs index 53fedae..90b69f9 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/personalization-score.mjs +++ b/plugins/linkedin-studio/hooks/scripts/personalization-score.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -// Personalization score calculator for linkedin-thought-leadership plugin +// Personalization score calculator for linkedin-studio plugin // Checks 8 asset categories for real user data vs placeholder templates // Standalone: outputs SCORE:N|M/8 assets personalized // Import: export function calculateScore(pluginRoot) => { score, personalized, categories } diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/posting-reminder.mjs b/plugins/linkedin-studio/hooks/scripts/posting-reminder.mjs similarity index 97% rename from plugins/linkedin-thought-leadership/hooks/scripts/posting-reminder.mjs rename to plugins/linkedin-studio/hooks/scripts/posting-reminder.mjs index 6df7f7d..f2979ef 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/posting-reminder.mjs +++ b/plugins/linkedin-studio/hooks/scripts/posting-reminder.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -// Notification hook for linkedin-thought-leadership plugin +// Notification hook for linkedin-studio plugin // Fires on idle_prompt to show posting reminders. Rate-limited: max once per 30 min. import { readFileSync, existsSync, statSync, writeFileSync, mkdirSync } from 'node:fs'; @@ -10,7 +10,7 @@ import { queueToday, queueOverdue } from './queue-manager.mjs'; const __dirname = dirname(fileURLToPath(import.meta.url)); const PLUGIN_ROOT = join(__dirname, '..', '..'); const HOME = process.env.HOME || process.env.USERPROFILE || ''; -const STATE_FILE = join(HOME, '.claude', 'linkedin-thought-leadership.local.md'); +const STATE_FILE = join(HOME, '.claude', 'linkedin-studio.local.md'); const SESSION_DIR = '/tmp/linkedin-hooks'; const COOLDOWN_FILE = join(SESSION_DIR, 'last-notification'); const COOLDOWN_SECONDS = 1800; diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/pre-compact.mjs b/plugins/linkedin-studio/hooks/scripts/pre-compact.mjs similarity index 93% rename from plugins/linkedin-thought-leadership/hooks/scripts/pre-compact.mjs rename to plugins/linkedin-studio/hooks/scripts/pre-compact.mjs index 8915f24..13b4ef1 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/pre-compact.mjs +++ b/plugins/linkedin-studio/hooks/scripts/pre-compact.mjs @@ -1,6 +1,6 @@ #!/usr/bin/env node // pre-compact.mjs -// PreCompact hook for linkedin-thought-leadership plugin +// PreCompact hook for linkedin-studio plugin // Reminds Claude to preserve critical LinkedIn session context before compaction // // Exit codes: diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/queue-manager.mjs b/plugins/linkedin-studio/hooks/scripts/queue-manager.mjs similarity index 98% rename from plugins/linkedin-thought-leadership/hooks/scripts/queue-manager.mjs rename to plugins/linkedin-studio/hooks/scripts/queue-manager.mjs index bd4f635..871a202 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/queue-manager.mjs +++ b/plugins/linkedin-studio/hooks/scripts/queue-manager.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -// Queue management library for linkedin-thought-leadership plugin +// Queue management library for linkedin-studio plugin // Import: import { queueRead, queueToday, ... } from './queue-manager.mjs'; // Replaces python3 dependency with native Node.js JSON/Date operations diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/quick-import.mjs b/plugins/linkedin-studio/hooks/scripts/quick-import.mjs similarity index 98% rename from plugins/linkedin-thought-leadership/hooks/scripts/quick-import.mjs rename to plugins/linkedin-studio/hooks/scripts/quick-import.mjs index 4e20abd..8dde107 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/quick-import.mjs +++ b/plugins/linkedin-studio/hooks/scripts/quick-import.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -// Quick-import helper for linkedin-thought-leadership plugin +// Quick-import helper for linkedin-studio plugin // Opens LinkedIn analytics in browser, watches ~/Downloads for new CSV files import { existsSync, mkdirSync, readdirSync, statSync, copyFileSync } from 'node:fs'; diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/session-start.mjs b/plugins/linkedin-studio/hooks/scripts/session-start.mjs similarity index 98% rename from plugins/linkedin-thought-leadership/hooks/scripts/session-start.mjs rename to plugins/linkedin-studio/hooks/scripts/session-start.mjs index e894a1b..4c067b7 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/session-start.mjs +++ b/plugins/linkedin-studio/hooks/scripts/session-start.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -// SessionStart hook for linkedin-thought-leadership plugin +// SessionStart hook for linkedin-studio plugin // Reads persistent state and session context, outputs JSON with additionalContext import { readFileSync, existsSync, copyFileSync, writeFileSync, mkdirSync } from 'node:fs'; @@ -12,7 +12,7 @@ import { applyWeekRollover } from './week-rollover.mjs'; const __dirname = dirname(fileURLToPath(import.meta.url)); const PLUGIN_ROOT = join(__dirname, '..', '..'); const HOME = process.env.HOME || process.env.USERPROFILE || ''; -const STATE_FILE = join(HOME, '.claude', 'linkedin-thought-leadership.local.md'); +const STATE_FILE = join(HOME, '.claude', 'linkedin-studio.local.md'); function extractYaml(content, key) { const re = new RegExp(`^${key}: *"?([^"\\n]*)"?`, 'm'); @@ -234,7 +234,7 @@ if (existsSync(STATE_FILE)) { } // Build context output - context = 'LinkedIn Thought Leadership session context loaded.\\n\\n'; + context = 'LinkedIn Studio session context loaded.\\n\\n'; context += `## Status\\n\`\`\`\\n${statusLine}\\n\`\`\`\\n\\n`; if (weekResetNote) context += `**${weekResetNote}**\\n\\n`; diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/state-updater.mjs b/plugins/linkedin-studio/hooks/scripts/state-updater.mjs similarity index 98% rename from plugins/linkedin-thought-leadership/hooks/scripts/state-updater.mjs rename to plugins/linkedin-studio/hooks/scripts/state-updater.mjs index 35e06a7..774fa95 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/state-updater.mjs +++ b/plugins/linkedin-studio/hooks/scripts/state-updater.mjs @@ -1,4 +1,4 @@ -// Deterministic state mutation functions for linkedin-thought-leadership plugin. +// Deterministic state mutation functions for linkedin-studio plugin. // Pure functions operate on string content (same pattern as week-rollover.mjs). // I/O wrapper (writeState) handles file reads/writes (same pattern as queue-manager.mjs). @@ -9,7 +9,7 @@ import { applyWeekRollover } from './week-rollover.mjs'; const __dirname = dirname(fileURLToPath(import.meta.url)); const HOME = process.env.HOME || process.env.USERPROFILE || ''; -const STATE_FILE = process.env.STATE_FILE || join(HOME, '.claude', 'linkedin-thought-leadership.local.md'); +const STATE_FILE = process.env.STATE_FILE || join(HOME, '.claude', 'linkedin-studio.local.md'); function replaceField(content, field, value) { return content.replace( diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/stop-reminder.mjs b/plugins/linkedin-studio/hooks/scripts/stop-reminder.mjs similarity index 97% rename from plugins/linkedin-thought-leadership/hooks/scripts/stop-reminder.mjs rename to plugins/linkedin-studio/hooks/scripts/stop-reminder.mjs index 7243b9e..41316a3 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/stop-reminder.mjs +++ b/plugins/linkedin-studio/hooks/scripts/stop-reminder.mjs @@ -1,6 +1,6 @@ #!/usr/bin/env node // stop-reminder.mjs -// Stop hook for linkedin-thought-leadership plugin +// Stop hook for linkedin-studio plugin // // Only fires if LinkedIn content was worked on (session marker exists). // First stop: blocks with reason (Claude processes reminders). diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/user-prompt-context.mjs b/plugins/linkedin-studio/hooks/scripts/user-prompt-context.mjs similarity index 97% rename from plugins/linkedin-thought-leadership/hooks/scripts/user-prompt-context.mjs rename to plugins/linkedin-studio/hooks/scripts/user-prompt-context.mjs index a4dbdf4..66938a4 100644 --- a/plugins/linkedin-thought-leadership/hooks/scripts/user-prompt-context.mjs +++ b/plugins/linkedin-studio/hooks/scripts/user-prompt-context.mjs @@ -1,6 +1,6 @@ #!/usr/bin/env node // user-prompt-context.mjs -// UserPromptSubmit hook for linkedin-thought-leadership plugin +// UserPromptSubmit hook for linkedin-studio plugin // // Two-tier keyword matching in user prompts: // Tier 1: Strong signals (slash commands, explicit phrases) @@ -19,7 +19,7 @@ import { fileURLToPath } from 'node:url'; const __dirname = dirname(fileURLToPath(import.meta.url)); const pluginRoot = join(__dirname, '..', '..'); const home = process.env.HOME || process.env.USERPROFILE || ''; -const stateFile = join(home, '.claude', 'linkedin-thought-leadership.local.md'); +const stateFile = join(home, '.claude', 'linkedin-studio.local.md'); // Read stdin JSON let input; diff --git a/plugins/linkedin-thought-leadership/hooks/scripts/week-rollover.mjs b/plugins/linkedin-studio/hooks/scripts/week-rollover.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/hooks/scripts/week-rollover.mjs rename to plugins/linkedin-studio/hooks/scripts/week-rollover.mjs diff --git a/plugins/linkedin-thought-leadership/references/ab-testing-framework.md b/plugins/linkedin-studio/references/ab-testing-framework.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/ab-testing-framework.md rename to plugins/linkedin-studio/references/ab-testing-framework.md diff --git a/plugins/linkedin-thought-leadership/references/ai-content-framework.md b/plugins/linkedin-studio/references/ai-content-framework.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/ai-content-framework.md rename to plugins/linkedin-studio/references/ai-content-framework.md diff --git a/plugins/linkedin-thought-leadership/references/algorithm-signals-reference.md b/plugins/linkedin-studio/references/algorithm-signals-reference.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/algorithm-signals-reference.md rename to plugins/linkedin-studio/references/algorithm-signals-reference.md diff --git a/plugins/linkedin-thought-leadership/references/analytics-tools-guide.md b/plugins/linkedin-studio/references/analytics-tools-guide.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/analytics-tools-guide.md rename to plugins/linkedin-studio/references/analytics-tools-guide.md diff --git a/plugins/linkedin-thought-leadership/references/articles-strategy-guide.md b/plugins/linkedin-studio/references/articles-strategy-guide.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/articles-strategy-guide.md rename to plugins/linkedin-studio/references/articles-strategy-guide.md diff --git a/plugins/linkedin-thought-leadership/references/collaborations-guide.md b/plugins/linkedin-studio/references/collaborations-guide.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/collaborations-guide.md rename to plugins/linkedin-studio/references/collaborations-guide.md diff --git a/plugins/linkedin-thought-leadership/references/engagement-frameworks.md b/plugins/linkedin-studio/references/engagement-frameworks.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/engagement-frameworks.md rename to plugins/linkedin-studio/references/engagement-frameworks.md diff --git a/plugins/linkedin-thought-leadership/references/first-comment-strategy.md b/plugins/linkedin-studio/references/first-comment-strategy.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/first-comment-strategy.md rename to plugins/linkedin-studio/references/first-comment-strategy.md diff --git a/plugins/linkedin-thought-leadership/references/glossary.md b/plugins/linkedin-studio/references/glossary.md similarity index 94% rename from plugins/linkedin-thought-leadership/references/glossary.md rename to plugins/linkedin-studio/references/glossary.md index 14665a9..86dfea9 100644 --- a/plugins/linkedin-thought-leadership/references/glossary.md +++ b/plugins/linkedin-studio/references/glossary.md @@ -1,4 +1,4 @@ -# LinkedIn Thought Leadership Glossary +# LinkedIn Studio Glossary Alphabetical glossary of specialized terminology used across the plugin. Each term includes a definition and cross-references to where it's used. @@ -9,12 +9,12 @@ Alphabetical glossary of specialized terminology used across the plugin. Each te ### 360Brew LinkedIn's 150-parameter foundation model that validates creator profiles before distributing content. Checks expertise alignment across About section, Experience, content history, network quality, and engagement patterns. Content from unvalidated profiles receives limited distribution. -**Used in:** `references/algorithm-signals-reference.md`, `skills/linkedin-thought-leadership/SKILL.md`, `agents/content-optimizer.md` +**Used in:** `references/algorithm-signals-reference.md`, `skills/linkedin-studio/SKILL.md`, `agents/content-optimizer.md` ### 5x5x5 Pre-Posting Method Engagement priming technique performed 15-20 minutes before posting: identify 5 people with overlapping audiences, find their recent posts (last 24h), write 5 thoughtful comments (15+ words each). Primes algorithm visibility and warms engagement signals. -**Used in:** `skills/linkedin-thought-leadership/SKILL.md`, `agents/engagement-coach.md`, `agents/network-builder.md` +**Used in:** `skills/linkedin-studio/SKILL.md`, `agents/engagement-coach.md`, `agents/network-builder.md` --- @@ -62,17 +62,17 @@ Seven-stage journey of repurposed content: Original Creation → First Repurposi ### Content Mix (70/20/10) Optimal content type distribution: 70% Educational (teach, frameworks, how-to), 20% Inspirational (stories, lessons, failures), 10% Entertaining (hot takes, humor, observations). Enforced by content-planner agent. -**Used in:** `skills/linkedin-thought-leadership/SKILL.md`, `agents/content-planner.md`, `references/linkedin-growth-playbook-2025-2026.md` +**Used in:** `skills/linkedin-studio/SKILL.md`, `agents/content-planner.md`, `references/linkedin-growth-playbook-2025-2026.md` ### Content Pillars 3-5 core expertise areas that define your LinkedIn focus. Used for topic consistency validation, gap analysis in content planning, and 360Brew alignment checks. Example for AI content: News, Implementation, Strategy, Tools. -**Used in:** `agents/content-planner.md`, `references/ai-content-framework.md`, `skills/linkedin-thought-leadership/SKILL.md` +**Used in:** `agents/content-planner.md`, `references/ai-content-framework.md`, `skills/linkedin-studio/SKILL.md` ### CTA (Call-to-Action) Specific, genuine engagement prompt at the end of a post. Must feel natural and offer optionality ("Which strategy has worked for your team?" > "What do you think?"). Creates invitation for the engagement that drives distribution. -**Used in:** `references/engagement-frameworks.md`, `skills/linkedin-thought-leadership/SKILL.md`, `agents/content-optimizer.md` +**Used in:** `references/engagement-frameworks.md`, `skills/linkedin-studio/SKILL.md`, `agents/content-optimizer.md` --- @@ -124,7 +124,7 @@ LinkedIn's mechanism for validating creator authority: professional history, pos ### First-Hour Engagement Critical window (0-60 minutes post-publication) determining ~70% of a post's total reach. Requires: 5x5x5 pre-posting engagement, immediate response to first comments (within 5 minutes), and continued engagement through 90 minutes. -**Used in:** `skills/linkedin-thought-leadership/SKILL.md`, `references/linkedin-formats.md`, `agents/engagement-coach.md` +**Used in:** `skills/linkedin-studio/SKILL.md`, `references/linkedin-formats.md`, `agents/engagement-coach.md` ### Four-Stage Distribution Model Sequential post distribution: Stage 1 (0-30s: Quality classifier + 360Brew validation) → Stage 2 (0-90min: Test to 6-10% of connections) → Stage 3 (1-24h: Extended if velocity good) → Stage 4 (24-72h+: Evergreen circulation). @@ -147,7 +147,7 @@ The critical 60-90 minute window post-publication where LinkedIn tests content w ### Hook Opening 110-140 characters of a post that must work standalone on mobile (before "see more" cutoff) and create a curiosity gap. 10 high-performing types: Surprising Stat, Bold Statement, Provocative Question, Contrarian, Personal Confession, Pattern Observation, Time Frame Urgency, Lesson Learned, Scenario, Direct Address. -**Used in:** `references/engagement-frameworks.md`, `skills/linkedin-thought-leadership/SKILL.md`, `agents/content-optimizer.md` +**Used in:** `references/engagement-frameworks.md`, `skills/linkedin-studio/SKILL.md`, `agents/content-optimizer.md` ### Hook Psychology Neuroscience-backed engagement: Pattern interrupts trigger prediction error → dopamine release → information gap demanding cognitive closure. Pattern interrupts are 2.7x more common in viral posts. Optimal first line: ~49 characters. diff --git a/plugins/linkedin-thought-leadership/references/growth-roadmaps.md b/plugins/linkedin-studio/references/growth-roadmaps.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/growth-roadmaps.md rename to plugins/linkedin-studio/references/growth-roadmaps.md diff --git a/plugins/linkedin-thought-leadership/references/linkedin-formats.md b/plugins/linkedin-studio/references/linkedin-formats.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/linkedin-formats.md rename to plugins/linkedin-studio/references/linkedin-formats.md diff --git a/plugins/linkedin-thought-leadership/references/linkedin-growth-playbook-2025-2026.md b/plugins/linkedin-studio/references/linkedin-growth-playbook-2025-2026.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/linkedin-growth-playbook-2025-2026.md rename to plugins/linkedin-studio/references/linkedin-growth-playbook-2025-2026.md diff --git a/plugins/linkedin-thought-leadership/references/linkedin-monetization-strategies.md b/plugins/linkedin-studio/references/linkedin-monetization-strategies.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/linkedin-monetization-strategies.md rename to plugins/linkedin-studio/references/linkedin-monetization-strategies.md diff --git a/plugins/linkedin-thought-leadership/references/linkedin-visual-style.md b/plugins/linkedin-studio/references/linkedin-visual-style.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/linkedin-visual-style.md rename to plugins/linkedin-studio/references/linkedin-visual-style.md diff --git a/plugins/linkedin-thought-leadership/references/longform-quality-rules.md b/plugins/linkedin-studio/references/longform-quality-rules.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/longform-quality-rules.md rename to plugins/linkedin-studio/references/longform-quality-rules.md diff --git a/plugins/linkedin-thought-leadership/references/low-frequency-posting-strategy.md b/plugins/linkedin-studio/references/low-frequency-posting-strategy.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/low-frequency-posting-strategy.md rename to plugins/linkedin-studio/references/low-frequency-posting-strategy.md diff --git a/plugins/linkedin-thought-leadership/references/newsletter-strategy-guide.md b/plugins/linkedin-studio/references/newsletter-strategy-guide.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/newsletter-strategy-guide.md rename to plugins/linkedin-studio/references/newsletter-strategy-guide.md diff --git a/plugins/linkedin-thought-leadership/references/opportunity-generation.md b/plugins/linkedin-studio/references/opportunity-generation.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/opportunity-generation.md rename to plugins/linkedin-studio/references/opportunity-generation.md diff --git a/plugins/linkedin-thought-leadership/references/poll-strategy-guide.md b/plugins/linkedin-studio/references/poll-strategy-guide.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/poll-strategy-guide.md rename to plugins/linkedin-studio/references/poll-strategy-guide.md diff --git a/plugins/linkedin-thought-leadership/references/scheduling-strategy.md b/plugins/linkedin-studio/references/scheduling-strategy.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/scheduling-strategy.md rename to plugins/linkedin-studio/references/scheduling-strategy.md diff --git a/plugins/linkedin-thought-leadership/references/thought-leadership-angles.md b/plugins/linkedin-studio/references/thought-leadership-angles.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/thought-leadership-angles.md rename to plugins/linkedin-studio/references/thought-leadership-angles.md diff --git a/plugins/linkedin-thought-leadership/references/trajectory-strategy-adjustments.md b/plugins/linkedin-studio/references/trajectory-strategy-adjustments.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/trajectory-strategy-adjustments.md rename to plugins/linkedin-studio/references/trajectory-strategy-adjustments.md diff --git a/plugins/linkedin-thought-leadership/references/troubleshooting-guide.md b/plugins/linkedin-studio/references/troubleshooting-guide.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/troubleshooting-guide.md rename to plugins/linkedin-studio/references/troubleshooting-guide.md diff --git a/plugins/linkedin-thought-leadership/references/url-processing-templates.md b/plugins/linkedin-studio/references/url-processing-templates.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/url-processing-templates.md rename to plugins/linkedin-studio/references/url-processing-templates.md diff --git a/plugins/linkedin-thought-leadership/references/video-strategy-guide.md b/plugins/linkedin-studio/references/video-strategy-guide.md similarity index 100% rename from plugins/linkedin-thought-leadership/references/video-strategy-guide.md rename to plugins/linkedin-studio/references/video-strategy-guide.md diff --git a/plugins/linkedin-thought-leadership/render/OFL.txt b/plugins/linkedin-studio/render/OFL.txt similarity index 100% rename from plugins/linkedin-thought-leadership/render/OFL.txt rename to plugins/linkedin-studio/render/OFL.txt diff --git a/plugins/linkedin-thought-leadership/render/__tests__/build-html.test.mjs b/plugins/linkedin-studio/render/__tests__/build-html.test.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/render/__tests__/build-html.test.mjs rename to plugins/linkedin-studio/render/__tests__/build-html.test.mjs diff --git a/plugins/linkedin-thought-leadership/render/__tests__/build-linkedin.test.mjs b/plugins/linkedin-studio/render/__tests__/build-linkedin.test.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/render/__tests__/build-linkedin.test.mjs rename to plugins/linkedin-studio/render/__tests__/build-linkedin.test.mjs diff --git a/plugins/linkedin-thought-leadership/render/__tests__/fixtures/edition-config.json b/plugins/linkedin-studio/render/__tests__/fixtures/edition-config.json similarity index 100% rename from plugins/linkedin-thought-leadership/render/__tests__/fixtures/edition-config.json rename to plugins/linkedin-studio/render/__tests__/fixtures/edition-config.json diff --git a/plugins/linkedin-thought-leadership/render/__tests__/weasyprint-degradation.test.mjs b/plugins/linkedin-studio/render/__tests__/weasyprint-degradation.test.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/render/__tests__/weasyprint-degradation.test.mjs rename to plugins/linkedin-studio/render/__tests__/weasyprint-degradation.test.mjs diff --git a/plugins/linkedin-thought-leadership/render/build-carousel.mjs b/plugins/linkedin-studio/render/build-carousel.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/render/build-carousel.mjs rename to plugins/linkedin-studio/render/build-carousel.mjs diff --git a/plugins/linkedin-thought-leadership/render/build-html.mjs b/plugins/linkedin-studio/render/build-html.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/render/build-html.mjs rename to plugins/linkedin-studio/render/build-html.mjs diff --git a/plugins/linkedin-thought-leadership/render/build-linkedin.mjs b/plugins/linkedin-studio/render/build-linkedin.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/render/build-linkedin.mjs rename to plugins/linkedin-studio/render/build-linkedin.mjs diff --git a/plugins/linkedin-thought-leadership/render/build-pdf.mjs b/plugins/linkedin-studio/render/build-pdf.mjs similarity index 100% rename from plugins/linkedin-thought-leadership/render/build-pdf.mjs rename to plugins/linkedin-studio/render/build-pdf.mjs diff --git a/plugins/linkedin-thought-leadership/render/fonts/Inter-400.ttf b/plugins/linkedin-studio/render/fonts/Inter-400.ttf similarity index 100% rename from plugins/linkedin-thought-leadership/render/fonts/Inter-400.ttf rename to plugins/linkedin-studio/render/fonts/Inter-400.ttf diff --git a/plugins/linkedin-thought-leadership/render/fonts/Inter-600.ttf b/plugins/linkedin-studio/render/fonts/Inter-600.ttf similarity index 100% rename from plugins/linkedin-thought-leadership/render/fonts/Inter-600.ttf rename to plugins/linkedin-studio/render/fonts/Inter-600.ttf diff --git a/plugins/linkedin-thought-leadership/render/fonts/Inter-700.ttf b/plugins/linkedin-studio/render/fonts/Inter-700.ttf similarity index 100% rename from plugins/linkedin-thought-leadership/render/fonts/Inter-700.ttf rename to plugins/linkedin-studio/render/fonts/Inter-700.ttf diff --git a/plugins/linkedin-thought-leadership/render/fonts/Newsreader-400.ttf b/plugins/linkedin-studio/render/fonts/Newsreader-400.ttf similarity index 100% rename from plugins/linkedin-thought-leadership/render/fonts/Newsreader-400.ttf rename to plugins/linkedin-studio/render/fonts/Newsreader-400.ttf diff --git a/plugins/linkedin-thought-leadership/render/fonts/Newsreader-400i.ttf b/plugins/linkedin-studio/render/fonts/Newsreader-400i.ttf similarity index 100% rename from plugins/linkedin-thought-leadership/render/fonts/Newsreader-400i.ttf rename to plugins/linkedin-studio/render/fonts/Newsreader-400i.ttf diff --git a/plugins/linkedin-thought-leadership/render/fonts/Newsreader-600.ttf b/plugins/linkedin-studio/render/fonts/Newsreader-600.ttf similarity index 100% rename from plugins/linkedin-thought-leadership/render/fonts/Newsreader-600.ttf rename to plugins/linkedin-studio/render/fonts/Newsreader-600.ttf diff --git a/plugins/linkedin-thought-leadership/render/fonts/Newsreader-600i.ttf b/plugins/linkedin-studio/render/fonts/Newsreader-600i.ttf similarity index 100% rename from plugins/linkedin-thought-leadership/render/fonts/Newsreader-600i.ttf rename to plugins/linkedin-studio/render/fonts/Newsreader-600i.ttf diff --git a/plugins/linkedin-thought-leadership/render/fonts/Newsreader-700.ttf b/plugins/linkedin-studio/render/fonts/Newsreader-700.ttf similarity index 100% rename from plugins/linkedin-thought-leadership/render/fonts/Newsreader-700.ttf rename to plugins/linkedin-studio/render/fonts/Newsreader-700.ttf diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/package-lock.json b/plugins/linkedin-studio/scripts/analytics/package-lock.json similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/package-lock.json rename to plugins/linkedin-studio/scripts/analytics/package-lock.json diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/package.json b/plugins/linkedin-studio/scripts/analytics/package.json similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/package.json rename to plugins/linkedin-studio/scripts/analytics/package.json diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/src/cli.ts b/plugins/linkedin-studio/scripts/analytics/src/cli.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/src/cli.ts rename to plugins/linkedin-studio/scripts/analytics/src/cli.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/src/models/types.ts b/plugins/linkedin-studio/scripts/analytics/src/models/types.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/src/models/types.ts rename to plugins/linkedin-studio/scripts/analytics/src/models/types.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/src/parsers/csv-parser.ts b/plugins/linkedin-studio/scripts/analytics/src/parsers/csv-parser.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/src/parsers/csv-parser.ts rename to plugins/linkedin-studio/scripts/analytics/src/parsers/csv-parser.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/src/reports/heatmap.ts b/plugins/linkedin-studio/scripts/analytics/src/reports/heatmap.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/src/reports/heatmap.ts rename to plugins/linkedin-studio/scripts/analytics/src/reports/heatmap.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/src/reports/monthly.ts b/plugins/linkedin-studio/scripts/analytics/src/reports/monthly.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/src/reports/monthly.ts rename to plugins/linkedin-studio/scripts/analytics/src/reports/monthly.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/src/reports/weekly.ts b/plugins/linkedin-studio/scripts/analytics/src/reports/weekly.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/src/reports/weekly.ts rename to plugins/linkedin-studio/scripts/analytics/src/reports/weekly.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/src/utils/alerts.ts b/plugins/linkedin-studio/scripts/analytics/src/utils/alerts.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/src/utils/alerts.ts rename to plugins/linkedin-studio/scripts/analytics/src/utils/alerts.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/src/utils/stats.ts b/plugins/linkedin-studio/scripts/analytics/src/utils/stats.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/src/utils/stats.ts rename to plugins/linkedin-studio/scripts/analytics/src/utils/stats.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/src/utils/storage.ts b/plugins/linkedin-studio/scripts/analytics/src/utils/storage.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/src/utils/storage.ts rename to plugins/linkedin-studio/scripts/analytics/src/utils/storage.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/alerts.test.ts b/plugins/linkedin-studio/scripts/analytics/tests/alerts.test.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/alerts.test.ts rename to plugins/linkedin-studio/scripts/analytics/tests/alerts.test.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/csv-parser.test.ts b/plugins/linkedin-studio/scripts/analytics/tests/csv-parser.test.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/csv-parser.test.ts rename to plugins/linkedin-studio/scripts/analytics/tests/csv-parser.test.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/fixtures/bom-export.csv b/plugins/linkedin-studio/scripts/analytics/tests/fixtures/bom-export.csv similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/fixtures/bom-export.csv rename to plugins/linkedin-studio/scripts/analytics/tests/fixtures/bom-export.csv diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/fixtures/empty-export.csv b/plugins/linkedin-studio/scripts/analytics/tests/fixtures/empty-export.csv similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/fixtures/empty-export.csv rename to plugins/linkedin-studio/scripts/analytics/tests/fixtures/empty-export.csv diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/fixtures/european-export.csv b/plugins/linkedin-studio/scripts/analytics/tests/fixtures/european-export.csv similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/fixtures/european-export.csv rename to plugins/linkedin-studio/scripts/analytics/tests/fixtures/european-export.csv diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/fixtures/sample-export.csv b/plugins/linkedin-studio/scripts/analytics/tests/fixtures/sample-export.csv similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/fixtures/sample-export.csv rename to plugins/linkedin-studio/scripts/analytics/tests/fixtures/sample-export.csv diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/heatmap.test.ts b/plugins/linkedin-studio/scripts/analytics/tests/heatmap.test.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/heatmap.test.ts rename to plugins/linkedin-studio/scripts/analytics/tests/heatmap.test.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/monthly.test.ts b/plugins/linkedin-studio/scripts/analytics/tests/monthly.test.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/monthly.test.ts rename to plugins/linkedin-studio/scripts/analytics/tests/monthly.test.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/stats.test.ts b/plugins/linkedin-studio/scripts/analytics/tests/stats.test.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/stats.test.ts rename to plugins/linkedin-studio/scripts/analytics/tests/stats.test.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/storage.test.ts b/plugins/linkedin-studio/scripts/analytics/tests/storage.test.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/storage.test.ts rename to plugins/linkedin-studio/scripts/analytics/tests/storage.test.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tests/weekly.test.ts b/plugins/linkedin-studio/scripts/analytics/tests/weekly.test.ts similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tests/weekly.test.ts rename to plugins/linkedin-studio/scripts/analytics/tests/weekly.test.ts diff --git a/plugins/linkedin-thought-leadership/scripts/analytics/tsconfig.json b/plugins/linkedin-studio/scripts/analytics/tsconfig.json similarity index 100% rename from plugins/linkedin-thought-leadership/scripts/analytics/tsconfig.json rename to plugins/linkedin-studio/scripts/analytics/tsconfig.json diff --git a/plugins/linkedin-thought-leadership/scripts/test-runner.sh b/plugins/linkedin-studio/scripts/test-runner.sh similarity index 96% rename from plugins/linkedin-thought-leadership/scripts/test-runner.sh rename to plugins/linkedin-studio/scripts/test-runner.sh index 77a3752..d300f48 100755 --- a/plugins/linkedin-thought-leadership/scripts/test-runner.sh +++ b/plugins/linkedin-studio/scripts/test-runner.sh @@ -1,5 +1,5 @@ #!/bin/bash -# LinkedIn Thought Leadership Plugin — Structure Validator +# LinkedIn Studio Plugin — Structure Validator # Validates file existence, frontmatter format, and router completeness # Usage: bash scripts/test-runner.sh @@ -21,7 +21,7 @@ fail() { echo -e "${RED}✗${NC} $1"; FAIL=$((FAIL + 1)); } warn() { echo -e "${YELLOW}⚠${NC} $1"; WARN=$((WARN + 1)); } echo "================================================" -echo "LinkedIn Thought Leadership Plugin — Structure Validator" +echo "LinkedIn Studio Plugin — Structure Validator" echo "Plugin root: $PLUGIN_ROOT" echo "================================================" echo "" @@ -129,7 +129,7 @@ echo "" # --- Section 5: Skill Files --- echo "--- Skill Files ---" -for skill in "linkedin-thought-leadership" "linkedin-content-creation" "linkedin-analytics" "linkedin-strategy" "linkedin-networking" "linkedin-voice"; do +for skill in "linkedin-studio" "linkedin-content-creation" "linkedin-analytics" "linkedin-strategy" "linkedin-networking" "linkedin-voice"; do f="skills/${skill}.md" if [ -f "$PLUGIN_ROOT/$f" ]; then pass "$f exists" diff --git a/plugins/linkedin-thought-leadership/skills/linkedin-analytics/SKILL.md b/plugins/linkedin-studio/skills/linkedin-analytics/SKILL.md similarity index 100% rename from plugins/linkedin-thought-leadership/skills/linkedin-analytics/SKILL.md rename to plugins/linkedin-studio/skills/linkedin-analytics/SKILL.md diff --git a/plugins/linkedin-thought-leadership/skills/linkedin-content-creation/SKILL.md b/plugins/linkedin-studio/skills/linkedin-content-creation/SKILL.md similarity index 100% rename from plugins/linkedin-thought-leadership/skills/linkedin-content-creation/SKILL.md rename to plugins/linkedin-studio/skills/linkedin-content-creation/SKILL.md diff --git a/plugins/linkedin-thought-leadership/skills/linkedin-networking/SKILL.md b/plugins/linkedin-studio/skills/linkedin-networking/SKILL.md similarity index 100% rename from plugins/linkedin-thought-leadership/skills/linkedin-networking/SKILL.md rename to plugins/linkedin-studio/skills/linkedin-networking/SKILL.md diff --git a/plugins/linkedin-thought-leadership/skills/linkedin-strategy/SKILL.md b/plugins/linkedin-studio/skills/linkedin-strategy/SKILL.md similarity index 100% rename from plugins/linkedin-thought-leadership/skills/linkedin-strategy/SKILL.md rename to plugins/linkedin-studio/skills/linkedin-strategy/SKILL.md diff --git a/plugins/linkedin-thought-leadership/skills/linkedin-thought-leadership/SKILL.md b/plugins/linkedin-studio/skills/linkedin-studio/SKILL.md similarity index 99% rename from plugins/linkedin-thought-leadership/skills/linkedin-thought-leadership/SKILL.md rename to plugins/linkedin-studio/skills/linkedin-studio/SKILL.md index 620781c..b916474 100644 --- a/plugins/linkedin-thought-leadership/skills/linkedin-thought-leadership/SKILL.md +++ b/plugins/linkedin-studio/skills/linkedin-studio/SKILL.md @@ -1,5 +1,5 @@ --- -name: linkedin-thought-leadership +name: linkedin-studio description: | Main entry point and router for the LinkedIn thought leadership plugin. Provides overview, status, and routes to 5 specialized skills. Contains shared algorithm knowledge and content quality standards. This skill should be used when the user wants a general overview, needs help choosing the right LinkedIn command, or asks about LinkedIn capabilities. diff --git a/plugins/linkedin-thought-leadership/skills/linkedin-voice/SKILL.md b/plugins/linkedin-studio/skills/linkedin-voice/SKILL.md similarity index 100% rename from plugins/linkedin-thought-leadership/skills/linkedin-voice/SKILL.md rename to plugins/linkedin-studio/skills/linkedin-voice/SKILL.md diff --git a/plugins/linkedin-thought-leadership/.claude-plugin/plugin.json b/plugins/linkedin-thought-leadership/.claude-plugin/plugin.json deleted file mode 100644 index 5231899..0000000 --- a/plugins/linkedin-thought-leadership/.claude-plugin/plugin.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "linkedin-thought-leadership", - "version": "2.4.0", - "description": "Full-spectrum LinkedIn content engine — feed posts, carousels, video scripts, and long-form newsletter editions — with the January 2026 360Brew algorithm baked in. v2.4 adds Step 5.5 (editorial review) to /linkedin:newsletter: a new editorial-reviewer agent (Opus) judges craft — prose-craft + narrative-architecture — between fact-check (Step 5) and the persona sweep (Step 6), operator-gated via SendUserFile, mirroring the Maskinrommet writing-contract §C2 (pipeline 14→15 phases, agents 15→16). v2.3 added Step 7.5 (visual assets): cover + inline figures or carousel deck, generated and operator-gated BEFORE lock. v2.2 hardened the longform gates: blocking persona hard-fails, post-cutoff fact-check mandate, a Norwegian-chronicle de-AI voice-scrubber, render+annotate operator gates, and STATE.md-reconciled edition state.", - "author": { - "name": "Kjell Tore Guttormsen" - }, - "license": "MIT", - "repository": "https://git.fromaitochitta.com/open/ktg-plugin-marketplace", - "keywords": ["linkedin", "content-creation", "thought-leadership", "analytics", "360brew"] -}