Skill Details
Back to Skills

/daily-rhythm

by anthonyfrancis

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

View on GitHub

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:

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
  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 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:

### 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:

  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:

### 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

  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