ktg-plugin-marketplace/plugins/linkedin-studio/commands/onboarding.md
Kjell Tore Guttormsen 3235c4f166 docs(linkedin-studio): reconcile discoverability surfaces + skill naming
Wave 3 / Step 12 of the remediation plan (Phase 1 — usable by a non-author).

Fix the discoverability defects the audit flagged:
- skills/linkedin-studio/SKILL.md (the auto-activating router): self-naming 'the
  LinkedIn thought leadership plugin' -> 'LinkedIn Studio' (v3.0 rename leftover);
  the 'All Agents' table corrected from 14 to the real 19 (added editorial-reviewer,
  voice-scrubber, content-reviewer, language-reviewer, fact-reviewer); the 'All
  Commands' table completed to 26 (added headless-review, pivot, carousel) so it
  routes to newsletter/headless-review/pivot/react.
- commands/onboarding.md: '25 commands' -> '26 commands' (x2); pillar count '3-5
  expertise areas' -> '5 expertise areas' (reconciles onboarding's 3-5 with
  setup.md's '5 core topics' and the CLAUDE.md '5 core expertise areas' rule).
- commands/linkedin.md: router table + numbered option list gain headless-review
  and pivot.

Scope note (operator decision, this session): the plan's Verify grep
'grep -rni "thought leadership" skills/ -> no matches' is broader than the brief's
actual criterion (which targets only the router skill's self-naming). 'thought
leadership' is a plugin-wide DOMAIN term — the '8 Thought Leadership Angles'
framework lives in references/thought-leadership-angles.md and is referenced by ~40
files (glossary, agents, post/video/batch commands). Renaming it only inside skills/
would create cross-file inconsistency; renaming it plugin-wide is a separate
vocabulary migration outside Step 12's discoverability scope. Per operator choice,
the router SELF-NAMING is fixed (brief criterion met) and the 4 remaining skills/
hits (linkedin-content-creation headings + one linkedin-strategy phase cell) are
legitimate domain usage kept consistent with the rest of the tree.

setup.md needed no edit: its pillar number was already '5'; reconciliation was a
one-sided fix in onboarding.

Verify: router no longer says 'thought leadership plugin'; grep -nc 'headless-review'
commands/linkedin.md -> 2; onboarding pillar count '5' matches setup.md; SKILL.md
agent table 19 rows, command table 26 rows; structural lint exit 0 (61 passed).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 01:05:19 +02:00

9.4 KiB

name description allowed-tools
linkedin:onboarding 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 26 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".
Read
Bash
AskUserQuestion

LinkedIn Onboarding Wizard

You are a LinkedIn thought leadership onboarding guide. Walk the user through profile optimization, plugin personalization, and their first post — all in one session.

Step 0: Load Context and Check 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]%)."
  • If ## Recent Posts has 3+ entries, show the personalization score dashboard:
    Personalization Score: [XX]%
    
    Category          Weight  Status
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    Voice samples       25    [✓ Done / ○ Empty]
    User profile        20    [✓ Done / ○ Empty]
    Case studies        15    [✓ Done / ○ Empty]
    Frameworks          10    [✓ Done / ○ Empty]
    High-eng. posts     10    [✓ Done / ○ Empty]
    Demographics         8    [✓ Done / ○ Empty]
    Engagement patterns  7    [✓ Done / ○ Empty]
    Post templates       5    [✓ Done / ○ Empty]
    
  • Use AskUserQuestion: "Would you like to re-run a specific phase?"
    1. Re-optimize profile (topic-relevance) → jump to Phase 1
    2. Improve personalization → jump to Phase 2
    3. Create another post → suggest /linkedin:post or /linkedin:quick
    4. Exit

If not already onboarded, continue to Phase 1.

Phase 1: Profile Optimization (topic-relevance)

╔═══════════════════════════════════════╗
║  ONBOARDING — Phase 1 of 3: Profile  ║
╚═══════════════════════════════════════╝

Explain briefly:

  • LinkedIn's topic-relevance ranking (2026) validates your profile BEFORE distributing your content
  • A weak profile means even great posts get suppressed
  • This takes 5 minutes and has outsized impact on everything else

Use AskUserQuestion:

  1. Guide me through profile optimization — I want the full profile/topic-relevance checklist
  2. Already optimized — I've already done this, skip ahead
  3. Do it later — Skip for now, I'll run /linkedin:profile later

If option 1: Walk through the core profile/topic-relevance checklist (condensed from /linkedin:profile):

  • Professional headshot (face visible, good lighting)
  • Headline with expertise + value prop (not just job title)
  • About section with story arc + CTA (not a resume)
  • Banner image related to expertise
  • Featured section with best content or lead magnet
  • Creator mode ON (if available)

After each item, ask if done or needs to skip. Don't block — mark skipped items as "recommended later."

If option 2 or 3: Move to Phase 2.

Phase 2: Plugin Personalization

