refactor(linkedin)!: rename plugin linkedin-thought-leadership → linkedin-studio (v3.0.0)
BREAKING CHANGE: the marketplace slug, the agent namespace (linkedin-studio:<agent>), and the runtime state-file path (~/.claude/linkedin-studio.local.md) all change. Reinstall required; existing state migrated in place (post metrics, streak, history preserved). The /linkedin:* commands are unchanged — the command namespace is set per-command in frontmatter and was always independent of the plugin slug. Functionality is byte-identical to v2.4.0; this release is pure identity. - dir + manifests: plugins/linkedin-studio + plugin.json + root marketplace.json - agent namespace updated in commands/newsletter.md (only functional invoker) - state path updated in 4 hook scripts + topic-rotation prompt + state template - catch-all skill dir renamed skills/linkedin-studio (5 functional skills unchanged) - docs + version bump to 3.0.0 across README badge, CHANGELOG, root README/CLAUDE.md - historical records (CHANGELOG past entries, docs/ build artifacts, config-audit v5.0.0 snapshots) intentionally retain the old slug Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
9df3de795c
commit
b6bb61246b
196 changed files with 164 additions and 138 deletions
219
plugins/linkedin-studio/commands/quick.md
Normal file
219
plugins/linkedin-studio/commands/quick.md
Normal file
|
|
@ -0,0 +1,219 @@
|
|||
---
|
||||
name: linkedin:quick
|
||||
description: |
|
||||
5-minute quick post creation using the 3-line formula. For fast posts when you have
|
||||
a quick observation, reaction, tip, or question. Target: 150-500 characters.
|
||||
Also the single entry point for the 8 post-type templates (reaction, quick tip,
|
||||
observation, hot take, failure, question, curation, one-liner).
|
||||
Use when the user needs to post quickly, has a simple insight to share, or wants
|
||||
a proven template structure.
|
||||
Triggers on: "quick linkedin post", "fast post", "quick thought", "5 minute post",
|
||||
"simple linkedin post", "short post", "post template", "give me a template",
|
||||
"post structure", "fill in the blank post".
|
||||
allowed-tools:
|
||||
- Read
|
||||
- Bash
|
||||
- AskUserQuestion
|
||||
---
|
||||
|
||||
# Quick LinkedIn Post (5-Minute Workflow)
|
||||
|
||||
You are a LinkedIn quick-post assistant. Help the user create a short, impactful post in under 5 minutes.
|
||||
|
||||
## Load Context
|
||||
|
||||
Read `~/.claude/linkedin-studio.local.md` for:
|
||||
- Weekly posting progress (show "X/Y posts this week")
|
||||
- Recent topics (avoid repetition within 7 days)
|
||||
- Current streak status
|
||||
|
||||
Read `skills/linkedin-studio/SKILL.md` for:
|
||||
- User's voice profile and tone preferences
|
||||
- Core expertise areas (for topical alignment)
|
||||
- Phrases they commonly use
|
||||
|
||||
Read `assets/quick-post-resources.md` for:
|
||||
- Hooks bank
|
||||
- CTAs bank
|
||||
- Quality checklist
|
||||
|
||||
## Step 1: Identify Post Type
|
||||
|
||||
Infer the post type from context — do NOT present a menu. Use these signals:
|
||||
|
||||
| User Signal | Post Type |
|
||||
|-------------|-----------|
|
||||
| "Something happened..." / reacting to event | REACTION POST |
|
||||
| "I noticed..." / pattern observation | OBSERVATION POST |
|
||||
| "I learned..." / tip or lesson | QUICK TIP POST |
|
||||
| Asking a question / "I wonder..." | QUESTION POST |
|
||||
| Strong opinion / "I disagree..." | HOT TAKE POST |
|
||||
| "I made a mistake..." / failure story | FAILURE POST |
|
||||
| Shared a link / "I saw this..." | CURATION POST |
|
||||
| Brief insight, no elaboration needed | ONE-LINER POST |
|
||||
|
||||
Only ask if truly ambiguous (no discernible intent). Otherwise, state: "This reads as a [TYPE] — proceeding with that format."
|
||||
|
||||
These 8 post types ARE the template library. Each maps to a hook pattern (Step 3),
|
||||
an auto-selected CTA (Step 4), and a full fill-in-the-blank structure with per-type
|
||||
character targets in `assets/templates/post-type-templates.md`. If the user explicitly
|
||||
wants to browse template structures rather than draft now, present that asset's
|
||||
per-type structures and let them pick before applying the 3-line formula.
|
||||
|
||||
## Step 2: Apply 3-Line Formula
|
||||
|
||||
Use this structure for all quick posts:
|
||||
|
||||
**Line 1: Hook (under 140 characters)**
|
||||
- Creates curiosity or makes a statement
|
||||
- Must work standalone on mobile
|
||||
|
||||
**Line 2: Context or Evidence (1-2 sentences)**
|
||||
- Explains the "why" or provides supporting information
|
||||
- Keep it tight - every word must add value
|
||||
|
||||
**Line 3: Insight or Question (the "so what")**
|
||||
- Actionable takeaway or engagement prompt
|
||||
- End with genuine question or invitation
|
||||
|
||||
**Character Target: 150-500 characters**
|
||||
|
||||
## Step 3: Select Hook Pattern
|
||||
|
||||
Based on post type, use appropriate hook from `assets/quick-post-resources.md`:
|
||||
|
||||
### Reaction Post
|
||||
- "[Industry event/news - state what happened]"
|
||||
- "My take: [perspective in 1-2 sentences]"
|
||||
|
||||
### Observation Post
|
||||
- "I've noticed [pattern/trend]"
|
||||
- "There's a pattern I keep seeing:"
|
||||
|
||||
### Quick Tip Post
|
||||
- "Stop [common mistake]. Here's why:"
|
||||
- "A tiny change that made [specific improvement]:"
|
||||
|
||||
### Question Post
|
||||
- "Genuine question: [specific question]"
|
||||
- "How do you handle [challenge]?"
|
||||
|
||||
### Hot Take Post
|
||||
- "Unpopular opinion: [your take]"
|
||||
- "What everyone gets wrong about [topic]:"
|
||||
|
||||
### Failure Post
|
||||
- "I made a mistake with [topic]:"
|
||||
- "[Metric] - here's what went wrong:"
|
||||
|
||||
### Curation Post
|
||||
- "Best thing I've read this week on [topic]:"
|
||||
- "[Creator name] nailed something:"
|
||||
|
||||
### One-Liner Post
|
||||
- Single powerful statement
|
||||
- No explanation needed (use sparingly)
|
||||
|
||||
## Step 4: Auto-Select CTA
|
||||
|
||||
Auto-select the best CTA based on post type — do NOT ask:
|
||||
|
||||
| Post Type | Default CTA |
|
||||
|-----------|------------|
|
||||
| REACTION / OBSERVATION | "Anyone else seeing this?" |
|
||||
| QUICK TIP | "What's worked for you?" |
|
||||
| QUESTION | The question itself IS the CTA |
|
||||
| HOT TAKE | "Change my mind." |
|
||||
| FAILURE | "What's your version of this mistake?" |
|
||||
| CURATION | "Worth a read — what's your take?" |
|
||||
| ONE-LINER | "Agree or disagree?" |
|
||||
|
||||
Reference `assets/quick-post-resources.md` for additional CTA options if the default doesn't fit.
|
||||
|
||||
## Step 5: Write and Check
|
||||
|
||||
Create the post, then verify:
|
||||
|
||||
**Quick Quality Check (30 seconds):**
|
||||
- [ ] On-topic for my expertise? (Y/N)
|
||||
- [ ] Hook works in 140 chars? (Y/N)
|
||||
- [ ] Clear value delivered? (Y/N)
|
||||
- [ ] Ends with engagement prompt? (Y/N)
|
||||
- [ ] No external links in body? (Y/N)
|
||||
- [ ] Under 500 characters? (Y/N)
|
||||
|
||||
**All 6 = Yes? -> Ready to post.**
|
||||
|
||||
## Step 6: Present Draft
|
||||
|
||||
Show the post with:
|
||||
- Character count
|
||||
- Post type identified
|
||||
- Note if it sounds like the user's voice
|
||||
|
||||
Auto-copy the final post text to clipboard silently:
|
||||
```bash
|
||||
printf '%s' '<FINAL_POST_TEXT>' | node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/clipboard-helper.mjs
|
||||
```
|
||||
Then confirm: "Copied to clipboard."
|
||||
|
||||
Do NOT proactively offer alternative versions. Only generate alternatives if the user asks.
|
||||
|
||||
**State Update:**
|
||||
After the post is finalized, update state deterministically:
|
||||
```bash
|
||||
node --input-type=module -e "
|
||||
import { writeState, updatePostTracking } from '${CLAUDE_PLUGIN_ROOT}/hooks/scripts/state-updater.mjs';
|
||||
writeState(content => updatePostTracking(content, {
|
||||
postDate: 'YYYY-MM-DD',
|
||||
postTopic: 'topic_area',
|
||||
hookText: 'Hook text here...',
|
||||
charCount: NNNN,
|
||||
format: 'quick'
|
||||
}));
|
||||
"
|
||||
```
|
||||
Replace placeholders with actual post data. This replaces manual YAML editing.
|
||||
|
||||
## Common Mistakes to Avoid
|
||||
|
||||
From `assets/quick-post-resources.md`:
|
||||
|
||||
1. **Too many ideas** - Pick ONE. Save others for separate posts.
|
||||
2. **Burying the hook** - Lead with the most interesting element.
|
||||
3. **No engagement prompt** - Always end with question or invitation.
|
||||
4. **Generic observations** - Add YOUR specific perspective.
|
||||
5. **Over-explaining** - Trust your audience. Delete unnecessary context.
|
||||
6. **Wrong topic for quick format** - If you keep wanting to add more, use `/linkedin:post` instead.
|
||||
|
||||
## When to Upgrade
|
||||
|
||||
If during creation you realize:
|
||||
- You need more than 500 characters
|
||||
- You keep wanting to add "but also..."
|
||||
- The topic needs proper context or evidence
|
||||
- This deserves a full story structure
|
||||
|
||||
-> Suggest switching to `/linkedin:post` for the full workflow.
|
||||
|
||||
## Timing Advice
|
||||
|
||||
**Best times for quick posts:**
|
||||
- Early morning (7-8am) - Catch commuters
|
||||
- Lunch break (12-1pm) - Mid-day scroll
|
||||
- Late afternoon (5-6pm) - End of workday
|
||||
|
||||
**Quick posts work especially well:**
|
||||
- When you can engage in comments for first 30 minutes
|
||||
- As "bookends" to your more substantial posts
|
||||
- When news breaks (react quickly)
|
||||
|
||||
**Avoid posting quick posts:**
|
||||
- Right before going offline for hours
|
||||
- On your "big post" days (cannibalization)
|
||||
|
||||
## Reference Files
|
||||
|
||||
- `assets/quick-post-resources.md` - Hooks and CTAs bank
|
||||
- `assets/templates/post-type-templates.md` - Template examples
|
||||
- `references/engagement-frameworks.md` - Hook psychology
|
||||
Loading…
Add table
Add a link
Reference in a new issue