81 load-bearing stier i 16 kommandofiler pinnet til ${CLAUDE_PLUGIN_ROOT}/.
Rene prefikser: 81 inn / 81 ut, ingen linje lagt til eller fjernet.
FASIT-VERIFISERING (premiss-sjekk mot BASELINE, ikke bare HEAD): planens
68 linjer / 17 filer er RIKTIG mot sin egen baseline 882f6ee. HEAD ga 73/18 —
altså ekte kode-drift siden baseline (newsletter.md 11→15, calendar.md 0→1),
ikke en telle-feil som i N19.
SCOPE UTVIDET ETTER GO: planens grep (references|hooks/scripts|scripts) har en
blindsone — skills/ assets/ config/ render/ agents/ commands/ er samme defekt-
klasse og allerede anerkjent som pin-verdig av mønsteret (audit.md:24 og
competitive.md:22 pinner skills/, batch.md:214 og pipeline.md:211 pinner
assets/). Under planens scope kunne dens EGEN verifisering ikke passere:
quick.md:229-230 ville stått upinnet rett over en pinnet linje, og setup.md
(3 load-bearing Read, 0 pins) var ikke i settet i det hele tatt.
Full defektklasse: 117 linjer / 19 filer → 81 pinnet, 36 bevisst urørt.
KLASSIFISERINGSREGEL (utledet av mønsteret, ikke oppfunnet):
- PIN = stien skal åpnes/kjøres/skrives — Read/Reference/See-pekere,
ref-fil-lister, Bash/node/npm, edit-mål.
- PROSA = stien står som sitat bak en påstand, eller som beskrivelse av
oppførsel/plassering. Ingen inline «(see …)» er pinnet noe sted i repoet
(0 av 25 filer) — den grensen er arvet, ikke satt her.
36 BEVISST URØRTE, tre klasser:
1. Inline sitat/attribusjon (17): carousel.md:37 · pipeline.md:70,75 ·
newsletter.md:999,1082,1211,1433 · report.md:273 · video.md:69 ·
react.md:115 · calendar.md:87 · profile.md:28,34 · firsthour.md:112 ·
monetize.md:343,492 · outreach.md:922
2. Beskrivelse av oppførsel/plassering (10): newsletter.md:50,1097,1205,1694,
1744,1944 · report.md:45 · linkedin.md:218 · import.md:121,200
3. newsletter.md fase-tabellens Tooling-kolonne (9): :100,102,105,106,111,112,
113,115,116 — tabellen er et register, og hvert steg pinner sitt eget
faktiske kall i brødteksten.
S13-LINTEN (M0 data-dir): alle assets/-stiene som ble pinnet står eksplisitt i
lintens NEGATIVE13-unntaksliste, og lintens egen kommentar (test-runner.sh:552)
sier at shipped read-only assets SKAL bære ${CLAUDE_PLUGIN_ROOT}.
VERIFISERING: 76 unike pinnede stier hentet ut og resolvet med cwd=/tmp —
75 finnes. Den ene som ikke gjør det, config/personas.local.md, er en
gitignored valgfri fallback («else personas.template.md») som var pinnet på
newsletter.md:205 før denne endringen. Re-grep: gjenstående 36 er utelukkende
prosa, listet over.
Alle ti suiter grønne, alle floors uendret: test-runner 270/0 (269 assertions
>= floor 251) · trends 300/0 · analytics 202/0 · hooks 191/0 · brain 134/0 ·
editions 72/0 · render 63/0 · specifics-bank 45/0 · tests 35/0 ·
contract-gate 33/0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M31cw43gqiSSDrKzcwUi7L
231 lines
8.6 KiB
Markdown
231 lines
8.6 KiB
Markdown
---
|
|
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
|
|
- Task
|
|
---
|
|
|
|
# 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
|
|
- **`## Do-Next Directives`** — what the last measurement pass (report / analyze / A/B Adopt /
|
|
48h monitor) decided the next post should do differently, each with its evidence pointer.
|
|
Apply the ones that fit and name the applied directive in one line with the draft. Never edit
|
|
or clear the section (each source manages its own rows; rows older than 60 days expire).
|
|
|
|
Read `${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md` for:
|
|
- User's voice profile and tone preferences
|
|
- Core expertise areas (for topical alignment)
|
|
- Phrases they commonly use
|
|
|
|
Read `${CLAUDE_PLUGIN_ROOT}/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 `${CLAUDE_PLUGIN_ROOT}/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 (110-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 `${CLAUDE_PLUGIN_ROOT}/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 `${CLAUDE_PLUGIN_ROOT}/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 in the 110-140 band (not just under 140)? (Y/N)
|
|
- [ ] Clear value delivered? (Y/N)
|
|
- [ ] Ends with engagement prompt? (Y/N)
|
|
- [ ] No external links in body? (Y/N)
|
|
- [ ] No corporate buzzwords? (Y/N)
|
|
- [ ] In the 150-500 band (not just under 500)? (Y/N)
|
|
|
|
**All 7 = Yes? -> Ready to post.**
|
|
|
|
### De-AI / Differentiation Gate (fast)
|
|
|
|
Even quick posts ride the low-substance down-rank LinkedIn confirmed. Confirm one concrete specific plus a genuine point of view (not generic advice), and no mechanical-response bait ("Comment YES", "Like for Part 2") — a real question is fine. (The voice-guardian hook scores this on save.) Only when the take feels like commodity content does an originality pass earn its time: delegate to the `differentiation-checker` agent via `Task` with `subagent_type: linkedin-studio:differentiation-checker` — otherwise keep the 5-minute promise and skip it.
|
|
|
|
## 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
|
|
node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/clipboard-helper.mjs <<'__LINKEDIN_CLIP_EOF__'
|
|
<FINAL_POST_TEXT>
|
|
__LINKEDIN_CLIP_EOF__
|
|
```
|
|
Substitute `<FINAL_POST_TEXT>` with the exact post text between the heredoc markers (a quoted heredoc keeps apostrophes, `%`, `$`, and backticks literal). Only if the helper prints `COPIED`, confirm: "Copied to clipboard." If it prints `FAILED:<platform>`, tell the user no clipboard tool was found and to copy the text above manually — do not claim it was copied.
|
|
|
|
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 `${CLAUDE_PLUGIN_ROOT}/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
|
|
|
|
- `${CLAUDE_PLUGIN_ROOT}/assets/quick-post-resources.md` - Hooks and CTAs bank
|
|
- `${CLAUDE_PLUGIN_ROOT}/assets/templates/post-type-templates.md` - Template examples
|
|
- `${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md` - Hook psychology
|