Journal Update Directions¶
How to detect activity and append journal Log entries — format, synthesis rules, approval flow
When to use¶
user wants to update their journal with recent activity
Slash command: /wb-journal-update
Linked workflow: daily-journal/update-journal
Related capabilities¶
journal/journal_statejournal/journal_writecontext/context_bundle
Directions¶
Start via mcp__work-buddy__wb_run("update-journal"). Advance with wb_advance after each step.
Target date: Defaults to today. If past midnight (00:00-04:00) and no date specified, ask whether they mean today or yesterday.
Synthesis instructions¶
The Log is a near-real-time event log, not a high-level summary. Each entry anchors a thing that happened at a specific time.
Format: *
Rules: 1. One entry per distinct activity -- a commit, a completed task, a bug fix. If 6 things happened, produce ~4-6 entries. 2. Timestamps from the data -- minute-level. 1:11 PM not 1:00 PM. Never round. 3. Describe the work, not the tools -- 'Fixed vault path normalization' not '1 commit to work-buddy' 4. Aggregate only when truly redundant -- 3 commits fixing same bug = one entry. But bug fix + feature + docs = three entries. 5. Commits and task completions are primary evidence. 6. Keep entries short -- one line, one topic. 7. Cover the full window -- if last entry timestamp is well before collect_until, something was missed.
Sources you MUST consult before synthesizing¶
The collect step writes a bundle directory. Read EVERY relevant file before drafting entries — a single source is never sufficient. Gaps here are how entire days of paper-lane work get silently dropped.
git_summary.md— multi-repo scan across ALL repos underrepos_root. Each commit is bucketed under#### <project>subheadings. This is the primary git evidence; trust it for commit-level activity in every registered project.chat_summary.md— each session header is tagged[<repo-or-project>](e.g.[electricrag],[agentic-experiments],[work-buddy]). Multi-hour sessions in non-work-buddy projects are a strong signal of activity even when no commits landed. Cross-reference with the git summary; if a session is long and the matching repo has no commits, the work is real but unfinished — still log it as exploration.claude_session_summary.md— interpreted Claude Code session activity from the conversation_observability DB. One block per project, listing each session with its commits and uncommitted files. The interpretation makes it easier to spot multi-hour sessions whose work never reached a commit — those are usually exploration that should still be logged. If a session appears here with uncommitted files but no row ingit_summary.md, that is real unfinished work, not a gap.obsidian_summary.md— Running Notes additions, task completions, journal sign-in.session_activity_summary.md— MCP gateway events for THIS session only; useful for sanity-checking your own actions but not project-wide activity.
If you produce a draft Log that mentions only one project across an active multi-hour day, treat that as a smell and re-check sources 1, 2, and 3 before presenting it to the user.
Before writing¶
Present entries to user and wait for explicit approval. User may edit, reword, add, or remove. Do NOT call journal_write until approved.
Calling journal_write¶
The entries parameter is a JSON string containing a list of [time, description] tuples — NOT pre-formatted vault lines. The function handles vault formatting (bullets, tags) internally. Each description should INCLUDE the #projects/<slug> prefix.
Example:
`mcp__work-buddy__wb_run("journal_write", {
"target": "2026-04-15",
"entries": "[[\"6:08 PM\", \"#projects/work-buddy — Fixed consent nesting bug.\"], [\"7:52 PM\", \"#projects/electricrag — Added grader run for 32 ECG batch.\"]]"
})`
Do NOT pass pre-formatted strings like * 6:08 PM - Description. #wb/journal/log — pass raw [time, description] pairs and let the function format them.
Don'ts¶
- Don't fabricate activity not in the signals
- Don't repeat information already in existing Log entries
- Don't include raw git hashes or file paths unless they add meaning
- Don't add entries to sections other than Log
- Don't synthesize from a single source — always cross-reference git + chat + claude_session_summary + obsidian
- Don't omit the
#projects/<slug>prefix — if you don't know the slug, runproject_listand resolve it
--- context from: obsidian/bridge ---