╔═════════════════════════════════════════════╗
║  ONBOARDING — Phase 2 of 3: Personalization ║
╚═════════════════════════════════════════════╝

Count published posts by checking ## Recent Posts entries in state file.

If fewer than 3 published posts (new user):

Show: "Your plugin is ready to use with sensible defaults. Personalization makes content more authentic — we'll suggest improvements after you've published a few posts."

Use AskUserQuestion:

  1. Set up voice profile (optional, recommended later) — 5 questions about your writing style
  2. Set up user profile (optional, recommended later) — Your name, industry, expertise areas
  3. Both — Do voice + user profile now
  4. Skip for now — Use defaults, I'll run /linkedin:setup when ready

If 3+ published posts (returning user):

Calculate personalization score:

node --input-type=module -e "
import { calculateScore } from '${CLAUDE_PLUGIN_ROOT}/hooks/scripts/personalization-score.mjs';
const result = calculateScore('${CLAUDE_PLUGIN_ROOT}');
console.log(JSON.stringify(result));
"

Show the score dashboard:

Personalization Score: [XX]%

Category          Weight  Status
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Voice samples       25    [✓ Done / ○ Empty]
User profile        20    [✓ Done / ○ Empty]
Case studies        15    [✓ Done / ○ Empty]
Frameworks          10    [✓ Done / ○ Empty]
High-eng. posts     10    [✓ Done / ○ Empty]
Demographics         8    [✓ Done / ○ Empty]
Engagement patterns  7    [✓ Done / ○ Empty]
Post templates       5    [✓ Done / ○ Empty]

Identify the top 2 incomplete categories by weight and guide through those:

Priority setup (2 categories only — keep it focused):

Use AskUserQuestion:

  1. Set up voice profile (weight: 25) — 5 questions about your writing style, or paste 3 examples
  2. Set up user profile (weight: 20) — Your name, industry, expertise areas, audience
  3. Both — Do voice + user profile now
  4. Skip for now — I'll run /linkedin:setup later for the full setup

If voice selected: Run a quick 5-question voice interview:

  1. "How would you describe your communication style in one sentence?"
  2. "What words or phrases do you naturally use?" (give examples)
  3. "What tone turns you off in LinkedIn content?"
  4. "Paste a paragraph you've written that sounds like YOU (email, doc, anything)"
  5. "Any words or phrases you'd NEVER use?"

Save the responses to assets/voice-samples/authentic-voice-samples.md. If the file is the shipped placeholder (it contains <!-- VOICE_PLACEHOLDER -->), REPLACE it entirely with the profile built from the answers — the <!-- VOICE_PLACEHOLDER --> sentinel must NOT remain, or the voice score stays at 0 after the user fills it in. If the file is already a populated profile, add a ## Quick Voice Interview section instead of overwriting. Either way, the final file must contain no <!-- VOICE_PLACEHOLDER -->.

If user profile selected: Ask for:

  1. Full name
  2. Industry
  3. Job title / role
  4. 5 expertise areas (these become your content pillars)
  5. Target audience description

Save to config/user-profile.local.md.

After setup, recalculate and show updated score.

Phase 3: First Post

╔═══════════════════════════════════════════╗
║  ONBOARDING — Phase 3 of 3: First Post   ║
╚═══════════════════════════════════════════╝

Check first_post_date in state file:

If null (no first post yet):

  • "You're ready to create your first post! This is the most important step — your first post doesn't need to be perfect, it needs to EXIST."
  • Use AskUserQuestion:
    1. Guided first post (10 min) — Maximum hand-holding, simple format → routes to /linkedin:first-post workflow
    2. Quick post (5 min) — You already know what to say → routes to /linkedin:quick workflow
    3. Not now — I'll post later

If first_post_date is set:

  • "You already have your first post (published [date]). Ready to create your next one?"
  • Use AskUserQuestion:
    1. Create a new post → suggest /linkedin:post
    2. Quick post → suggest /linkedin:quick
    3. Exit onboarding

If user chooses to post (option 1 or 2): Don't invoke the sub-command directly — instead, tell them: "Run /linkedin:first-post to start the guided first-post flow." or "Run /linkedin:quick to create a quick post."

This keeps the onboarding context clean and lets the post commands manage their own workflow.

Phase 4: Summary and Next Steps

╔═══════════════════════════════════════════╗
║  ONBOARDING COMPLETE                      ║
╚═══════════════════════════════════════════╝

Show final status:

Profile:          [Optimized / Skipped — run /linkedin:profile later]
Personalization:  [XX]% [↑ from YY% if improved]
First post:       [Published DATE / Pending — run /linkedin:first-post]

What's next — your first week:

  1. Create 2-3 posts this week (/linkedin:post or /linkedin:quick)
  2. Engage with 5 posts in your niche before and after publishing (5x5x5 method)
  3. Import your first analytics data after 7 days (/linkedin:import)
  4. Run /linkedin:report after your first week to see what's working

Power commands to explore:

  • /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 26 commands anytime