shadowsys-memphis

eod-checkpoint

Write the day down before it is lost — verify the live system, collect what changed, and produce EODs&Checkpoints/EOD-YYYY-MM-DD.md in the fixed shape Ray reads in a fresh terminal. Trigger on "eod", "end of day", "checkpoint", "write the day down", "wrap up", when Ray says he is done for the night, or as the nightly scheduled routine. Every line in the file must be verified by a command whose output you saw, or labeled "my read."

shadowsys-memphis 1 Updated 3w ago
GitHub

Install

npx skillscat add shadowsys-memphis/brainguardian/eod-checkpoint

Install via the SkillsCat registry.

SKILL.md

EOD Checkpoint

Raised 2026-09-07. The day this was written, three sessions touched one checkout, four
plans were made and dropped, and Ray said "everything is so disorganized right now." The
EOD is the fix: one dated page that a fresh session can start from without this thread.

Ray's rules that govern the file: show your work; 12-hour time, never 17:00; one job;
say patient, not tenant; name things specifically; date everything; report issues and
changes, not what passed.

1. Proof block first (AGENTS.md rule 2)

cd /Users/memphis-dev-m4/BrainGuardian
pwd; git rev-parse --show-toplevel; git branch --show-current; git remote -v; git status --short

If anything looks wrong, stop and say so. Do not write the EOD on top of an unknown tree.

2. Read the live state — do not recall it

Run all of these. Paste the outputs you rely on into the file.

export $(grep '^DATABASE_URL=' .env | xargs); P=/opt/homebrew/opt/postgresql@16/bin/psql
date "+%-I:%M %p %Z"
curl -s -o /dev/null -w "healthz %{http_code}\n" http://127.0.0.1:8080/api/healthz
pgrep -fl "artifacts/api-server/dist/index.mjs"
ls -l artifacts/api-server/dist/index.mjs | awk '{print "bundle built", $6,$7,$8}'
git log --oneline -1; git log origin/$(git branch --show-current)..HEAD --oneline | wc -l | xargs echo "unpushed:"
git ls-files | wc -l | xargs echo "tracked files:"
$P "$DATABASE_URL" -t -A -c "select key||' = '||value from app_settings where key in ('call_test_mode','assessment_settings') order by key;"
$P "$DATABASE_URL" -t -A -F' | ' -c "select id, to_char(started_at at time zone 'America/Los_Angeles','HH12:MI AM'), reached from call_sessions where started_at >= now()::date order by id;"
$P "$DATABASE_URL" -t -A -F' | ' -c "select to_char(ran_at at time zone 'America/Los_Angeles','HH12:MI AM'), job_name, outcome, left(detail,90) from cron_job_log where ran_at >= now()::date and outcome in ('warn','error') order by ran_at;"
$P "$DATABASE_URL" -t -A -c "select 'care_events today: '||count(*) from care_events where created_at >= now()::date;"

The sandboxed date has lied before (said 12:19 AM at 7:45 AM). Cross-check against the
newest line in ~/Library/Logs/brainguardian-api.log before writing any time.

3. Collect the day

From the session, if there is one; from git log --since=midnight, cron_job_log, and
the API log if there is not (a scheduled run has no chat context — say so in the file).

  • What went live, with the time and how it was verified (a log line from the running PID
    beats a config value).
  • Commits, hashes, pushed or not.
  • Tried and failed, with the exact error text — never restated in more specific words.
  • Traps that cost time: a wrong assumption, a lying tool, a column name.
  • New standing rules from Ray, in his words, and whether they are saved to memory.
  • What is still open, ranked by harm to Pops' care, not by size.

4. Write the file

Path: EODs&Checkpoints/EOD-YYYY-MM-DD.md (add -late if one already exists for the day).
Headings, in this order, exactly:

# EOD YYYY-MM-DD — start here in a fresh terminal
## First five minutes          (commands + the state they should show)
## The morning, in order       (what Ray decides, then what to do)
## What went live today
## Traps that cost time today
## Ray's standing rules (new today)
## What I would pick up first (after the morning items)

Rules for the content:

  • No phone numbers, no transcript text, no diagnoses. Reference call_sessions.transcript
    and the transcript file by name instead.
  • Every "is" claim traces to a command in section 2 or a hash. Anything else is "my read."
  • Do not invent items to fill a heading. An empty heading with "nothing today" is correct.
  • Under 100 lines. Ray reads it on a phone.

5. Save what must outlive the session

Any new rule from Ray goes to auto-memory as a feedback file and an index line, the same
night. Anything that belongs to every tool goes on the list for AGENTS.md — do not edit
AGENTS.md inside this skill; name it in the file and let Ray say go.

6. Commit, and ask before pushing

git add "EODs&Checkpoints/EOD-YYYY-MM-DD.md"
git commit -m "docs(eod): EOD for YYYY-MM-DD — <one line, what the day was>"

Push is an AGENTS.md rule-11 operation: say it is committed and ask for the word, unless
Ray has already said push in this session. Never push if the tree had changes you did not
make.

7. Put it in front of Ray

SendUserFile the EOD with status: proactive if he is away, normal if he is here.
One sentence: what the day was, and the first thing he decides tomorrow.

Running it autonomously

A nightly scheduled routine (/schedule, e.g. 9:30 PM Pacific, after the last touchpoint)
can invoke this skill. It runs with no chat context, so it produces the state-only variant
from section 2 and git/log history, and says so at the top. Creating that routine is a
one-time action that needs Ray's go; it is not part of this skill.