# LinkedIn Studio — Journey-Layer Design (S14) > **Supersedes the S14 "merge/cut" framing.** 14a's cold review found 27 commands > with **zero redundancy** (subsumption fails pairwise) — the surface is over-grown > in *count*, not in *redundancy*. The operator therefore reframed S14 from > "rationalize by cutting" to "**add a journey layer over the kept atomics**." This > doc is the build contract. It also **absorbs S15's router-tiering** (finish-plan > B2) — the router is re-tiered here, journey-style, so S15 collapses into S14. ## Decisions locked (operator, 2026-05-30) 1. **Architecture = journey layer.** Keep all 27 atomic commands as the *execution tier*; add journey *front-door* orchestrators as the *primary surface*; subagents remain the engine (no Workflow-tool / deep-research adoption — both are wrong-fit for an everyday product surface, see the session reasoning). 2. **Realization = 2 new + 2 elevated.** Add `create` + `measure` as new front-doors; elevate existing `onboarding` (Start) and `strategy` (Grow); **Engage** stays a router-tier relay (`calendar` + `firsthour`), no front-door. Atomics → "advanced" tier under each journey. 3. **Version = v4.1.0 (minor), NOT v5.0.0.** Honest SemVer: this is additive (2 new commands) + presentation (router retier) + one tiny doc-vs-behavior reconcile (`competitive`). No removal, rename, or behavior break on existing commands. Precedent: v3.1.0 added 3 agents as a MINOR with a "reload required" note — same shape. Reload note applies (the 2 new commands register at session reload). ## Journey taxonomy (5 journeys + router) `Improve` is **not** a separate journey: improving is the action *after* measuring (audit→fix, ab-test, `content-optimizer`), not a distinct entry. The operator's "Improve + Analyze" is therefore folded into **Measure** (the measure→optimize loop). | Journey | Front-door | Atomics (advanced tier) | |---------|-----------|--------------------------| | **Start** | `onboarding` *(elevate — exists)* | setup · first-post | | **Create** | **`create`** *(NEW)* | post · quick · react · carousel · video · multiplatform · batch · newsletter · pivot · headless-review · pipeline | | **Engage** | *(router-tier — relay, no front-door)* | calendar · firsthour | | **Measure** | **`measure`** *(NEW — `analyze` name is taken, so no collision)* | import · report · analyze · audit · ab-test | | **Grow** | `strategy` *(elevate — exists)* | profile · competitive · monetize ⚿ · outreach ⚿ | | *(map)* | `linkedin` router | — | ⚿ = unlocks/soft-gates at ~1K followers. Count: Start 3 + Create 11 + Engage 2 + Measure 5 + Grow 5 + router 1 = **27 atomics** + **2 new front-doors** = **29**. ## The two new front-door commands Both are **thin guided routers** — they add *navigation* (a single "what do you want?" entry), not duplicated logic. They **delegate** to the atomic that owns the work. No drafting/analysis logic is copied into them. ### `commands/create.md` — Content-creation front-door - **Purpose:** one guided entry for "make something" when the user hasn't already named the format. - **Flow:** `AskUserQuestion` "What do you want to create?" → - Short substantial post → `post` - Quick 5-min post → `quick` - React to a URL / article / news → `react` - Carousel / document → `carousel` - Video script → `video` - Adapt for another platform → `multiplatform` - A full week (batch) → `batch` - Long-form / newsletter / essay → `newsletter` - Then hand off to the chosen command (it owns the work). - **Triggers (undirected create intent only — must NOT steal `post`/`quick` direct intent):** "create", "make something", "create content", "what should I make", "new content", "help me create", "linkedin create". - **allowed-tools:** Read, Glob, AskUserQuestion. **No Write** (it delegates). ### `commands/measure.md` — Performance/insight front-door - **Purpose:** one guided entry for "understand how I'm doing." - **Flow:** `AskUserQuestion` "What do you want to do?" → - Import a new analytics CSV → `import` - Weekly / monthly report → `report` - Diagnose a problem (reach dropped, low engagement) → `analyze` - Quarterly strategy audit → `audit` - Design / review an A/B test → `ab-test` - Then hand off to the chosen command. - **Triggers (undirected measure intent):** "measure", "how am I doing", "my performance", "show my analytics", "performance overview", "linkedin measure". - **allowed-tools:** Read, Glob, AskUserQuestion. **No Write** (it delegates). ## Elevation (2) — presentation only, no behavior change - **`onboarding` = Start front-door.** Already the cohesive wizard. Router presents it as the Start journey entry; body unchanged (optional one-line "Start journey" framing only). - **`strategy` = Grow front-door.** Already the phase/trajectory/authority hub. Router presents it as the Grow journey entry; body unchanged. ## Router re-tiering (`commands/linkedin.md`) — absorbs S15 B2 Restructure the menu into the 5 journeys, each headed by its front-door with the atomics listed beneath as "also / advanced": - **Start** → `onboarding` · setup · first-post - **Create** → `create` · post · quick · react · carousel · video · multiplatform · batch · newsletter · pivot · headless-review · pipeline - **Engage** → calendar · firsthour *(tier, no front-door)* - **Measure** → `measure` · import · report · analyze · audit · ab-test - **Grow** → `strategy` · profile · competitive · monetize ⚿ · outreach ⚿ - Keep the status line (weekly progress / streak / follower phase) + queue summary. - **Fixes nit #1:** `/linkedin:firsthour` is now listed (under Engage) — the router previously listed only the `post-feedback-monitor` agent there. ## Honesty nits fixed in lockstep (from 14a) 1. **Router omits `firsthour`** → fixed by the retier (Engage tier lists it). 2. **`calendar` ↔ `firsthour` trigger overlap** → `calendar.md`'s publish-action first-hour block gets a one-line cross-link: "for the full worked sprint plan, run `/linkedin:firsthour`." 3. **`competitive` gating doc-vs-behavior** → **14a's nit was unfounded** (verified against the files: CLAUDE.md `:64`, README `:222`, the router, and the command body all leave `competitive` **ungated** — only `monetize`/`outreach` carry "(unlocks at ~1K)"). There is no inconsistency to fix. Competitive analysis helps at any stage (especially early positioning), so it stays ungated. Action: place it in the Grow tier marked **"Any phase"** (no ⚿), and add a one-line note to the router's gating rule that `competitive` is explicitly not gated. (An interim router edit that mistakenly added a ~1K marker was reverted in the same pass.) ## 14a doc correction (`command-rationalization.md`) - Add the missing **`multiplatform`** entry: **keep** (unique Twitter/X-thread + cross-platform surface; subsumption fails as a cut), flagged **thinnest / develop-candidate** (only command that inlines static templates instead of delegating — could use `content-repurposer`). Belongs in **Create**. - Fix the two header-count typos (Group C "(4)"→3; Group F "(4)"→5). - Corrected tally: **keep 27 (27/27 covered)** · 0 merge · 0 cut · 1 develop-candidate. ## Count / version / roster lockstep (the release mechanics) - `scripts/test-runner.sh`: `EXPECT_COMMANDS` **27 → 29**. - Version **4.0.0 → 4.1.0** everywhere it appears (version-sync rule: grep both `4.0.0` and the `27`-count claims). - Three-doc rule (same commit / immediately after): - `CLAUDE.md` (plugin): command table +2 rows, count 27→29, version, v4.1.0 para. - `README.md` (plugin): command table, count, version, CHANGELOG entry. - Root `README.md` (marketplace): the linkedin-studio line. - Also: `CHANGELOG.md` if present; any SKILL roster enumerating commands; the router roster (done above); `STATE.md` count block (27→29, version 4.1.0). ## Verification (testable — gate before push) - `ls commands/*.md | wc -l` == **29**. - `bash scripts/test-runner.sh` exit **0** (EXPECT_COMMANDS=29; stat/version/model consistency + render-chain + $-safety guards all green). - `node --test hooks/scripts/__tests__/*.test.mjs` — all pass (no hook logic touched → expect the existing **98**). - `grep -rn "4\.0\.0\|27 command" commands README.md CLAUDE.md` (user-facing) → 0 stale hits (historical CHANGELOG mentions allowed). - Router renders 5 journeys; primary tier = the 5 front-doors (`create`, `measure`, `onboarding`, `strategy` + Engage tier); atomics nested; 1K-gated flagged; `firsthour` present. - `create` / `measure`: valid frontmatter, `AskUserQuestion` routing, **delegate only** (grep shows no inlined drafting/analysis logic, no `Write` in create/measure). - `/trekreview --project docs/remediation/` → **ALLOW** (no WARN-override) → commit (own files only) → push origin. ## Out of scope (this session / S14) - Aggressive consolidation / folding atomics (operator chose keep-all). - Building the `multiplatform` "develop" (content-repurposer wiring) — recorded as a keep + develop-candidate, not built unless requested. - S16 (saves) / S17 (C13–C46) — later finish-plan steps. - UI-brief M0 (move mutable data out of tree) — pending; conflicts with S16, not S14.