Close the 5 findings from the S7 /trekreview release gate (review.md, verdict BLOCK):
- BLOCKER: comment-multiplier "5x" reconciled to the canonical order-only framing
(no fixed multiplier) in agents/engagement-coach.md, linkedin-growth-playbook,
linkedin-formats.md — per algorithm-signals-reference.md ("do not quote a comment
multiplier").
- BLOCKER: carousel rate "6.60%/6.6% (highest)" reconciled to "~7% top organic
format" in linkedin-formats.md:42 (was self-contradicting :50) and
assets/templates/carousel-templates.md.
- Lint hardening: test-runner.sh STALE_STATS now matches 6.60% + the 5x comment
folklore and scans agents/ + assets/templates/ — the grep that defines the
Phase-0 criterion now catches both BLOCKERs.
- MAJOR: onboarding.md command count 26 -> 27.
- MAJOR: add section-append-branch (production-path) tests for recordFirstHourPlan
+ recordOutreachContact against a template-layout fixture.
- MINOR: move date-scalar changes.push inside the write branch in state-updater.mjs.
Verify: node --test hooks/scripts/__tests__/*.test.mjs -> 92/92; bash
scripts/test-runner.sh -> 66/0/0. NO push until /trekreview re-confirms ALLOW/WARN.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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 27 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". |
|
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 Postshas 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?"
- Re-optimize profile (topic-relevance) → jump to Phase 1
- Improve personalization → jump to Phase 2
- Create another post → suggest
/linkedin:postor/linkedin:quick - 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:
- Guide me through profile optimization — I want the full profile/topic-relevance checklist
- Already optimized — I've already done this, skip ahead
- Do it later — Skip for now, I'll run
/linkedin:profilelater
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:
- Set up voice profile (optional, recommended later) — 5 questions about your writing style
- Set up user profile (optional, recommended later) — Your name, industry, expertise areas
- Both — Do voice + user profile now
- Skip for now — Use defaults, I'll run
/linkedin:setupwhen 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:
- Set up voice profile (weight: 25) — 5 questions about your writing style, or paste 3 examples
- Set up user profile (weight: 20) — Your name, industry, expertise areas, audience
- Both — Do voice + user profile now
- Skip for now — I'll run
/linkedin:setuplater for the full setup
If voice selected: Run a quick 5-question voice interview:
- "How would you describe your communication style in one sentence?"
- "What words or phrases do you naturally use?" (give examples)
- "What tone turns you off in LinkedIn content?"
- "Paste a paragraph you've written that sounds like YOU (email, doc, anything)"
- "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:
- Full name
- Industry
- Job title / role
- 5 expertise areas (these become your content pillars)
- 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:
- Guided first post (10 min) — Maximum hand-holding, simple format → routes to
/linkedin:first-postworkflow - Quick post (5 min) — You already know what to say → routes to
/linkedin:quickworkflow - Not now — I'll post later
- Guided first post (10 min) — Maximum hand-holding, simple format → routes to
If first_post_date is set:
- "You already have your first post (published [date]). Ready to create your next one?"
- Use AskUserQuestion:
- Create a new post → suggest
/linkedin:post - Quick post → suggest
/linkedin:quick - Exit onboarding
- Create a new post → suggest
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:
- Create 2-3 posts this week (
/linkedin:postor/linkedin:quick) - Engage with 5 posts in your niche before and after publishing (5x5x5 method)
- Import your first analytics data after 7 days (
/linkedin:import) - Run
/linkedin:reportafter 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 27 commands anytime