AutomationOpen SourceFreeActiveMachine-verified· intermediate · ~15 min setup

Weekly Review: a Finished Review Instead of a Blank Page

Every Friday, have Claude Code turn your week's note activity into a written review.

by Shilpa Mitra· verified today· v1.0.0

Run this workflow

CI-verified, 5/5 fixtures passing.

Build this with your agent

One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.

Intended Use

Anyone who does a weekly review and wants Claude Code to draft it from the notes you actually touched that week (accomplishments, decisions, tasks done vs planned, patterns, next-week priorities), on a Friday schedule.

Not for

  • Vaults where you don't edit notes through the week, there'd be nothing to summarize
  • Anyone who hasn't backed up their vault

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/Reviews/, ~/bin/weekly-review.sh
Credentials
Claude Code login, for the review step only

Data privacy

  • Anthropic (Claude), only in the non-CI agent step the notes you modified in the last 7 days (retention: per Anthropic's API/data policy)

Prerequisites

  • Claude Code installed and logged in
  • An Obsidian vault you edit through the week
  • cron (built into macOS/Linux)

Steps

  1. 1

    Check your toolchain

    The mechanical core needs bash, find and date. Claude Code is the agent for the final step.

    for bin in bash find date; 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 review step): claude"
    echo "preflight OK on $(uname -s)"
  2. 2

    Find this week's notes (the deterministic core)

    This is the exact command the review runs: list every markdown note modified in the last 7 days. We seed a recent note and prove find picks it up.

    mkdir -p vault/Notes vault/Reviews
    printf 'x\n' > vault/Notes/weekly-target.md
    find vault -name '*.md' -mtime -7 | sed 's#.*/##' | sort -u
  3. 3

    Write the scheduled script

    The exact weekly-review.sh from the guide, made executable, carrying the find command and the claude -p call.

    mkdir -p bin
    cat > bin/weekly-review.sh <<'EOF'
    #!/usr/bin/env bash
    cd ~/Documents/MyVault
    claude -p "Find every note modified in the last 7 days (run: find . -name '*.md' -mtime -7). Create Reviews/$(date +%F)-weekly.md covering: accomplishments, decisions made, tasks completed vs planned, patterns you notice, and suggested priorities for next week."
    EOF
    chmod +x bin/weekly-review.sh
    test -x bin/weekly-review.sh && grep -q 'mtime -7' bin/weekly-review.sh && echo "weekly-review ready"
  4. 4

    Check the Friday cron line

    Prove the 5pm-Friday schedule is well-formed.

    echo "0 17 * * 5 /Users/you/bin/weekly-review.sh" | grep -Eq '^0 17 \* \* 5 ' && echo "cron OK: Friday 17:00"
  5. 5

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

    Schedule it (`0 17 * * 5 ~/bin/weekly-review.sh`) and Claude Code drafts your review every Friday. Non-deterministic and key-gated, so CI doesn't run it, the badge covers the find command, script and schedule above.

Eval, 5 fixtures

Last passed: verified today
  • preflight-okcontainstimeout 15s · max $0

    Expected: preflight OK

  • find-recentcontainstimeout 15s · max $0

    Expected: weekly-target.md

  • script-readycontainstimeout 15s · max $0

    Expected: weekly-review ready

  • cron-fridaycontainstimeout 15s · max $0

    Expected: cron OK: Friday 17:00

  • clean-exitexit_codetimeout 15s · max $0

    Expected: 0

Results

Drops the weekly review from an hour of writing to two minutes of reading, from the WebAfterAI guide.

Did this work for you?

Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.

Related workflows

Liked this workflow?

Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).