Session Prompts
Three prompts for the five terminals. The first two go
into whichever terminal you are working in; the third is run from here and checks all
five. They talk to each other through HANDOVER.md in the
OS root — one database serves every surface, so a change in one is a change in all.
Every terminal · first message
Read before you touch anything.
1. Which surface is this, and what is live RIGHT NOW?
- git log --oneline -15, and git status. Uncommitted work is somebody's
unfinished thought; find out whose before you build on it.
- The repo is NOT the live state. Check what the browser actually loads.
HTTP 200 proves nothing here: nginx try_files falls back to index.html,
so a missing file returns 200 with HTML in it. Check Content-Type and
the first bytes.
2. Read this surface's own context file end to end if it has one:
cableos -> cableos-context.md
suppliers -> suppliers-context.md
website / one / os -> none yet. Say so; do not invent one mid-session.
CLAUDE.md and MEMORY.md are already in your context. The context file is
where every settled decision lives, and it is longer than you think.
3. Read the top of /opt/asgt/os/HANDOVER.md. Five terminals share one
database; that file is how the other four tell you what they changed
underneath you. Anything addressed to this surface, act on before you
start.
4. Check the live edges before you assume anything:
- cableos: js/*.mjs are fetched over HTTP by the Edge Function with a
5-minute TTL. EDITING ONE IS A PRODUCTION CHANGE WITH NO DEPLOY.
- One Supabase project serves all five surfaces. public and one are
different schemas with different tables of the same name.
- Anything behind auth you cannot test. Say so rather than implying you did.
5. Then tell me, in five lines or fewer:
- what the last session did, and anything in HANDOVER.md for this surface
- what is live versus what is in the repo
- anything uncommitted or half-finished
- the open questions this surface is waiting on me for
- what you propose to do first
Do not start work until you have told me that.
Every terminal · last message
Before you stop, write down what you learned. In this order.
1. What did you learn that someone could NOT get by reading the code?
A fix visible in the diff is not a memory note. A PATTERN across three
fixes is. So is a correction I gave you, and why I gave it.
Write it to this project's memory directory with frontmatter
(name, description, metadata.type = user|feedback|project|reference),
link related notes with [[wiki-links]], add ONE line to MEMORY.md.
Update an existing note rather than creating a near-duplicate.
2. Did anything you did today make a document WRONG? Fix it in the same pass.
A stale map is worse than no map, because four other terminals trust it.
Check especially: counts you changed, a condition a comment depends on,
and anything in the surface's context file your work now contradicts.
If a section states a rule as universal and you just made an exception,
amend the section - do not leave the next session to find out by building
the wrong thing.
3. Did you learn a rule that cost something? Add it to the context file as a
SHAPE, not as an incident - and include WHAT WOULD MAKE IT WRONG. A rule
with no stated failure condition gets applied where it does not belong.
4. Did your work reach past this surface? A shared table, a SECURITY DEFINER
gate, an Edge Function, /opt/asgt/ui, or a fact another surface relies on.
If so, append four lines to /opt/asgt/os/HANDOVER.md in the format at the
top of it. Nothing local — a handover full of local detail is one nobody
reads.
5. Before writing any of it, VERIFY. Do not record a number you did not
measure this session. Do not write a note the repo already states.
Then tell me in a few lines: what you saved, what you corrected, and what you
did NOT verify. Nothing else.
OS terminal · when knowledge feels stale
You are the bookkeeper for all five terminals. Do not build features today.
The five: website (/opt/asgt/website), one (/opt/asgt/one), os (/opt/asgt/os),
cableos (/opt/asgt/cableos), suppliers (/opt/asgt/suppliers). Memory lives in
/root/.claude/projects/-opt-asgt-<name>/memory/.
MEASURE FIRST, WRITE SECOND. Every claim below is checked against the database,
the code or the live page before you change a word. A tidy file full of
confident wrong statements is worse than the mess.
1. FIND THE LIES. For every memory note and every context file, take the
statements that are checkable - counts, "nothing does X yet", "every row
is Y", file paths, table names - and check them. Anything the system has
outgrown gets struck through with the measured truth and the date, not
deleted. A claim that INVERTED matters most: it will be trusted hardest.
2. FIND THE DUPLICATES. Two notes saying the same thing means the second was
written by a session that did not read the first. Merge into the older
name and leave the link.
3. FIND THE GAPS. website, one and os have no context file. Settled decisions
for those surfaces are living in memory notes or nowhere. Say which, and
propose the smallest file that would hold them.
4. READ HANDOVER.md END TO END. Anything acted on by every surface it names
can be struck through; anything still outstanding, name the surface that
owes it. This file is the only place the five terminals speak to each
other, so a stale entry is a message nobody will deliver twice.
5. KEEP MEMORY.md HONEST. One line per note, no content in the index, and
every note it names must exist.
6. TRIM WHAT IS COSTING CONTEXT. A note that is only true of one afternoon,
or that the repo already states plainly, is charging every future session
for nothing. Name them; delete none without telling me.
Then report: what was wrong, what you merged, what is missing, and what you
propose to delete. Do not delete anything until I answer.