Daily Rhythm
Not every hour on Freddy is feature work. There's the work between the work — remembering where you were, writing commit messages, debugging the dev environment. This chapter hands all of it to the agent.
The problem
You sit down with coffee and the first twenty minutes go to archaeology: what was I doing? Which branch is this? Did I commit yesterday's tag-filter work or is it still sitting in the working tree? Then, at the end of a slice, more friction: a commit message to compose, a PR description to write, and — on the bad days — a 500 error that turns out to be the environment, not the code. Each of these is small. Together they're an hour a day, every day.
The hard way
You alt-tab through git log and
git status reconstructing yesterday from
tea leaves. You write "fix stuff" commits because the
real message would take five minutes you don't have. And
when the environment misbehaves, you debug it by vibes:
restart everything, clear some caches, hope. None of
this is engineering — it's overhead wearing
engineering's clothes.
The Elyra way, morning edition: /briefing
Install @elyracode/git-intel via
/ext. Now the day starts with one command:
/briefing
Git briefing — freddy (branch: feature/archive-view)
Since your last session (yesterday, 17:42):
- 3 commits on this branch, latest:
"feat: archive list page with restore action"
- Uncommitted: resources/js/pages/Archive.svelte (modified),
tests/Feature/ArchiveTest.php (new, untracked)
You appear to be mid-way through archive tests.
That last line is yesterday's context, recovered in two seconds instead of twenty minutes. The briefing reads the repository — branch, recent commits, uncommitted state — and tells you where you actually stood, not where you remember standing.
The environment: Grove
Freddy is served at https://freddy.test by
Grove, the local dev environment manager. Grove has no
CLI — and that's fine, because the
@elyracode/grove extension doesn't need
one: it reads Grove's own config, state, and log files
directly. Install it and three commands arrive.
/grove is the dashboard:
/grove
Grove — daemon running
PHP 8.4.1 (default) · Node 22.11
Services: mysql :3307 (running), redis :6379 (running)
This project → site "freddy" → https://freddy.test (TLS)
/grove-logs pulls the recent tail of every
log that matters — mysql, redis, php-fpm, the
per-site vite and queue logs, plus Freddy's own Laravel
log. The day it earns its keep: Browse starts throwing
500s with nothing in the Laravel log. You ask, and the
agent looks where you wouldn't have:
> Browse is 500ing but laravel.log is clean. Check the
environment.
/grove-logs
php-fpm: [23-Jul 09:14] WARNING: [pool freddy] child 4821
exited on signal 9 (SIGKILL) — memory limit exceeded
Diagnosis: php-fpm is OOM-killing workers. The N+1 in the
Browse tag eager-load is inflating memory; the request dies
before Laravel can log anything.
A 500 with a clean application log is the classic environment ghost — visible only in the layer below, which the agent can now read.
/grove-sync closes the last gap: your
.env versus the environment's actual state.
Not what the docs say Grove uses — what Grove's
own service state files say right now:
/grove-sync
Checking .env against Grove state...
- DB_PORT=3306 in .env, but Grove runs mysql on 3307
- APP_URL=http://localhost, but Grove serves this site at
https://freddy.test (TLS enabled)
2 mismatches. Apply fixes? [y/n]
The APP_URL mismatch is the sneaky one
— asset URLs and redirects half-work until they
don't. One keystroke and the file matches reality.
Shipping slices: /commit and /pr
At the end of a slice, git-intel finishes the job it
started at breakfast. /commit reads the
staged changes and writes the message:
git add -A && git status
/commit
feat: archive view with restore
Add Archive page listing soft-deleted notes with a restore
action. Excludes archived notes from search per SPEC.
Feature test covers archive → restore → reappears in browse.
And /pr does the same for the branch as a
whole — a PR description generated from the actual
commits and diff, not from your memory of them. "Fix
stuff" retires, not because you got more disciplined,
but because the disciplined version became the cheap
version.
Session hygiene
The rhythm within a session matters too, and by now the habits are familiar — Chapter 1 planted most of them:
-
/compactwhen context gets heavy — or rely on auto-compaction and let Elyra pick the moment. -
/costto see what the session has spent so far. (Chapter 13 makes a whole practice of this.) -
/newper feature. Sessions are cheap; context confusion isn't. -
/resumeto pick up an old session — which only works well because… -
/nameevery session, like Chapter 1 said. "freddy: archive view" beats "Session 47".
What you learned
-
Start the day with
/briefing. Two seconds of git archaeology instead of twenty minutes. -
Let the agent read the environment's own
files instead of guessing —
/grove,/grove-logs, and/grove-syncsee the layer below the application. -
Commit messages and PR prose are agent
work.
/commitand/prwrite them from the diff, which is more honest than memory anyway. - Sessions are cheap — start fresh per feature, name them, compact them, and resume them by name.
/cost, smart routing that
automates the Ctrl+P habit, budget-aware
/goal loops, and a local ledger that grades
your models on their actual track record.