GOG Stale Games Cleanup
Find installed GOG games you haven't played in 30+ days, email yourself a summary, and create Apple Reminders so you can decide whether to uninstall.
When to Use
- User says "clean up my GOG library", "stale games", "games I haven't played", "uninstall reminder"
- Running a periodic game-library audit
- Triggered by cron for monthly cleanup reminders
Quick Start
bash scripts/sweep.sh \
--library /path/to/gog_library.json \
--days 30 \
--email personal \
--reminders-list Gaming
Parameters
| Flag | Default | Description |
|---|---|---|
--library | config/gog_library.json | Path to GOG library JSON |
--days | 30 | Stale threshold in days |
--email | personal | Himalaya account name for sending |
--reminders-list | Gaming | Apple Reminders list name |
--dry-run | off | Print actions without sending email or creating reminders |
What It Does
- Reads your GOG library JSON
- Filters for
installed: truegames whoselast_playedis older than the threshold (or null) - Sends an HTML email via
himalayawith the stale game list - Adds one Apple Reminder per stale game to the specified list
Output Example
🧹 GOG Stale Games Sweep — 2026-05-12
Found 2 stale games (>30 days since last play):
• Stardew Valley — last played 2026-03-28
• Cyberpunk 2077 — never played
✉️ Email sent to john.doe@example.com
📝 2 reminders added to "Gaming" list
Configuration
GOG Library JSON
See references/gog_library_schema.json for the expected format. Each game needs:
name(string)installed(boolean)last_played(ISO 8601 datetime or null)
Himalaya
See references/himalaya.toml.example. The script uses himalaya template send on the account specified by --email.
Apple Reminders
The list specified by --reminders-list is created if it doesn't exist (remindctl list <name> --create).
Cron Integration
Run monthly:
# Add via OpenClaw cron — monthly on the 1st at 10:00
openclaw cron add --name "gog-stale-sweep" \
--schedule "0 10 1 * *" \
--command "bash /path/to/scripts/sweep.sh --library /path/to/gog_library.json"
Or use the agent's cron tool with a systemEvent payload that triggers this skill.