ktg-plugin-marketplace/plugins/linkedin-studio/config/state-file.template.md
Kjell Tore Guttormsen 3ae8adb6ff feat(linkedin-studio): first-hour/reply-loop command with tracked state
Wire orphan agent #11 (engagement-coach) by giving it a command surface, and
add the tracked first-hour state the plan calls for (remediation Step 16).

- commands/firsthour.md (new, 27th command): post-publish first-hour /
  reply-loop sprint. Delegates plan construction to engagement-coach via
  Task (subagent_type: linkedin-studio:engagement-coach) — returns a grouped
  target list (whales/inner-circle/ICPs/new connections), 2-3 seed
  self-comments + 3-5 CEA replies in the user's voice, and a minute-by-minute
  timeline anchored to publish time. Presents timeline/targets/drafts +
  velocity checkpoints, auto-copies the drafts to clipboard, persists the
  plan, then hands off to post-feedback-monitor for the 48h window.
- hooks/scripts/state-updater.mjs: new pure mutation recordFirstHourPlan()
  mirroring updatePostTracking — additive by contract (inserts
  last_firsthour_date after last_post_date when absent, creates the
  ## First-Hour Plans section when absent, never touches existing fields).
  Section name is deliberately non-R-initial so it stays outside
  pruneContentHistory's "## Recent Posts ... (?=\n## [^R])" capture window.
  + a --record-firsthour CLI branch for parity with the other mutations.
- config/state-file.template.md: additive scalars (last_firsthour_date,
  firsthour_active) + the ## First-Hour Plans section.
- hooks/scripts/__tests__/state-updater.test.mjs: extend (existing file) with
  7 recordFirstHourPlan tests — section creation, field insertion vs in-place
  update (no duplication), round-trip non-interference, graceful empty
  defaults, changes array.
- CLAUDE.md: register the command (## Commands 26 -> 27, table row).
- scripts/test-runner.sh: EXPECT_COMMANDS 26 -> 27 (registration guard).

Verify: grep 'subagent_type: linkedin-studio:engagement-coach' commands/ ->
firsthour.md; node --test state-updater -> 26/26; full hook suite -> 83/83;
bash scripts/test-runner.sh -> exit 0 (62 passed, commands 27/27).

Plan Step 16 (Wave 4 S3).
[skip-docs]: tre-doc + version bump deferred to Step 21 per remediation plan.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 05:35:44 +02:00

70 lines
1.5 KiB
Markdown

---
# LinkedIn Studio State
# Auto-managed by the linkedin-studio plugin
# Copy to ~/.claude/linkedin-studio.local.md
# Posting metrics
last_post_date: null
first_post_date: null # YYYY-MM-DD, set once on first post, never changed
last_post_topic: "" # Should match an expertise_areas value for pillar tracking
posts_this_week: 0
weekly_goal: 3
current_streak: 0
longest_streak: 0
# Week tracking (ISO week)
current_week: ""
# Analytics tracking
last_import_date: null
last_import_week: ""
# Milestone tracking
follower_count: 0
follower_target: 10000
target_date: "2026-12-31"
monthly_growth: []
projected_10k_date: ""
growth_rate_needed: 0
# Planning
next_planned_topic: ""
pending_5x5x5: false
content_series_active: ""
# First-hour / reply-loop engagement
last_firsthour_date: null # "YYYY-MM-DD HH:MM" of the most recent first-hour plan
firsthour_active: false # true while a first-hour loop is in progress
# Profile
expertise_areas:
- "general"
- ""
- ""
- ""
- ""
---
# LinkedIn Session State
## Recent Posts
<!-- Updated automatically by Stop hook -->
<!-- Format: [YYYY-MM-DD] "Hook text..." (chars) - topic_area -->
## Session Notes
<!-- Free-form notes from sessions -->
## Planned Content
<!-- Upcoming posts and topics -->
## Milestone Log
<!-- Updated when follower_count changes. Format: [YYYY-MM] count (+delta) -->
## First-Hour Plans
<!-- First-hour / reply-loop plans, newest first. Written by /linkedin:firsthour. -->
<!-- Format: ### [YYYY-MM-DD HH:MM] topic -->