refactor(linkedin): merge publish into calendar — reconcile hook refs (S16)

Step 17 of voyage-build (S16 in plan). publish.md absorbed into calendar.md
as an inline action (Mark as Published flow: queue update, state update,
first-hour battle plan) reusing the same queue-manager.mjs + state-updater.mjs
primitives that publish.md called. calendar.md frontmatter triggers extended
with the publish trigger words; quick-routing block jumps straight to the
publish action when the user prompt names it.

All 21 route-refs reconciled across the 9 expected files, with the 9
hook-script refs (5 in session-start.mjs, 2 in posting-reminder.mjs, 1 in
user-prompt-context.mjs, 1 in hooks/prompts/state-update-reminder.md)
rewritten to call /linkedin:calendar so the runtime guidance no longer
points at a dead command. compile-hooks.py --check reports clean (no
type: prompt hook changes touched hooks.json).

Verify (intent: zero stray refs, file gone): exit 0. Literal Verify in
plan.md:727 logged exit 1 (same exit-inverted && pattern as S15 plan.md:635
— logged for plan-pass at Step 21).

Manifest audit: PASS (expected_paths=calendar.md present; must_contain
[Pp]ublish: 17 matches in calendar.md).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-05-28 05:27:36 +02:00
commit e4aa5a61c2
12 changed files with 117 additions and 156 deletions

View file

@ -51,7 +51,7 @@ Upcoming Posts (next 7 days):
If there are overdue posts, display with warning:
```
OVERDUE (should have been posted):
[date]: "[hook preview]" — Run /linkedin:publish to update or /linkedin:calendar to reschedule
[date]: "[hook preview]" — Run /linkedin:calendar to mark as published or reschedule
```
If queue is empty: "No posts scheduled. Run /linkedin:batch to plan your week."
@ -80,8 +80,7 @@ Present these options to the user:
| `/linkedin:video` | Create video scripts with hook, body, CTA, captions, and thumbnail suggestions |
| `/linkedin:newsletter` | Long-form orchestrator — newsletter editions, essays, series articles (research → draft → fact-check → persona-review → lock → delivery). The single long-form entry point |
| `/linkedin:batch` | Create a full week of content in one session |
| `/linkedin:calendar` | View and manage your post scheduling queue |
| `/linkedin:publish` | Mark scheduled posts as published |
| `/linkedin:calendar` | View and manage your post scheduling queue + run the publish action (mark a scheduled post as published) |
### Strategy & Optimization
@ -164,7 +163,7 @@ If the user's intent is clear from context:
- Mentions "pipeline" or "end to end" → Route to `/linkedin:pipeline`
- Mentions "batch" or "week of content" → Route to `/linkedin:batch`
- Mentions "calendar" or "schedule" or "queue" or "upcoming posts" or "what's scheduled" → Route to `/linkedin:calendar`
- Mentions "publish" or "mark as published" or "posted today" or "just published" or "post is live" → Route to `/linkedin:publish`
- Mentions "publish" or "mark as published" or "posted today" or "just published" or "post is live" → Route to `/linkedin:calendar` (publish action)
- Mentions "plan" → Suggest `content-planner` agent
- Mentions "profile" or "360Brew" → Route to `/linkedin:profile`
- Mentions "not working" or "low reach" → Route to `/linkedin:analyze`