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:
parent
ddd84e4501
commit
e4aa5a61c2
12 changed files with 117 additions and 156 deletions
|
|
@ -45,7 +45,7 @@ If posts were added to the queue during this session (`assets/drafts/queue.json`
|
|||
|
||||
If a scheduled post was published during this session:
|
||||
- Verify it was marked as published in queue.json (status = "published")
|
||||
- If not, remind: "Run /linkedin:publish to update the queue status"
|
||||
- If not, remind: "Run /linkedin:calendar to mark the post as published and update queue status"
|
||||
|
||||
Provide reminders naturally based on what was done in the session. If no LinkedIn content was created, skip the reminders and just ensure state is consistent.
|
||||
|
||||
|
|
|
|||
|
|
@ -91,8 +91,8 @@ if (followerCount > 0 && followerTarget > 0) {
|
|||
try {
|
||||
const todayEntries = queueToday();
|
||||
const overdueEntries = queueOverdue();
|
||||
if (todayEntries.length > 0) reminders.push(`You have ${todayEntries.length} post(s) scheduled for today. Run /linkedin:publish after posting to update your tracking.`);
|
||||
if (overdueEntries.length > 0) reminders.push(`${overdueEntries.length} overdue post(s) in your queue. Run /linkedin:publish to mark as posted, or /linkedin:calendar to reschedule.`);
|
||||
if (todayEntries.length > 0) reminders.push(`You have ${todayEntries.length} post(s) scheduled for today. Run /linkedin:calendar after posting to mark as published.`);
|
||||
if (overdueEntries.length > 0) reminders.push(`${overdueEntries.length} overdue post(s) in your queue. Run /linkedin:calendar to mark as posted or reschedule.`);
|
||||
} catch { /* ignore */ }
|
||||
|
||||
// Peak posting time
|
||||
|
|
|
|||
|
|
@ -250,12 +250,12 @@ if (existsSync(STATE_FILE)) {
|
|||
|
||||
// Today's scheduled posts
|
||||
if (queueTodayText) {
|
||||
context += `## Today's Scheduled Posts\\n${queueTodayText.replace(/\n/g, '\\n')}\\nRun /linkedin:publish after posting to update tracking.\\n\\n`;
|
||||
context += `## Today's Scheduled Posts\\n${queueTodayText.replace(/\n/g, '\\n')}\\nRun /linkedin:calendar after posting to mark as published.\\n\\n`;
|
||||
}
|
||||
|
||||
// Overdue posts
|
||||
if (queueOverdueText) {
|
||||
context += `## OVERDUE Posts\\n${queueOverdueText.replace(/\n/g, '\\n')}\\nRun /linkedin:publish to mark as posted, or /linkedin:calendar to reschedule.\\n\\n`;
|
||||
context += `## OVERDUE Posts\\n${queueOverdueText.replace(/\n/g, '\\n')}\\nRun /linkedin:calendar to mark as posted or reschedule.\\n\\n`;
|
||||
}
|
||||
|
||||
// Posting reminders
|
||||
|
|
@ -330,10 +330,10 @@ if (existsSync(STATE_FILE)) {
|
|||
|
||||
// Queue-related reminders
|
||||
if (queueTodayCount > 0) {
|
||||
reminders += `- You have ${queueTodayCount} post(s) scheduled for today. Run /linkedin:publish after posting.\\n`;
|
||||
reminders += `- You have ${queueTodayCount} post(s) scheduled for today. Run /linkedin:calendar after posting to mark as published.\\n`;
|
||||
}
|
||||
if (queueOverdueCount > 0) {
|
||||
reminders += `- ${queueOverdueCount} overdue post(s) in queue. Run /linkedin:publish or /linkedin:calendar to manage.\\n`;
|
||||
reminders += `- ${queueOverdueCount} overdue post(s) in queue. Run /linkedin:calendar to mark as posted or reschedule.\\n`;
|
||||
}
|
||||
|
||||
if (reminders) context += `## Posting Reminders\\n${reminders}\\n`;
|
||||
|
|
@ -380,7 +380,7 @@ if (existsSync(STATE_FILE)) {
|
|||
context += `- Queued posts (next 7 days): ${queueUpcomingCount}\\n`;
|
||||
if (queueTodayCount > 0) context += `- Today: ${queueTodayCount} post(s)\\n`;
|
||||
if (queueOverdueCount > 0) context += `- Overdue: ${queueOverdueCount} post(s)\\n`;
|
||||
context += '- Manage: /linkedin:calendar | Publish: /linkedin:publish\\n\\n';
|
||||
context += '- Manage + publish: /linkedin:calendar\\n\\n';
|
||||
}
|
||||
|
||||
context += `State file: ${STATE_FILE}\\n`;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ let isLinkedin = false;
|
|||
// Tier 1: Strong signals
|
||||
const strongSignals = [
|
||||
'/linkedin:post', '/linkedin:quick', '/linkedin:batch',
|
||||
'/linkedin:pipeline', '/linkedin:publish', '/linkedin:video',
|
||||
'/linkedin:pipeline', '/linkedin:calendar', '/linkedin:video',
|
||||
'/linkedin:multiplatform', '/linkedin:react', '/linkedin:summarize',
|
||||
'linkedin post', 'lag en post',
|
||||
'skriv en post', 'write a post', 'quick post', 'create post',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue