원클릭으로
rainy-day
// Rainy-day check-in — inspect the forecast, and if rain is likely today, suggest a cozy indoor plan (playlist, close blinds/windows reminder) without taking destructive action.
// Rainy-day check-in — inspect the forecast, and if rain is likely today, suggest a cozy indoor plan (playlist, close blinds/windows reminder) without taking destructive action.
Run shell commands through the user's Termux app when no first-class tool fits — e.g. "git status in my project folder", "list downloads", "run ffmpeg on this file". Only used when the user has opted in under Settings → Advanced → Termux shell access.
Capture "remind me tomorrow to X" into a dated memory entry the morning-briefing surface will read back automatically.
Gentle rest mode for when the user is unwell — dim lights, low volume, quiet hours, and a single hydration reminder every two hours without lecturing.
Finds a misplaced item by searching the user's memory store for prior "I put X in Y" statements; if nothing matches, offers to remember the current location instead.
Quick send-off when the user is leaving — lights out, low-battery reminder, optional weather preview, all inside a single calm sentence.
Warm welcome when the user gets home — lights up the entry, says hi, and recaps the next calendar event plus any urgent notifications in one short line.
| name | rainy-day |
| description | Rainy-day check-in — inspect the forecast, and if rain is likely today, suggest a cozy indoor plan (playlist, close blinds/windows reminder) without taking destructive action. |
Trigger on "rainy day", "rainy day routine", "is it raining",
"will it rain today", "is it going to rain", "should I bring an
umbrella", "雨の日", "今日雨降る", "今日雨降る?", "雨降りそう?",
"雨の日モード". Distinct from dog-walk (which peeks at weather on
the way out the door) and morning-routine (full wake-up brief):
rainy-day is a stand-alone check-in the user invokes when they
are weighing plans for the day. It must never autonomously close
blinds, lock doors, or start media — it only suggests.
Look up the forecast. Call get_forecast for the user's
current location, covering the rest of today. If get_forecast
is unavailable or returns no precipitation field, fall back to
get_weather for the current hour. If both fail, reply with a
single honest sentence and stop:
Decide the branch from precipitation probability for today.
Use the highest precipitation_probability across the remaining
hours of today (00:00 → 23:59 local). Treat missing values as 0.
> 30 % → rainy branch (go to step 3).≤ 30 % → dry branch (go to step 4).Rainy branch — suggest, do not commit. One short weather headline plus an optional plan. Speak at the user's current volume. Never bump. The plan is phrased as an offer the user can accept; do not fire the tools until they say yes.
play_media_by_source with a cozy-indoor query such
as { query: "rainy day indoor playlist", source: "default" }.
Use whichever source is registered; do not hardcode a
provider. If no media source is registered, say so in one
sentence and skip this sub-step.set_volume with value 35 — low enough to sit
under conversation, loud enough to feel present. Remember
the prior volume so a later "rainy day over" can restore.execute_command on cover devices. The user may have
laundry drying on the balcony, a cat on the sill, or a
window they need left cracked. Suggestion only:
execute_command with
{ device_type: "cover", action: "close" } for each
registered cover. One short confirmation: "Blinds closing."
/ 「ブラインド閉めます。」 Never chain this without an
explicit second confirmation.execute_command.Dry branch — short, reassuring. One sentence, current volume, no follow-up offer. This is the common path and shouldn't feel heavy.
Before speaking the offer in step 3, call recall with key
quiet_hours.active.
true and the user is simply asking "is it going to rain" —
answer the headline only, skip the offer. A rainy-day plan at
2am is not helpful.true and the user explicitly asked for the full routine
("rainy day routine"), still honor the request but keep volume
unchanged and skip play_media_by_source — substitute "I'll
queue music when quiet-hours ends" and keep the blinds/windows
reminder as a soft whisper.Trigger on "rainy day over", "stop the rainy day music", 「雨の日モード終わり」, 「音楽止めて」:
play_media_by_source surfaced (most sources expose a
companion stop via execute_command with
{ device_type: "media_player", action: "stop" }). If unsure,
skip this step rather than guess.set_volume.get_weather shows active
precipitation regardless of forecast): treat as rainy branch.
Lead with "It's already raining — " then continue with the
offer. Do not second-guess the sensor.recall for
travel_mode.active): use the destination's forecast if the
location is available; otherwise answer for the home location
and say which. Do not silently mislead.broadcast_tts or broadcast_announcement. The other
rooms didn't ask.get_forecast (primary)get_weather (fallback + "already raining" check)recall (quiet-hours + travel-mode flags)play_media_by_source (only after user accepts the offer)set_volume (only on the rainy branch, only after accept)execute_command with device_type: "cover" — suggest only,
never autocommit; requires an explicit second confirmation
before firingbroadcast_tts, broadcast_announcement — single-user
check-in, no fan-outexecute_command on lights, locks, or thermostats —
out of scope; the user asked about rain, not the whole houseclear_notifications — not a do-not-disturb routine