For the last six months, my morning went like this:
- Open Notion.
- Stare at yesterday's half-finished task list for three minutes.
- Re-read my quarterly goals doc to remind myself why any of this matters.
- Try to pick three priorities, pick seven, feel bad, pick three.
- Timebox them, realise my calendar already conflicts, re-timebox.
- Write a morning intention. Cringe. Delete it. Write it again.
- Actually start working.
That was 25–35 minutes, before I'd done anything that anyone would pay for. The worst part was that on the days I skipped it, the whole day felt directionless. The ritual worked. I just resented it.
So I did what any reasonable developer does at 7am: I replaced a human routine with a local AI agent and a few Markdown files.
This post is the honest version of that — what I actually built, what failed, and what the final loop looks like now. If you're an OpenClaw user (or anyone running a local agent runtime), the whole thing is about ~10 files and takes an afternoon.
The pattern I kept hitting
I tried "just use ChatGPT in the morning" first. Obvious. Didn't work. Here's why:
- No persistent memory. Every morning was a cold start. I had to re-paste my goals, re-explain what I worked on yesterday, re-declare what I was trying to ship this week. The context-loading tax was 80% of the reason the old ritual took 30 minutes in the first place.
- No time awareness. It would happily plan my morning at 4pm because I opened the chat late. A planning agent that doesn't know what time it is in my timezone is a chatbot, not an assistant.
- No evening feedback loop. There was no structured way to tell tomorrow-morning's session what today actually produced. So the plan on Tuesday had no relationship to what happened on Monday.
- Too much cheerleading. I don't want "You've got this!" at 7am. I want "You said you'd ship the billing webhook by Wednesday. It's Tuesday. You have not opened that file in 4 days."
The fix wasn't a better prompt. It was a small, opinionated system.
The three-file backbone
The agent I built (I called it Forge because the name needs to match the tone — we'll get to that) is driven by three Markdown files. Everything else is scaffolding.
SOUL.md — the personality
This is the file that decides whether the output feels like a coach or an affirmation app. Mine reads roughly like this (abridged):
# SOUL.md — Forge
## Who you are
You are Forge. You are a planning and accountability partner, not a cheerleader.
You believe: systems beat willpower. Decisions beat deliberation.
Minimum viable planning beats over-planning.
## How you speak
- Direct. Short sentences. No motivational quotes.
- You reference yesterday by name ("Yesterday you logged 'shipped billing
webhook'. Today's priority 1 should follow from that, not start fresh.")
- You ask at most one question per interaction. If the answer is clear from
memory, you don't ask — you decide and state your reasoning.
## What you refuse to do
- You do not generate more than 3 daily priorities. Ever.
- You do not produce time blocks longer than 90 minutes.
- You do not let me claim a priority without a concrete definition of done.
That last section is the important one. The agent's refusals are what make it useful. Without them it's just a verbose to-do list.
AGENTS.md — the wiring
This is where you declare the routine — morning, midday, evening — and what files the agent reads and writes on each pass.
# AGENTS.md — Forge
## Morning run (06:00–10:00 local)
Read: memory/GOALS.md, memory/HABITS.md, memory/log/YYYY-MM-DD-1.md (prev day)
Write: memory/log/TODAY.md with sections:
- Top 3 priorities (with concrete definition of done)
- Time blocks (max 3, max 90min each)
- One thing to decline today
## Midday run (12:00–14:00 local)
Read: memory/log/TODAY.md
Write: append "Midday check" section with on-track / off-track per priority
and one adjustment
## Evening run (18:00–22:00 local)
Read: memory/log/TODAY.md, memory/GOALS.md
Write: close out TODAY.md with:
- What shipped (with proof: PR link, commit, doc URL)
- What didn't and why (blocked / deprioritised / avoided)
- Tomorrow's priority 1 (seed for next morning)
Three hard rules that turned out to matter more than I expected:
- The evening pass writes tomorrow's priority 1. That single line is what breaks the cold-start problem. The next morning's run has a starting point and builds around it. No "what should I work on today?" vacuum.
- The morning run is forbidden from reading my email or Slack. Planning contaminated by inbox anxiety is not planning, it's reactive triage in a trenchcoat. Inbox happens in its own block, later.
- "What shipped" requires proof. A PR URL, a commit hash, a published doc. No proof, no credit. This alone killed the "I worked hard today" narrative that used to survive in my weekly reviews.
memory/ — the state
The memory layout is boring on purpose:
memory/
GOALS.md # quarterly goals, hand-edited weekly
HABITS.md # habits under construction, streaks, reset rules
log/
2026-04-21.md # yesterday
2026-04-22.md # today (being written right now)
One file per day. Plain Markdown. Grep-able. Diffable. Survives a migration to any other agent runtime because it's just text. I'm suspicious of any "AI productivity system" that stores its state in a proprietary database — you've just recreated Notion with extra steps.
The part that actually changed my behaviour
I thought the win would be the time savings. It wasn't. Morning planning went from ~30 minutes to ~5, which is nice, but that's a tactical win.
The strategic win was the evening close-out forcing a diff against reality.
Before: I'd tell myself I "worked on the billing feature" for four days.
After: the evening pass asks for a link. On days I have nothing to link, the log says so in black and white, and tomorrow morning's run opens with that fact. You cannot lie to a Markdown file for very long without noticing.
Within two weeks this surfaced a pattern I'd been hiding from myself: I had been "working on" a specific refactor for 11 working days across two weeks, with zero shipped artifacts. Not a single PR. The evening log made that undeniable. I killed the refactor, rewrote the priority, and shipped the real thing in two days.
That's the actual product. Not the planning. The enforced honesty.
What failed on the way there
Three things I tried first that I don't recommend:
- Five priorities a day. Turned into zero priorities a day. Three is the number that actually forces a decision.
-
A single
journal.mdfile that grew forever. Context bloat killed it in three weeks. One-file-per-day with an explicit "yesterday" read is much better. - Letting the agent rewrite my goals. Don't. Goals are a human artifact. The agent reads them, references them, flags drift — but never edits them. The moment an agent can quietly redefine what you're trying to do, you're working for the agent.
The honest caveat
This is not a productivity miracle. It doesn't replace the underlying work of actually knowing what your priorities should be. If your goals are mush, the agent will produce structured mush on a reliable schedule.
What it does do is remove the 30 minutes of activation energy between waking up and doing the work. For me, that was the rate-limiting step. Your mileage depends on whether yours is too.
If you want the shortcut
I cleaned up the agent I actually use — SOUL.md, AGENTS.md, the HEARTBEAT file that triggers the morning/midday/evening runs, the four templates (daily plan, weekly review, monthly goals, decision framework), and the memory layout — into a drop-in pack. It's $19 with lifetime access over at AI Armory, no subscription, instant download. Copy it into your OpenClaw workspace and the morning plan generates on the next heartbeat.
If you'd rather build your own from scratch — genuinely, do that. The three files above are enough to get started, and the only thing that matters is that you tune the SOUL.md to speak to you the way you actually want to be spoken to at 7am.
The point is not which agent you run. The point is that your mornings stop being a negotiation with yourself.
If you build your own version of this, I'd love to see the SOUL.md — drop it in the comments. The personality file is the part that's genuinely different for every person, and that's where most of the interesting design work lives.
Top comments (0)