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>
9.2 KiB
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)
- 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).
- Realization = 2 new + 2 elevated. Add
create+measureas new front-doors; elevate existingonboarding(Start) andstrategy(Grow); Engage stays a router-tier relay (calendar+firsthour), no front-door. Atomics → "advanced" tier under each journey. - 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).
- Short substantial post →
- Triggers (undirected create intent only — must NOT steal
post/quickdirect 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.
- Import a new analytics CSV →
- 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:firsthouris now listed (under Engage) — the router previously listed only thepost-feedback-monitoragent there.
Honesty nits fixed in lockstep (from 14a)
- Router omits
firsthour→ fixed by the retier (Engage tier lists it). calendar↔firsthourtrigger overlap →calendar.md's publish-action first-hour block gets a one-line cross-link: "for the full worked sprint plan, run/linkedin:firsthour."competitivegating doc-vs-behavior → 14a's nit was unfounded (verified against the files: CLAUDE.md:64, README:222, the router, and the command body all leavecompetitiveungated — onlymonetize/outreachcarry "(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 thatcompetitiveis 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
multiplatformentry: 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 usecontent-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_COMMANDS27 → 29.- Version 4.0.0 → 4.1.0 everywhere it appears (version-sync rule: grep both
4.0.0and the27-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.mdif present; any SKILL roster enumerating commands; the router roster (done above);STATE.mdcount block (27→29, version 4.1.0).
Verification (testable — gate before push)
ls commands/*.md | wc -l== 29.bash scripts/test-runner.shexit 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;firsthourpresent. create/measure: valid frontmatter,AskUserQuestionrouting, delegate only (grep shows no inlined drafting/analysis logic, noWritein 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.