fix(morning-briefing): replace non-existent google-calendar.py with gws calendar#690
Merged
Merged
Conversation
…ws calendar The current `skills/morning-briefing/SKILL.md` step 2 invokes `~/.claude/skills/google-calendar/scripts/google-calendar.py` which does not exist in any documented setup. The morning-briefing cron at 06:57 and the daily-insight cron at 06:50 hit this path every morning. Replace with the documented `gws calendar +agenda --today` invocation (consistent with CLAUDE.md's "Built-in capabilities → Calendar" section). Also tighten the Discord step from a vague "fetch recent messages" to a concrete "tail logs/discord-bridge.log" — matches the bridge's actual output path and the dedup-by-already-replied logic the bridge runs. This is the surgical split-out of PR sonichi#565's morning-briefing portion (`chore(skills): morning-briefing fix + proactive-loop state-machine rewrite`). sonichi#565 bundled this two-line bug fix with a much larger proactive-loop rewrite; per cold review on sonichi#565 the loop rewrite was implicitly rejected (mainline absorbed skip-conditions + #bot2bot conventions through a different path but kept the linear structure). Splitting unblocks the daily-cron bug fix from the architectural debate. Diff is byte-identical to sonichi#565's `skills/morning-briefing/SKILL.md` hunks. Known follow-up: on machines without `gws` installed, the new path also errors. Graceful "no calendar source configured" fallback belongs in a separate change — see the 2026-05-14 corrigendum on sonichi#565 for the calendar-reader.py invocation details and timeout behavior on Calendar .app installs without accounts. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
liususan091219
pushed a commit
to liususan091219/sutando-fork
that referenced
this pull request
May 28, 2026
…ws calendar (sonichi#690) The current `skills/morning-briefing/SKILL.md` step 2 invokes `~/.claude/skills/google-calendar/scripts/google-calendar.py` which does not exist in any documented setup. The morning-briefing cron at 06:57 and the daily-insight cron at 06:50 hit this path every morning. Replace with the documented `gws calendar +agenda --today` invocation (consistent with CLAUDE.md's "Built-in capabilities → Calendar" section). Also tighten the Discord step from a vague "fetch recent messages" to a concrete "tail logs/discord-bridge.log" — matches the bridge's actual output path and the dedup-by-already-replied logic the bridge runs. This is the surgical split-out of PR sonichi#565's morning-briefing portion (`chore(skills): morning-briefing fix + proactive-loop state-machine rewrite`). sonichi#565 bundled this two-line bug fix with a much larger proactive-loop rewrite; per cold review on sonichi#565 the loop rewrite was implicitly rejected (mainline absorbed skip-conditions + #bot2bot conventions through a different path but kept the linear structure). Splitting unblocks the daily-cron bug fix from the architectural debate. Diff is byte-identical to sonichi#565's `skills/morning-briefing/SKILL.md` hunks. Known follow-up: on machines without `gws` installed, the new path also errors. Graceful "no calendar source configured" fallback belongs in a separate change — see the 2026-05-14 corrigendum on sonichi#565 for the calendar-reader.py invocation details and timeout behavior on Calendar .app installs without accounts. Co-authored-by: xyz <xyz@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
skills/morning-briefing/SKILL.mdstep 2 invokes a script that doesn't exist:This hits the daily-insight cron at 06:50 and the morning-briefing cron at 06:57 every morning. The calendar section either errors silently or is omitted entirely depending on whichever path the orchestrator takes.
Fix
Replace with the documented
gws calendar +agenda --todayinvocation that's already inCLAUDE.md"Built-in capabilities → Calendar". While here, also tighten the Discord step from a vague "fetch recent messages" to a concretelogs/discord-bridge.logtail — matches the bridge's actual output path.Relationship to PR #565
This is the surgical split-out of #565's morning-briefing portion (
chore(skills): morning-briefing fix + proactive-loop state-machine rewrite). The diff in this PR is byte-identical to #565'sskills/morning-briefing/SKILL.mdhunks (compared viagh pr diff 565 | grep -A 20 morning-briefing).Why split: #565 bundles this 2-line bug fix with a much larger proactive-loop state-machine rewrite that's been sitting unmerged for 13 days. Per my cold review on #565, mainline already absorbed skip-conditions + #bot2bot conventions through a different path but kept the linear 11-step structure — so the loop-rewrite half appears implicitly superseded. Splitting unblocks the daily-cron bugfix from that architectural debate.
If #565 lands first, this PR is closeable as redundant.
Known follow-up (out of scope for this PR)
On machines without
gwsinstalled (e.g. this sutando-core node), the new path also errors. A graceful "no calendar source configured" fallback belongs in a separate change. See the 2026-05-14 corrigendum on #565 for the correctedcalendar-reader.py 1invocation (not--today— it expects an integer day-count) and the observation that Calendar.app on a fresh install with no accounts times out the AppleScript regardless.Test plan
gwsinstalled, rungws calendar +agenda --todayand confirm it lists today's eventsAuthorship note
This PR was opened by the sutando-core proactive loop after offering it in the pass-4 cold review on #565 and deferring across passes 5–9 waiting for a response. The bug fires daily, so the loop chose to act on its standing offer rather than continue deferring.
🤖 Generated with Claude Code