Made a plan before writing any code.
The request — “show a quote of the day” — became a small written plan: what done means, the steps, a dated checklist. A target, not a vibe.
dotHuman is a method that gives your AI agents a workspace that’s durable, reliable, and transferable — so their work is spec-driven, reviewed by you, and remembered between sessions. This page follows real work up the ladder: unproven → audited → durable.
Every goal runs the same loop — spec-driven, reviewed, banked. Put a real one through it below, and watch a project play out goal by goal — every step backed by a real .human/ file.
This one’s a deliberately small “hello world” — picked so the whole trail fits on one screen. The same loop runs refactors, migrations, and net-new products the same way.
The machinery, not a testimonial.
This is founder-proof today. The receipts grow as more teams run the protocol on real work — and land here, cleared, as they do.
You want a small page that shows a different quote each day, starting from an empty folder. Here’s the whole run — what it decides, the bug it hits, and the notes it leaves so the next task starts ahead. Every line has the real file behind it.
“The obstacle is the way.”— Marcus Aurelius
A “quote of the day” page — no build, no dependencies, just a file you open. The box on the right is rendered live.
Before any goal, a one-time step turns the empty folder into a dotHumanized workspace — it sets up the .human/ notebook everything else writes to. Every project starts here, once.
The request — “show a quote of the day” — became a small written plan: what done means, the steps, a dated checklist. A target, not a vibe.
Up front, it wrote down the tricky part: make today’s quote the same all day but different tomorrow — in the viewer’s timezone, not the server’s. Naming the unknown is what forces it to be handled.
# Goal — quote of the day Intent: show one quote, chosen by the date, on load. Unknown: keep the pick stable for the day — and "a day" must mean the viewer's day, not the server's. Done when: same date → same quote; no build, no deps.
The obvious approach picked the wrong day for anyone west of London. It caught that, fixed it, and wrote the rule into a reusable runbook — durable notes the next task inherits for free.
Lesson — the simple "days since 1970" is a UTC day; out west it flips at the wrong midnight. Verified: 6 vs 5 at 10pm. Fix: count from local midnight.
# Evergreen/daily-pick.md Index by the viewer's local day, from a fixed epoch.
An AI’s memory resets between sessions — always. So it wrote a note for the next session: what this is, how it’s built, what to watch for. Next time, it’s up to speed in seconds instead of starting from scratch.
What it is: a "quote of the day" web page. No build, no deps. Architecture: index.html — pick by the local day, then render. Gotcha: "today" must be the local day (see the runbook). Start here: read this, then the active Goal.
A second job — add a daily color to match the quote — began by reading those notes. The timezone rule it learned last time? Reused as-is, no rediscovery. Each task begins further ahead than the last.
// the same pick rule, reused for the color: const pick = QUOTES[dayIndex(today, QUOTES.length)]; const accent = THEMES[dayIndex(today, THEMES.length)]; // reused
Because the same trick worked twice, it saved it as a small skill it can reach for again — “a value that changes once a day.” The project is now smarter than when it started.
# manifest.json { "name": "daily-pick", "stage": "forming", "emerged_from": ["quote-of-the-day", "daily-theme"] }
Every step above is one turn of the loop you saw — plan a goal → review it → bank what you learned — with you signing off. After two goals the workspace carries more than after one, and the next goal starts from all of it.