My workspace keeps a logbook of everything it does, and it is three separate records rather than one file. Each has a different author, a different job, and gets written at a different moment.
- Prompts - one record per job, written by the Claude Code job itself as its last act.
- Sessions - one narrative per feature, written by the Claude chat when the work is finished.
- Traces - one record per loop run, written by the loop script.
A prompt record is the build record. Every Claude Code job I run closes by filling in a template: what it was told, what it did, which files it touched, how it went, and anything that broke. It is deep in two places only, how it went and what went wrong, and terse everywhere else. It also grades itself out of five and says whether the instruction it was given would have produced that result unaided. Nobody writes these by hand. The job writes its own before it is allowed to finish.
A session is the story. That one comes from the Claude chat I design the work in, not from the job, and it gets written at the end of a feature rather than at the end of a task. It covers what the feature was, what got built, the calls that mattered and what each one ruled out, and what bit along the way. The job knows what it did; the chat knows why it was asked to.
A trace is the system's own record. Every time the loop runs it writes one file: which records arrived, what it applied, what it queued, anything odd it noticed, and the full state of the system at that minute. No prose, no opinion. It is there so that when something looks wrong three weeks later I can read what the system actually did rather than reconstruct it.
The split is by author. The job, the chat and the loop each know something the other two do not, and one combined log would have to serve all three and would end up serving none. There is also no status field anywhere in it - a record's folder is its state, so unprocessed, processed and needs-a-human are three folders rather than a flag that can go stale.
The layer I want next is the conversation itself. The job record carries the instruction it was given, but nothing about the twenty messages that produced that instruction. Exporting the Claude chat data to JSON and syncing it into the workspace against the same job number would put the actual messages underneath the record of what they produced, which is the one part of the reasoning the logbook currently never sees.
The benefits:
- query about the past
- find mistakes
- security audits
- client work proof
- investor conversations
- write your own CV
- reference previous jobs that are similar to new ones
- scan for related info in the moment
Are you logging what your system does, and if so, is it one log or split by who wrote it?