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
- Install the skill and ensure scripts are executable
- Configure data sources (Google Tasks, optional Stripe, Calendar)
- Set up cron jobs for automation
- Customize your focus area and Daily Intention (prayer, affirmation, quote, or centering thought)
- 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
- Go to Google Cloud Console
- Create project → Enable Tasks API
- Create OAuth 2.0 credentials (Desktop app)
- Download
credentials.jsonto~/.openclaw/google-tasks/ - Run once to authenticate:
python3 scripts/sync-google-tasks.py
See CONFIGURATION.md for detailed steps.
Step 3: Configure Stripe (Optional)
For ARR tracking in morning briefs:
- Create
.env.stripein workspace root:STRIPE_API_KEY=sk_live_... - 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 for detailed troubleshooting.
Best Practices
- Reply to wind-down prompts for best morning brief experience
- Keep tasks updated in Google Tasks
- Do weekly reviews to stay aligned with goals
- Customize focus as priorities change
- 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