Skip to content

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EOS

End of session. Five skills for Claude Code that turn a working session into a document you and or your team can read. You can then check it against what actually happened.


Example: Friday at 5 PM

You spent the afternoon on a CSV import. Rows came in with a trailing comma, a filter should have caught empty fields and didn't, and it took most of the day to find. The manager wants your efforts in the ticket. You close the window.

The session holds the only complete record of the events, and when a session closes the record disappears.

On Monday you write four lines from memory and you only remember the wins. The filter that looked correct didn't work and you don't remember the errors. Six weeks later someone tries it again.

The wall

We put up skills that you can use to turn a session into a document. They read the transcript, record failures as well as wins. They write for people rather than a model.

One model writes the document. The same model checks it. Ask it to confirm its own draft and it confirms. Writer equals checker, and the check inherits every judgment that produced the sentence. A fabricated line reads exactly like a true one, which explains "it looks fine."

A document that names no command, path or number, and a checker that declines to pass it:

Terminal: session-writeup checked 0 assertions, NO ASSERTIONS FOUND, exit 2

You can't walk back an unchecked document. If you wrote code that failed you need an audit trail. We can't depend on just session memory even if you keep your markdown files in a database.

How the code gets stored

We suggest that you write it where git will place it. If you don't know how to set up a git server, you may have no access to a versioning system. session-writeup puts your EOS document at docs/sessions/YYYY-MM-DD-short-slug.md in the repository you worked in, so a reviewer can find it in the same diff as the change. It creates the directory, never overwrites a file, prints the path, and doesn't commit. That decision stays yours.

Then run a program that can fail. The session-writeup skill carries a Python script called verify_writeup.py. It pulls every command, path and number out of the finished document, looks for each one in the session record, and exits non-zero on anything it can't find. It reads the finished text against the transcript. Claude Code runs it for you, and you can run it yourself.

Take the register from the developer, not from a template. It uses one sample: what you captured in that session. It makes it humanized. It measures the length of your sentences run, whether you use contractions, what you call the things in your own system. Type four terse prompts and it stays plain rather than inventing a voice for you. A reader understands plain writing rather than an impression of your vernacular.

The skill makes four passes, each reporting rather than rewriting:

skill what it does
concision names which of five things made the draft long, checks five structural slots, finds the verb buried in a noun
american-usage flags where an American would have chosen a different word, preposition or spelling. Five families, each flag carrying its confidence
prose-audit counts ten mechanical signals per thousand words, and shows what a revision changed
quote-check opens the file a quotation cites and looks for the words, and for the line

The method behind them isn't something we invented. The concision pass follows the Stanford Graduate School of Business method with the five capital sins from Joseph McCormack's Brief. The rules pass follows Strunk and White. american-usage starts from Swan and Smith on first-language interference and from Pawley and Syder, who named nativelike selection in 1983. Every finding names which standard it came from, so you can argue with the standard rather than with the tool.

What it costs now

Accuracy, measured. Time, not measured.

A document describing a real session, with three things planted in it that never happened: a script that does not exist, a test run nobody ran, an invented count. The checker flagged all three and passed the seven true statements. Remove the three and it passes everything.

Two fixtures ship with it, so you can reproduce what follows rather than take it from us. From the top of the repository:

cd skills/session-writeup

python3 scripts/verify_writeup.py tests/writeup-ungrounded.md --session tests/session.jsonl
  8 assertions checked, 4 not found            exit 1

python3 scripts/verify_writeup.py tests/writeup-grounded.md --session tests/session.jsonl
  8 assertions checked, every one found        exit 0

The ungrounded fixture, checked against the session it claims to describe:

Terminal: 8 assertions checked, 4 not found, four flagged lines, exit 1

quote-check refuses the same way, on a document that cites nothing:

Terminal: NO QUOTATIONS FOUND, nothing was verified, exit 2

The gap that is still open. Nobody has measured writing this up at the end of a session against reconstructing it on Monday. We haven't either. Closing it takes one team, both ways, over a month of real tickets. Until somebody runs that, treat any time saving you read here as unmeasured, including ours.

Install

npx skills add tadelstein9/eos
/plugin install session-writeup@eos

Pass --copy if you want real files. npx skills add symlinks by default.

Asking for the document

You have to ask. At the end of a session you tell Claude Code what you want, in whatever words you use:

write this up
document what we did
summarize the changes for the ticket
what is left to do

Say which of the two you want. One covers everything that happened. The other gives the state of the code now: what it does, what nobody finished, what comes next. They aren't the same document, and guessing wrong costs you the last five minutes of your session.

Claude Code runs the checker on the finished document. You can also run it by hand:

python3 scripts/verify_writeup.py docs/sessions/2026-08-10-csv-import.md \
  --session ~/.claude/projects/my-project/SESSION.jsonl

Before you trust it

Read the document before you send it. The checker looks for every command, path and number in the session record. It confirms you wrote down what happened. It can't tell you that you understood it. Describe the wrong cause and the sentence still passes.

Check a finding before you change anything. Rename a file after the session ends. Its path drops out of the transcript, and the checker reports it missing. The sentence holds. The flag doesn't. Decide which, and say so in the document. Don't edit a true line to keep the tool quiet.

Tell it where the session is. You pass --session every time. It has no default. Under Claude Code the transcripts sit in ~/.claude/projects/, one directory to a project.

Leave --include-assistant off unless you know why you want it. It adds the assistant's own prose to the record. A document written during the session can match itself.

When it breaks

Open an issue at https://github.com/tadelstein9/eos/issues

Name the skill, paste the error, and give the command you ran. If a check fired on something that was correct, include the line it flagged.

Where these came from

We use Claude Code every day, and these came out of a working application, Colophon Works.


Written by Tom Adelstein. Apache-2.0.

About

End-of-session documentation for Claude Code. Five skills that turn a working session into a document your team can read, then check it against what actually happened.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages