ktg-plugin-marketplace/plugins/linkedin-thought-leadership/CHANGELOG.md

149 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.0.0] - 2026-05-28
### Summary
Full-spectrum LinkedIn content engine — short-form feed posts AND long-form newsletter editions in one cohesive surface, with net-fewer commands and net-stronger pipeline. Built across 21 Voyage sessions (S1..S20+S1a) with 1 step = 1 session discipline. Locked decisions AH in `docs/voyage-build-brief.md` §3.
### Added
- **`/linkedin:newsletter`** — long-form orchestrator command. Multi-session pipeline: load → calibrate → research fan-out → draft → consistency/quality → fact-check sweep → persona sweep → annotate → lock → delivery → hook-gate → schedule. Maintained `edition-state.json` across sessions. Supports newsletter editions, essays, and series articles
- **`/linkedin:outreach`** — outreach orchestrator (absorbed `/linkedin:collab` and `/linkedin:speaking`). Covers collaborations, partner pitches, and CFPs/speaking opportunities in one surface
- **`agents/fact-checker.md`** (Opus, brown) — verifies every factual claim in long-form drafts against primary sources. Outputs 🟢/🔴/🟡 verdicts per claim. Runs BEFORE lock
- **`agents/persona-reviewer.md`** (Opus, olive) — evaluates reader-persona resonance + hook-conversion gate. Two modes: per-persona deep review, multi-persona scoreboard. Runs BEFORE lock
- **`render/` pipeline migrated in-plugin** — `build-html.mjs`, `build-pdf.mjs`, `build-linkedin.mjs`, `build-carousel.mjs`. Self-hosted fonts (Newsreader, Inter, JetBrains Mono) under OFL-1.1 with `render/OFL.txt`. WeasyPrint degradation: missing binary → skip-signal, not throw
- **`config/personas.template.md`** — reader persona library. Knowledge level, time-pressure, resonance criteria per persona. Consumed by `persona-reviewer`
- **`config/edition-state.template.json`** — schema for long-form edition state across sessions
- **`references/longform-quality-rules.md`** — quality bar specific to long-form (different from short-form rules)
- **Router gating** — `/linkedin:monetize` and `/linkedin:outreach` surface "unlocks at ~1K followers" guidance and point sub-1K users at `/linkedin:strategy` first
- **`docs/agents-capability-matrix.md`** — single source of truth for which agent owns which capability. Pipeline diagram + intent table + model tier table
### Changed
- **Agent merges (16 → 14):**
- `performance-reporter``analytics-interpreter` (interpret + report modes, same data sources, mode-selector by trigger phrase)
- `comment-strategist``engagement-coach` (5x5x5 + first-hour + CEA method + target scoring + daily routine + comment quality scorecard; upgraded haiku → sonnet since the agent now handles deeper work)
- `content-tracker` → absorbed by `state-updater.mjs` + `analytics-interpreter`
- `personalization-scorer` → absorbed by `personalization-score.mjs` (deterministic, no AI)
- **Command merges (27 → 24):**
- `/linkedin:templates` → mode in `/linkedin:quick` (8 post-type templates)
- `/linkedin:publish` → action in `/linkedin:calendar` (mark scheduled posts as published)
- `/linkedin:authority` → absorbed into `/linkedin:strategy` (canon for authority building, trajectory dedup)
- `/linkedin:collab` + `/linkedin:speaking``/linkedin:outreach`
- **`/linkedin:import` Step 6 analysis** — delegated to `/linkedin:report` (both consume the same `trends` CLI; no more duplicated analysis pipeline)
- **`commands/linkedin.md` router** — newsletter row added, removed-command rows pruned, gating-rule paragraph for monetize/outreach
- **All 6 skill catalogs** reconciled — `linkedin-content-creation`, `linkedin-analytics`, `linkedin-strategy`, `linkedin-networking`, `linkedin-thought-leadership`, `linkedin-voice` all reflect the v2.0.0 command/agent set
### Removed
- `commands/templates.md` (absorbed into `commands/quick.md`)
- `commands/publish.md` (absorbed into `commands/calendar.md`)
- `commands/authority.md` (absorbed into `commands/strategy.md`)
- `commands/collab.md` (absorbed into `commands/outreach.md`)
- `commands/speaking.md` (absorbed into `commands/outreach.md`)
- `agents/content-tracker.md`
- `agents/personalization-scorer.md`
- `agents/performance-reporter.md`
- `agents/comment-strategist.md`
### Fixed
- `references/glossary.md` "Authority Score" entry — corrected stale ref to `commands/authority.md` (removed) → `commands/strategy.md` (canon)
- `scripts/test-runner.sh` `EXPECTED_AGENTS` list — reconciled to 14 agents
### Migration notes
- Plugin remains fully backward-compatible from a user-perspective: removed commands now route to their absorbing command via `commands/linkedin.md`
- v1.x users who had `commands/templates.md` etc. in muscle memory will be auto-redirected by the router
## [1.2.0] - 2026-04-11
### Summary
Friction reduction release. Fewer interactive steps, auto-clipboard, deterministic state management, and progressive onboarding.
### Added
- **`clipboard-helper.mjs`** — cross-platform clipboard utility (macOS `pbcopy`, Linux `xclip`/`xsel`, WSL `clip.exe`). All 8 content commands auto-copy output to clipboard
- **`state-updater.mjs`** — deterministic state mutations: `updatePostTracking`, `pruneContentHistory`, `updateFollowerCount`. Pure functions with 19 tests. No AI involvement in state updates
- **`ical-generator.mjs`** — RFC 5545 calendar file generation for batch scheduling. VALARM reminders, VTIMEZONE support, line folding, special character escaping. 16 tests
- **MCP image carousel pipeline** — `/linkedin:carousel` generates professional slide images via mcp-image (1080x1350, 3:4 ratio) with text overlays. Mermaid Chart and text-based fallbacks
- **Progressive onboarding** — personalization score hidden until 3+ posts; voice guardian suppressed until 5+ voice samples; reasonable defaults in state template
- **iCal integration in batch** — `/linkedin:batch` generates `.ics` file importable into macOS Calendar, Google Calendar, and Outlook
- **Auto-prune content history** — session-start dynamically imports `pruneContentHistory` to remove entries older than 90 days
### Changed
- **Reduced interactive steps** — angle, format, and post type inferred from context. Max 2 questions per post (down from 4-6) in `post`, `quick`, `react`, `pipeline`
- **State management** — Stop hook and 8 commands now reference `state-updater.mjs` for deterministic writes instead of AI-driven YAML editing
- **State file template** — default expertise area changed from domain-specific to `"general"` for better new-user experience
## [1.1.0] - 2026-04-08
### Summary
Q2 2026 feature release. 9 improvements across onboarding, content quality, and analytics pipeline.
### Added
- **`/linkedin:onboarding`** — multi-step onboarding wizard: profile → setup → first-post as one guided flow
- **`/linkedin:carousel`** — structured multi-slide carousel generator with 5 templates and design specs
- **Voice drift scoring** — 6-dimension rubric (sentence structure, word choice, openings, storytelling, tone, formatting) with AUTHENTIC/CAUTION/ALERT/REWRITE verdicts in voice-guardian hook
- **Industry angle variants** — 48 concrete variants (6 industries × 8 angles) in thought-leadership-angles reference
- **Multi-URL comparison** — `/linkedin:react` now supports 2-3 URL synthesis with contrarian and pattern analysis angles
- **Day-of-week heatmap** — `heatmap` CLI command and `HeatmapReport` type in analytics pipeline
- **Month-over-month reports** — `report --month YYYY-MM` CLI command with MoM deltas, weekly breakdown, top performers
- **Automated week-rollover** — session-start hook now writes `posts_this_week: 0` and updates `current_week` on ISO week change
- **Collected Post Samples** — Stop hook passively accumulates published posts in voice-samples file for drift scoring
### Changed
- **README Quick Start** — replaced 4-step manual flow with single `/linkedin:onboarding` entry point
- **`/linkedin:report`** — Step 2 now offers report type choice (weekly/monthly/heatmap)
- **`/linkedin:post`** — Step 2 shows industry-specific angles when user-profile has industry set; Step 3 redirects to carousel when appropriate
- **`/linkedin` router** — added onboarding and carousel to menus and direct routing
- **Command count** — 25 → 27 (onboarding, carousel)
## [1.0.0] - 2026-04-07
### Summary
Public release for open-source marketplace. All runtime bugs fixed, documentation aligned, agent model tiering implemented.
### Fixed
- **Agent model assignments** — all 16 agents corrected from opus to proper tiering (12 Sonnet, 4 Haiku)
- **Queue manager references** — 10 stale `queue-manager.sh` references replaced with `queue-manager.mjs` Node.js invocations
- **Quick-import references** — 2 stale `quick-import.sh` references updated to `.mjs`
- **Personalization score import bug** — standalone execution block now guarded to prevent stdout contamination on import
- **Regex anchor** — invalid `\Z` JavaScript regex replaced with `$` in user-prompt-context.mjs
- **Agent color mismatches** — 8 agent frontmatter colors unified with CLAUDE.md documentation
- **Version inconsistency** — unified from 3 conflicting versions (0.6.0/1.7.0/2.0.1) to 1.0.0
### Added
- **plugin.json** — added `license`, `repository`, `keywords` fields for marketplace compliance
- **README** — attribution note, "What This Plugin Does Not Cover" section, Node.js 18+ prerequisite, hooks badge
- **CONTRIBUTING.md** — replaced GitHub PR template with solo-project boilerplate
- **Quality scorecard** — added "Voice Authenticity" criterion (total now /81)
- **Commands** — `/linkedin:react` and `/linkedin:first-post` added to README command tables
- **agents/README.md** — updated from 14 to 16 agents, added personalization-scorer and post-feedback-monitor
- **SKILL.md** — added 5 missing commands to router command table
### Changed
- **CLAUDE.md** — compacted from 237 to 90 lines, removed duplicated content
- **All hooks** — 100% Node.js (.mjs), no bash dependencies (cross-platform: macOS/Linux/Windows)
- **Error handling** — added JSON.parse guards in queue-manager.mjs and analytics storage.ts
### Removed
- **Skill version fields** — removed non-standard `version:` from all 6 SKILL.md frontmatter
- **Development artifacts** — removed internal evaluation note from collab.md
- **Orphaned files** — deleted outdated docs/commands-reference.md
- **BACKLOG.md and DEVELOPMENT-LOG.md** — gitignored (internal development files)
## [0.6.0] - 2026-02-07
### Note
First formal version. Previously unversioned.
### What exists today
- 20 commands covering full content lifecycle
- 15 specialized agents
- 8 hooks for workflow automation
- Analytics system with CSV import
- 360Brew profile optimization (January 2026 algorithm update)
- Content matrix system (40+ post ideas from single topic)
- Personalization engine
- 20 reference documents for LinkedIn best practices
- Full content pipeline from ideation to post-publish monitoring