feat(linkedin-studio): S14 — journey layer (create/measure front-doors + 5-journey router), v4.1.0

14a's cold command-rationalization found ZERO redundancy across the 27 commands
(no defensible merge/cut), so the operator reframed S14 from "merge/cut" to
"add a journey layer over the kept atomics".

- Add /linkedin:create + /linkedin:measure — delegate-only guided front-doors
  (Read/Glob/AskUserQuestion only; route to the command that owns the work)
- Re-tier commands/linkedin.md into 5 journeys (Start/Create/Engage/Measure/Grow);
  onboarding/strategy elevated as Start/Grow front-doors; Engage = calendar+firsthour tier
- 14a honesty nits: router now lists firsthour; calendar cross-links to firsthour;
  competitive confirmed UNGATED (the claimed 1K-gating inconsistency was unfounded)
- Lockstep: EXPECT_COMMANDS 27->29, v4.0.0->4.1.0 across plugin.json / README badges /
  plugin+root CLAUDE.md / README / CHANGELOG; new README commands-badge lint guard
- 14a deliverable corrected: multiplatform entry added (26/27 -> 27/27), header counts,
  competitive nit withdrawn
- Independent /trekreview (2 Opus reviewers) raised 3 MAJORs (stale commands badge,
  router competitive self-contradiction, STATE.md count) — ALL remediated in-session;
  verdict ALLOW

Gate: test-runner.sh 74/0/0; node --test 98/98; commands=29; v4.1.0 consistent.
Additive/minor — no command removed/renamed/behavior-changed; reload registers create+measure.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-05-30 21:27:06 +02:00
commit baca30feb1
16 changed files with 885 additions and 208 deletions

View file

