taproot
mirrorThe dotfiles and containers I use to set up a machine for development, one container to write code in and another that runs a local coding model on the desktop's GPU.
alpine-linuxcaddydevelopment-environmentdockerdotfileshomelabinfrastructureneovimserver-configurationtmux
1---
2name: journal
3description: Wrap the current session into the git-versioned memory vault at code/memory. Invoke when Isaac says "journal" or "memory" as a standalone instruction (the signal the session is wrapping), or after any meaningful unit of work (a task/subtask wrapping, a decision, a commit or deploy, or a real discussion worth remembering, including non-engineering ones). Writes today's journal entry, updates the relevant notes and index, and commits.
4---
5
6# Journal / memory wrap
7
8The full, authoritative contract lives in `~/code/memory/CLAUDE.md`. Read it if you
9need detail. This skill is the quick operational checklist so a wrap is never skipped
10or done halfway.
11
12## When to run
13
14- **Trigger words.** Isaac saying "journal" or "memory" alone means the session is
15 wrapping and he is moving on. Do the full wrap immediately, from whatever context
16 the session has. Do not wait to be asked twice.
17- **After each meaningful unit of work**, not only at session end: a task or subtask
18 wrapping, a notable decision, a commit or deploy, or a real discussion (including
19 non-engineering: a question answered, a topic thought through, a preference
20 expressed). Capture it while fresh and do not batch the whole session into one entry.
21
22## The vault
23
24`~/code/memory` is plain Markdown, no database, Obsidian-compatible, **local-only git**
25(no remote). It is separate from the built-in Claude auto-memory at
26`~/.claude/projects/-home-dev/memory/` (terse hot facts auto-loaded every session). The
27vault is the richer, narrative, version-controlled record. Layout:
28
29```
30journal/ YYYY-MM-DD.md dated session logs: what we did/decided/discussed
31projects/ one living note per workspace project: state, open threads
32decisions/ ADR-style records for notable choices, with rationale
33topics/ evergreen concept/reference articles
34people/ profiles for the owner and recurring people
35index.md master retrieval map: one line per note
36```
37
38## Steps
39
401. **Append to today's journal** `~/code/memory/journal/YYYY-MM-DD.md` (create if
41 absent). Add a section with a short timestamp heading covering: what we did, what we
42 decided, anything discussed worth remembering, and open threads for next time.
432. **Update the relevant note** in `projects/`, `decisions/`, or `topics/` if project
44 state changed or a notable choice was settled. Create a new note when a durable topic
45 or decision emerges.
463. **Update `index.md`** whenever a note is *added* (one line: `- [[slug]]: one-line hook`).
474. Capture **why**, not just what, since the diff already records what. Link related
48 notes liberally with `[[wikilinks]]` (filename without extension), since a link to a
49 not-yet-written note is fine, it marks something worth writing later.
505. **Commit** (no `Co-Authored-By` trailer, present tense, `memory:` prefix):
51
52 ```
53 git -C ~/code/memory add -A && git -C ~/code/memory commit -m "memory: <short summary>"
54 ```
55
56## Conventions
57
58- No em dashes, en dashes or semicolons. Use commas, periods, or parentheses.
59- Frontmatter on every note: `title`, `type` (journal|project|decision|topic|person),
60 `created`, `updated`, `tags`. Filenames lowercase kebab-case, journals `YYYY-MM-DD.md`.
61- Convert relative dates ("next week") to absolute dates when recording.