Back to Skills
    šŸ¦ž

    daily-rhythm

    Automated daily planning and reflection system with morning

    By @anthonyfrancis
    View on GitHub
    SKILL.md
    ---
    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