Daily Rhythm

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.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
3 · 2.5k · 8 current installs · 8 all-time installs
byAnthony Francis@AnthonyFrancis
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The skill's name/description (daily briefs, wind-downs, weekly reviews) aligns with the scripts provided (Google Tasks sync, Stripe ARR sync, brief generator). However metadata claims no required env vars or config paths while the instructions and scripts require Google OAuth credentials and optionally a Stripe secret in a .env.stripe file. The README/SKILL.md also describe sending briefs via messaging (Telegram/WhatsApp/Signal) but there is no delivery implementation included — only instructions and a shell script that echoes sync steps. This mismatch (declared none vs actual credential and path needs, and promised delivery channels without code) is an incoherence.
!
Instruction Scope
SKILL.md instructs obtaining Google API credentials, creating .env.stripe and setting up cron jobs — all within the expected scope. But the runtime instructions and scripts reference and read/write specific filesystem locations (e.g., /Users/tom/.openclaw/workspace, ~/.openclaw/google-tasks/) and token.json files; the sync scripts will create and persist token.json and Stripe-derived json files (including customer_ids) in the workspace memory. These instructions thus require access to local files and write potentially sensitive data, which is reasonable for the stated purpose but not surfaced in the skill metadata and may expose sensitive information if defaults are used.
Install Mechanism
There is no automated install spec (instruction-only), which reduces automatic code execution risk. The SKILL.md does ask the user to pip-install several Python packages (google-auth libraries, google-api-python-client, stripe). That is proportionate for Google Tasks and Stripe usage, but the skill files themselves include code that will be placed in the workspace and executed by cron — so the user will be executing included scripts locally. No external download URLs or obfuscated installers are present.
!
Credentials
The registry metadata claims no required env vars, but the SKILL.md and scripts clearly require: (1) Google OAuth credentials (credentials.json -> token.json) and (2) optionally STRIPE_API_KEY via a .env.stripe file. The Stripe script expects a live secret key and will persist customer_ids into stripe-data.json. Requesting and storing a Stripe secret and customer IDs is proportional to ARR tracking but is sensitive and should be declared up front. The skill also hard-codes paths in multiple places, which may cause it to read or write data in another user's home if not adjusted.
Persistence & Privilege
always is false (good). The skill does persist state to disk (token.json, google-tasks.json, stripe-data.json, heartbeat-state.json, memory/YYYY-MM-DD.md) under a workspace/memory path; that is expected for a local automation tool. The concern is that those paths are hard-coded to /Users/tom/.openclaw/workspace and similar, which could lead to confusing placement of sensitive files if not edited. The skill does not request to modify other skills or system-wide agent settings.
What to consider before installing
This skill appears to implement the daily-briefing functionality it advertises, but there are several red flags you should address before installing or running it: - Credentials & secrets: SKILL metadata says no env vars, but the code requires Google OAuth credentials (credentials.json) and optionally a Stripe secret (STRIPE_API_KEY in .env.stripe). Do not use a live, fully privileged Stripe key if you can avoid it — prefer a restricted test key or a key scoped to only the necessary read operations. - Hard-coded paths: The scripts use absolute paths like /Users/tom/.openclaw/workspace and insert /Users/tom/Library/Python/... into sys.path. Update these paths to point to your own workspace before running; otherwise the scripts may fail or write data to unexpected locations. - Sensitive local storage: Google oauth token.json and stripe-data.json (which includes customer_ids and ARR) are stored on disk in memory/. Those files contain sensitive data — ensure the folder is protected with appropriate filesystem permissions and consider encrypting or limiting what is persisted. - Delivery mechanism missing: The README mentions sending briefs via Telegram/WhatsApp/Signal but the provided scripts only generate local files and echo status. You will need to implement or review a delivery adapter if you expect briefs to be sent to external messaging services. - Review code before running: The included Python scripts are readable and not obfuscated, but you should inspect them and adjust paths, logging, and what they save. Run them in a sandbox or with test credentials first. - Operational recommendations: (1) Update the skill metadata to declare required credentials and configurable paths; (2) replace any live Stripe keys with restricted or test keys; (3) change hard-coded paths to be configurable via environment variables or relative to the skill workspace; (4) secure the memory directory (restrict permissions); (5) if you do not want customer identifiers stored, modify sync-stripe-arr.py to avoid writing customer_ids. If the owner can update the package to remove hard-coded paths, declare required env vars in metadata, and provide a safe example delivery implementation, my confidence in coherence would increase.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk97be44q86710vt6h8zhp500jh80bew5

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

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

Files

7 total
Select a file
Select a file to preview.

Comments

Loading comments…