@ -132,7 +132,11 @@ writeState(content => updatePostTracking(content, {
```
Replace placeholders with actual post data from the published post.
**3e. First-hour battle plan.** Show after marking:
**3e. First-hour battle plan.** Show the lightweight in-flow nudge below after marking.
For the **full worked sprint** — timestamped engagement targets (whales / inner-circle /
ICPs), draft self-comments + CEA replies in voice, and a minute-by-minute timeline — run
`/linkedin:firsthour`, which persists the plan to state and hands off to
`post-feedback-monitor`. The checklist here is the quick version:
```
Post marked as published! Here's your first-hour plan:

View file

@ -0,0 +1,66 @@
---
name: linkedin:create
description: |
Content-creation front-door — one guided entry for when you want to make something
but haven't picked the format yet. Asks what you want to create and routes you to the
command that owns that format (post, quick, react, carousel, video, multiplatform,
batch, or the long-form newsletter). It does NOT draft anything itself — it hands off
to the command that owns the work, so each format keeps its own voice rules and
quality gates.
Triggers on: "create", "make something", "create content", "what should I make",
"new content", "help me create", "i want to post something", "linkedin create".
allowed-tools:
- Read
- Glob
- AskUserQuestion
---
# Create — Content Front-Door
You are the entry point for the **Create** journey. The user wants to make content but
may not know which format or command fits. Your job: identify the intent in one
question and route to the command that owns the work. **You do not draft here.**
## Step 0: Quick context (optional)
If `~/.claude/linkedin-studio.local.md` exists, you may glance at the planned next
topic and recent pillars to make a smarter suggestion — but keep it to one line and
do not block on it.
## Step 1: Identify what they want to create
If the user's message already names a format (e.g. "a carousel about X", "react to
this URL", "a video script") OR hands you a URL, skip the question and route directly
per the map below.
Otherwise use `AskUserQuestion`**"What do you want to create?"**
1. **A post** — a full, substantial post (angle → draft → refine) → `/linkedin:post`
2. **A quick post** — a fast 5-minute post or a templated post-type → `/linkedin:quick`
3. **React to something** — turn a URL / article / news into a post → `/linkedin:react`
4. **A carousel** — a multi-slide / document post → `/linkedin:carousel`
5. **A video script** — talking-head / screen-recording / slideshow → `/linkedin:video`
6. **Adapt existing content** — for Twitter/X, slides, YouTube → `/linkedin:multiplatform`
7. **A whole week** — batch 35 posts in one session → `/linkedin:batch`
8. **Long-form** — newsletter edition, essay, or series article → `/linkedin:newsletter`
## Step 2: Route
State the chosen command and one line of why, then **proceed into that command's
workflow** (route to `/linkedin:<target>` and begin it). Do NOT inline or duplicate
the target's steps — each creation command owns its own workflow, voice rules, and
quality gates.
| Intent | Command |
|--------|---------|
| Substantial post | `/linkedin:post` |
| Quick / templated post | `/linkedin:quick` |
| React to a URL / article | `/linkedin:react` |
| Carousel / document | `/linkedin:carousel` |
| Video script | `/linkedin:video` |
| Cross-platform adaptation | `/linkedin:multiplatform` |
| A full week | `/linkedin:batch` |
| Long-form (newsletter / essay / series) | `/linkedin:newsletter` |
**Long-form lock:** newsletters, essays, and series articles are owned end-to-end by
`/linkedin:newsletter` — the single long-form entry point. Never draft long-form here.

View file

@ -58,99 +58,92 @@ If queue is empty: "No posts scheduled. Run /linkedin:batch to plan your week."
## Available Commands
Present these options to the user:
LinkedIn Studio is organized as **five journeys**. Each journey has a **front-door**
command (start here if you're unsure) plus the focused commands it routes to. Type a
front-door when you know the journey but not the exact command; type a specific command
directly when you do.
### Getting Started
### 🟢 Start — get set up and publish your first post
| Command | Purpose |
|---------|---------|
| `/linkedin:onboarding` | Full onboarding wizard — profile, setup, and first post in one flow |
| `/linkedin:onboarding` | **Front-door.** Full guided flow: profile → setup → first post |
| `/linkedin:setup` | Populate voice samples, case studies, frameworks, and audience data |
| `/linkedin:first-post` | First-post accelerator — zero to published in under 10 minutes |
| `/linkedin:setup` | Guided setup to populate empty asset templates with your real voice, case studies, and audience data |
### Content Creation
### ✍️ Create — make content
| Command | Purpose |
|---------|---------|
| `/linkedin:create` | **Front-door.** Tells you which creation command fits, then routes you |
| `/linkedin:post` | Full post creation with angle selection, format choice, and refinement |
| `/linkedin:quick` | Fast 5-minute post (3-line formula) + the 8 post-type templates |
| `/linkedin:react` | React to a URL (article, news, research) and turn it into a post |
| `/linkedin:quick` | Fast 5-minute post using the 3-line formula (also the 8 post-type templates) |
| `/linkedin:pipeline` | Full end-to-end workflow from idea to post-publish analysis |
| `/linkedin:carousel` | Create structured multi-slide carousel with visual layout guidance |
| `/linkedin:video` | Create video scripts with hook, body, CTA, captions, and thumbnail suggestions |
| `/linkedin:newsletter` | Long-form orchestrator — newsletter editions, essays, series articles (research → draft → fact-check → persona-review → lock → delivery). The single long-form entry point |
| `/linkedin:headless-review` | Cold adversarial review of a FROZEN long-form draft (argument, language, facts, reader-fit) — run before lock, ideally in a fresh session for max independence |
| `/linkedin:pivot` | Re-open a long-form edition after a substantive late change so cleared gates (fact-check → editorial → persona → headless) re-run before lock |
| `/linkedin:carousel` | Structured multi-slide carousel with visual layout guidance |
| `/linkedin:video` | Video scripts with hook, body, CTA, captions, and thumbnail suggestions |
| `/linkedin:multiplatform` | Adapt content for Twitter/X, slides, YouTube (long-form → newsletter) |
| `/linkedin:batch` | Create a full week of content in one session |
| `/linkedin:calendar` | View and manage your post scheduling queue + run the publish action (mark a scheduled post as published) |
| `/linkedin:pipeline` | End-to-end single-post workflow (idea → draft → schedule → analyze) |
| `/linkedin:newsletter` | **Long-form spine.** Newsletter editions, essays, series articles. The single long-form entry point |
| `/linkedin:headless-review` | Cold adversarial re-read of a FROZEN long-form draft before lock (ideally in a fresh session) |
| `/linkedin:pivot` | Re-open a long-form edition after a late change so cleared gates re-run |
### Strategy & Optimization
### 📅 Engage — ship and work the first hour
| Command | Purpose |
|---------|---------|
| `/linkedin:strategy` | Growth strategy + authority building (phase-specific guidance, trajectory adjustments, signature content for Phase 2+) |
| `/linkedin:profile` | profile/topic-relevance optimization checklist |
| `/linkedin:analyze` | Analyze content performance or troubleshoot issues |
| `/linkedin:ab-test` | Design and manage A/B tests for content optimization |
| `/linkedin:audit` | Quarterly content strategy audit |
| `/linkedin:competitive` | Competitive analysis of other thought leaders |
| `/linkedin:calendar` | View/manage the queue + the publish action (mark a scheduled post as published) |
| `/linkedin:firsthour` | Post-publish first-hour sprint: timestamped targets + draft comments + timeline |
After publishing, the `post-feedback-monitor` agent tracks performance in the critical
first 48 hours, detects anomalies, and advises real-time interventions.
### 📊 Measure — understand performance
| Command | Purpose |
|---------|---------|
| `/linkedin:measure` | **Front-door.** Routes you to the right analytics command |
| `/linkedin:import` | Import LinkedIn CSV exports for analytics |
| `/linkedin:report` | Generate weekly performance report with trends and alerts |
| `/linkedin:report` | Weekly/monthly performance report with trends and alerts |
| `/linkedin:analyze` | Troubleshoot performance (reach dropped, low engagement) |
| `/linkedin:audit` | Quarterly content strategy audit |
| `/linkedin:ab-test` | Design and manage A/B tests for content optimization |
### Post-Publish Monitoring
| Agent | Purpose |
|-------|---------|
| `post-feedback-monitor` | Monitor post performance in the critical first 48 hours, detect anomalies, and get real-time intervention advice |
### Growth & Monetization
### 🚀 Grow — authority, reach, and revenue
| Command | Purpose | Unlocks at |
|---------|---------|-----------|
| `/linkedin:strategy` | **Front-door.** Phase roadmap, trajectory, authority + signature content | Any phase |
| `/linkedin:profile` | profile/topic-relevance optimization checklist | Any phase |
| `/linkedin:competitive` | Competitive analysis of other thought leaders | Any phase |
| `/linkedin:monetize` | Monetization strategy (lead magnets, consulting funnel, pricing) | ~1K followers |
| `/linkedin:outreach` | Outreach orchestrator — collaborations and speaking opportunities (CFPs, partner pitches) | ~1K followers |
| `/linkedin:multiplatform` | Adapt content for Twitter/X, slides, YouTube (short-form/cross-format; long-form → `/linkedin:newsletter`) | Any phase |
| `/linkedin:outreach` | Collaborations and speaking opportunities (CFPs, partner pitches) | ~1K followers |
**Gating rule:** the "Unlocks at ~1K followers" commands are deliberately
listed but soft-gated — they work at any follower count, but their value
compounds once a profile has the audience scale and authority signal that
makes lead magnets, partnerships, and speaking pitches realistic. Below
~1K followers the router will note the threshold and suggest
`/linkedin:strategy` first.
**Gating rule:** the "Unlocks at ~1K followers" commands are deliberately listed but
soft-gated — they work at any follower count, but their value compounds once a profile
has the audience scale and authority signal that makes lead magnets, partnerships, and
speaking pitches realistic. Below ~1K followers the router notes the threshold and
suggests `/linkedin:strategy` first. (`/linkedin:competitive` is **not** gated —
competitive analysis helps at any stage, especially early positioning.)
## Ask the User
Use AskUserQuestion to ask:
Show the five journeys as a menu and let the user pick a journey or jump straight to a
command. Lead with the front-doors.
**What would you like to do?**
0. **Onboarding wizard** — Just installed? Full guided flow: profile → setup → first post
1. **Setup & personalize** — Guided setup to populate voice, case studies, frameworks, and audience data
2. **Create a post** — Full post workflow with angle selection
3. **React to a URL** — Turn an article/news into a post
4. **Quick post** — Post something fast (5 min)
5. **Full pipeline** — End-to-end: idea → draft → optimize → publish
6. **Batch create** — Create a full week of content in one session
7. **Use a template** — Browse proven post templates
8. **View calendar** — See scheduled posts and manage queue
9. **Plan content** — Weekly/monthly content planning
10. **Growth strategy & authority** — Plan growth, build signature content, compound authority
11. **Optimize profile** — topic-relevance profile audit
12. **Audit content** — Review what's working and what's not
13. **Competitive analysis** — Learn from other thought leaders
14. **Monetize** — Revenue strategies for thought leadership
15. **Outreach** — Collaborations and speaking opportunities (CFPs, partner pitches, joint content)
16. **Multi-platform** — Adapt content for other platforms
17. **Troubleshoot** — My content isn't performing well
18. **Monitor post** — Check how my latest post is performing (first 48 hours)
19. **A/B test** — Design, track, or analyze content experiments
20. **Create a video** — Script for talking head, screen recording, or slideshow
21. **Mark published** — I just published a scheduled post
22. **Write long-form** — Newsletter edition, essay, or series article (`/linkedin:newsletter`)
23. **Cold review (headless)** — Independent adversarial re-read of a frozen long-form draft before lock (`/linkedin:headless-review`)
24. **Pivot a long-form edition** — Re-open cleared gates after a late substantive change (`/linkedin:pivot`)
- **🟢 Start** — `onboarding` (full wizard) · `setup` · `first-post`
- **✍️ Create** — `create` (guided) · post · quick · react · carousel · video · multiplatform · batch · pipeline · newsletter · headless-review · pivot
- **📅 Engage** — `calendar` (queue + mark published) · `firsthour` (first-hour sprint)
- **📊 Measure** — `measure` (guided) · import · report · analyze · audit · ab-test
- **🚀 Grow** — `strategy` (roadmap) · profile · competitive · monetize ⚿ · outreach ⚿
Based on their answer, guide them to the appropriate command or invoke it directly.
If they name a command, route to it. If they name a journey but not a command, route to
that journey's front-door (`create` / `measure` / `onboarding` / `strategy`); for Engage,
ask whether they're scheduling (`calendar`) or have just published (`firsthour`). Use
`AskUserQuestion` for any sub-choice (≤4 options per question). Based on their answer,
guide them to the appropriate command or invoke it directly.
## If They Have Specific Content
@ -198,6 +191,9 @@ If the user's intent is clear from context:
- Mentions "status" or "on track" → Route to `/linkedin:calendar` (plan-vs-queue diff)
- Mentions "repurpose" or "reuse" → Suggest `content-repurposer` agent
- Mentions "video" or "video script" or "film" or "record" or "talking head" or "screen recording" or "slideshow video" → Route to `/linkedin:video`
- Mentions "create" or "make something" or "what should I make" or "new content" (no specific format named) → Route to `/linkedin:create` (the Create front-door)
- Mentions "measure" or "how am I doing" or "my performance" or "performance overview" or "how are my posts doing" → Route to `/linkedin:measure` (the Measure front-door)
- Mentions "first hour" or "I just posted" or "reply loop" or "work my post" or "engage now" → Route to `/linkedin:firsthour` (the worked first-hour sprint plan — distinct from `/linkedin:calendar`'s mark-as-published action)
- Has a URL to react to → Route to `/linkedin:react`
- Has substantial content to convert → Route to `/linkedin:post`

View file

@ -0,0 +1,51 @@
---
name: linkedin:measure
description: |
Performance front-door — one guided entry for when you want to understand how you're
doing on LinkedIn. Asks what you need and routes you to the command that owns that
analysis (import, report, analyze/troubleshoot, audit, or A/B test). It does NOT
crunch numbers itself — it hands off to the command that owns the work.
Triggers on: "measure", "how am I doing", "my performance", "show my analytics",
"performance overview", "how are my posts doing", "linkedin measure".
allowed-tools:
- Read
- Glob
- AskUserQuestion
---
# Measure — Performance Front-Door
You are the entry point for the **Measure** journey (the measure → improve loop). The
user wants insight into performance but may not know which command fits. Identify the
intent in one question and route. **You do not run the analysis here.**
## Step 0: Quick context (optional)
If `assets/analytics/` holds imported data, you may note "last import: [date]" in one
line so the user knows whether a fresh import is needed first. Do not block on it.
## Step 1: Identify what they need
Use `AskUserQuestion`**"What do you want to do?"**
1. **Import new data** — load a LinkedIn analytics CSV export → `/linkedin:import`
2. **See a report** — weekly/monthly numbers, trends, top performers → `/linkedin:report`
3. **Diagnose a problem** — reach dropped / low engagement, what's wrong → `/linkedin:analyze`
4. **Strategy audit** — periodic top/bottom posts, topic & format mix review → `/linkedin:audit`
5. **A/B test** — design, log, or review a content experiment → `/linkedin:ab-test`
## Step 2: Route
State the chosen command and one line of why, then **proceed into that command's
workflow**. Do NOT duplicate the analysis logic — each command owns it.
| Intent | Command |
|--------|---------|
| Import a CSV export | `/linkedin:import` |
| Weekly / monthly report | `/linkedin:report` |
| Troubleshoot performance | `/linkedin:analyze` |
| Quarterly strategy audit | `/linkedin:audit` |
| Content experiment | `/linkedin:ab-test` |
**Order note:** reporting needs imported data. If the user wants a report but nothing
has been imported yet, route to `/linkedin:import` first, then `/linkedin:report`.

View file

@ -3,7 +3,7 @@ name: linkedin:onboarding
description: |
Multi-step onboarding wizard that guides new users through profile → setup → first-post
as one cohesive flow. Designed for users who have just installed the plugin and want a
single guided path instead of navigating 27 commands on their own.
single guided path instead of navigating 29 commands on their own.
Triggers on: "onboarding", "get started", "new user", "setup wizard", "start from scratch",
"just installed", "how do I start", "walk me through", "linkedin onboarding".
allowed-tools:
@ -214,4 +214,4 @@ First post: [Published DATE / Pending — run /linkedin:first-post]
- `/linkedin:batch` — Plan a full week of content in one session
- `/linkedin:react` — Turn articles and news into posts
- `/linkedin:strategy` — Growth strategy tailored to your follower level
- `/linkedin` — See all 27 commands anytime
- `/linkedin` — See all 29 commands anytime