AutomationOpen SourceFreeActiveMachine-verified· intermediate · ~15 min setup

Morning Synthesis: a Start-of-Day Note Before Coffee

Schedule Claude Code to read your recent notes and write a daily start-of-day briefing.

by Shilpa Mitra· verified 10d ago· v1.0.0

Run this workflow

CI-verified, 6/6 fixtures passing.

Intended Use

Obsidian users who keep dated daily notes and want an automatic morning briefing (where you left off, due today, overdue, suggested focus) generated by Claude Code on a schedule.

Not for

  • Vaults without dated tasks, 'overdue' only works if your tasks carry dates
  • Anyone who hasn't backed up their vault, the agent writes to it (git is ideal)

The Stack

Tested Against

claude-codebash@5.xcoreutils@9.xobsidian@1.7.x

Side effects & data flow

Network
Anthropic API, only in the non-CI Claude step
Writes
./vault/Daily/, ~/bin/morning-synthesis.sh
Credentials
Claude Code login, for the synthesis step only

Data privacy

  • Anthropic (Claude), only in the non-CI agent step the text of your recent daily and project notes (retention: per Anthropic's API/data policy)

Prerequisites

  • Claude Code installed and logged in: `npm i -g @anthropic-ai/claude-code`
  • An Obsidian vault with Daily/ and Projects/ folders
  • Back up your vault first (git ideal), the agent writes to it
  • cron (built into macOS/Linux)

Steps

  1. 1

    Check your toolchain

    The deterministic setup only needs bash, coreutils and cron. Claude Code is the agent for the final step, so we just warn if it's missing.

    for bin in bash date find; do
      command -v "$bin" >/dev/null 2>&1 || { echo "MISSING required: $bin"; exit 1; }
    done
    command -v claude >/dev/null 2>&1 || echo "optional (needed for the synthesis step): claude"
    echo "preflight OK on $(uname -s)"
  2. 2

    Scaffold the vault

    Create the Daily/ and Projects/ folders Claude reads, with a couple of sample notes to synthesize.

    mkdir -p vault/Daily vault/Projects
    printf '%s\n' '- [ ] Ship the importer (due 2026-06-02)' > vault/Projects/importer.md
    printf '%s\n' 'Left off mid-refactor.' > vault/Daily/2026-06-03.md
    find vault -type d | sort
  3. 3

    Write the scheduled script

    This is the exact morning-synthesis.sh from the guide. We write it, make it executable, and confirm it carries the claude -p call.

    mkdir -p bin
    cat > bin/morning-synthesis.sh <<'EOF'
    #!/usr/bin/env bash
    cd ~/Documents/MyVault
    claude -p "Read my daily notes from the last 3 days in Daily/ and my active notes in Projects/. Create Daily/$(date +%F)-start-of-day.md with four sections: Where I left off, Due today, Overdue, and Suggested focus priority. Keep it short."
    EOF
    chmod +x bin/morning-synthesis.sh
    test -x bin/morning-synthesis.sh && grep -q 'claude -p' bin/morning-synthesis.sh && echo "script ready: bin/morning-synthesis.sh"
  4. 4

    Check the dated path and the cron line

    Prove the output filename resolves to a real dated path, and that the 7am schedule is well-formed.

    echo "would write: Daily/$(date +%F)-start-of-day.md"
    echo "0 7 * * * /Users/you/bin/morning-synthesis.sh" | grep -Eq '^[0-9]+ [0-9]+ \* \* \* ' && echo "cron OK: daily at 07:00"
  5. 5

    Let it run (the Claude step, not checked by CI)

    Schedule it with `crontab -e` (add `0 7 * * * ~/bin/morning-synthesis.sh`) and Claude Code writes your briefing each morning. This step needs your Claude login and produces judgement-based output, so CI doesn't run it, the badge covers the scaffold, script and schedule above.

Eval, 6 fixtures

Last passed: verified 10d ago
  • clean-exitexit_codetimeout 15s · max $0

    Expected: 0

  • cron-okcontainstimeout 15s · max $0

    Expected: cron OK: daily at 07:00

  • dated-pathregextimeout 15s · max $0

    Expected: Daily/[0-9]{4}-[0-9]{2}-[0-9]{2}-start-of-day\.md

  • preflight-okcontainstimeout 15s · max $0

    Expected: preflight OK

  • script-readycontainstimeout 15s · max $0

    Expected: script ready: bin/morning-synthesis.sh

  • vault-dailycontainstimeout 15s · max $0

    Expected: vault/Daily

Results

From the WebAfterAI guide: 5 Obsidian + Claude workflows that actually run.