Skip to content

fix(morning-briefing): replace non-existent google-calendar.py with gws calendar#690

Merged
sonichi merged 1 commit into
sonichi:mainfrom
rudyalways:fix/morning-briefing-calendar
May 14, 2026
Merged

fix(morning-briefing): replace non-existent google-calendar.py with gws calendar#690
sonichi merged 1 commit into
sonichi:mainfrom
rudyalways:fix/morning-briefing-calendar

Conversation

@rudyalways
Copy link
Copy Markdown
Contributor

Problem

skills/morning-briefing/SKILL.md step 2 invokes a script that doesn't exist:

~/.claude/skills/google-calendar/scripts/google-calendar.py events list ...

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 --today invocation that's already in CLAUDE.md "Built-in capabilities → Calendar". While here, also tighten the Discord step from a vague "fetch recent messages" to a concrete logs/discord-bridge.log tail — 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's skills/morning-briefing/SKILL.md hunks (compared via gh 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 gws installed (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 corrected calendar-reader.py 1 invocation (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

Authorship 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

…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>
@sonichi sonichi merged commit 818dc29 into sonichi:main May 14, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants