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:
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:
### Calendar
- **ICS URL:** `https://calendar.google.com/calendar/ical/...`
Step 5: Set Up Cron Jobs
Option A: System Cron (Traditional)
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:
Syncing latest data (tasks, ARR)
Reading wind-down priority from
memory/YYYY-MM-DD.mdFetching calendar from ICS URL
Fetching weather (if configured)
Compiling all sections into formatted message
Wind-Down Response Flow
When user replies to 10:30pm prompt:
Parse their tomorrow priority
Generate actionable suggestions
Break into steps
Identify resources
Ask confirmation
Save to
memory/YYYY-MM-DD.mdInclude in next morning's brief
Weekly Review Flow
Sunday 8pm prompt asks reflection questions. When user replies:
Summarize their week
Identify key priorities
Create tasks in Google Tasks
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:
### Focus
Your primary focus (e.g., "Product growth and customer acquisition")
Adjust Timing
Modify cron expressions:
30 8 * * *= 8:30am daily30 22 * * *= 10:30pm daily0 23 * * *= 11:00pm daily0 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.jsonexistsCheck Tasks API is enabled
Run script manually to see errors
Stripe ARR not showing?
Verify
.env.stripewith valid API keyCheck for active subscriptions
Run sync script manually
Cron jobs not firing?
Verify cron is installed:
crontab -lCheck 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