ktg-plugin-marketplace/plugins/linkedin-studio/docs/remediation/command-rationalization.md
Kjell Tore Guttormsen baca30feb1 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>
2026-05-30 21:27:06 +02:00

40 KiB
Raw Permalink Blame History

Command-Surface Rationalization — Step 14a

Remediation Voyage, command-surface pass. Independent, COLD read of all 27 command files in commands/*.md (full bodies, not just frontmatter), with the router (commands/linkedin.md), CLAUDE.md, and README.md as the map of the intended surface. Written 2026-05-30. ANALYSIS ONLY — no command file was edited, merged, deleted, or renamed; the single deliverable is this document.

Correction (post-review, 2026-05-30). The first pass omitted multiplatform (covered 26/27) and mis-stated two group-header counts; it also raised a competitive 1K-gating inconsistency that did not survive verification. All three are fixed below: multiplatform now has its own entry (Group B), the Group C/F headers read 3/5, and the competitive nit is withdrawn (CLAUDE.md :64, README :222, the router, and the command body all leave it ungated). Net finding is unchanged — keep 27, 0 merge, 0 cut — now genuinely covering all 27.

Method note

The fixtures here are the command files themselves — each command's purpose, its full workflow body, its frontmatter description (the trigger-phrase set that governs how it gets invoked), and the sibling surfaces it touches. The discipline is borrowed verbatim from docs/remediation/overlap-measurement.md (whose SUBJECT is the 7 long-form review agents, not the commands — kept strictly separate here): for every overlap I apply the subsumption testdoes either command's catch-set / surface fully contain the other's? — and the trim rule: merge or cut ONLY where a command catches nothing a sibling doesn't; if the redundancy is justified, record it and KEEP; if I can't decide, record "inconclusive — retain pending operator view" and do NOT trim. Default-to-keep under uncertainty. This plugin already over-grew once (24→27), so the bias is honest-surface, not consolidation-for-its-own-sake and not growth-for-its-own-sake. Every recommendation is grounded in a citable trigger set, workflow step, or sibling surface — no taste-based cuts.

A leverage note used throughout: a command's invocation leverage is the product of (a) trigger-phrase breadth in its description and (b) how likely a user is to actually type the intent when a broader command already catches it. A command whose entire trigger set is a strict subset of a broader command's, and which adds no unique workflow, is the classic merge/cut candidate.


Group A — Entry / router (1)

linkedin (router)

  • Purpose — Status line (weekly progress, streak, follower phase) + upcoming/overdue queue + a menu/router that disambiguates to the right subcommand.
  • Overlap with siblings — Structurally overlaps every command (it lists them), but that is its job, not redundancy. No subsumption either way: the router holds no content-production surface, the leaf commands hold no menu/status surface.
  • Invocation leverage — Highest-traffic entry point: triggers on the bare "linkedin", "/linkedin", "linkedin help". This is the front door.
  • Recommendationkeep.
  • Rationale — Structural and the single highest-leverage surface. Judged on grouping honesty: the grouping is broadly honest (Getting Started / Content Creation / Strategy / Post-Publish / Growth+Monetization), and it correctly soft-gates the 1K commands. One honest-surface nit for the operator (not a cut): it lists post-feedback-monitor as an agent under "Post-Publish Monitoring" but does not list the new /linkedin:firsthour command in that section — the router's own map is one release behind the surface it routes to.

Group B — Short-form creation (7)

post

  • Purpose — Full interactive post creation (angle → format → draft → quality/de-AI gate → refine), targeting 1,2001,800-char substantial posts.
  • Overlap with siblingsquick (short 150500-char path), react (URL-sourced), pipeline (post + schedule + monitor). Subsumption test: post does NOT subsume quick (different length band + 3-line formula + 8 templates) and quick does not subsume post (no refinement cycle, no content-optimizer delegation). post is the body that pipeline wraps but pipeline adds scheduling/queue/first-hour that post lacks; neither subsumes the other.
  • Invocation leverage — Very high; broad trigger set ("create linkedin post", "write a post", "turn this into a post"). Core entry point alongside quick.
  • Recommendationkeep.
  • Rationale — Distinct length/depth tier with a unique refinement+optimizer surface; one of the two highest-traffic creation commands.

quick

  • Purpose — 5-minute 3-line-formula post (150500 chars) AND the home of the 8 post-type templates (reaction/tip/observation/hot-take/failure/question/curation/one-liner).
  • Overlap with siblingspost (longer tier), first-post (which explicitly reuses quick's 3-line formula). Subsumption test: quick uniquely owns the template library and the short-length band; post owns the long band. The two are explicitly cross-referenced ("When to Upgrade → /linkedin:post"). No subsumption.
  • Invocation leverage — High; broad trigger set including the absorbed templates intent ("post template", "give me a template", "fill in the blank post"). This absorption was the v2.0.0 consolidation — confirmed intact in the body (Step 1 hosts the template library).
  • Recommendationkeep.
  • Rationale — Holds the unique short-form length tier + the entire template surface that templates was folded into. Cutting it would orphan the templates.

react

  • Purpose — URL-to-post pipeline: fetch external content (article/news/research/YouTube), extract, pick a reaction angle, draft in voice; includes a multi-URL comparison path.
  • Overlap with siblingspost (could in principle ingest a URL via WebFetch — post Step 1 even mentions "If they provide a URL, use WebFetch"). Subsumption test: react has a unique surface post lacks — the multi-source comparison/synthesis path (Steps 1b8b), the content-type→angle table tuned to reactions, and the "react, don't summarize / your take is the hook" discipline. post does not subsume that. react does not subsume post (no general-topic drafting).
  • Invocation leverage — High and unambiguous: "react to this", "this article", "this url", "share this news". The router routes any bare URL here. A user with a link will not naturally type /linkedin:post.
  • Recommendationkeep.
  • Rationale — Genuinely unique URL-ingestion + multi-source-synthesis surface and a distinct, frequently-typed intent.

pipeline

  • Purpose — End-to-end lifecycle orchestrator: ideation → draft → optimize → schedule/queue → 5x5x5 pre-engagement → publish → first-hour → 48h analysis.
  • Overlap with siblings — This is the densest overlap node. It re-does post's drafting (Step 2), calendar's queueing (Step 4 Option 3 calls the same queue-manager.mjs queueAdd), the 5x5x5/first-hour plan (now also firsthour's job), and points to analyze at the end. Subsumption test: no single sibling subsumes pipeline — it is the only command that strings the whole chain into one guided run with explicit step gates. But pipeline is itself a thinner re-statement of post + calendar (+ firsthour): every individual capability it offers exists, more developed, in those leaf commands (its draft step is a condensed post; its schedule step is a condensed calendar; its first-hour step is a condensed firsthour).
  • Invocation leverage — Moderate-to-low as a natural type. Trigger set ("pipeline", "full workflow", "end to end", "idea to post") is narrow and jargon-y; in practice a user wanting to create+schedule will type /linkedin:post then /linkedin:calendar. It reads as a workflow-orchestrator showcase more than a daily entry point.
  • Recommendationkeep (with a flag) — leaning inconclusive.
  • Rationale — No clean subsumption (it uniquely sequences the chain), so the trim rule says retain. But it is the surface most worth the operator's scrutiny: its value is the orchestration, and that value erodes as post/calendar/firsthour each grow richer than pipeline's inlined condensations. Flagged in the honest-uncertainty list. If the operator ever wants to shrink the surface, this is the first place a defensible merge could be argued (→ post, preserving the explicit schedule+first-hour hand-off chain) — but the evidence does not compel it.
  • Purpose — Structured slide-by-slide carousel/document generator with template selection, per-slide copy, caption, de-AI gate, and optional mcp-image slide generation.
  • Overlap with siblingsmultiplatform (has a "LinkedIn → Presentation Slides" template) and post (notes "could also work as a carousel — run /linkedin:carousel"). Subsumption test: multiplatform's slide template is a 10-line generic outline; carousel is a full format engine (5 templates, per-slide char rules, mcp-image generation, carousel quality checklist). multiplatform does not remotely subsume it. carousel owns the highest-engagement organic format end-to-end.
  • Invocation leverage — High and specific: "carousel", "slide deck", "pdf post", "swipe post", "document post". A distinct format intent users type directly.
  • Recommendationkeep.
  • Rationale — Deep, unique format surface with image generation; not subsumed by anything.

video

  • Purpose — Video script generator (talking-head/screen-rec/slideshow, 30s2min) with pacing/visual/energy cues, captions, thumbnail, first comment, a video quality gate, and delegation to video-scripter.
  • Overlap with siblingsmultiplatform ("LinkedIn → YouTube Script" template). Subsumption test: multiplatform's YouTube template is a generic timing outline; video is a full LinkedIn-native scripting engine (word-budget math, muted-autoplay test, completeness gate, video-scripter agent). No subsumption — and they target different platforms (LinkedIn-native vs. YouTube adaptation).
  • Invocation leverage — High and specific: "video script", "talking head script", "record a video". Direct format intent.
  • Recommendationkeep.
  • Rationale — Unique LinkedIn-native video surface + dedicated agent; the multiplatform overlap is a thin adaptation template, not a substitute.

multiplatform

  • Purpose — Adapt existing LinkedIn content for other platforms: a Twitter/X thread, a generic presentation deck, or a YouTube script. Long-form is explicitly routed out to /linkedin:newsletter.
  • Overlap with siblingscarousel (its "Presentation Slides" template) and video (its "YouTube Script" template). Subsumption test: multiplatform's slide/YouTube blocks are ~10-line generic outlines, while carousel is a full LinkedIn-native carousel engine and video a full LinkedIn-native scripting engine — neither subsumes the other, and they target different outputs (LinkedIn-native vs. Twitter / YouTube / generic deck). Critically, the Twitter/X-thread adaptation path exists in no other command. No subsumption.
  • Invocation leverage — Moderate; "adapt for twitter", "cross-post", "repurpose for", "turn into thread". A distinct cross-platform intent, but lower-traffic than the native creation commands.
  • Recommendationkeep (flag: develop-candidate).
  • Rationale — Unique cross-platform / Twitter surface; subsumption fails as a cut. But it is the thinnest command in the set — the only one that inlines static templates instead of delegating, where the content-repurposer agent already exists to power a richer adaptation. Keep now; a future develop (wire content-repurposer, deepen the per-platform output) is the defensible improvement, not a merge/cut.

Group C — Long-form (3)

newsletter

  • Purpose — The single long-form orchestrator: a fixed 16-phase, multi-session pipeline (research → skeleton/spine gates → draft → fact-check → editorial → persona sweep → headless review → visual assets → lock → hook gate → schedule) with maintained edition-state.
  • Overlap with siblingsheadless-review and pivot are phases/companions of this command (Step 6.5 and the lock-precondition re-open). Subsumption test: newsletter invokes the headless package inline (Step 6.5) and runs the pivot heuristic as a lock precondition (Step 8) — so it functionally contains both. But containment ≠ the companions are redundant (see their entries: the value is fresh-session isolation and a named re-open ritual, which newsletter cannot itself provide). No short-form command overlaps it; multiplatform explicitly routes all long-form here.
  • Invocation leverage — High for its niche; the sole entry for "newsletter", "long-form", "essay", "series article".
  • Recommendationkeep.
  • Rationale — The entire long-form spine; nothing else does this and everything long-form routes to it.

headless-review

  • Purpose — Cold/adversarial review package run on a FROZEN draft with starved context — content-reviewer + language-reviewer + fact-reviewer + persona-reviewer (resonance/conversion), consolidated into one operator-gated report. Standalone surface for newsletter Step 6.5.
  • Overlap with siblingsnewsletter (Step 6.5 fans the same package inline). Subsumption test: this is the calibration case (c) the brief flags. Does newsletter Step 6.5 subsume headless-review? No — and the command's own body states why: the cardinal value is Layer 1 fresh-session isolation ("the parent itself then has no drafting transcript"). When the package runs inline inside the drafting newsletter session it carries exactly the framing-bias the package exists to eliminate. The standalone command is the only way to get a genuinely cold parent context. So the standalone surface has a unique catch (true independence) the inline phase structurally cannot.
  • Invocation leverage — Moderate; specific trigger set ("headless review", "cold review", "adversarial review", "review the frozen draft"). Niche but real, and the recommended path is to type it in a fresh session — which is precisely an action a phase cannot perform.
  • Recommendationkeep — justified standalone, not merely-as-a-phase.
  • Rationale — Subsumption fails in the independence dimension: the fresh-session parent is a capability the newsletter phase cannot replicate. This is the "redundancy is justified — record and keep" case, mirroring the agent-overlap finding for the cold trio in overlap-measurement.md.

pivot

  • Purpose — A named ritual to re-open an already-cleared long-form edition after a substantive late change: logs pivots[], resets currentPhase, un-locks, invalidates downstream verdicts, marks which gates must re-pass. Includes the >20%/>2-section heuristic.
  • Overlap with siblingsnewsletter (which runs the same heuristic as a Step 8 lock precondition and owns the gate re-runs). Subsumption test (calibration case c): does newsletter subsume pivot? Partially but not fully. newsletter Step 8 detects drift and stops the lock, but it explicitly points the operator to /linkedin:pivot to perform the state surgery (log the pivot entry, reset phase, un-lock, invalidate verdicts). pivot does NOT run the gates ("Do not run the gates yourself — /linkedin:newsletter owns the pipeline"); newsletter does NOT perform the re-open bookkeeping. The two are complementary halves of one ritual — clean separation, no subsumption.
  • Invocation leverage — Low-to-moderate; narrow trigger set ("pivot", "re-open edition", "added a section", "changed the angle"). Rarely hit, but when hit it does deterministic state work no other command does.
  • Recommendationkeep.
  • Rationale — Holds a unique state-mutation surface (the re-open bookkeeping) that newsletter deliberately delegates out; not subsumed. Lower-traffic, but the trim rule retains a non-redundant specialist.

Group D — Onboarding / setup (3)

onboarding

  • Purpose — Multi-step wizard chaining profile → personalization → first-post as one guided flow for brand-new installs, with an "already onboarded" short-circuit.
  • Overlap with siblingssetup (Phase 2 is a condensed setup) and first-post/profile (Phases 1 and 3 route to them). Subsumption test (calibration case f): does setup + first-post subsume onboarding? No. onboarding uniquely provides the cohesive single path ("a single guided path instead of navigating 27 commands") and the cross-phase state logic (already-onboarded detection, score-gated branching, "what's next — your first week"). Notably it does NOT invoke the sub-commands directly — it tells the user to run them — so it is an orchestration/triage layer, not a duplicate of their bodies.
  • Invocation leverage — Moderate; trigger set heavily overlaps first-post and setup ("get started", "just installed", "walk me through"). The router lists it first. Real risk: a "get started" user could land on first-post instead — but the intent ("walk me through everything") is distinct from "help me publish my first post".
  • Recommendationkeep.
  • Rationale — Unique cohesive-wizard surface + cross-phase triage state; it orchestrates rather than duplicates setup/first-post. No subsumption.

setup

  • Purpose — Guided personalization: computes the 8-category personalization score and runs 6 sub-workflows (voice samples → voice-trainer, case study, framework, post analysis, demographics, user profile) to populate asset templates.
  • Overlap with siblingsonboarding Phase 2 (a 2-category condensation of this). Subsumption test: onboarding only ever touches the top-2 weighted categories and explicitly defers ("I'll run /linkedin:setup for the full setup"); setup owns all 8 categories, the full score dashboard, and the voice-trainer delegation. onboarding does not subsume it.
  • Invocation leverage — High; broad trigger set ("setup", "personalize", "personalization score", "configure plugin", "my score", "fill in assets"). Also the router's destination for any score/asset-completeness query.
  • Recommendationkeep.
  • Rationale — The canonical, full-depth personalization surface; onboarding's version is a deliberate condensation that defers back here.

first-post

  • Purpose — First-post accelerator: maximum hand-holding, voice quick-check, simple topic pick, 3-line draft (reuses quick's formula), 4-item quality check, sets first_post_date, includes a guard that redirects returning users to post/quick.
  • Overlap with siblingsquick (whose 3-line formula it reuses) and onboarding Phase 3 (which routes here). Subsumption test: does quick subsume first-post? No. first-post adds first-timer-specific scaffolding quick lacks: the welcome/expectation framing, the voice-from-scratch setup branch (samples vs. 5 questions), the "exists > perfect" philosophy, the new-creator 90-day-boost messaging, and the returning-user guard. Its whole value is the zero-to-one onboarding hand-holding, not the drafting mechanics.
  • Invocation leverage — Moderate; "first post", "never posted", "new to linkedin". A genuinely distinct beginner intent.
  • Recommendationkeep.
  • Rationale — Unique first-timer scaffolding + the first_post_date side-effect; not subsumed by quick's formula it borrows.

Group E — Scheduling / publishing / post-publish (3)

batch

  • Purpose — Create a full week (35 posts) in one session from a theme/pillar: trend-spotter angles, content-planner plan, scheduling, draft files, queue entries, and a generated .ics.
  • Overlap with siblingspipeline (single post + schedule), calendar (queue management). Subsumption test: batch uniquely produces a multi-post balanced week with format/pillar rotation and .ics export; pipeline is single-post; calendar only manages an existing queue. No subsumption.
  • Invocation leverage — High and specific: "batch content", "week of posts", "sunday prep". Distinct planning intent.
  • Recommendationkeep.
  • Rationale — Unique multi-post-week surface + iCal generation; the queue-write overlap with calendar/pipeline is shared plumbing (queue-manager.mjs), not a shared surface.

calendar

  • Purpose — View/manage the 14-day queue (reschedule/cancel/view-draft) AND host the publish action (mark-as-published → update queue+state → first-hour plan). Absorbed the former publish command (v2.0.0).
  • Overlap with siblingsfirsthour (its publish flow ends with a first-hour plan; firsthour is a richer standalone version), pipeline/batch (which write to the queue it reads). Subsumption test (calibration case d): does calendar's publish action subsume firsthour? Nocalendar's first-hour block is a static 6-line checklist + an optional post-feedback-monitor hand-off; firsthour builds a worked, timestamped plan with named targets and draft comments via engagement-coach. Conversely firsthour does not manage the queue. No subsumption.
  • Invocation leverage — Very high; very broad trigger set spanning both calendar ("schedule", "queue", "upcoming") and publish ("mark as published", "just published", "post is live"). High-traffic.
  • Recommendationkeep.
  • Rationale — Canonical queue+publish surface that already absorbed publish; its first-hour checklist is a lightweight in-flow nudge, distinct from firsthour's full sprint planner.

firsthour

  • Purpose — Post-publish first-hour / reply-loop sprint: delegates to engagement-coach for a timestamped target list (whales/inner-circle/ICP), draft self-comments + CEA replies in voice, a minute-by-minute timeline; persists via recordFirstHourPlan; hands off to post-feedback-monitor.
  • Overlap with siblingscalendar's publish-action first-hour block, and the engagement-coach / post-feedback-monitor agents it delegates to. Subsumption test (calibration case d): firsthour is the orphan-wiring command for engagement-coach (its raison d'être per CLAUDE.md/README). It uniquely produces a worked plan (named targets + draft comments + clipboard copy + state persistence) that neither calendar (static checklist) nor post-feedback-monitor (48h monitoring, different time window) provides. The three form a relay (firsthour → coach for the plan → feedback-monitor for the marathon), not a redundancy.
  • Invocation leverage — Moderate; "first hour", "I just posted", "reply loop", "work my post". A real, frequently-recurring moment (every publish), but its trigger phrases partly collide with calendar's "just published". Some users will reach the lighter calendar first-hour block instead of firsthour.
  • Recommendationkeep (with a note).
  • Rationale — Distinct worked-plan surface + it is the wiring point for an otherwise-orphaned agent (engagement-coach); cutting it would re-orphan that agent and undo a core v4.0.0 remediation goal. Note for the operator: the trigger overlap with calendar's publish action means the two should cross-link (calendar's first-hour block could point to /linkedin:firsthour for the full plan) — a wiring nit, not a merge.

Group F — Analytics (5)

analyze

  • Purpose — Performance troubleshooting/diagnosis: 6-symptom intake → diagnostic patterns → penalty checklist → severity assessment → 14-day recovery protocol. Optionally grounds in analytics-interpreter (interpret mode).
  • Overlap with siblingsaudit, report, import (calibration case h). Subsumption test: analyze is the only diagnostic/recovery surface (why is reach down, how do I recover). report is reporting (weekly numbers from imported data); audit is strategy review (quarterly top/bottom posts, topic mix); import is ingestion. Four different jobs on the analytics axis — none subsumes another; analyze even works with no imported data (self-report intake).
  • Invocation leverage — High and distinct: "why isn't my content performing", "low reach", "reach dropped". A panic-moment intent users type directly.
  • Recommendationkeep.
  • Rationale — Unique troubleshooting/recovery surface; orthogonal to the other three analytics commands.

audit

  • Purpose — Periodic (quarterly) content-strategy audit: top/bottom performers, topic distribution vs. pillars, format mix, engagement trend, milestone progress, profile alignment — then routes the fix to strategy and the profile deep-audit to profile.
  • Overlap with siblingsanalyze (diagnosis), report (metrics), strategy/profile (which it explicitly defers to). Subsumption test: audit is the only holistic strategy-review surface (90-day lookback across topic/format/trajectory). It deliberately does NOT own trajectory prescription (delegates to strategy) or profile checklist (delegates to profile) — "audit names the gap; strategy prescribes the fix." That self-limiting design means it does not duplicate them; and report/analyze don't do the strategy lookback. No subsumption.
  • Invocation leverage — Moderate; "content audit", "quarterly review", "review my content strategy". A periodic, distinct intent.
  • Recommendationkeep.
  • Rationale — Unique holistic-review surface with clean delegation boundaries to strategy/profile; not a duplicate of analyze/report.

import

  • Purpose — Ingest a LinkedIn analytics CSV (auto-detect from ~/Downloads, quick-import helper, the analytics-CLI npm-install fix), parse → JSON → anomaly detection → baseline update, then delegates the analysis fan-out to /linkedin:report (one analysis pipeline, not two).
  • Overlap with siblingsreport (which it now calls rather than re-implements). Subsumption test: import uniquely owns data ingestion (CSV detection, copy-to-exports, CLI invocation, baseline creation); report owns presentation of already-imported data. The Step 6 hand-off is the explicit de-duplication ("keeping a second analysis pipeline here drifted out of sync"). Clean separation — no subsumption, and a redundancy already removed.
  • Invocation leverage — Moderate; "import analytics", "import CSV", "parse LinkedIn data". A distinct mechanical intent (you must import before you can report).
  • Recommendationkeep.
  • Rationale — Unique ingestion surface; the analysis overlap with report was already collapsed (delegation), which is exactly the discipline this audit endorses.

report

  • Purpose — Generate weekly/monthly/heatmap performance reports from imported data via the trends CLI: metrics table, top performers, 4-week trend, alert detection, analytics-interpreter (report mode) recommendations, markdown export.
  • Overlap with siblingsimport (which delegates to it), analyze (troubleshooting), audit (strategy review). Subsumption test: report is the only recurring-numbers reporting surface and the shared analysis engine import reuses. It does not diagnose recovery (analyze) or run the quarterly strategy lookback (audit). No subsumption.
  • Invocation leverage — High and distinct: "weekly report", "performance report", "how did I do", "show my stats". Recurring intent.
  • Recommendationkeep.
  • Rationale — Canonical reporting engine, now the single analysis pipeline both it and import use; distinct from analyze/audit.

ab-test

  • Purpose — Full A/B testing lifecycle (design → log → analyze → history → suggest) with a directional-not-significant statistical honesty layer; delegates optimized-variant rewrites to content-optimizer.
  • Overlap with siblingsreport/analyze (it cross-references analytics data; offers "View weekly performance report"). Subsumption test: ab-test uniquely owns the experiment surface (hypothesis, variant design, running comparison, verdict heuristic). No other command designs or tracks experiments; it merely reads analytics for cross-reference. No subsumption.
  • Invocation leverage — Moderate-to-high; specific trigger set ("A/B test", "test my hooks", "compare formats", "split test", "which hook works"). Distinct, directly-typed intent.
  • Recommendationkeep.
  • Rationale — Entirely unique experimentation surface; the analytics commands it links to don't touch experiments.

Group G — Growth / strategy (2)

strategy

  • Purpose — Phase-based growth plan (Phase 04 by follower count) + trajectory overlay + authority-building/signature-content compounding (Phase 2+). The canonical trajectory source audit defers to. Absorbed the former authority command (v2.0.0).
  • Overlap with siblingsaudit (names the gap, routes here for the fix), profile (which strategy defers to for profile-alignment), monetize (Phase 3+ monetization setup is mentioned but not owned here). Subsumption test: strategy uniquely owns the phase roadmap + trajectory prescription + authority compounding. It explicitly delegates profile to profile. No subsumption.
  • Invocation leverage — High; very broad trigger set ("growth plan", "build authority", "signature content", "linkedin roadmap", "my best content"). Also the router's destination for milestone/follower-progress and the below-1K nudge target.
  • Recommendationkeep.
  • Rationale — Deep, canonical growth+authority surface that absorbed authority; the hub other commands (audit, the 1K-gated ones) route toward.

profile

  • Purpose — The canonical profile/topic-relevance optimization checklist (7 sections: Headline/About/Experience/Featured/Skills/Network/Engagement) for the 2026 relevance model + the profile-SEO/search-surface layer. The single source analyze, audit, and strategy all defer to.
  • Overlap with siblingsanalyze (Step 6 "If Profile-Content Mismatch" routes here), audit (Step 6 routes here), strategy (authority audit defers profile signals here). Subsumption test: profile is explicitly the canonical profile audit — three siblings delegate to it rather than duplicate it. None subsumes it; it subsumes none of them (no content/analytics/growth surface). This is textbook clean delegation.
  • Invocation leverage — High and specific: "optimize profile", "profile audit", "fix my profile", "why is my reach low" (profile angle). Distinct, directly-typed intent.
  • Recommendationkeep.
  • Rationale — The single profile source-of-truth that three other commands point to; cutting/merging it would scatter the checklist they deliberately centralized.

Group H — Gated at ~1K followers (3)

monetize

  • Purpose — Monetization strategy: readiness scorecard, 4 stage-specific plans, lead-magnet blueprint, 4-week funnel, DM conversion workflow, CTA optimization, featured-section + revenue-model worksheets. Soft-gated at ~1K.
  • Overlap with siblingsstrategy (growth phases overlap the monetization stages; strategy Phase 3 mentions "lead magnets and monetization setup"), outreach (both 1K-gated revenue/opportunity surfaces). Subsumption test: monetize uniquely owns the revenue mechanics (pricing, offers, funnels, lead magnets, DM conversion). strategy only mentions monetization as a Phase 3+ focus area; it does not build a funnel or price an offer. outreach is collaborations/speaking, not products/funnels. No subsumption.
  • Invocation leverage — Moderate; specific ("monetize", "lead generation", "consulting pipeline", "pricing strategy", "lead magnet"). Soft-gated, so naturally lower-frequency until the audience exists.
  • Recommendationkeep.
  • Rationale — Deep, unique revenue-mechanics surface; strategy's monetization mention is a pointer, not a duplicate. The soft-gating is honest (works at any count, value compounds at 1K).

outreach

  • Purpose — Two-track orchestrator (collaborations + speaking) under one pitch paradigm: readiness, partner/event search + scoring, 12 collab formats + 4 talk templates, outreach messages, co-creation workflow + speaker portfolio, pipeline trackers (now state-persisted via recordOutreachContact), progression ladders. Absorbed the former collab + speaking commands (v2.0.0). Delegates to network-builder.
  • Overlap with siblingsmonetize (both 1K-gated), strategy (Phase 2+ collaborations). Subsumption test: outreach uniquely owns the partner/event pitch machinery. strategy only names collaborations as a focus area; monetize is products not partnerships. No subsumption. Internally it consolidated two commands and has an explicit capability checklist proving nothing was lost in that merge — a model of disciplined consolidation.
  • Invocation leverage — Moderate; very broad trigger set spanning both tracks ("collaboration", "co-author", "speaking", "CFP", "pitch a talk", "outreach"). Soft-gated.
  • Recommendationkeep.
  • Rationale — Unique, deep two-track outreach surface that already consolidated collab+speaking cleanly; not subsumed.

competitive

  • Purpose — Competitive analysis of niche thought leaders: identify competitors (WebSearch), content/hook/engagement analysis, landscape map, gap analysis, differentiation strategy, inspired-not-copied takeaways.
  • Overlap with siblingsstrategy (differentiation is a growth lever there), audit (analyzes your content; this analyzes others'). Subsumption test: competitive is the only external/competitor-facing analysis surface. audit is inward-facing; strategy prescribes your plan, not a competitor scan. No subsumption.
  • Invocation leverage — Low-to-moderate; specific ("competitive analysis", "analyze competitor", "what are others doing", "learn from others"). A periodic, distinct intent. CLAUDE.md/README describe it as 1K-gated in the same breath as monetize/outreach, though the file itself carries no gating logic.
  • Recommendationkeep (with a minor honesty note).
  • Rationale — Unique outward-facing competitive surface; nothing else scans competitors. Note: the router does not actually list competitive under the 1K-gated group nor apply the below-1K nudge to it (unlike monetize/outreach), and the command body has no follower check — a small documentation-vs-behavior inconsistency for the operator to reconcile, not a reason to merge or cut.

Summary table

Command Recommendation Merge target One-line reason
linkedin keep Structural router; highest-leverage front door (minor map-staleness nit).
post keep Canonical long-band creation + refine/optimizer surface; core entry.
quick keep Unique short-band + the 8-template library templates folded into.
react keep Unique URL-ingestion + multi-source synthesis; directly-typed intent.
pipeline keep (flag) No clean subsumption, but a thin re-statement of post+calendar+firsthour; watch for erosion.
carousel keep Deep unique carousel/document engine + image generation.
video keep Unique LinkedIn-native video scripting + video-scripter.
multiplatform keep (flag) Unique Twitter/X + cross-platform surface; thinnest command, develop-candidate (could wire content-repurposer).
newsletter keep The long-form spine; everything long-form routes here.
headless-review keep Unique fresh-session cold-isolation a newsletter phase can't provide.
pivot keep Unique re-open state surgery newsletter delegates out.
onboarding keep Unique cohesive wizard + cross-phase triage; orchestrates, not duplicates.
setup keep Canonical full 8-category personalization; onboarding defers here.
first-post keep Unique first-timer scaffolding + first_post_date side-effect.
batch keep Unique multi-post-week + iCal; queue-write is shared plumbing.
calendar keep Canonical queue + publish action (absorbed publish).
firsthour keep (note) Unique worked first-hour plan; wiring point for orphaned engagement-coach.
analyze keep Unique troubleshooting/recovery surface; works without imported data.
audit keep Unique holistic strategy review; delegates fix to strategy/profile.
import keep Unique ingestion surface; analysis already delegated to report.
report keep Canonical reporting engine + shared analysis pipeline.
ab-test keep Entirely unique experimentation lifecycle.
strategy keep Canonical phase+trajectory+authority hub (absorbed authority).
profile keep Single profile source-of-truth three commands delegate to.
monetize keep Unique revenue-mechanics surface; honest soft-gating.
outreach keep Unique two-track pitch surface (absorbed collab+speaking).
competitive keep (note) Unique outward competitor scan; minor gating doc-vs-behavior nit.

Tally: keep 27 · merge 0 · cut 0. Two keeps carry a flag — pipeline (inconclusive, retained) and multiplatform (develop-candidate).


Count-impact summary (if every recommendation were applied as-is)

Every recommendation is keep. Therefore, if all were applied:

  • Commands removed: 0 (0 cut + 0 merged-away).
  • Resulting count: 27 — unchanged.
  • Lint / roster surfaces needing update: none. EXPECT_COMMANDS=27 in scripts/test-runner.sh stays as-is; the CLAUDE.md command table (27), the README command table, the commands header the lint checks, the router commands/linkedin.md, and any SKILL roster all remain at 27. No roster touched, no count contract changed.

This mirrors the agent-overlap outcome in overlap-measurement.md (no agent trimmed → 19/27 baseline unchanged): the command surface, audited under the same subsumption discipline, also holds — every command has a unique surface or a justified redundancy, and the two prior consolidations (templates/publish/ authority/collab/speakingquick/calendar/strategy/outreach, and the importreport analysis delegation) have already removed the genuine duplications. The surface is over-grown only in count, not in redundancy.

The recommendations are informational; the operator decides per command. Two non-blocking honesty nits surfaced along the way (each a wiring/doc fix, not a merge/cut; a claimed third was withdrawn on verification):

  1. The router lists post-feedback-monitor (agent) under Post-Publish but not the new /linkedin:firsthour command.
  2. calendar's publish-action first-hour block and firsthour share trigger phrases ("just published") and should cross-link.
  3. competitive 1K-gating doc-vs-behavior. Withdrawn on verification: CLAUDE.md :64, README :222, the router, and the command body all leave competitive ungated — only monetize/outreach carry "(unlocks at ~1K)". No inconsistency exists; the claimed nit was unfounded.

Honest-uncertainty list (inconclusive — retain pending operator view)

  • pipelineinconclusive, retained. It has no clean subsumption (it uniquely sequences draft → schedule → first-hour → analysis into one guided run), which under the trim rule mandates retention. But its constituent steps are each a thinner inline condensation of richer leaf commands (post / calendar / firsthour), and its trigger set is narrow/jargon-y, so its real-world leverage as a natural type is the weakest in Group B. I could not decide whether the orchestration value justifies the standalone command versus folding its unique sequencing into post (with an explicit schedule + first-hour hand-off). Per the methodology: inconclusive — retain pending operator view. This is the one command where a future, operator-blessed merge could be defensible; the evidence informs but does not compel it.

All other 26 commands are clear keep decisions with no residual uncertainty.