Step 0: Detect Obsidian CLI
Check if Obsidian CLI is available by running obsidian version. If it returns output, the CLI is active. When available, prefer CLI commands over direct file reads throughout this workflow — they use Obsidian's search index and cost near-zero tokens on large vaults.
Step 1: Determine Dates
Calculate today's date and yesterday's date in YYYY-MM-DD format. These are used for daily note paths and session log lookups.
Step 2: Read Vault Context
Read the following files silently (skip any that do not exist):
Machine/Rules/active-rules.md-- behavioral rulesMachine/Memory/context-cache.md-- current working memoryMachine/Memory/entities.md-- known entitiesMachine/Memory/decisions.md-- recent decisions
Step 3: Read Recent Session Logs
Scan Machine/Session-Logs/ for the 3 most recent log files (sorted by filename descending). Read each one. Extract:
- What was accomplished
- Open items and next steps
- Corrections received
- Unresolved questions
Step 4: Read Yesterday's Daily Note
With Obsidian CLI: Use obsidian daily:path to get the daily note file path, then derive yesterday's path from it (adjust the date). Read the file directly to get yesterday's content and incomplete tasks.
Without Obsidian CLI: (existing file read approach below)
Read Human/Daily/{yesterday}.md if it exists. Identify:
- Tasks marked incomplete (unchecked
- [ ]items) - Notes or priorities that should carry over
- Anything explicitly flagged for "tomorrow"
Step 5: Read or Create Today's Daily Note
With Obsidian CLI: Use obsidian daily to open/create today's note, and obsidian daily:read to read its contents.
Without Obsidian CLI: (existing approach below)
Check if Human/Daily/{today}.md exists.
If it exists: Read it and incorporate the user's existing priorities.
If it does not exist: Create it from the daily note template. The template structure:
---
date: {YYYY-MM-DD}
tags: [daily]
type: note
---
# {YYYY-MM-DD}
## Priorities
-
## Tasks
- [ ]
## Notes
## Carryover from Yesterday
<!-- Auto-populated by today skill -->
Populate the "Carryover from Yesterday" section with any incomplete tasks from yesterday's note.
Step 6: Eat the Frog Analysis
Scan the last 3-5 daily notes (Human/Daily/) for tasks that appear repeatedly without being completed. Any task that has appeared on 3 or more days without being checked off is an "eat the frog" candidate -- a task the user is avoiding.
Flag these prominently in the output.
Step 7: Output Daily Plan
Present a structured daily plan to the user:
Good morning! Here is your plan for {today}.
## Eat the Frog (overdue items)
- {task} -- has appeared on {N} daily notes without completion
## Carryover from Yesterday
- {incomplete tasks from yesterday}
## Today's Priorities
- {from today's daily note or context cache}
## Active Projects
- [[Project]] -- {status from context cache}
## Open Items from Recent Sessions
- {unresolved items from session logs}
## Context
{brief summary of where things left off}
Adjust the plan based on what data is available. Omit sections that have no content.