--- name: daily-rhythm description: Automated daily planning and reflection system with morning briefs, wind-down prompts, sleep nudges, and weekly reviews. Use when the user wants to set up a structured daily routine, morning briefings, evening reflection prompts, or weekly planning sessions. Triggers include requests for daily schedules, morning briefs, wind-down routines, sleep reminders, weekly reviews, productivity systems, or daily planning automation. --- # Daily Rhythm A comprehensive daily planning and reflection system that automates morning briefs, evening wind-downs, sleep nudges, and weekly reviews to help users stay focused, track progress, and maintain work-life balance. ## Quick Start 1. **Install the skill** and ensure scripts are executable 2. **Configure data sources** (Google Tasks, optional Stripe, Calendar) 3. **Set up cron jobs** for automation 4. **Customize** your focus area and Daily Intention (prayer, affirmation, quote, or centering thought) 5. **Enjoy** automated daily briefings and prompts ## Features ### Daily Automation - **7:00am**: Background data sync (tasks, ARR) - **8:30am**: Morning Brief with priority, calendar, weather, tasks - **10:30pm**: Wind-down prompt to plan tomorrow's priority - **11:00pm**: Sleep nudge with encouraging words ### Weekly Automation - **Sunday 8:00pm**: Weekly review for reflection and task planning ### Rich Morning Briefs Include - 🙏 **Daily Intention** — Prayer, affirmation, quote, or centering thought - Calendar events - Focus area - ARR progress tracking (optional Stripe integration) - Today's priority (from wind-down or top task) - Actionable suggestions - Step-by-step plan - Helpful resources - Task list from Google Tasks - Weather (if configured) - Open loops from yesterday ## Setup Instructions ### Step 1: Install Dependencies Ensure Python 3 and required packages: ```bash pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client stripe ``` ### Step 2: Configure Google Tasks 1. Go to [Google Cloud Console](https://console.cloud.google.com/) 2. Create project → Enable **Tasks API** 3. Create OAuth 2.0 credentials (Desktop app) 4. Download `credentials.json` to `~/.openclaw/google-tasks/` 5. Run once to authenticate: `python3 scripts/sync-google-tasks.py` See [CONFIGURATION.md](references/CONFIGURATION.md) for detailed steps. ### Step 3: Configure Stripe (Optional) For ARR tracking in morning briefs: 1. Create `.env.stripe` in workspace root: ``` STRIPE_API_KEY=sk_live_... ``` 2. Set ARR target in state file ### Step 4: Configure Calendar Add ICS URL to `TOOLS.md`: ```markdown ### Calendar - **ICS URL:** `https://calendar.google.com/calendar/ical/...` ``` ### Step 5: Set Up Cron Jobs Option A: System Cron (Traditional) ```bash crontab -e # Add these lines: 0 7 * * * cd /path/to/workspace && python3 skills/daily-rhythm/scripts/sync-stripe-arr.py 30 8 * * * cd /path/to/workspace && python3 skills/daily-rhythm/scripts/morning-brief.sh 0 20 * * 0 cd /path/to/workspace && echo "Weekly review time" 30 22 * * * cd /path/to/workspace && echo "Wind-down time" 0 23 * * * cd /path/to/workspace && echo "Sleep nudge" ``` Option B: OpenClaw Cron (If Available) Use the `cron` tool to create jobs with `agentTurn` payloads that generate and send briefs. ### Step 6: Create HEARTBEAT.md Copy the template from `assets/HEARTBEAT_TEMPLATE.md` to workspace root and customize: - Daily Intention text (prayer, affirmation, quote, or centering thought) - Focus area - ARR target (if using Stripe) ## Workflow Details ### Morning Brief Generation The brief is generated by: 1. Syncing latest data (tasks, ARR) 2. Reading wind-down priority from `memory/YYYY-MM-DD.md` 3. Fetching calendar from ICS URL 4. Fetching weather (if configured) 5. Compiling all sections into formatted message ### Wind-Down Response Flow When user replies to 10:30pm prompt: 1. Parse their tomorrow priority 2. Generate actionable suggestions 3. Break into steps 4. Identify resources 5. Ask confirmation 6. Save to `memory/YYYY-MM-DD.md` 7. Include in next morning's brief ### Weekly Review Flow Sunday 8pm prompt asks reflection questions. When user replies: 1. Summarize their week 2. Identify key priorities 3. Create tasks in Google Tasks 4. Preview Monday's brief ## Customization ### Change Daily Intention The morning brief opens with a centering section you can customize: **Examples:** - **Faith-based**: Prayer, scripture verse, devotional thought - **Secular**: Affirmation, intention-setting, gratitude practice - **Quotes**: Inspirational quotes, stoic philosophy, poetry - **Goals**: Daily mission statement, values reminder Edit in HEARTBEAT.md or modify the morning brief generation. ### Change Focus Area Update default focus in HEARTBEAT.md: ```markdown ### Focus Your primary focus (e.g., "Product growth and customer acquisition") ``` ### Adjust Timing Modify cron expressions: - `30 8 * * *` = 8:30am daily - `30 22 * * *` = 10:30pm daily - `0 23 * * *` = 11:00pm daily - `0 20 * * 0` = 8:00pm Sundays ### Add Custom Sections Modify `scripts/morning-brief.sh` to include additional data sources. ## File Structure ``` workspace/ ├── memory/ │ ├── YYYY-MM-DD.md # Wind-down responses │ ├── google-tasks.json # Synced tasks │ ├── stripe-data.json # ARR data │ └── heartbeat-state.json # State tracking ├── skills/daily-rhythm/ │ ├── scripts/ │ │ ├── sync-google-tasks.py │ │ ├── sync-stripe-arr.py │ │ └── morning-brief.sh │ ├── references/ │ │ └── CONFIGURATION.md │ └── assets/ │ └── HEARTBEAT_TEMPLATE.md └── HEARTBEAT.md # Your custom schedule ``` ## Scripts Reference ### sync-google-tasks.py Syncs Google Tasks to local JSON. Requires `credentials.json`. ### sync-stripe-arr.py Calculates ARR from active Stripe subscriptions. Requires `.env.stripe`. ### morning-brief.sh Orchestrates data sync and brief generation. ## Troubleshooting **Google Tasks not syncing?** - Verify `credentials.json` exists - Check Tasks API is enabled - Run script manually to see errors **Stripe ARR not showing?** - Verify `.env.stripe` with valid API key - Check for active subscriptions - Run sync script manually **Cron jobs not firing?** - Verify cron is installed: `crontab -l` - Check script paths are absolute - Review system logs See [CONFIGURATION.md](references/CONFIGURATION.md) for detailed troubleshooting. ## Best Practices 1. **Reply to wind-down prompts** for best morning brief experience 2. **Keep tasks updated** in Google Tasks 3. **Do weekly reviews** to stay aligned with goals 4. **Customize focus** as priorities change 5. **Adjust timing** to match your rhythms ## Requirements - Python 3.7+ - Google Tasks API credentials (for task sync) - Stripe API key (optional, for ARR tracking) - Calendar ICS URL (optional, for events) - Cron or OpenClaw cron system