From bureau
Records a faithful, append-only minute of an AI session — intent, decisions, changed files, open threads, and transcript pointer. Use when filing a session into a bureau workspace or when asked to record the current session.
How this skill is triggered — by the user, by Claude, or both
Slash command
/bureau:captureThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A minute is the **faithful, low-authority record** of one session: what was attempted,
A minute is the faithful, low-authority record of one session: what was attempted, what was decided, what changed, what's still open. It is the raw material the canon is later compiled from, and the provenance every cabinet claim points back to. It is append-only — write this session's entry; never edit another session's.
<workspace>/logbook/<YYYY>/<MM>/<safe-session-id>.md (workspace name from bureau.json,
default bureau). Sanitize the session id first — keep only [A-Za-z0-9_-], drop
everything else (no /, no ..); fall back to unknown if empty. The raw session id is
untrusted and must never reach a filesystem path. If a mechanical SessionEnd stub already
exists at that path, enrich it in place: re-emit a clean frontmatter block (preserve
meaning, not the stub's raw bytes), then replace the body.
Frontmatter is the press's SIMPLE parser — it does NOT strip quotes and does NOT do YAML
escaping. So titles are unquoted, every rendered value is a single safe line, and no value
contains ", a newline, or [ ] |. The one exception is transcript: — a bureau-internal
field consumed by bureau (not rendered as a clean value by the press), stored as a
JSON-escaped string so an arbitrary path is safe.
---
title: session <safe-session-id> · <YYYY-MM-DD>
updated: <YYYY-MM-DD>
status: logbook
session: <safe-session-id>
transcript: "<transcript path, JSON-escaped if present, else empty>"
---
## [<ISO-8601>] session <id8> — <one-line summary>
**Intent.** What this session set out to do (1–2 sentences).
**Decisions.**
- <decision> — implies dossier **<Page name>** (link with `[[Page]]` only if it already exists)
**Changes.**
- <path or artifact> (new | updated | removed) — <why>
**Open threads.**
- <unresolved question / next step>
**Source.** transcript `<path>`
[[link]] ONLY if that page already exists; otherwise write the
page name as plain text. bureau:compile creates the page and wires the provenance later.bureau:compile).session <safe-session-id> · <date> — so two sessions whose ids share a prefix can't
collide into a duplicate title (the press rejects duplicate titles). Unquoted, free of
" / [ ] |. The <id8> short form is fine inside the body heading, not the title.Not a summary of the codebase, not a to-do list, not the truth. It is the minutes of one meeting. Truth is adjudicated later, in the cabinets, under consistency checks.
This skill covers ONLY the logbook-capture protocol — turning one session into one faithful,
append-only minute. It does not distil entries into dossiers (that is
bureau:compile), does not render or open the gazette (that is bureau:inspect), and does
not check consistency (that is bureau:lint).
Consumed by:
bureau:file-session command (writes the rich entry interactively, in-session);SessionEnd hook → scripts/capture-stub.mjs (writes the mechanical stub this skill
later enriches).npx claudepluginhub xiaolai/bureau --plugin bureauTakes live notes of the current session's decisions and open threads on demand or at natural checkpoints. Appends to a running minute in a bureau workspace or provides an ephemeral summary.
Writes a short distilled summary of a working session to docs/sessions/YYYY-MM-DD-<topic>.md after substantial work. Useful for maintaining continuity across sessions without dumping raw chat transcripts.
Generates and saves Markdown session logs capturing objectives, file changes, referenced materials, technical notes, future plans, open items, and metrics to resume project work across conversations.