docs(linkedin-studio): M0-15 — repoint remaining prose families + route ab-tests/plans

This commit is contained in:
Kjell Tore Guttormsen 2026-06-18 13:04:18 +02:00
commit 6bd263144f
35 changed files with 167 additions and 130 deletions

View file

@ -45,10 +45,10 @@ The two modes share the same data sources and analysis framework; they differ in
The plugin has a built-in analytics pipeline. Always check for imported data first — structured data is more reliable than user-reported numbers.
1. **Check for imported data:** Read files in `${CLAUDE_PLUGIN_ROOT}/assets/analytics/posts/` — these contain structured JSON with per-post metrics (impressions, reactions, comments, shares, clicks, engagement rate).
2. **Weekly reports (report mode):** Read `${CLAUDE_PLUGIN_ROOT}/assets/analytics/weekly-reports/*.json` for pre-generated summaries.
3. **Load pattern baselines:** Read `${CLAUDE_PLUGIN_ROOT}/assets/audience-insights/engagement-patterns.md` for the user's tracked engagement patterns (best times, top topics, format performance, hook types that work). Use this as baseline context.
4. **Load audience context:** Read `${CLAUDE_PLUGIN_ROOT}/assets/audience-insights/demographics.md` for audience composition.
1. **Check for imported data:** Read files in `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/analytics/posts/` — these contain structured JSON with per-post metrics (impressions, reactions, comments, shares, clicks, engagement rate).
2. **Weekly reports (report mode):** Read `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/analytics/weekly-reports/*.json` for pre-generated summaries.
3. **Load pattern baselines:** Read `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/audience-insights/engagement-patterns.md` for the user's tracked engagement patterns (best times, top topics, format performance, hook types that work). Use this as baseline context.
4. **Load audience context:** Read `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/audience-insights/demographics.md` for audience composition.
5. **Run trend analysis:**
```bash
ANALYTICS_ROOT="${CLAUDE_PLUGIN_ROOT}/assets/analytics" node --import tsx "${CLAUDE_PLUGIN_ROOT}/scripts/analytics/src/cli.ts" trends --period month --metric impressions
@ -64,15 +64,15 @@ When structured data is available, use it as the primary source. This gives you
## Reference Data (both modes)
Always load these for pattern comparison:
- `${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md` — Proven high-engagement patterns and replicable elements. Compare top posts against these.
- `${CLAUDE_PLUGIN_ROOT}/assets/audience-insights/engagement-patterns.md` — Historical engagement patterns (benchmark for current period).
- `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/examples/high-engagement-posts.md` — Proven high-engagement patterns and replicable elements. Compare top posts against these.
- `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/audience-insights/engagement-patterns.md` — Historical engagement patterns (benchmark for current period).
## Manual Data Sources (fallback)
When structured analytics aren't available:
- `~/.claude/linkedin-studio.local.md` — Posting history, streaks, weekly stats
- `${CLAUDE_PLUGIN_ROOT}/assets/plans/` — Planned vs. actual content
- `${CLAUDE_PLUGIN_ROOT}/assets/drafts/` — Draft history
- `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/plans/` — Planned vs. actual content
- `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/drafts/` — Draft history
- See `${CLAUDE_PLUGIN_ROOT}/assets/analytics/README.md` for data format and directory structure.
## Mission

View file

@ -31,7 +31,7 @@ When you receive content to optimize, analyze it through these lenses:
### 1. Hook Analysis (First 110-140 Characters)
**First, load the user's proven patterns:** Read `${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md` to identify which hook types and content patterns specifically work for THIS user's audience. Prioritize their proven patterns over generic advice.
**First, load the user's proven patterns:** Read `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/examples/high-engagement-posts.md` to identify which hook types and content patterns specifically work for THIS user's audience. Prioritize their proven patterns over generic advice.
**Check against high-performing hook types:**
- Surprising stat

View file

@ -4,7 +4,7 @@ description: |
Systematic content planning agent that creates weekly and monthly content plans based on
content pillars, 70/20/10 mix, seasonal themes, and publishing gaps. Analyzes previous
plans to avoid repetition, enforces content mix balance, and stores plans in
assets/plans/ for tracking. Can create Linear issues for each planned post.
${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/plans/ for tracking. Can create Linear issues for each planned post.
Use when the user says:
- "plan my content", "what should I post this week", "content calendar"
@ -37,7 +37,7 @@ ${CLAUDE_PLUGIN_ROOT}/assets/templates/weekly-content-calendar-2-3x.md → calen
~/.claude/linkedin-studio.local.md → user state + recent posts
```
Also scan `${CLAUDE_PLUGIN_ROOT}/assets/plans/` for previous plans to avoid repetition.
Also scan `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/plans/` for previous plans to avoid repetition.
## Step 1: Content Audit
@ -461,7 +461,7 @@ After any adjustment, re-run the quality check before saving.
### Save the Plan
Save approved plans to `${CLAUDE_PLUGIN_ROOT}/assets/plans/`:
Save approved plans to `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/plans/`:
- Weekly: `2026-W05.md`
- Monthly: `2026-02.md`

View file

@ -36,7 +36,7 @@ ${CLAUDE_PLUGIN_ROOT}/references/articles-strategy-guide.md → article w
${CLAUDE_PLUGIN_ROOT}/references/newsletter-strategy-guide.md → newsletter integration
${CLAUDE_PLUGIN_ROOT}/references/thought-leadership-angles.md → 8 universal angles
${CLAUDE_PLUGIN_ROOT}/assets/case-studies/case-study-template.md → case study structure + 4 LinkedIn post angles
${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md → proven patterns to replicate
${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/examples/high-engagement-posts.md → proven patterns to replicate
~/.claude/linkedin-studio.local.md → user state + performance data
```
@ -556,7 +556,7 @@ CONTENT LIFECYCLE TRACKER
| "[Hook]" | [date] | [1-7] | [specific action] | [date] |
```
Save tracker to `${CLAUDE_PLUGIN_ROOT}/assets/repurposing-tracker.md`
Save tracker to `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/repurposing-tracker.md`
## Step 7: Batch Repurposing
@ -594,7 +594,7 @@ Expected reach multiplier: [2-5x original]
## Output & Storage
Save repurposed content to `${CLAUDE_PLUGIN_ROOT}/assets/drafts/repurposed/`:
Save repurposed content to `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/drafts/repurposed/`:
```
Naming convention:

View file

@ -38,7 +38,7 @@ ${CLAUDE_PLUGIN_ROOT}/skills/linkedin-studio/SKILL.md → user exper
~/.claude/linkedin-studio.local.md → user state + network data
```
Also check `${CLAUDE_PLUGIN_ROOT}/assets/network/` for existing tracker files.
Also check `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/network/` for existing tracker files.
## Step 1: Network Audit
@ -610,7 +610,7 @@ VERDICT: Don't join formal pods. Build genuine Tier 1 instead.
### Tracker Setup
Save and maintain a tracker in `${CLAUDE_PLUGIN_ROOT}/assets/network/`:
Save and maintain a tracker in `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/network/`:
```markdown
# Network Tracker

View file

@ -37,7 +37,7 @@ Before analyzing anything, load these files:
1. **Algorithm knowledge:** Read `${CLAUDE_PLUGIN_ROOT}/references/algorithm-signals-reference.md`
2. **Engagement frameworks:** Read `${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md`
3. **State file:** Read `~/.claude/linkedin-studio.local.md` (if exists)
4. **Latest analytics:** Use Glob to find the most recent file in `${CLAUDE_PLUGIN_ROOT}/assets/analytics/posts/` and read it
4. **Latest analytics:** Use Glob to find the most recent file in `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/analytics/posts/` and read it
This gives you the user's baseline performance and algorithm context for accurate benchmarking.

View file

@ -39,9 +39,9 @@ Provide personalized, actionable strategic guidance that accounts for the user's
Read these files for strategic intelligence:
```
${CLAUDE_PLUGIN_ROOT}/assets/audience-insights/demographics.md → audience composition + intended vs actual gaps
${CLAUDE_PLUGIN_ROOT}/assets/audience-insights/engagement-patterns.md → timing, topic, and format patterns
${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md → proven patterns from top posts
${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/audience-insights/demographics.md → audience composition + intended vs actual gaps
${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/audience-insights/engagement-patterns.md → timing, topic, and format patterns
${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/examples/high-engagement-posts.md → proven patterns from top posts
${CLAUDE_PLUGIN_ROOT}/references/trajectory-strategy-adjustments.md → trajectory-to-action mappings
~/.claude/linkedin-studio.local.md → user state + posting history
```

View file

@ -37,14 +37,14 @@ Find the right trends at the right time with the right angle. Specifically:
Before scanning, load the user's content pillars and expertise areas:
1. **Read user profile:** `${CLAUDE_PLUGIN_ROOT}/config/user-profile.local.md`
1. **Read user profile:** `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/profile/user-profile.md`
- Extract: 5 core expertise areas, target audience, voice preferences
- If file does not exist, ask the user for their 5 content pillars before proceeding
2. **Read voice samples:** `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/voice-samples/` (glob for .md files)
- Understand their typical angle and tone
3. **Check recent posts:** `${CLAUDE_PLUGIN_ROOT}/assets/analytics/posts/` (if available)
3. **Check recent posts:** `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/analytics/posts/` (if available)
- Avoid recommending topics they already covered recently
## Source Scanning Framework

View file

@ -35,7 +35,7 @@ ${CLAUDE_PLUGIN_ROOT}/references/linkedin-formats.md → Video
${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md → Hook types, CTAs, story structures
${CLAUDE_PLUGIN_ROOT}/references/thought-leadership-angles.md → 8 universal angles
${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/voice-samples/ → User's authentic voice (ALWAYS read before scripting)
${CLAUDE_PLUGIN_ROOT}/assets/examples/high-engagement-posts.md → Successful content patterns
${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/examples/high-engagement-posts.md → Successful content patterns
~/.claude/linkedin-studio.local.md → User state, recent topics, streak
```
@ -207,7 +207,7 @@ Iterate until satisfied.
## Step 8: Save and Update State
Save the final script to `${CLAUDE_PLUGIN_ROOT}/assets/drafts/`:
Save the final script to `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/drafts/`:
```
Naming convention:

View file

@ -114,7 +114,7 @@ each edition:
- Write to `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/voice-samples/chronicle-voice-drift-log.md`
(create if absent). One dated entry per run: which tells recurred, which voice
traits the draft drifted on, and any newly-confirmed gold-standard pattern.
- Do **not** rewrite the general voice profile (`config/user-profile.local.md`) —
- Do **not** rewrite the general voice profile (`${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/profile/user-profile.md`) —
that is `voice-trainer`'s job. This log is the chronicle-specific memory; over
editions it becomes the calibration record for this agent.
- Never auto-update identity-level traits (register, em-dash policy, banned

View file

@ -133,11 +133,11 @@ Architecture: [prose/sectioned/framework]
### Analysis Process
1. **Gather** — Read all files in `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/voice-samples/`, existing profile from `config/user-profile.local.md`, and template from `config/user-profile.template.md`
1. **Gather** — Read all files in `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/voice-samples/`, existing profile from `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/profile/user-profile.md`, and template from `config/user-profile.template.md`
2. **Analyze** — Apply all six dimensions to each sample. Note dates for temporal analysis. Flag inconsistent samples as outliers or evolution.
3. **Synthesize** — Patterns in 70%+ of samples = core traits. 40-70% = situational traits (note context). <40% = experimental traits. Track temporal trends.
4. **Build** — Compile into Voice Profile Document format. Include confidence levels (high/medium/low) and concrete examples for every trait.
5. **Update** — Write voice profile section to `config/user-profile.local.md`. Create from template if needed. Preserve non-voice sections.
5. **Update** — Write voice profile section to `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/profile/user-profile.md`. Create from template if needed. Preserve non-voice sections.
### Sample Quality Priorities
@ -325,6 +325,6 @@ Fixes: [specific corrections with baseline examples]
Read these files for context and methodology:
- `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/voice-samples/` — Source samples for analysis
- `${CLAUDE_PLUGIN_ROOT}/config/user-profile.template.md` — Profile structure template
- `${CLAUDE_PLUGIN_ROOT}/config/user-profile.local.md` — Current voice profile (if exists)
- `${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/profile/user-profile.md` — Current voice profile (if exists)
- `${CLAUDE_PLUGIN_ROOT}/references/ai-content-framework.md` — AI content anti-patterns and quality checklist
- `${CLAUDE_PLUGIN_ROOT}/references/engagement-frameworks.md` — Hook psychology and tone guidelines