Logbook
A template. Before using this, fill in PROJECT_NAME and ARTIFACT_URL below, and adjust the
writing rules to match how your user actually wants to be talked to — the defaults here are a
reasonable starting point, not fixed requirements.
Only one session should write to a given logbook. No cloud routine, no sub-agent, no second
session publishing entries in parallel — two publishers with different instructions produce a
mixed, inconsistent feed. Decide which session owns it (usually the main orchestrator for the
project) and have every other session leave it alone.
A Twitter-style feed artifact where Claude reports to the user. Short entry every hour (driven by
/loop), plus ad-hoc entries at any time.
- Project:
PROJECT_NAME — set this once, use it in the header and in your own head as
"what is this logbook for."
- Artifact URL:
ARTIFACT_URL — publish logbook.html once with the Artifact tool, then
paste the URL it gives you here. Every future publish must pass this same url, or you'll
create a second, separate artifact by mistake.
- Canonical local file:
~/.claude/skills/logbook/logbook.html (edit this, then republish)
What the logbook is for (read this before writing anything)
The user wants to know what changed for them: what they can go and try out, what got better,
what is broken. They are not interested in who did the work, how it was organised, or what is
currently in flight.
Write about outcomes:
- A feature they can now use, and where to find it (link or page name).
- A fix to something they reported or would notice, described from their side ("the copied link
on the phone is complete again", not the mechanism).
- An improvement they would feel: faster, clearer, less broken.
- Something that broke or is at risk, and whether they need to do anything.
Do not write about:
- Agents, lanes, models, job or deployment ids, commit shas, QA cycle numbers, findings row numbers.
- Work in progress, dispatches, plans, what is being investigated. Report a thing when it is live,
not when it starts.
- Internal refactors, test coverage, tooling and process changes, unless they visibly change the
product.
- Reassurance filler ("everything is stable", "memory is fine") unless that IS the news.
If an hour produced nothing the user can try or feel, say so in one line. That is a perfectly good
entry, and much better than dressing up process as progress.
How to write an entry
- Read
~/.claude/skills/logbook/logbook.html. If another session may have published since (or a
publish conflicts), first Artifact read the URL and sync the local file to the live version
before editing.
- Prepend a new
<article class="entry TYPE"> at the top of the .feed section, under today's
.day header (create the day header if it is a new day, format Monday, September 1).
- Update the "updated YYYY-MM-DD" date in the header
.sub.
- Maintain the Open questions box at the top: add a
<li> for each new unanswered question
(with the time it was asked); remove items once the user has answered. If empty, use
<li class="none">No open questions right now.</li>.
- Republish with the Artifact tool:
file_path = the local file, url = the artifact URL above.
Never publish without url (that would create a separate artifact). Do not pass favicon on
republish.
- The local file IS the source; keep it in sync.
Entry template
<article class="entry report">
<div class="avatar">C</div>
<div>
<div class="meta">
<span class="name">Claude</span>
<span class="handle">@claude</span>
<span class="dot">·</span>
<span class="time">Sep 1, 17:50</span>
<span class="chip report">Report</span>
</div>
<div class="body">
<p>Human-readable summary...</p>
<img src="data:image/jpeg;base64,..." alt="what it shows">
</div>
</div>
</article>
Types (both the entry class and the chip class/label):
report / chip Report: what shipped or changed for the user this hour.
alert / chip Alert: something broke, is at risk, or needs awareness now.
question / chip Question: needs an answer from the user. Also add it to the Open questions box.
Writing rules
These are opinionated defaults — good starting rules, not requirements. Adjust them to match
actual feedback from your user; keep the ones that hold up, drop or rewrite the ones that don't.
- Outcomes, not ceremony. Every sentence should tell the user something they can act on or
try. Cut anything that is about how the work happened.
- Short. Hard cap: 3 sentences or 3 one-line bullets per hourly report, about 60 words, one
paragraph. Lead with the outcome. Alerts and questions may be one sentence longer. Never edit,
shorten, or trim a published entry afterwards — the artifact should always show the full
original text of every entry, so readers can trust the timeline.
- Show it, do not just describe it. Illustrate visual and UI changes with a screenshot in the
entry. Prefer an after-screenshot of the real thing on the relevant device; a before/after pair
when the change only makes sense as a comparison. A phone change gets a phone screenshot.
- Human-readable, not agent jargon. Assume the user reads this on their phone.
- Times in the user's timezone, format
Sep 1, 17:50 (date + 24h time in every entry). Alerts
and questions are regular posts in the timeline, in chronological position; open questions are
additionally mirrored in the pinned box.
- Links are welcome (the exact page or screen the user should open). Use
<a href>.
- Keep the feed newest-first. When the feed exceeds ~10 days, trim the oldest days.
Screenshots
Embed as compressed data URIs so the page stays self-contained:
sips -Z 800 -s format jpeg -s formatOptions 60 shot.png --out /tmp/shot.jpg
printf '<img src="data:image/jpeg;base64,%s" alt="...">' "$(base64 -i /tmp/shot.jpg)"
- Resize to at most 800px wide, JPEG quality about 60.
- One or two images per entry, only where they carry the point.
- The whole page must stay under 16MB. When it grows large, replace the oldest images with a
short text note in place of the
<img>, leaving the entry text untouched.
Hourly loop behavior
On a /loop tick, ask one question: what changed for the user since the last entry?
Check what actually reached production (deployments that finished, fixes now live) and what the
user reported that is now fixed. Write one report entry about that, with a screenshot when it is
visual. If nothing reached them, one line saying so. If a real problem or decision surfaced, add a
separate alert or question entry rather than burying it in the report.
1---2name: logbook3description: Write an entry to the user's logbook artifact (hourly reports, plus ad-hoc alerts and questions). Use on every /loop tick and whenever something needs the user's attention.4---56# Logbook78**A template.** Before using this, fill in `PROJECT_NAME` and `ARTIFACT_URL` below, and adjust the9writing rules to match how your user actually wants to be talked to — the defaults here are a10reasonable starting point, not fixed requirements.1112**Only one session should write to a given logbook.** No cloud routine, no sub-agent, no second13session publishing entries in parallel — two publishers with different instructions produce a14mixed, inconsistent feed. Decide which session owns it (usually the main orchestrator for the15project) and have every other session leave it alone.1617A Twitter-style feed artifact where Claude reports to the user. Short entry every hour (driven by18/loop), plus ad-hoc entries at any time.1920- **Project:** `PROJECT_NAME` — set this once, use it in the header and in your own head as21 "what is this logbook for."22- **Artifact URL:** `ARTIFACT_URL` — publish `logbook.html` once with the Artifact tool, then23 paste the URL it gives you here. Every future publish must pass this same `url`, or you'll24 create a second, separate artifact by mistake.25- **Canonical local file:** `~/.claude/skills/logbook/logbook.html` (edit this, then republish)2627## What the logbook is for (read this before writing anything)2829The user wants to know **what changed for them**: what they can go and try out, what got better,30what is broken. They are not interested in who did the work, how it was organised, or what is31currently in flight.3233**Write about outcomes:**34- A feature they can now use, and where to find it (link or page name).35- A fix to something they reported or would notice, described from their side ("the copied link36 on the phone is complete again", not the mechanism).37- An improvement they would feel: faster, clearer, less broken.38- Something that broke or is at risk, and whether they need to do anything.3940**Do not write about:**41- Agents, lanes, models, job or deployment ids, commit shas, QA cycle numbers, findings row numbers.42- Work in progress, dispatches, plans, what is being investigated. Report a thing when it is live,43 not when it starts.44- Internal refactors, test coverage, tooling and process changes, unless they visibly change the45 product.46- Reassurance filler ("everything is stable", "memory is fine") unless that IS the news.4748If an hour produced nothing the user can try or feel, say so in one line. That is a perfectly good49entry, and much better than dressing up process as progress.5051## How to write an entry52531. Read `~/.claude/skills/logbook/logbook.html`. If another session may have published since (or a54 publish conflicts), first `Artifact read` the URL and sync the local file to the live version55 before editing.562. Prepend a new `<article class="entry TYPE">` at the top of the `.feed` section, under today's57 `.day` header (create the day header if it is a new day, format `Monday, September 1`).583. Update the "updated YYYY-MM-DD" date in the header `.sub`.594. Maintain the **Open questions** box at the top: add a `<li>` for each new unanswered question60 (with the time it was asked); remove items once the user has answered. If empty, use61 `<li class="none">No open questions right now.</li>`.625. Republish with the Artifact tool: `file_path` = the local file, `url` = the artifact URL above.63 Never publish without `url` (that would create a separate artifact). Do not pass `favicon` on64 republish.656. The local file IS the source; keep it in sync.6667## Entry template6869```html70<article class="entry report">71 <div class="avatar">C</div>72 <div>73 <div class="meta">74 <span class="name">Claude</span>75 <span class="handle">@claude</span>76 <span class="dot">·</span>77 <span class="time">Sep 1, 17:50</span>78 <span class="chip report">Report</span>79 </div>80 <div class="body">81 <p>Human-readable summary...</p>82 <img src="data:image/jpeg;base64,..." alt="what it shows">83 </div>84 </div>85</article>86```8788Types (both the entry class and the chip class/label):89- `report` / chip `Report`: what shipped or changed for the user this hour.90- `alert` / chip `Alert`: something broke, is at risk, or needs awareness now.91- `question` / chip `Question`: needs an answer from the user. Also add it to the Open questions box.9293## Writing rules9495These are opinionated defaults — good starting rules, not requirements. Adjust them to match96actual feedback from your user; keep the ones that hold up, drop or rewrite the ones that don't.9798- **Outcomes, not ceremony.** Every sentence should tell the user something they can act on or99 try. Cut anything that is about how the work happened.100- **Short.** Hard cap: 3 sentences or 3 one-line bullets per hourly report, about 60 words, one101 paragraph. Lead with the outcome. Alerts and questions may be one sentence longer. **Never edit,102 shorten, or trim a published entry afterwards** — the artifact should always show the full103 original text of every entry, so readers can trust the timeline.104- **Show it, do not just describe it.** Illustrate visual and UI changes with a screenshot in the105 entry. Prefer an after-screenshot of the real thing on the relevant device; a before/after pair106 when the change only makes sense as a comparison. A phone change gets a phone screenshot.107- **Human-readable, not agent jargon.** Assume the user reads this on their phone.108- **Times** in the user's timezone, format `Sep 1, 17:50` (date + 24h time in every entry). Alerts109 and questions are regular posts in the timeline, in chronological position; open questions are110 additionally mirrored in the pinned box.111- Links are welcome (the exact page or screen the user should open). Use `<a href>`.112- Keep the feed newest-first. When the feed exceeds ~10 days, trim the oldest days.113114## Screenshots115116Embed as compressed data URIs so the page stays self-contained:117118```bash119sips -Z 800 -s format jpeg -s formatOptions 60 shot.png --out /tmp/shot.jpg120printf '<img src="data:image/jpeg;base64,%s" alt="...">' "$(base64 -i /tmp/shot.jpg)"121```122123- Resize to at most 800px wide, JPEG quality about 60.124- One or two images per entry, only where they carry the point.125- The whole page must stay under 16MB. When it grows large, replace the oldest images with a126 short text note in place of the `<img>`, leaving the entry text untouched.127128## Hourly loop behavior129130On a /loop tick, ask one question: **what changed for the user since the last entry?**131132Check what actually reached production (deployments that finished, fixes now live) and what the133user reported that is now fixed. Write one `report` entry about that, with a screenshot when it is134visual. If nothing reached them, one line saying so. If a real problem or decision surfaced, add a135separate `alert` or `question` entry rather than burying it in the report.