name: journal description: | This skill should be used when the user wants to write a journal entry, log an observation, capture a discovery, record a design insight, or note a lesson learned. Entries are timestamped and stored in notes/journal/. Triggers on: "journal", "write a journal entry", "log this", "observation", "I learned", "note to self", "capture this for later". version: 1.0.0
Journal Skill
Write timestamped journal entries to notes/journal/ to preserve knowledge across sessions.
When to Write a Journal Entry
Write a journal entry when you encounter something that:
- Would be useful to know in a future session but doesn't belong in code comments
- Spans multiple issues or isn't specific to one task
- Is a discovery about the codebase, domain, or tooling
- Is a design insight or architectural observation
- Is a gotcha, workaround, or non-obvious behavior
Do NOT write a journal entry for:
- Task-specific progress notes (use your ticket/issue system)
- Durable design decisions (use
notes/DECISIONS.md-- decisions are one-liners, not entries) - Agent rules and patterns (use
CLAUDE.mdor auto-memory) - Trivial observations that won't matter next week
Creating an Entry
Use the script to create entries -- it generates the correct filename and scaffolds the frontmatter:
# Agent creating an entry
${CLAUDE_PLUGIN_ROOT}/skills/journal/scripts/new-entry.sh ai vllm-batch-limit --tags vllm,performance
# Human creating an entry
${CLAUDE_PLUGIN_ROOT}/skills/journal/scripts/new-entry.sh hu checkpoint-design-notes --tags architecture
The script outputs the full file path. Open it and write the body.
Filename Template
<YYYYMMDD>T<HHMM>Z.<ai|hu>.<slug>.md
- Date and time: UTC, generated by the script
- Origin:
aifor agent-written,hufor human-written - Slug: short, descriptive, kebab-case
The origin marker is immutable. It captures who created the note, not who last edited it.
Content
Write the entry as plain markdown. Keep it concise -- a journal entry is a note, not an essay.
The script scaffolds optional YAML frontmatter from --tags and --refs flags. Humans may skip frontmatter entirely. Agents should include tags when the topic is clear and refs when working in the context of a specific issue.
References
If the entry relates to other journal entries, issues, wiki pages, or external resources, add a ## References section at the bottom:
## References
- [[related-note]]
- [Earlier observation on timeouts](20260207T0900Z.ai.vllm-timeout-mystery.md)
Use [[wikilinks]] for notes pages and relative paths for journal cross-references.
Reasoning About Authoritativeness
Not all journal entries carry equal weight. The primary authority signal is being linked from a hub file. A journal entry referenced from notes/INDEX.md, docs/, or another promoted entry has been actively vouched for.
When entries conflict, use this hierarchy:
- Human-written (
hu.in filename) -- highest baseline trust - AI-written, human-edited (
ai.in filename, butgit logshows human commits) -- validated - Linked from a hub file (
notes/INDEX.md,docs/) -- promoted - AI-written, recent (< 2 weeks old) -- likely still accurate
- AI-written, old, not linked -- treat as possibly stale
When in doubt, flag the conflict to the user rather than silently choosing.
Promoting Entries
Journal entries start as raw observations. They gain authority through promotion -- being linked from hub files:
notes/INDEX.md-- project-facing index of active knowledgedocs/-- durable reference content
If an entry isn't linked from any hub, it's raw material -- useful for search, but not actively trusted.
Consolidation
Over time, entries accumulate. Periodically consolidate:
- Read entries on a shared topic
- Write a consolidated entry (or page in
docs/) summarizing the current understanding - Move the original entries to
notes/journal/archive/ - Update hub files to point to the consolidated page
Consolidation is itself a form of validation. A consolidated page is more authoritative than the raw entries it replaced.
Searching the Journal
Before starting work on a topic, search existing entries:
# Find entries by topic
Glob: notes/journal/*.<topic>*.md
# Search entry contents
Grep: pattern="<keyword>" path="notes/journal/"
Also check notes/INDEX.md for curated links.
Directory Structure
notes/journal/
├── archive/ # stale or consolidated entries
├── 20260209T1430Z.ai.vllm-batch-limit.md
├── 20260209T1512Z.hu.checkpoint-design-notes.md
└── ...