The Week I Let a Cron Agent Email Me Daily Summaries of My Own Code






The Week I Let a Cron Agent Email Me Daily Summaries of My Own Code


The Week I Let a Cron Agent Email Me Daily Summaries of My Own Code

Wednesday morning I opened my inbox and there it was: a polite, almost gentle email summarizing what I had committed the day before. An AI had written me a calmer, kinder code review than I would have written myself. And buried in the third paragraph, it had found something I completely missed.

I have been running this little cron agent for a week now. It is the smallest piece of automation I have built this year, and somehow the one I think about most.

The setup is embarrassingly simple

The whole thing is a shell script triggered by cron at 6am on the Mac mini. It runs git log --since="24 hours ago" -p across my active repos, pipes the diff into Claude through the API, and asks for a plain-English summary aimed at “the developer who wrote this, reading it tomorrow morning with coffee.”

Then it sends the result to my Gmail through a tiny Python script using smtplib. No fancy framework. No queue. No retries. Just 0 6 * * * and a prayer.

I expected it to be useful. I did not expect it to feel like getting a letter from a slightly more thoughtful version of myself.

The awkward part: reading a polite review of my own mess

The first email arrived on Tuesday and the tone caught me off guard. I had committed a function on Monday night that I would describe, generously, as “tired code.” Three nested try/except blocks. A variable called tmp2. A comment that just said “fix later.”

The agent did not roast me. It wrote: “Yesterday’s changes added retry logic to the Tistory poster. The implementation works but layers exception handling in a way that may obscure the original error. Consider flattening once the surrounding flow stabilizes.”

That is more diplomatic than I have ever been with myself at 1am. I sat there with my coffee feeling weirdly seen.

Eben’s note: The agent does not know it is reviewing me. It is just reading a diff. But somehow the absence of judgment makes the feedback land harder.

Then on Wednesday it caught the thing I forgot

This is the part that made me actually pay attention. Tuesday I had refactored the WordPress pipeline to share a config loader with the Tistory side. Standard cleanup. I tested it, it worked, I moved on.

Wednesday’s email had a line that read: “The shared config loader no longer respects the DRY_RUN environment variable on the WordPress path. Previous behavior preserved this; current behavior does not.”

I stared at that for a full minute. I had not noticed. The tests passed because the tests did not cover dry-run mode. If I had pushed a real post that night, it would have gone live instead of just printing.

An AI reading a git diff at 6am caught a regression I had introduced and forgotten about by lunchtime. I am still processing how I feel about that.

Why this works better than I thought it would

I have tried daily standup tools, journaling apps, even running multiple agents overnight to summarize work. Most of it produced noise. This one works because the input is concrete: a diff is a fact. The model is not guessing what I did. It is reading exactly what I did.

It also works because it is asynchronous. I read it after coffee, away from the editor, with no pressure to fix anything immediately. That distance turns out to matter. Reading code review while sitting in front of the code makes me defensive. Reading it on my phone in the kitchen, I am just curious.

And honestly, Claude is good at this specific task. I have watched it write Python cleaner than I do, which I admitted in an earlier post about DeepSeek, but for diff summarization Claude has the right tone. It explains intent without lecturing.

The small practical takeaway

If you have a Mac mini or any always-on machine, you can build this in an afternoon. The pieces: a cron entry, a shell script, git log -p, an API call, and smtplib. That is it. No MCP, no agent framework, no dashboard.

The trick is the prompt. Mine specifically says: “Do not list every file. Summarize intent. Flag anything that looks like a regression or a behavior change. Be brief and direct.”

Without that last sentence the email turns into a wall of bullet points. With it, the email reads like a note from a colleague who actually paid attention.

What I am taking from this

The hype cycle wants AI to do enormous things. Replace engineers. Run companies. Write novels. Meanwhile the most useful thing my home setup has done this month is email me a 200-word summary of my own work and quietly point out where I broke something.

That is not glamorous. But it is real. And it is the first piece of automation I have built that I would genuinely miss if it stopped running tomorrow.

The Mac mini just sits on the shelf, fan barely audible, sending me a thoughtful email every morning at 6am. It is doing a better job of reviewing my code than I am.

Related Posts

Tags: #AIagents #ClaudeCode #OpenClaw #MacMini #OpenRouter #buildinginpublic #Eben


Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *