refactor(linkedin)!: rename plugin linkedin-thought-leadership → linkedin-studio (v3.0.0)
BREAKING CHANGE: the marketplace slug, the agent namespace (linkedin-studio:<agent>), and the runtime state-file path (~/.claude/linkedin-studio.local.md) all change. Reinstall required; existing state migrated in place (post metrics, streak, history preserved). The /linkedin:* commands are unchanged — the command namespace is set per-command in frontmatter and was always independent of the plugin slug. Functionality is byte-identical to v2.4.0; this release is pure identity. - dir + manifests: plugins/linkedin-studio + plugin.json + root marketplace.json - agent namespace updated in commands/newsletter.md (only functional invoker) - state path updated in 4 hook scripts + topic-rotation prompt + state template - catch-all skill dir renamed skills/linkedin-studio (5 functional skills unchanged) - docs + version bump to 3.0.0 across README badge, CHANGELOG, root README/CLAUDE.md - historical records (CHANGELOG past entries, docs/ build artifacts, config-audit v5.0.0 snapshots) intentionally retain the old slug Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
9df3de795c
commit
b6bb61246b
196 changed files with 164 additions and 138 deletions
|
|
@ -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."
|
"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",
|
"name": "linkedin-studio",
|
||||||
"source": "./plugins/linkedin-thought-leadership",
|
"source": "./plugins/linkedin-studio",
|
||||||
"description": "Build LinkedIn thought leadership with algorithmic understanding, strategic consistency, and authentic engagement. Updated for the January 2026 360Brew algorithm change."
|
"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",
|
"name": "graceful-handoff",
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,4 @@
|
||||||
plugins/llm-security/examples/malicious-skill-demo/evil-project-health/lib/telemetry.mjs:generic-api-key:18
|
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
|
# 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
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ plugins/
|
||||||
ai-psychosis/ v1.0.0 — Interaction awareness (sycophancy, reinforcement loops)
|
ai-psychosis/ v1.0.0 — Interaction awareness (sycophancy, reinforcement loops)
|
||||||
config-audit/ v3.1.0 — Configuration intelligence (health, opportunities, auto-fix, whats-active)
|
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)
|
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:<agent>`) + 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.
|
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)
|
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
|
okr/ v1.0.0 — OKR guidance for Norwegian public sector
|
||||||
|
|
|
||||||
|
|
@ -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.
|
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.
|
- **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`.
|
- **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
|
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)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,7 @@ If you need:
|
||||||
|
|
||||||
- **Persona shaping** (Cosmo Skyberg / specific advisor voices) — see `ms-ai-architect`
|
- **Persona shaping** (Cosmo Skyberg / specific advisor voices) — see `ms-ai-architect`
|
||||||
- **Behavioral overrides** (anti-sycophancy, reinforcement-loop detection) — see `ai-psychosis`
|
- **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
|
- **Domain-specific workflows** (OKR, security audits, planning pipelines) — see the other plugins
|
||||||
|
|
||||||
Those are domain plugins. This one is the shared chassis underneath them.
|
Those are domain plugins. This one is the shared chassis underneath them.
|
||||||
|
|
|
||||||
11
plugins/linkedin-studio/.claude-plugin/plugin.json
Normal file
11
plugins/linkedin-studio/.claude-plugin/plugin.json
Normal file
|
|
@ -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"]
|
||||||
|
}
|
||||||
|
|
@ -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/),
|
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).
|
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:<agent>`), 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:<name>` (was `linkedin-thought-leadership:<name>`). 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
|
## [2.4.0] - 2026-05-29
|
||||||
|
|
||||||
### Summary
|
### Summary
|
||||||
|
|
@ -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).
|
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
|
## 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
|
- **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
|
- **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
|
- **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.
|
**Rule:** Always read `assets/voice-samples/` before generating content.
|
||||||
|
|
||||||
**Invocation form:** Commands invoke plugin agents by their **namespaced** type —
|
**Invocation form:** Commands invoke plugin agents by their **namespaced** type —
|
||||||
`subagent_type: linkedin-thought-leadership:<name>` — never the bare `<name>` (a bare
|
`subagent_type: linkedin-studio:<name>` — never the bare `<name>` (a bare
|
||||||
type does not resolve and the `Task` call fails).
|
type does not resolve and the `Task` call fails).
|
||||||
|
|
||||||
**Reload requirement:** Adding a NEW agent file under `agents/` registers it only after
|
**Reload requirement:** Adding a NEW agent file under `agents/` registers it only after
|
||||||
|
|
@ -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.
|
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
|
## Testing locally
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
claude plugin add /path/to/linkedin-thought-leadership
|
claude plugin add /path/to/linkedin-studio
|
||||||
|
|
||||||
# In a Claude Code session:
|
# In a Claude Code session:
|
||||||
/linkedin # Check status and command menu
|
/linkedin # Check status and command menu
|
||||||
|
|
@ -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.
|
> 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)*
|
*AI-generated: all code produced by Claude Code through dialog-driven development. [Full disclosure →](../../README.md#ai-generated-code-disclosure)*
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|
@ -20,6 +20,7 @@ A comprehensive Claude Code plugin that turns LinkedIn from a chore into a full-
|
||||||
|
|
||||||
## Table of Contents
|
## 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.4.0](#whats-new-in-v240)
|
||||||
- [What's New in v2.3.0](#whats-new-in-v230)
|
- [What's New in v2.3.0](#whats-new-in-v230)
|
||||||
- [What's New in v2.2.0](#whats-new-in-v220)
|
- [What's New in v2.2.0](#whats-new-in-v220)
|
||||||
|
|
@ -43,6 +44,14 @@ A comprehensive Claude Code plugin that turns LinkedIn from a chore into a full-
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## What's New in v3.0.0
|
||||||
|
|
||||||
|
**The plugin is renamed `linkedin-thought-leadership` → `linkedin-studio` ("LinkedIn Thought Leadership" → LinkedIn Studio).** The old display title read as pompous; the new name is plain and matches how the plugin already describes itself — a *LinkedIn content engine*. This is a **breaking** release because the identity changes at three levels, but **no functionality changes** — v3.0.0 is byte-for-byte v2.4.0 under a new name.
|
||||||
|
|
||||||
|
- **What changed:** the marketplace **slug** (`linkedin-studio`), the **agent namespace** (`linkedin-studio:<agent>`, used by `/linkedin:newsletter`), and the **runtime state-file path** (`~/.claude/linkedin-studio.local.md`, migrated in place — your post metrics, streak, and content history are preserved).
|
||||||
|
- **What did *not* change:** the **commands**. `/linkedin:post`, `/linkedin:newsletter`, `/linkedin:quick`, and every other command are invoked exactly as before — the `/linkedin:` namespace is set per-command in frontmatter and was always independent of the plugin slug. 24 commands, 16 agents, 9 hooks — all unchanged.
|
||||||
|
- **Action required:** **reinstall the plugin** so Claude Code registers the new slug and agent namespace, then reload the session. Until reload, the renamed agents won't resolve.
|
||||||
|
|
||||||
## What's New in v2.4.0
|
## 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.
|
**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
|
```json
|
||||||
{
|
{
|
||||||
"enabledPlugins": {
|
"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).
|
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**
|
> **Note (agent invocation + reload):** Commands invoke agents by their **namespaced**
|
||||||
> type — `subagent_type: linkedin-thought-leadership:<name>`, never the bare name. And a
|
> type — `subagent_type: linkedin-studio:<name>`, never the bare name. And a
|
||||||
> **newly added** agent file under `agents/` only becomes invokable after a Claude Code
|
> **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
|
> **session reload** (the plugin agent set is built at session start). Add the agent, then
|
||||||
> reload before invoking it.
|
> 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 |
|
| 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-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-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` |
|
| `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
|
### 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
|
```yaml
|
||||||
---
|
---
|
||||||
|
|
@ -595,6 +604,7 @@ Scheduled posts are tracked in `assets/drafts/queue.json`:
|
||||||
|
|
||||||
| Version | Date | Highlights |
|
| Version | Date | Highlights |
|
||||||
|---------|------|-----------|
|
|---------|------|-----------|
|
||||||
|
| **3.0.0** | 2026-05-29 | **Renamed** `linkedin-thought-leadership` → `linkedin-studio` ("LinkedIn Thought Leadership" → **LinkedIn Studio**). Breaking (slug + agent namespace `linkedin-studio:<agent>` + runtime state path `~/.claude/linkedin-studio.local.md` all change; reinstall required, state migrated in place), but **functionality byte-identical to v2.4.0**. The `/linkedin:*` commands are unchanged (frontmatter-namespaced, slug-independent). Catch-all skill dir renamed to match (`skills/linkedin-studio/`); the five functional skills unchanged. |
|
||||||
| **2.4.0** | 2026-05-29 | Editor's craft gate as an explicit pipeline phase. New **`editorial-reviewer` agent** (Opus) + **Step 5.5 — Editorial review** in `/linkedin:newsletter` (between fact-check and the persona sweep): two axes — **prosa-håndverk** (em-dash density, verbatim repetition, postulated numbers, contradictions, versal-tic) + **narrativ-arkitektur** (concrete instantiation, theory-anchored hypotheses, series-title symmetry, equal action per addressee, un-overloaded conclusion); ≤10 flags BLOCK/REWORK/NICE as direction; operator-gated via `SendUserFile`; mirrors Maskinrommet §C2. Motivated by Del 4 (every persona PASS, yet 8 fresh editor points, ~6/8 craft/architecture blind spots). `editorial-review` phase + additive `editorialReview` state. Pipeline 14 → 15 phases; 15 → 16 agents. New agent + fasit fixture + lint test the only new files; commands (24) unchanged. |
|
| **2.4.0** | 2026-05-29 | Editor's craft gate as an explicit pipeline phase. New **`editorial-reviewer` agent** (Opus) + **Step 5.5 — Editorial review** in `/linkedin:newsletter` (between fact-check and the persona sweep): two axes — **prosa-håndverk** (em-dash density, verbatim repetition, postulated numbers, contradictions, versal-tic) + **narrativ-arkitektur** (concrete instantiation, theory-anchored hypotheses, series-title symmetry, equal action per addressee, un-overloaded conclusion); ≤10 flags BLOCK/REWORK/NICE as direction; operator-gated via `SendUserFile`; mirrors Maskinrommet §C2. Motivated by Del 4 (every persona PASS, yet 8 fresh editor points, ~6/8 craft/architecture blind spots). `editorial-review` phase + additive `editorialReview` state. Pipeline 14 → 15 phases; 15 → 16 agents. New agent + fasit fixture + lint test the only new files; commands (24) unchanged. |
|
||||||
| **2.3.0** | 2026-05-28 | Visual assets as an explicit pipeline phase. New **Step 7.5 — Visual assets** in `/linkedin:newsletter` (between annotation and lock): cover (+ optional inline figures) or carousel deck, generated (default `mcp-image`; external `cover-raw.png` accepted) and operator-gated via `SendUserFile` BEFORE lock so `build-linkedin.mjs` picks up `cover.png` without a post-lock re-render. Explicit `format: "carousel"` branch reusing `build-carousel.mjs`. New `config/image-credit-caption.template.md`; additive `visualAssets` state + naming convention (`cover.png` / `cover-v<N>-kandidat.png` / `cover-raw.png` / `fig<N>.png`). Pipeline 13 → 14 phases. Doc/orchestration-only (no new code); commands (24) + agents (15) unchanged. |
|
| **2.3.0** | 2026-05-28 | Visual assets as an explicit pipeline phase. New **Step 7.5 — Visual assets** in `/linkedin:newsletter` (between annotation and lock): cover (+ optional inline figures) or carousel deck, generated (default `mcp-image`; external `cover-raw.png` accepted) and operator-gated via `SendUserFile` BEFORE lock so `build-linkedin.mjs` picks up `cover.png` without a post-lock re-render. Explicit `format: "carousel"` branch reusing `build-carousel.mjs`. New `config/image-credit-caption.template.md`; additive `visualAssets` state + naming convention (`cover.png` / `cover-v<N>-kandidat.png` / `cover-raw.png` / `fig<N>.png`). Pipeline 13 → 14 phases. Doc/orchestration-only (no new code); commands (24) + agents (15) unchanged. |
|
||||||
| **2.2.0** | 2026-05-28 | Longform gates hardened (2nd production run). Persona gate blocking with explicit hard-fail list (primær mistet meg / doesn't own action / sjargong-mur / modell-navne-katalog → BLOCK; «JA med forbehold» = NEI). Fact-check post-cutoff web-search mandate + high-frequency-error checklist. New `voice-scrubber` agent (Opus): de-AI scrub + Norwegian-chronicle voice-drift, gold standard = approved Norwegian editions (NOT the English post corpus). Render+annotate operator gates (Steps 2.5/3a). Edition state reconciled with STATE.md (ONE-system); `edition-HANDOVER.template.md` deleted. 14 → 15 agents; commands unchanged (24). |
|
| **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). |
|
||||||
|
|
@ -70,7 +70,7 @@ Always load these for pattern comparison:
|
||||||
## Manual Data Sources (fallback)
|
## Manual Data Sources (fallback)
|
||||||
|
|
||||||
When structured analytics aren't available:
|
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/plans/` — Planned vs. actual content
|
||||||
- `${CLAUDE_PLUGIN_ROOT}/assets/drafts/` — Draft history
|
- `${CLAUDE_PLUGIN_ROOT}/assets/drafts/` — Draft history
|
||||||
- See `${CLAUDE_PLUGIN_ROOT}/assets/analytics/README.md` for data format and directory structure.
|
- See `${CLAUDE_PLUGIN_ROOT}/assets/analytics/README.md` for data format and directory structure.
|
||||||
|
|
@ -28,13 +28,13 @@ You are a LinkedIn content planning specialist. You create strategic content pla
|
||||||
Read these files before planning:
|
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/thought-leadership-angles.md → 8 universal angles
|
||||||
${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → growth strategies
|
${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/low-frequency-posting-strategy.md → sustainable posting
|
||||||
${CLAUDE_PLUGIN_ROOT}/references/linkedin-formats.md → format options
|
${CLAUDE_PLUGIN_ROOT}/references/linkedin-formats.md → format options
|
||||||
${CLAUDE_PLUGIN_ROOT}/assets/templates/weekly-content-calendar-2-3x.md → calendar template
|
${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.
|
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
|
### 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
|
- Set `next_planned_topic` to the first upcoming topic
|
||||||
- Add planned topics to the recent topics list for dedup
|
- Add planned topics to the recent topics list for dedup
|
||||||
- Update `last_plan_date`
|
- Update `last_plan_date`
|
||||||
|
|
@ -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}/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/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_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
|
## Step 1: Source Content Analysis
|
||||||
|
|
@ -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/engagement-frameworks.md → engagement methods
|
||||||
${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → growth strategies
|
${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}/references/opportunity-generation.md → conversion + DM strategy
|
||||||
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → user expertise + voice
|
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → user expertise + voice
|
||||||
~/.claude/linkedin-thought-leadership.local.md → user state + network data
|
~/.claude/linkedin-studio.local.md → user state + network data
|
||||||
```
|
```
|
||||||
|
|
||||||
Also check `${CLAUDE_PLUGIN_ROOT}/assets/network/` for existing tracker files.
|
Also check `${CLAUDE_PLUGIN_ROOT}/assets/network/` for existing tracker files.
|
||||||
|
|
@ -36,7 +36,7 @@ Before analyzing anything, load these files:
|
||||||
|
|
||||||
1. **Algorithm knowledge:** Read `${CLAUDE_PLUGIN_ROOT}/references/algorithm-signals-reference.md`
|
1. **Algorithm knowledge:** Read `${CLAUDE_PLUGIN_ROOT}/references/algorithm-signals-reference.md`
|
||||||
2. **Engagement frameworks:** Read `${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.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
|
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.
|
This gives you the user's baseline performance and algorithm context for accurate benchmarking.
|
||||||
|
|
@ -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/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}/assets/examples/high-engagement-posts.md → proven patterns from top posts
|
||||||
${CLAUDE_PLUGIN_ROOT}/references/trajectory-strategy-adjustments.md → trajectory-to-action mappings
|
${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.
|
Use demographics data to compare the user's **intended** audience vs **actual** engagers when making strategic recommendations.
|
||||||
|
|
@ -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}/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/voice-samples/ → User's authentic voice (ALWAYS read before scripting)
|
||||||
${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md → Successful content patterns
|
${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
|
## Step 1: Video Type Selection
|
||||||
|
|
@ -218,7 +218,7 @@ Examples:
|
||||||
video-2026-01-30-copilot-demo-screen-recording-60s.md
|
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)
|
- Update `last_post_date`, `posts_this_week`, streak (same as text posts)
|
||||||
- Add to "Recent Posts" section with format note: `[VIDEO/talking-head/90s]`
|
- Add to "Recent Posts" section with format note: `[VIDEO/talking-head/90s]`
|
||||||
|
|
||||||
|
|
@ -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
|
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
|
## Step 1: Determine Intent
|
||||||
|
|
||||||
|
|
@ -20,7 +20,7 @@ You are a LinkedIn performance analyst. Help the user diagnose why their content
|
||||||
Read these reference files:
|
Read these reference files:
|
||||||
- `references/troubleshooting-guide.md` - Failure patterns and solutions
|
- `references/troubleshooting-guide.md` - Failure patterns and solutions
|
||||||
- `references/algorithm-signals-reference.md` - Algorithm mechanics
|
- `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
|
## Step 1: Diagnose the Problem
|
||||||
|
|
||||||
|
|
@ -20,9 +20,9 @@ You are a LinkedIn content strategy auditor. Conduct a thorough review of the us
|
||||||
## Step 0: Gather Data
|
## Step 0: Gather Data
|
||||||
|
|
||||||
Load all available 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}/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/`
|
- 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/demographics.md` for audience composition — compare intended vs actual audience
|
||||||
- Read `assets/audience-insights/engagement-patterns.md` for tracked patterns (timing, topics, formats, hooks)
|
- 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
|
## 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
|
### Growth Trajectory
|
||||||
|
|
||||||
|
|
@ -23,8 +23,8 @@ You are a LinkedIn batch content creator. Help the user create an entire week's
|
||||||
## Step 0: Load Context
|
## Step 0: Load Context
|
||||||
|
|
||||||
Load state and personalization:
|
Load state and personalization:
|
||||||
- Read `~/.claude/linkedin-thought-leadership.local.md` for recent topics and weekly goals
|
- Read `~/.claude/linkedin-studio.local.md` for recent topics and weekly goals
|
||||||
- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` for profile and preferences
|
- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` for profile and preferences
|
||||||
- Check `${CLAUDE_PLUGIN_ROOT}/assets/plans/` for existing weekly plan
|
- 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
|
- Read `assets/templates/my-post-templates.md` for proven templates — vary templates across the batch for format diversity
|
||||||
|
|
||||||
|
|
@ -42,7 +42,7 @@ console.log(JSON.stringify(queueCount(), null, 2));
|
||||||
```
|
```
|
||||||
|
|
||||||
Also read state for context:
|
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
|
## Step 2: Display Calendar View
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ You are a LinkedIn carousel content specialist. Create high-engagement carousel
|
||||||
|
|
||||||
## Step 0: Load Context
|
## 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
|
- Read `assets/voice-samples/authentic-voice-samples.md` for voice profile
|
||||||
- Check recent posts to avoid topic repetition
|
- Check recent posts to avoid topic repetition
|
||||||
|
|
||||||
|
|
@ -20,8 +20,8 @@ You are a LinkedIn competitive intelligence analyst. Help the user learn from ot
|
||||||
## Step 0: Load Context
|
## Step 0: Load Context
|
||||||
|
|
||||||
Read the user's profile and strategy:
|
Read the user's profile and strategy:
|
||||||
- `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` — Expertise areas and positioning
|
- `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` — Expertise areas and positioning
|
||||||
- `~/.claude/linkedin-thought-leadership.local.md` — Current posting patterns
|
- `~/.claude/linkedin-studio.local.md` — Current posting patterns
|
||||||
|
|
||||||
## Step 1: Identify Competitors
|
## Step 1: Identify Competitors
|
||||||
|
|
||||||
|
|
@ -23,7 +23,7 @@ The first post doesn't need to be perfect. It needs to EXIST. Every day without
|
||||||
|
|
||||||
## Step 0: Load Context
|
## 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).
|
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.
|
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.
|
||||||
|
|
@ -222,7 +222,7 @@ Run /linkedin:report (period: 4w)
|
||||||
|
|
||||||
`/linkedin:report` will:
|
`/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:
|
2. Call `trends` for impressions and engagement_rate over the last 4 weeks:
|
||||||
```bash
|
```bash
|
||||||
ANALYTICS_ROOT="${CLAUDE_PLUGIN_ROOT}/assets/analytics" node --import tsx "${CLAUDE_PLUGIN_ROOT}/scripts/analytics/src/cli.ts" trends --period 4w --metric impressions
|
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:
|
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_date to today (YYYY-MM-DD)
|
||||||
Set last_import_week to current ISO week (YYYY-WXX)
|
Set last_import_week to current ISO week (YYYY-WXX)
|
||||||
Write the updated state file
|
Write the updated state file
|
||||||
|
|
@ -11,13 +11,13 @@ allowed-tools:
|
||||||
- AskUserQuestion
|
- 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.
|
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
|
## 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)
|
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
|
## Reference
|
||||||
|
|
||||||
For full skill documentation, see:
|
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
|
||||||
|
|
@ -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/opportunity-generation.md → conversion funnels, DM strategy
|
||||||
${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → algorithm context
|
${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → algorithm context
|
||||||
${CLAUDE_PLUGIN_ROOT}/references/growth-roadmaps.md → stage progression
|
${CLAUDE_PLUGIN_ROOT}/references/growth-roadmaps.md → stage progression
|
||||||
~/.claude/linkedin-thought-leadership.local.md → user state + posting data
|
~/.claude/linkedin-studio.local.md → user state + posting data
|
||||||
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → expertise areas
|
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → expertise areas
|
||||||
```
|
```
|
||||||
|
|
||||||
## Step 1: Readiness Assessment
|
## Step 1: Readiness Assessment
|
||||||
|
|
@ -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:
|
Ask the user to provide their LinkedIn content or read from drafts:
|
||||||
- Read `${CLAUDE_PLUGIN_ROOT}/assets/drafts/` for recent content
|
- 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
|
## Step 1: Select Target Platform
|
||||||
|
|
||||||
|
|
@ -60,8 +60,8 @@ This command is **fundamentally different** from the short-form commands:
|
||||||
delegate the fan-out to a nested background agent.
|
delegate the fan-out to a nested background agent.
|
||||||
|
|
||||||
> **Agent invocation form (required).** Plugin agents resolve only under their
|
> **Agent invocation form (required).** Plugin agents resolve only under their
|
||||||
> namespaced type — `subagent_type: linkedin-thought-leadership:<name>` (e.g.
|
> namespaced type — `subagent_type: linkedin-studio:<name>` (e.g.
|
||||||
> `linkedin-thought-leadership:fact-checker`), never the bare `<name>`. A bare
|
> `linkedin-studio:fact-checker`), never the bare `<name>`. A bare
|
||||||
> `subagent_type` does not resolve and the `Task` call fails. Every
|
> `subagent_type` does not resolve and the `Task` call fails. Every
|
||||||
> `subagent_type` below is written in the namespaced form for this reason.
|
> `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.**
|
5. **Persona-skjelett-sweep — fan out `persona-reviewer` in skjelett-mode.**
|
||||||
Issue one `persona-reviewer` call per active persona in parallel — a SINGLE
|
Issue one `persona-reviewer` call per active persona in parallel — a SINGLE
|
||||||
message with multiple `Task` tool-uses, `subagent_type:
|
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
|
the foreground (principle 4). Pass each call the persona name, the path to
|
||||||
`<serie>/NN-skjelett.md`, and **`mode: skjelett`** (the before-prose mode —
|
`<serie>/NN-skjelett.md`, and **`mode: skjelett`** (the before-prose mode —
|
||||||
five spine axes, ≤3 flags as direction, HOLDER/TVILER/MANGLER scoring).
|
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
|
3. **Expand with the `content-repurposer` muscle.** Reuse
|
||||||
`agents/content-repurposer.md` (its article→long-form conversion discipline)
|
`agents/content-repurposer.md` (its article→long-form conversion discipline)
|
||||||
for individual section expansions — invoke it via `Task` (`subagent_type:
|
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
|
command layer* (foreground, principle 4). The command owns assembly and
|
||||||
voice; the agent assists with conversion. The draft is voice-matched by
|
voice; the agent assists with conversion. The draft is voice-matched by
|
||||||
THIS session, not self-certified for voice — voice-match remains an
|
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
|
**De-AI / voice scrub (sub-pass — `voice-scrubber`).** After the rule pass, run
|
||||||
the draft through `voice-scrubber` (Opus) — `Task`, `subagent_type:
|
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
|
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
|
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
|
`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.
|
block can be verified independently without overlap.
|
||||||
|
|
||||||
3. **Fan out in parallel — issue all N `fact-checker` calls in a SINGLE message**
|
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
|
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
|
§3). Each call gets one claim-block and returns the agent's standard
|
||||||
verification log + risk-sort (🔴/🟡/🟢) + gate decision (PASS/REWORK/BLOCK).
|
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.
|
settled text, not on a draft still moving under fact fixes.
|
||||||
|
|
||||||
2. **Run `editorial-reviewer` (single foreground `Task` call).** Invoke
|
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
|
command layer in the foreground (principle 4), passing the draft path
|
||||||
(`<serie>/NN-utkast.md`) and — when the edition is part of a series — the
|
(`<serie>/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
|
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
|
2. **Fan out one `persona-reviewer` call per persona, in parallel** — issue them
|
||||||
in a SINGLE message (multiple `Task` tool-uses, `subagent_type:
|
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).
|
foreground (principle 4).
|
||||||
Pass each call its persona name and **`mode: resonans`** (the before-lock mode
|
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
|
— 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".
|
collected post). This is what the reader sees before "…see more".
|
||||||
|
|
||||||
2. **Run `persona-reviewer` in conversion mode** (`subagent_type:
|
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
|
only, from THIS command layer in the foreground. Pass
|
||||||
**`mode: konverter`** (the after-lock, hook-only mode — NOT resonans). The
|
**`mode: konverter`** (the after-lock, hook-only mode — NOT resonans). The
|
||||||
agent returns a single binary verdict, **JA / NEI**, on «would YOU click?» —
|
agent returns a single binary verdict, **JA / NEI**, on «would YOU click?» —
|
||||||
|
|
@ -18,7 +18,7 @@ You are a LinkedIn thought leadership onboarding guide. Walk the user through pr
|
||||||
|
|
||||||
## Step 0: Load Context and Check State
|
## 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:
|
**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]%)."
|
- Show: "You've already completed onboarding (first post: [date], personalization: [score]%)."
|
||||||
|
|
@ -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/opportunity-generation.md → opportunity funnels, DM strategy
|
||||||
${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md → CEA, engagement strategies, content structures
|
${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_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → algorithm context
|
||||||
~/.claude/linkedin-thought-leadership.local.md → user state + posting data
|
~/.claude/linkedin-studio.local.md → user state + posting data
|
||||||
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → expertise areas
|
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → expertise areas
|
||||||
```
|
```
|
||||||
|
|
||||||
## Step 1: Choose Your Outreach Track
|
## Step 1: Choose Your Outreach Track
|
||||||
|
|
@ -24,8 +24,8 @@ You are a LinkedIn content pipeline orchestrator. Guide the user through the com
|
||||||
## Step 0: Load Context
|
## Step 0: Load Context
|
||||||
|
|
||||||
Load persistent state and personalization:
|
Load persistent state and personalization:
|
||||||
- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state
|
- Read `~/.claude/linkedin-studio.local.md` for posting state
|
||||||
- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` for profile and preferences
|
- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` for profile and preferences
|
||||||
- Check `assets/voice-samples/` for voice matching
|
- 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/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
|
- Read `assets/frameworks/framework-template.md` if the topic involves a framework or methodology
|
||||||
|
|
@ -22,8 +22,8 @@ You are a LinkedIn thought leadership content creator. Guide the user through cr
|
||||||
## Step 0: Load Context
|
## Step 0: Load Context
|
||||||
|
|
||||||
First, load persistent state and personalization:
|
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 `skills/linkedin-thought-leadership/SKILL.md` for user profile, voice settings, and preferences
|
- Read `skills/linkedin-studio/SKILL.md` for user profile, voice settings, and preferences
|
||||||
|
|
||||||
Check state for topic planning:
|
Check state for topic planning:
|
||||||
- Compare intended topic against "Recent Posts" in state file
|
- Compare intended topic against "Recent Posts" in state file
|
||||||
|
|
@ -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/algorithm-signals-reference.md` - 360Brew mechanics and signals
|
||||||
- `references/troubleshooting-guide.md` - Recovery if reach is already down
|
- `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
|
||||||
|
|
@ -22,12 +22,12 @@ You are a LinkedIn quick-post assistant. Help the user create a short, impactful
|
||||||
|
|
||||||
## Load Context
|
## 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")
|
- Weekly posting progress (show "X/Y posts this week")
|
||||||
- Recent topics (avoid repetition within 7 days)
|
- Recent topics (avoid repetition within 7 days)
|
||||||
- Current streak status
|
- 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
|
- User's voice profile and tone preferences
|
||||||
- Core expertise areas (for topical alignment)
|
- Core expertise areas (for topical alignment)
|
||||||
- Phrases they commonly use
|
- Phrases they commonly use
|
||||||
|
|
@ -23,7 +23,7 @@ You are a LinkedIn content creator specializing in turning external content into
|
||||||
## Step 0: Load Context
|
## Step 0: Load Context
|
||||||
|
|
||||||
First, load persistent state and personalization:
|
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
|
- Read `assets/voice-samples/authentic-voice-samples.md` for voice profile
|
||||||
- Check recent posts to avoid topic repetition within 7 days
|
- Check recent posts to avoid topic repetition within 7 days
|
||||||
|
|
||||||
|
|
@ -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:
|
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 had 0 posts: "Streak broken - consider posting this week to restart"
|
||||||
- If week hit goal: "Goal achieved! Maintaining consistency."
|
- If week hit goal: "Goal achieved! Maintaining consistency."
|
||||||
- If week exceeded goal: "Exceeding goal - strong momentum!"
|
- 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]
|
3. [Actionable recommendation based on data]
|
||||||
|
|
||||||
---
|
---
|
||||||
*Generated by linkedin-thought-leadership plugin*
|
*Generated by linkedin-studio plugin*
|
||||||
```
|
```
|
||||||
|
|
||||||
**Important notes:**
|
**Important notes:**
|
||||||
|
|
@ -27,11 +27,11 @@ Read these files:
|
||||||
- `references/growth-roadmaps.md` - Detailed phase roadmaps
|
- `references/growth-roadmaps.md` - Detailed phase roadmaps
|
||||||
- `references/linkedin-growth-playbook-2025-2026.md` - Comprehensive tactics
|
- `references/linkedin-growth-playbook-2025-2026.md` - Comprehensive tactics
|
||||||
- `references/trajectory-strategy-adjustments.md` - Trajectory-based strategy adjustments
|
- `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
|
## 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.
|
- If `follower_count > 0`: Auto-detect the user's phase. Skip the "How many followers?" question in Step 1.
|
||||||
- 0-1K → Phase 0: Foundation
|
- 0-1K → Phase 0: Foundation
|
||||||
|
|
@ -249,7 +249,7 @@ Based on their phase, provide detailed guidance.
|
||||||
|
|
||||||
## Step 3.5: Apply Trajectory Adjustments
|
## 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
|
### Determine Schedule Status
|
||||||
|
|
||||||
|
|
@ -21,8 +21,8 @@ You are a LinkedIn video scripting assistant. Guide the user through creating a
|
||||||
## Step 0: Load Context
|
## Step 0: Load Context
|
||||||
|
|
||||||
First, load persistent state and personalization:
|
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 `skills/linkedin-thought-leadership/SKILL.md` for user profile, voice settings, and preferences
|
- Read `skills/linkedin-studio/SKILL.md` for user profile, voice settings, and preferences
|
||||||
|
|
||||||
Check state for topic planning:
|
Check state for topic planning:
|
||||||
- Compare intended topic against "Recent Posts" in state file
|
- Compare intended topic against "Recent Posts" in state file
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# LinkedIn Thought Leadership — Session State
|
# LinkedIn Studio — Session State
|
||||||
|
|
||||||
**Last updated:** [Auto-filled by session-start hook]
|
**Last updated:** [Auto-filled by session-start hook]
|
||||||
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
# LinkedIn Thought Leadership State
|
# LinkedIn Studio State
|
||||||
# Auto-managed by the linkedin-thought-leadership plugin
|
# Auto-managed by the linkedin-studio plugin
|
||||||
# Copy to ~/.claude/linkedin-thought-leadership.local.md
|
# Copy to ~/.claude/linkedin-studio.local.md
|
||||||
|
|
||||||
# Posting metrics
|
# Posting metrics
|
||||||
last_post_date: null
|
last_post_date: null
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Brief — LTL som fullspektrum LinkedIn-innholdsmotor (idé → publisering)
|
# 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).
|
> **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).
|
> **Type:** retningsbrief — beslutningsgrunnlag før planlegging/bygging. Selvstendig (kan leses uten annen kontekst).
|
||||||
|
|
||||||
|
|
@ -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.
|
Manual integration testing scenarios for commands, agents, and hooks in the plugin.
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
Before testing, ensure:
|
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`
|
- [ ] Voice samples exist in `assets/voice-samples/authentic-voice-samples.md`
|
||||||
- [ ] Quality scorecard exists at `assets/checklists/quality-scorecard.md`
|
- [ ] Quality scorecard exists at `assets/checklists/quality-scorecard.md`
|
||||||
- [ ] Plugin is installed: appears in Claude Code's skill/command list
|
- [ ] 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.
|
**Goal:** Graceful handling when state file doesn't exist.
|
||||||
|
|
||||||
**Steps:**
|
**Steps:**
|
||||||
1. Temporarily rename `~/.claude/linkedin-thought-leadership.local.md`
|
1. Temporarily rename `~/.claude/linkedin-studio.local.md`
|
||||||
2. Run `/linkedin:pipeline`
|
2. Run `/linkedin:pipeline`
|
||||||
3. Verify: no crash, reasonable fallback (e.g., "No posting data found. Starting fresh.")
|
3. Verify: no crash, reasonable fallback (e.g., "No posting data found. Starting fresh.")
|
||||||
4. Complete the pipeline
|
4. Complete the pipeline
|
||||||
|
|
@ -220,7 +220,7 @@ Before testing, ensure:
|
||||||
1. Run `/linkedin:pipeline` and create a post
|
1. Run `/linkedin:pipeline` and create a post
|
||||||
2. Note the topic and hook
|
2. Note the topic and hook
|
||||||
3. End the session (or let Stop hook fire)
|
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:
|
5. Verify:
|
||||||
- `last_post_date` = today
|
- `last_post_date` = today
|
||||||
- `last_post_topic` = the topic used
|
- `last_post_topic` = the topic used
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Plan — LTL som fullspektrum LinkedIn-innholdsmotor
|
# 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.
|
> **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).
|
> **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 |
|
| 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). |
|
| **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/<slug>/` (é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. |
|
| **maskinrommet** | Privat, lokalt repo (INGEN git-remote) der operatøren produserer alt LinkedIn-innhold. Inneholder `tools/` (4 render-skript + `fonts/`) og `serier/<slug>/` (é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. |
|
| **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
|
## 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:**
|
**Nye filer:**
|
||||||
- `commands/newsletter.md` — orkestrator-kommandoen (§5)
|
- `commands/newsletter.md` — orkestrator-kommandoen (§5)
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
## 1. Oppgave
|
## 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:
|
Tre arbeidskropper:
|
||||||
1. **Renovering** — konsolider reell redundans (27→~23 kommandoer, 16→~14 agenter). Plan §4.
|
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)
|
## 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).
|
- **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).
|
- **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.
|
- **Voyage:** `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/voyage/` — harness for denne byggingen.
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue