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

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

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

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

View file

@ -172,7 +172,7 @@ If you need:
- **Persona shaping** (Cosmo Skyberg / specific advisor voices) — see `ms-ai-architect`
- **Behavioral overrides** (anti-sycophancy, reinforcement-loop detection) — see `ai-psychosis`
- **Voice training** (your own LinkedIn writing style) — see `linkedin-thought-leadership`
- **Voice training** (your own LinkedIn writing style) — see `linkedin-studio`
- **Domain-specific workflows** (OKR, security audits, planning pipelines) — see the other plugins
Those are domain plugins. This one is the shared chassis underneath them.

View 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"]
}

View file

@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [3.0.0] - 2026-05-29
### Summary
**Plugin renamed `linkedin-thought-leadership``linkedin-studio`** ("LinkedIn Thought Leadership" → **LinkedIn Studio**). The old display title read as pompous; the new name is plain and matches how the plugin already describes itself ("LinkedIn content engine"). This is a **breaking change** — the marketplace slug, the agent namespace (`linkedin-studio:<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
### Summary

View file

@ -1,10 +1,10 @@
# LinkedIn Thought Leadership Plugin (v2.4.0)
# LinkedIn Studio Plugin (v2.4.0)
Full-spectrum LinkedIn content engine — short-form feed posts, carousels, video scripts, and long-form newsletter editions — with the January 2026 360Brew algorithm baked in. v2.0.0 consolidated the surface (27 commands → 24, 16 agents → 14) while adding the long-form `/linkedin:newsletter` orchestrator + two longform-quality gate agents (`fact-checker`, `persona-reviewer`). v2.1.0 added two gates BEFORE prose (Step 2.5 skeleton + Step 3a spine prose) + a third `persona-reviewer` mode (`skjelett`). v2.2.0 hardened the longform gates with the lessons from the second production run (Seres-serien): blocking persona hard-fails, a post-cutoff fact-check mandate, a `voice-scrubber` agent, render+annotate operator gates, and STATE.md-reconciled edition state. v2.3.0 made **visual assets an explicit pipeline phase** — Step 7.5 (visual-assets) between annotation (Step 7) and lock (Step 8): cover (+ optional inline figures) or a carousel deck, generated (default `mcp-image`, external `cover-raw.png` accepted) and operator-gated BEFORE lock so `render/build-linkedin.mjs` picks up `cover.png` at lock without a post-lock re-render. **v2.4.0** makes an **editor's craft gate an explicit pipeline phase** — new **Step 5.5 (editorial-review)** between fact-check (Step 5) and the persona sweep (Step 6): a new **`editorial-reviewer` agent** (Opus) judges **craft** (prosa-håndverk + narrativ-arkitektur), not reader-response, returning ≤10 flags (BLOCK/REWORK/NICE) as direction, **operator-gated via `SendUserFile` BEFORE the persona sweep** so the personas measure resonance instead of stumbling on craft noise. Motivated by Del 4: every persona reported PASS, yet the editor found 8 fresh points on first reading, ~6/8 of them craft/architecture blind spots no agent measured. Mirrors the Maskinrommet writing-contract §C2. Pipeline 14 → 15 phases; agents 15 → 16; additive `editorialReview` state. Doc/orchestration-only for the wiring (the new agent + its fasit fixture + lint test are the only new files); commands unchanged (24).
## Architecture
- **State file:** `~/.claude/linkedin-thought-leadership.local.md` (YAML frontmatter, auto-initialized from `config/state-file.template.md`)
- **State file:** `~/.claude/linkedin-studio.local.md` (YAML frontmatter, auto-initialized from `config/state-file.template.md`)
- **State updater:** `hooks/scripts/state-updater.mjs` — deterministic state mutations (post tracking, streak, content history pruning). Pure functions, tested, no AI involvement
- **Clipboard helper:** `hooks/scripts/clipboard-helper.mjs` — cross-platform clipboard integration (macOS `pbcopy`, Linux `xclip`/`xsel`, WSL `clip.exe`). All content commands auto-copy to clipboard
- **iCal generator:** `hooks/scripts/ical-generator.mjs` — RFC 5545 calendar file generation for batch scheduling. Standalone CLI + importable module
@ -87,7 +87,7 @@ All content commands (post, quick, react, pipeline, first-post, video, multiplat
**Rule:** Always read `assets/voice-samples/` before generating content.
**Invocation form:** Commands invoke plugin agents by their **namespaced** type —
`subagent_type: linkedin-thought-leadership:<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).
**Reload requirement:** Adding a NEW agent file under `agents/` registers it only after

View file

@ -1,4 +1,4 @@
# Contributing to linkedin-thought-leadership
# Contributing to linkedin-studio
This is a solo project. Bug reports and feature requests are welcome, but pull requests are not accepted.
@ -29,7 +29,7 @@ Changes to this plugin must preserve:
## Testing locally
```bash
claude plugin add /path/to/linkedin-thought-leadership
claude plugin add /path/to/linkedin-studio
# In a Claude Code session:
/linkedin # Check status and command menu

View file

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

View file

@ -70,7 +70,7 @@ Always load these for pattern comparison:
## Manual Data Sources (fallback)
When structured analytics aren't available:
- `~/.claude/linkedin-thought-leadership.local.md` — Posting history, streaks, weekly stats
- `~/.claude/linkedin-studio.local.md` — Posting history, streaks, weekly stats
- `${CLAUDE_PLUGIN_ROOT}/assets/plans/` — Planned vs. actual content
- `${CLAUDE_PLUGIN_ROOT}/assets/drafts/` — Draft history
- See `${CLAUDE_PLUGIN_ROOT}/assets/analytics/README.md` for data format and directory structure.

View file

@ -28,13 +28,13 @@ You are a LinkedIn content planning specialist. You create strategic content pla
Read these files before planning:
```
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → expertise areas, voice
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → expertise areas, voice
${CLAUDE_PLUGIN_ROOT}/references/thought-leadership-angles.md → 8 universal angles
${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → growth strategies
${CLAUDE_PLUGIN_ROOT}/references/low-frequency-posting-strategy.md → sustainable posting
${CLAUDE_PLUGIN_ROOT}/references/linkedin-formats.md → format options
${CLAUDE_PLUGIN_ROOT}/assets/templates/weekly-content-calendar-2-3x.md → calendar template
~/.claude/linkedin-thought-leadership.local.md → user state + recent posts
~/.claude/linkedin-studio.local.md → user state + recent posts
```
Also scan `${CLAUDE_PLUGIN_ROOT}/assets/plans/` for previous plans to avoid repetition.
@ -469,7 +469,7 @@ Create the `plans/` directory if it doesn't exist.
### Update State File
After plan approval, update `~/.claude/linkedin-thought-leadership.local.md`:
After plan approval, update `~/.claude/linkedin-studio.local.md`:
- Set `next_planned_topic` to the first upcoming topic
- Add planned topics to the recent topics list for dedup
- Update `last_plan_date`

View file

@ -37,7 +37,7 @@ ${CLAUDE_PLUGIN_ROOT}/references/newsletter-strategy-guide.md → newslette
${CLAUDE_PLUGIN_ROOT}/references/thought-leadership-angles.md → 8 universal angles
${CLAUDE_PLUGIN_ROOT}/assets/case-studies/case-study-template.md → case study structure + 4 LinkedIn post angles
${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md → proven patterns to replicate
~/.claude/linkedin-thought-leadership.local.md → user state + performance data
~/.claude/linkedin-studio.local.md → user state + performance data
```
## Step 1: Source Content Analysis

View file

@ -34,8 +34,8 @@ ${CLAUDE_PLUGIN_ROOT}/references/collaborations-guide.md → coll
${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md → engagement methods
${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → growth strategies
${CLAUDE_PLUGIN_ROOT}/references/opportunity-generation.md → conversion + DM strategy
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → user expertise + voice
~/.claude/linkedin-thought-leadership.local.md → user state + network data
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → user expertise + voice
~/.claude/linkedin-studio.local.md → user state + network data
```
Also check `${CLAUDE_PLUGIN_ROOT}/assets/network/` for existing tracker files.

View file

@ -36,7 +36,7 @@ Before analyzing anything, load these files:
1. **Algorithm knowledge:** Read `${CLAUDE_PLUGIN_ROOT}/references/algorithm-signals-reference.md`
2. **Engagement frameworks:** Read `${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md`
3. **State file:** Read `~/.claude/linkedin-thought-leadership.local.md` (if exists)
3. **State file:** Read `~/.claude/linkedin-studio.local.md` (if exists)
4. **Latest analytics:** Use Glob to find the most recent file in `${CLAUDE_PLUGIN_ROOT}/assets/analytics/posts/` and read it
This gives you the user's baseline performance and algorithm context for accurate benchmarking.

View file

@ -43,7 +43,7 @@ ${CLAUDE_PLUGIN_ROOT}/assets/audience-insights/demographics.md → audience
${CLAUDE_PLUGIN_ROOT}/assets/audience-insights/engagement-patterns.md → timing, topic, and format patterns
${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md → proven patterns from top posts
${CLAUDE_PLUGIN_ROOT}/references/trajectory-strategy-adjustments.md → trajectory-to-action mappings
~/.claude/linkedin-thought-leadership.local.md → user state + posting history
~/.claude/linkedin-studio.local.md → user state + posting history
```
Use demographics data to compare the user's **intended** audience vs **actual** engagers when making strategic recommendations.

View file

@ -36,7 +36,7 @@ ${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md → Hook
${CLAUDE_PLUGIN_ROOT}/references/thought-leadership-angles.md → 8 universal angles
${CLAUDE_PLUGIN_ROOT}/assets/voice-samples/ → User's authentic voice (ALWAYS read before scripting)
${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md → Successful content patterns
~/.claude/linkedin-thought-leadership.local.md → User state, recent topics, streak
~/.claude/linkedin-studio.local.md → User state, recent topics, streak
```
## Step 1: Video Type Selection
@ -218,7 +218,7 @@ Examples:
video-2026-01-30-copilot-demo-screen-recording-60s.md
```
Update state in `~/.claude/linkedin-thought-leadership.local.md`:
Update state in `~/.claude/linkedin-studio.local.md`:
- Update `last_post_date`, `posts_this_week`, streak (same as text posts)
- Add to "Recent Posts" section with format note: `[VIDEO/talking-head/90s]`

View file

@ -40,7 +40,7 @@ ls -1 ${CLAUDE_PLUGIN_ROOT}/assets/analytics/ab-tests/ 2>/dev/null | head -20
ls -1 ${CLAUDE_PLUGIN_ROOT}/assets/analytics/posts/ 2>/dev/null | grep -E '\.json$' | head -10
```
If `~/.claude/linkedin-thought-leadership.local.md` exists, read it for user context (posting frequency, follower level, topics).
If `~/.claude/linkedin-studio.local.md` exists, read it for user context (posting frequency, follower level, topics).
## Step 1: Determine Intent

View file

@ -20,7 +20,7 @@ You are a LinkedIn performance analyst. Help the user diagnose why their content
Read these reference files:
- `references/troubleshooting-guide.md` - Failure patterns and solutions
- `references/algorithm-signals-reference.md` - Algorithm mechanics
- `skills/linkedin-thought-leadership/SKILL.md` - User's profile and goals
- `skills/linkedin-studio/SKILL.md` - User's profile and goals
## Step 1: Diagnose the Problem

View file

@ -20,9 +20,9 @@ You are a LinkedIn content strategy auditor. Conduct a thorough review of the us
## Step 0: Gather Data
Load all available data:
- Read `~/.claude/linkedin-thought-leadership.local.md` for posting history
- Read `~/.claude/linkedin-studio.local.md` for posting history
- Read `${CLAUDE_PLUGIN_ROOT}/assets/plans/` for planned content
- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` for strategy reference
- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` for strategy reference
- Check for any analytics data in `${CLAUDE_PLUGIN_ROOT}/assets/analytics/`
- Read `assets/audience-insights/demographics.md` for audience composition — compare intended vs actual audience
- Read `assets/audience-insights/engagement-patterns.md` for tracked patterns (timing, topics, formats, hooks)
@ -103,7 +103,7 @@ Analyze trajectory:
## Step 5.5: Milestone Progress Check
If `follower_count > 0` in the state file (`~/.claude/linkedin-thought-leadership.local.md`), analyze milestone progress:
If `follower_count > 0` in the state file (`~/.claude/linkedin-studio.local.md`), analyze milestone progress:
### Growth Trajectory

View file

@ -23,8 +23,8 @@ You are a LinkedIn batch content creator. Help the user create an entire week's
## Step 0: Load Context
Load state and personalization:
- Read `~/.claude/linkedin-thought-leadership.local.md` for recent topics and weekly goals
- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` for profile and preferences
- Read `~/.claude/linkedin-studio.local.md` for recent topics and weekly goals
- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` for profile and preferences
- Check `${CLAUDE_PLUGIN_ROOT}/assets/plans/` for existing weekly plan
- Read `assets/templates/my-post-templates.md` for proven templates — vary templates across the batch for format diversity

View file

@ -42,7 +42,7 @@ console.log(JSON.stringify(queueCount(), null, 2));
```
Also read state for context:
- `~/.claude/linkedin-thought-leadership.local.md` for weekly goal and current progress
- `~/.claude/linkedin-studio.local.md` for weekly goal and current progress
## Step 2: Display Calendar View

View file

@ -22,7 +22,7 @@ You are a LinkedIn carousel content specialist. Create high-engagement carousel
## Step 0: Load Context
- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state and expertise areas
- Read `~/.claude/linkedin-studio.local.md` for posting state and expertise areas
- Read `assets/voice-samples/authentic-voice-samples.md` for voice profile
- Check recent posts to avoid topic repetition

View file

@ -20,8 +20,8 @@ You are a LinkedIn competitive intelligence analyst. Help the user learn from ot
## Step 0: Load Context
Read the user's profile and strategy:
- `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` — Expertise areas and positioning
- `~/.claude/linkedin-thought-leadership.local.md` — Current posting patterns
- `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` — Expertise areas and positioning
- `~/.claude/linkedin-studio.local.md` — Current posting patterns
## Step 1: Identify Competitors

View file

@ -23,7 +23,7 @@ The first post doesn't need to be perfect. It needs to EXIST. Every day without
## Step 0: Load Context
Read `~/.claude/linkedin-thought-leadership.local.md` for current state.
Read `~/.claude/linkedin-studio.local.md` for current state.
Read `assets/voice-samples/authentic-voice-samples.md` for voice profile (if it exists).
Check: If `first_post_date` is already set, this user has posted before. Suggest `/linkedin:post` or `/linkedin:quick` instead, and explain this command is for true first-timers.

View file

@ -222,7 +222,7 @@ Run /linkedin:report (period: 4w)
`/linkedin:report` will:
1. Read `expertise_areas` from `~/.claude/linkedin-thought-leadership.local.md`
1. Read `expertise_areas` from `~/.claude/linkedin-studio.local.md`
2. Call `trends` for impressions and engagement_rate over the last 4 weeks:
```bash
ANALYTICS_ROOT="${CLAUDE_PLUGIN_ROOT}/assets/analytics" node --import tsx "${CLAUDE_PLUGIN_ROOT}/scripts/analytics/src/cli.ts" trends --period 4w --metric impressions
@ -241,7 +241,7 @@ manually when analytics are ready."
After successful import and analysis, update the state file:
```
Read ~/.claude/linkedin-thought-leadership.local.md
Read ~/.claude/linkedin-studio.local.md
Set last_import_date to today (YYYY-MM-DD)
Set last_import_week to current ISO week (YYYY-WXX)
Write the updated state file

View file

@ -11,13 +11,13 @@ allowed-tools:
- AskUserQuestion
---
# LinkedIn Thought Leadership Command Router
# LinkedIn Studio Command Router
You are a LinkedIn thought leadership assistant. The user has invoked the main `/linkedin` command. Your job is to help them navigate to the right subcommand.
## Session Status
If `~/.claude/linkedin-thought-leadership.local.md` exists, read it and show a brief status line:
If `~/.claude/linkedin-studio.local.md` exists, read it and show a brief status line:
```
LinkedIn: X/Y posts this week | Streak: N days | Last: YYYY-MM-DD | X/10000 followers (Phase)
@ -200,4 +200,4 @@ If the user's intent is clear from context:
## Reference
For full skill documentation, see:
- `skills/linkedin-thought-leadership/SKILL.md` - Complete skill with personalization settings
- `skills/linkedin-studio/SKILL.md` - Complete skill with personalization settings

View file

@ -28,8 +28,8 @@ ${CLAUDE_PLUGIN_ROOT}/references/linkedin-monetization-strategies.md → pricin
${CLAUDE_PLUGIN_ROOT}/references/opportunity-generation.md → conversion funnels, DM strategy
${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → algorithm context
${CLAUDE_PLUGIN_ROOT}/references/growth-roadmaps.md → stage progression
~/.claude/linkedin-thought-leadership.local.md → user state + posting data
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → expertise areas
~/.claude/linkedin-studio.local.md → user state + posting data
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → expertise areas
```
## Step 1: Readiness Assessment

View file

@ -22,7 +22,7 @@ You are a multi-platform content strategist. Help the user adapt their LinkedIn
Ask the user to provide their LinkedIn content or read from drafts:
- Read `${CLAUDE_PLUGIN_ROOT}/assets/drafts/` for recent content
- Read `~/.claude/linkedin-thought-leadership.local.md` for recent posts
- Read `~/.claude/linkedin-studio.local.md` for recent posts
## Step 1: Select Target Platform

View file

@ -60,8 +60,8 @@ This command is **fundamentally different** from the short-form commands:
delegate the fan-out to a nested background agent.
> **Agent invocation form (required).** Plugin agents resolve only under their
> namespaced type — `subagent_type: linkedin-thought-leadership:<name>` (e.g.
> `linkedin-thought-leadership:fact-checker`), never the bare `<name>`. A bare
> namespaced type — `subagent_type: linkedin-studio:<name>` (e.g.
> `linkedin-studio:fact-checker`), never the bare `<name>`. A bare
> `subagent_type` does not resolve and the `Task` call fails. Every
> `subagent_type` below is written in the namespaced form for this reason.
@ -428,7 +428,7 @@ Next: Step 2.5 — Skeleton + section pitch (operator + persona gate BEFORE pros
5. **Persona-skjelett-sweep — fan out `persona-reviewer` in skjelett-mode.**
Issue one `persona-reviewer` call per active persona in parallel — a SINGLE
message with multiple `Task` tool-uses, `subagent_type:
linkedin-thought-leadership:persona-reviewer`, from THIS command layer in
linkedin-studio:persona-reviewer`, from THIS command layer in
the foreground (principle 4). Pass each call the persona name, the path to
`<serie>/NN-skjelett.md`, and **`mode: skjelett`** (the before-prose mode —
five spine axes, ≤3 flags as direction, HOLDER/TVILER/MANGLER scoring).
@ -622,7 +622,7 @@ turning-points the spine already named.
3. **Expand with the `content-repurposer` muscle.** Reuse
`agents/content-repurposer.md` (its article→long-form conversion discipline)
for individual section expansions — invoke it via `Task` (`subagent_type:
linkedin-thought-leadership:content-repurposer`) when useful, *from this
linkedin-studio:content-repurposer`) when useful, *from this
command layer* (foreground, principle 4). The command owns assembly and
voice; the agent assists with conversion. The draft is voice-matched by
THIS session, not self-certified for voice — voice-match remains an
@ -683,7 +683,7 @@ checklist (full detail + pass/flag criteria in the reference file):
**De-AI / voice scrub (sub-pass — `voice-scrubber`).** After the rule pass, run
the draft through `voice-scrubber` (Opus) — `Task`, `subagent_type:
linkedin-thought-leadership:voice-scrubber`, from THIS command layer in the
linkedin-studio:voice-scrubber`, from THIS command layer in the
foreground (principle 4). Pass it the draft path AND the paths to the **approved
Norwegian editions** as the gold standard (e.g. earlier parts' locked
`linkedin/NN/POST.html` or their approved `NN-utkast.md`). **Do NOT** point it at
@ -742,7 +742,7 @@ because it "feels" right or because it sits in your own research notes.
block can be verified independently without overlap.
3. **Fan out in parallel — issue all N `fact-checker` calls in a SINGLE message**
(multiple `Task` tool-uses in one turn, `subagent_type: linkedin-thought-leadership:fact-checker`) so they
(multiple `Task` tool-uses in one turn, `subagent_type: linkedin-studio:fact-checker`) so they
run concurrently, from THIS command layer in the foreground (principle 4, plan
§3). Each call gets one claim-block and returns the agent's standard
verification log + risk-sort (🔴/🟡/🟢) + gate decision (PASS/REWORK/BLOCK).
@ -834,7 +834,7 @@ and `persona-reviewer` never flags em-dash density (that is this step).
settled text, not on a draft still moving under fact fixes.
2. **Run `editorial-reviewer` (single foreground `Task` call).** Invoke
`subagent_type: linkedin-thought-leadership:editorial-reviewer` from THIS
`subagent_type: linkedin-studio:editorial-reviewer` from THIS
command layer in the foreground (principle 4), passing the draft path
(`<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
@ -924,7 +924,7 @@ reopening locked texts — the biggest single process error of the series (plan
2. **Fan out one `persona-reviewer` call per persona, in parallel** — issue them
in a SINGLE message (multiple `Task` tool-uses, `subagent_type:
linkedin-thought-leadership:persona-reviewer`), from THIS command layer in the
linkedin-studio:persona-reviewer`), from THIS command layer in the
foreground (principle 4).
Pass each call its persona name and **`mode: resonans`** (the before-lock mode
— all six axes, ≤5 flags as direction). This is NOT conversion mode, which is
@ -1258,7 +1258,7 @@ the post-lock conversion sweep, distinct from the pre-lock resonance sweep
collected post). This is what the reader sees before "…see more".
2. **Run `persona-reviewer` in conversion mode** (`subagent_type:
linkedin-thought-leadership:persona-reviewer`) for the **primær** persona
linkedin-studio:persona-reviewer`) for the **primær** persona
only, from THIS command layer in the foreground. Pass
**`mode: konverter`** (the after-lock, hook-only mode — NOT resonans). The
agent returns a single binary verdict, **JA / NEI**, on «would YOU click?» —

View file

@ -18,7 +18,7 @@ You are a LinkedIn thought leadership onboarding guide. Walk the user through pr
## Step 0: Load Context and Check State
Read `~/.claude/linkedin-thought-leadership.local.md` for current state.
Read `~/.claude/linkedin-studio.local.md` for current state.
**Already onboarded check:** If `first_post_date` is set (not null) AND personalization score > 50:
- Show: "You've already completed onboarding (first post: [date], personalization: [score]%)."

View file

@ -70,8 +70,8 @@ ${CLAUDE_PLUGIN_ROOT}/references/collaborations-guide.md → format
${CLAUDE_PLUGIN_ROOT}/references/opportunity-generation.md → opportunity funnels, DM strategy
${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md → CEA, engagement strategies, content structures
${CLAUDE_PLUGIN_ROOT}/references/linkedin-growth-playbook-2025-2026.md → algorithm context
~/.claude/linkedin-thought-leadership.local.md → user state + posting data
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md → expertise areas
~/.claude/linkedin-studio.local.md → user state + posting data
${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → expertise areas
```
## Step 1: Choose Your Outreach Track

View file

@ -24,8 +24,8 @@ You are a LinkedIn content pipeline orchestrator. Guide the user through the com
## Step 0: Load Context
Load persistent state and personalization:
- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state
- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-thought-leadership/SKILL.md` for profile and preferences
- Read `~/.claude/linkedin-studio.local.md` for posting state
- Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` for profile and preferences
- Check `assets/voice-samples/` for voice matching
- Read `assets/templates/my-post-templates.md` for proven post templates — use these in Step 2 (Draft)
- Read `assets/frameworks/framework-template.md` if the topic involves a framework or methodology

View file

@ -22,8 +22,8 @@ You are a LinkedIn thought leadership content creator. Guide the user through cr
## Step 0: Load Context
First, load persistent state and personalization:
- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state (streak, weekly progress, recent topics)
- Read `skills/linkedin-thought-leadership/SKILL.md` for user profile, voice settings, and preferences
- Read `~/.claude/linkedin-studio.local.md` for posting state (streak, weekly progress, recent topics)
- Read `skills/linkedin-studio/SKILL.md` for user profile, voice settings, and preferences
Check state for topic planning:
- Compare intended topic against "Recent Posts" in state file

View 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/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

View file

@ -22,12 +22,12 @@ You are a LinkedIn quick-post assistant. Help the user create a short, impactful
## Load Context
Read `~/.claude/linkedin-thought-leadership.local.md` for:
Read `~/.claude/linkedin-studio.local.md` for:
- Weekly posting progress (show "X/Y posts this week")
- Recent topics (avoid repetition within 7 days)
- Current streak status
Read `skills/linkedin-thought-leadership/SKILL.md` for:
Read `skills/linkedin-studio/SKILL.md` for:
- User's voice profile and tone preferences
- Core expertise areas (for topical alignment)
- Phrases they commonly use

View file

@ -23,7 +23,7 @@ You are a LinkedIn content creator specializing in turning external content into
## Step 0: Load Context
First, load persistent state and personalization:
- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state (streak, weekly progress, recent topics)
- Read `~/.claude/linkedin-studio.local.md` for posting state (streak, weekly progress, recent topics)
- Read `assets/voice-samples/authentic-voice-samples.md` for voice profile
- Check recent posts to avoid topic repetition within 7 days

View file

@ -383,7 +383,7 @@ Show detailed metrics for that post and suggest what made it perform well/poorly
After generating report, optionally update user's posting state:
Read `~/.claude/linkedin-thought-leadership.local.md` and suggest:
Read `~/.claude/linkedin-studio.local.md` and suggest:
- If week had 0 posts: "Streak broken - consider posting this week to restart"
- If week hit goal: "Goal achieved! Maintaining consistency."
- If week exceeded goal: "Exceeding goal - strong momentum!"
@ -457,7 +457,7 @@ Save to: `${CLAUDE_PLUGIN_ROOT}/assets/analytics/weekly-reports/YYYY-WXX-report.
3. [Actionable recommendation based on data]
---
*Generated by linkedin-thought-leadership plugin*
*Generated by linkedin-studio plugin*
```
**Important notes:**

View file

@ -27,11 +27,11 @@ Read these files:
- `references/growth-roadmaps.md` - Detailed phase roadmaps
- `references/linkedin-growth-playbook-2025-2026.md` - Comprehensive tactics
- `references/trajectory-strategy-adjustments.md` - Trajectory-based strategy adjustments
- `skills/linkedin-thought-leadership/SKILL.md` - User's goals and context
- `skills/linkedin-studio/SKILL.md` - User's goals and context
## Step 0.5: Auto-Detect from State
Before asking questions, check `~/.claude/linkedin-thought-leadership.local.md`:
Before asking questions, check `~/.claude/linkedin-studio.local.md`:
- If `follower_count > 0`: Auto-detect the user's phase. Skip the "How many followers?" question in Step 1.
- 0-1K → Phase 0: Foundation
@ -249,7 +249,7 @@ Based on their phase, provide detailed guidance.
## Step 3.5: Apply Trajectory Adjustments
If milestone data is available from `~/.claude/linkedin-thought-leadership.local.md`, overlay trajectory-specific adjustments on top of the phase strategy.
If milestone data is available from `~/.claude/linkedin-studio.local.md`, overlay trajectory-specific adjustments on top of the phase strategy.
### Determine Schedule Status

View file

@ -21,8 +21,8 @@ You are a LinkedIn video scripting assistant. Guide the user through creating a
## Step 0: Load Context
First, load persistent state and personalization:
- Read `~/.claude/linkedin-thought-leadership.local.md` for posting state (streak, weekly progress, recent topics)
- Read `skills/linkedin-thought-leadership/SKILL.md` for user profile, voice settings, and preferences
- Read `~/.claude/linkedin-studio.local.md` for posting state (streak, weekly progress, recent topics)
- Read `skills/linkedin-studio/SKILL.md` for user profile, voice settings, and preferences
Check state for topic planning:
- Compare intended topic against "Recent Posts" in state file

View file

@ -1,4 +1,4 @@
# LinkedIn Thought Leadership — Session State
# LinkedIn Studio — Session State
**Last updated:** [Auto-filled by session-start hook]

View file

@ -1,7 +1,7 @@
---
# LinkedIn Thought Leadership State
# Auto-managed by the linkedin-thought-leadership plugin
# Copy to ~/.claude/linkedin-thought-leadership.local.md
# LinkedIn Studio State
# Auto-managed by the linkedin-studio plugin
# Copy to ~/.claude/linkedin-studio.local.md
# Posting metrics
last_post_date: null

View file

@ -1,6 +1,6 @@
# Brief — LTL som fullspektrum LinkedIn-innholdsmotor (idé → publisering)
> **Til:** linkedin-thought-leadership-pluginens utviklingsrepo.
> **Til:** linkedin-studio-pluginens utviklingsrepo.
> **Skrevet:** 2026-05-26, etter produksjon av den første kronikkserien (Seres-serien, 6 deler).
> **Type:** retningsbrief — beslutningsgrunnlag før planlegging/bygging. Selvstendig (kan leses uten annen kontekst).

View file

@ -1,11 +1,11 @@
# Integration Test Guide: LinkedIn Thought Leadership Plugin
# Integration Test Guide: LinkedIn Studio Plugin
Manual integration testing scenarios for commands, agents, and hooks in the plugin.
## Prerequisites
Before testing, ensure:
- [ ] `~/.claude/linkedin-thought-leadership.local.md` exists (create from `config/state-file.template.md`)
- [ ] `~/.claude/linkedin-studio.local.md` exists (create from `config/state-file.template.md`)
- [ ] Voice samples exist in `assets/voice-samples/authentic-voice-samples.md`
- [ ] Quality scorecard exists at `assets/checklists/quality-scorecard.md`
- [ ] Plugin is installed: appears in Claude Code's skill/command list
@ -62,7 +62,7 @@ Before testing, ensure:
**Goal:** Graceful handling when state file doesn't exist.
**Steps:**
1. Temporarily rename `~/.claude/linkedin-thought-leadership.local.md`
1. Temporarily rename `~/.claude/linkedin-studio.local.md`
2. Run `/linkedin:pipeline`
3. Verify: no crash, reasonable fallback (e.g., "No posting data found. Starting fresh.")
4. Complete the pipeline
@ -220,7 +220,7 @@ Before testing, ensure:
1. Run `/linkedin:pipeline` and create a post
2. Note the topic and hook
3. End the session (or let Stop hook fire)
4. Read `~/.claude/linkedin-thought-leadership.local.md`
4. Read `~/.claude/linkedin-studio.local.md`
5. Verify:
- `last_post_date` = today
- `last_post_topic` = the topic used

View file

@ -1,6 +1,6 @@
# Plan — LTL som fullspektrum LinkedIn-innholdsmotor
> **Type:** Renoverings- og byggeplan for `linkedin-thought-leadership`-pluginen («LTL»).
> **Type:** Renoverings- og byggeplan for `linkedin-studio`-pluginen («LTL»).
> **Skrevet:** 2026-05-26. **Status:** Til godkjenning før bygging. **Versjonsmål:** v1.2.0 → v2.0.0.
> **Følger av:** [brief-fullspektrum-innholdsmotor.md](./brief-fullspektrum-innholdsmotor.md) (samme mappe).
>
@ -16,7 +16,7 @@ Denne seksjonen gjør planen selvstendig. Hvis et begrep brukes senere uten fork
| Det | Hva | Absolutt sti | Rolle her |
|-----|-----|--------------|-----------|
| **LTL-pluginen** | Claude Code-plugin for LinkedIn thought leadership. v1.2.0. 27 kommandoer, 16 agenter, 9 hooks, 6 skills. | `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-thought-leadership/` | **DETTE er repoet vi bygger i.** All plugin-endring skjer her. |
| **LTL-pluginen** | Claude Code-plugin for LinkedIn thought leadership. v1.2.0. 27 kommandoer, 16 agenter, 9 hooks, 6 skills. | `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-studio/` | **DETTE er repoet vi bygger i.** All plugin-endring skjer her. |
| **Marketplace-rot** | Open-source plugin-marketplace (flere plugins + `shared/`). Distribueres via Forgejo: `git.fromaitochitta.com/open/ktg-plugin-marketplace` (aldri GitHub). | `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/` | Rot-`README.md` må oppdateres ved feature-endring (doc-plikt). |
| **maskinrommet** | Privat, lokalt repo (INGEN git-remote) der operatøren produserer alt LinkedIn-innhold. Inneholder `tools/` (4 render-skript + `fonts/`) og `serier/<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. |
@ -441,7 +441,7 @@ Enhver feature-endring oppdaterer i SAMME commit: plugin-`README.md`, plugin-`CL
## 12. Filmanifest
Alle stier relativt til pluginen `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-thought-leadership/` med mindre annet er angitt.
Alle stier relativt til pluginen `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-studio/` med mindre annet er angitt.
**Nye filer:**
- `commands/newsletter.md` — orkestrator-kommandoen (§5)

View file

@ -8,7 +8,7 @@
## 1. Oppgave
Løft `linkedin-thought-leadership`-pluginen («LTL», v1.2.0) til **v2.0.0**: en fullspektrum-motor for ALT LinkedIn-innhold — fra kortform-post til nyhetsbrev-edition — samtidig som den totale kommando-/agent-overflaten **reduseres** gjennom konsolidering.
Løft `linkedin-studio`-pluginen («LTL», v1.2.0) til **v2.0.0**: en fullspektrum-motor for ALT LinkedIn-innhold — fra kortform-post til nyhetsbrev-edition — samtidig som den totale kommando-/agent-overflaten **reduseres** gjennom konsolidering.
Tre arbeidskropper:
1. **Renovering** — konsolider reell redundans (27→~23 kommandoer, 16→~14 agenter). Plan §4.
@ -17,7 +17,7 @@ Tre arbeidskropper:
## 2. Orientering (kritisk — repoer og stier)
- **LTL-pluginen (bygg her):** `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-thought-leadership/`. Plugin-i-monorepo: steg-stier er relative til denne mappa (sett Execution Strategy `cwd:` deretter).
- **LTL-pluginen (bygg her):** `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/linkedin-studio/`. Plugin-i-monorepo: steg-stier er relative til denne mappa (sett Execution Strategy `cwd:` deretter).
- **Marketplace-rot:** `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/` (Forgejo, aldri GitHub).
- **maskinrommet (annet repo):** `/Users/ktg/repos/maskinrommet/` — render-skriptene kopieres HERFRA inn i pluginen. Skriving TIL maskinrommet krever eksplisitt instruks (cross-repo, eget spor).
- **Voyage:** `/Users/ktg/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/voyage/` — harness for denne byggingen.

View file

@ -1,7 +1,7 @@
LINKEDIN TOPIC ROTATION GATE: If the file being written/edited is LinkedIn content (a post draft, article, or content file — NOT config files, state files, scripts, documentation, JSON, or plan files), check topic diversity before proceeding.
**Step 1: Read State**
Read `~/.claude/linkedin-thought-leadership.local.md` and extract:
Read `~/.claude/linkedin-studio.local.md` and extract:
- `last_post_topic` — the pillar of the most recent post
- `expertise_areas` — the user's 5 content pillars
- `## Recent Posts` section — post history with topic_area tags

Some files were not shown because too many files have changed in this diff Show more