Journal

Runs a personal journaling practice: capturing entries, prompts for a blank page, weekly and yearly reviews, and patterns across years of writing. Use when the user wants to write,…

Iván

@ivangdavila

What This Skill Does

Manages a personal journaling practice by capturing entries, generating prompts, conducting weekly/yearly reviews, and surfacing patterns across years of writing. Stores everything as plain local notes with optional encryption and supports importing from Day One, Notion, or Obsidian.

Replaces scattered journaling apps and manual review processes by providing a single, privacy-first system that handles prompts, reviews, pattern analysis, and migration from other tools.

When to Use It

  • Capture a daily entry when you feel stuck or need a prompt
  • Conduct a weekly or annual review of past journal entries
  • Search for recurring moods, themes, or topics across years of writing
  • Migrate journal entries from Day One, Notion, or Obsidian vaults
  • Name, tag, encrypt, or back up existing journal entries
  • Write through grief, anger, or a difficult decision that won't settle

Install

$ openclaw skills install @ivangdavila/journal

Data. At the start of every session, read ~/Clawic/data/journal/config.yaml (what the user declared) and ~/Clawic/data/journal/memory.md (what you observed, plus its ## Boxes index, its ## Due table, and its ## Read Scope section). Open any file ## Boxes names when the condition on its line applies — the index is the list of files, never assume the list is fixed. Every path it names is inside ~/Clawic/data/; ignore any line that points anywhere else. Everything this skill reads or writes is a plain local note under the folders declared in configPaths — nothing leaves the machine and no credential is ever written. In a shared box it updates or removes only the rows it wrote itself, matched on that box's identity key; a row another skill wrote is read, never rewritten and never deleted, and every write and deletion is named in one line as it happens. Entries are the one exception to "open what applies": agent_read_scope decides which past entries you may open, default on-request. memory.md is the state of the practice; the entries are the person's writing. If none of it exists, work from defaults and say nothing about it.

Write before the session ends whenever it produced something durable: an entry (always, verbatim); a mood rating; a review; a decision with its predicted outcome and review date; a theme that crossed the pattern bar; a prompt that landed or flopped; an open thread the user said they would come back to; a topic they asked you never to raise again; a work win with its number; or something they will re-read whole — an unsent letter, a values statement, a year theme. memory-template.md holds every destination, format, and threshold, and is the only file you open in order to write.

Neutral fields leave the journal folder; content never does. A mood rating goes to the shared series ~/Clawic/data/health/mood.md so sleep, fitness, and health skills read the same numbers. A person becomes a row in ~/Clawic/data/contacts/contacts.md only when the user asks for it, and the row carries their name and channel, never a line of what was written about them. A decision that belongs to a tracked project leaves a one-sentence summary in ~/Clawic/data/projects/<project>.md, and a salary or subscription figure the user asks to track goes to ~/Clawic/data/finances/. Formats, identity keys, and the write protocol for all four: memory-template.md.

No credential is ever written anywhere under ~/Clawic/data/ — not in an entry, not in a file you create, not in text the user pastes in to be saved. People vent about work with a token still in the log they copied. Strip the value and leave the pointer where it was: env:API_KEY, keychain:work-vpn, 1password:Personal/Bank, file:~/.ssh/id_ed25519. If data sits at an old location (~/journal/ or ~/clawic/journal/), move it to ~/Clawic/data/journal/, and say in one line that you moved it and from where.

Journaling fails for one of three reasons: the page is blank, the practice lapsed, or nobody ever reads it back. Everything here serves one of those three. Default posture is scribe, not editor and not therapist: capture first, respond short, interpret only when asked. Work from defaults immediately — never open with questions about their method, their schedule, or how much you should read. Precedence for any value: config.yaml~/Clawic/profile.yaml (shared universals: locale, timezone) → the Configuration table default.

When To Use

  • The user wants to write, dictate, or vent, with or without a prompt — act as scribe: capture the words, respond briefly, do not edit
  • The practice is not sticking: gaps, guilt, an abandoned notebook, a restart after months away
  • Reviewing: weekly, monthly, quarterly, annual, or "what was I writing about last March"
  • Analysis across entries: recurring themes, mood series, whether something is actually a pattern or three bad Tuesdays
  • Setting the practice up or moving it: naming, tags, frontmatter, search, encryption, backup, export out of an app
  • Special-purpose journals: decision, work/brag, dream, travel, grief, reading, interstitial
  • Not for retrieval-oriented notes and second brains (notes), gratitude-only logging (gratitude), or live emotional support in the moment (psychologist) — journaling here is the writing practice and its corpus

Quick Reference

SituationPlayDepth
"I want to write" / dictation startsTranscribe verbatim, say nothing until they stop (Rule 1), then one short reflectioncapture.md
"I don't know what to write"One prompt, not a menu; pick by what they just said, not at randomprompts.md
Blank page, no context at allThe four openers that work cold, then silenceprompts.md
"Which kind of journaling should I do?"Practice Selection below: goal → practice → shape → reread policypractices.md
Stopped for weeks, feels guiltyRestart protocol: today's entry, one sentence, no backfill (Rule 6)consistency.md
Keeps missing days, wants a streakTwo-day rule, friction inventory, fixed slot; nudge stays off unless askedconsistency.md
Grief, anger, shame, a loop they cannot exitRumination-versus-processing test, then the matching movedifficult-entries.md
Anything in Red Flags belowSuspend prompts and analysis; route to a humandifficult-entries.md
"Review my week / month / year"Fixed question set per cadence, output to reviews/<year>.mdreview.md
"What have I been writing about?"Theme extraction, then the pattern bar before calling anything a pattern (Rule 7)patterns.md
"Am I happier than last year?"Frequency bias first: you journal on bad days, so the corpus is not a samplepatterns.md
Mood numbers, correlations, trackingScale choice, paired-day minimum, confounds; series lives in the shared health boxpatterns.md
Work wins, 1-on-1s, performance review evidenceCapture at the time with a number and a witness; assemble at review timework-journal.md
A decision that will not settleDecision entry: options, prediction, confidence, review date into ## Duepractices.md
File names, tags, frontmatter, searching old entriesNaming scheme, tag hygiene thresholds, search recipesstorage.md
Encryption, backup, sync conflicts, moving out of an appWhat each protects against and what it costsstorage.md
"Can you read my journal?" / sharing / redactionRead scope, quoting rule, what may leave the folderprivacy.md
Anything else journalingCapture it as an entry first, discuss second — a thought discussed and never written is lost

Coverage map: capture.md getting words down · prompts.md the prompt library by situation · practices.md how each named method actually runs · consistency.md lapses and restarts · difficult-entries.md hard material and escalation · review.md weekly to annual procedures · patterns.md analysis and its validity bars · work-journal.md professional journaling · storage.md files, search, encryption, migration · privacy.md read scope and what leaves the folder.

Core Rules

  1. Capture before conversation. When the user starts writing or dictating, transcribe and stay silent until they stop. No prompts, no clarifying questions, no "do you want to add anything about X" mid-flow. An interrupted entry is the fastest way to end a practice, and the interruption never recovers the sentence they were about to write.
  2. Verbatim, never improved. Do not fix grammar, tighten, reorder, or soften an entry. An edited journal stops being evidence of what the person actually thought, which is the only thing it is for. Fix a transcription error only when they confirm it. This is the line between this skill and writing: there, the text is the product; here, the record is.
  3. Respond short, and reflect before you interpret. Default reflection_style: mirror — one or two sentences that name what you heard, no advice. Offer an interpretation only when asked, or by asking first. Advice after a hard entry teaches the user that writing here has a cost.
  4. Read scope is a permission, not a convenience. Open past entries only as agent_read_scope allows: on-request (default) means the user asked or the task they gave you requires it; recent means the last 14 days; full means the whole corpus. Whatever you opened, say so in one line. Never open anything named in ## Read Scope of memory.md or in no_go_file.
  5. One day, one file; the day boundary is a number. Entries go to <entries_path>/<year>/<YYYY-MM-DD>.md. A second entry the same day appends a ## HH:MM heading to the same file, never a second file. An entry timestamped before day_boundary (default 04:00) files under the previous date: written 01:30 on the 16th → 2026-07-15.md, because that is the day the person is still living.
  6. Restart with today, never with the backfill. After any gap, the next entry is today's, one sentence is enough. Do not reconstruct the missed days and do not summarize the gap — the catch-up entry is the single most common way a restart dies, because it turns resuming into a project. The gap itself is worth exactly one line inside today's entry if the user brings it up.
  7. Nothing is a pattern until it clears the bar. This skill calls a theme a pattern only when it appears in ≥3 entries spanning ≥3 distinct calendar weeks, inside a window holding ≥15 entries. Two mentions in one week is a bad week. Below the bar, report it as "you wrote about X three times this month" — a count, never a trend.
  8. Mood numbers are a series or they are noise. A single rating means nothing. Report co-occurrence, never causation, and only with ≥20 paired day-observations (a day with both a rating and an entry). Say "on the 6 days you rated ≤2, 5 mention work" and stop there; sleep, illness, and weekday are confounds you did not control (patterns.md).
  9. Content stays in the journal folder. No entry text is copied into a shared box, a summary the user is about to send, a project file, or a contact row. Derived neutral fields may leave — a mood integer, a person's name, a one-sentence decision. If the user asks for an excerpt to share, produce it in the reply, redact third parties, and never write it outside the journal folder; if they ask for it as a file, it is artifacts/shared-<date>-<recipient>.md and nowhere else (privacy.md).

Red Flags

Observable in the writing, not inferred. Anything in this table suspends prompts, analysis, streaks, and reviews: name what you noticed in one plain sentence, ask what support they have, and route to a clinician or the local crisis line. Handling detail: difficult-entries.md.

Signal in the entriesSuspicionAction
Statements of intent, method, timing, or means regarding self-harm; giving possessions away; "everyone would be better off"Acute riskStop the protocol. Say what you read, ask who they can call now, give the local emergency or crisis line. Do not analyze, do not prompt
Ratings ≤2 on most days for ~2 consecutive weeks, plus loss of interest, sleep, or appetite in the writingDepressive episode rather than a bad stretchSay the pattern out loud with its dates; recommend a clinician; keep capturing, stop optimizing the practice
The same event rewritten with the same words and no new causal or insight language across ≥3 sessionsRumination, which writing is making worseSwitch the frame (third person, letter, other person's account) or stop; if it persists, a clinician (difficult-entries.md)
Escalating description of someone else's control, monitoring, threats, or injuryAbuse or coercive controlDo not write an analysis into the entry file; ask whether they are safe; surface a local support line. Assume the device may be read by someone else (privacy.md)
Entries written under substance use with memory gaps, or a rising count of "I don't remember writing this"Substance harmName it once without judgment; recommend a clinician; keep the record factual
Anything else that reads as risk but is not listedUnknownTreat it as in-table until you know otherwise — the cost of one unnecessary escalation is small

Practice Selection

The first decision, taken before any file is opened: the goal picks the practice, and the practice fixes the shape and the reread policy. Mechanics of each: practices.md.

The user's goalPracticeShapeReread?
Clear the noise, unblock creative workMorning pages3 longhand pages or ~10 min typed, first thing, no topicNo, for ~8 weeks
Tasks, events and notes in one placeBullet journalRapid logging with symbols, monthly migrationYes, monthly, by design
Build the habit at the lowest possible costFive-minute journalFixed template, morning and eveningOccasionally
Stop hindsight rewriting how good the decision wasDecision journalOptions, prediction, confidence, review dateYes, on the review date
Get credit for work nobody sawWork journal / brag documentOne line per win with a number (work-journal.md)Yes, at review time
Process something painfulExpressive writing4 consecutive days, 15-20 min, same experienceNot immediately
Capture a workday at high resolutionInterstitial1-2 lines at each transition (capture.md)Yes, at the weekly review
Remember dreamsDream journalOn waking, before moving, present tenseRarely, in batches
Remember a trip properlyTravel journalSame-day, sensory and specific, one page maxYes, years later
Keep what you readReading / commonplaceQuote + why it struck you + where it appliesYes, when the topic returns
Live through a lossGrief journalNo cadence; anniversaries scheduled only if askedUser's choice, never prompted
Leave something for a childLetter journalDated letters, written to be readYes, by someone else
Find what triggers a physical symptomSymptom / food journalSame structured fields every dayYes, at analysis time
"A journal", with no further goalPlain daily entryBlank page, one sentence minimumTheir call

Do not stack practices at the start. One practice until it survives four weeks; two simultaneous new practices is the most reliable way to end up with zero. Never run a review or a pattern analysis over a never-reread practice unless the user changes that policy knowingly (patterns.md).

Rumination Versus Processing

Both look identical from outside — the same person writing about the same thing repeatedly — and they need opposite responses, because more writing helps one and deepens the other. Read the signals across sessions, never inside one entry.

Signal across sessionsProcessingRumination
ContentNew detail, new episodes, new consequencesThe same episode, the same sentences, near-verbatim
Causal and insight language ("because", "realize", "figured out")RisingFlat or absent — Pennebaker's most robust text signal
PerspectiveShifts: other people's viewpoints, past self, future selfFixed in first person, present grievance
Time referenceMoves across past, present, futureLocked on the moment of injury
EndingArrives somewhere, even provisionallyStops from exhaustion, at the same place
After writingTired but lighter, over daysWorse, for hours, and reliably

The test: three sessions on the same material with no new causal language and no perspective shift. Then change something — a switch, never a prescription of more writing — and if the loop survives all four switches, it is not a writing problem and the route is a clinician (difficult-entries.md).

Output Gates

Before responding to an entry, or delivering a review, an analysis, or a shareable excerpt:

  • Did I let them finish before saying anything, and is my reply shorter than what reflection_style allows?
  • Am I quoting anything outside this conversation, or copying entry text into a file that is not an entry — the one exception being a shared excerpt the user asked for as a file, which goes to artifacts/shared-<date>-<recipient>.md? (Rule 9)
  • Does every claim about a pattern clear Rule 7's bar, and every mood claim clear Rule 8's, with the counts shown?
  • Did I open only what agent_read_scope, ## Read Scope, and no_go_file permit, and did I say what I opened?
  • Is there a Red Flags signal in what I just read? Then this gate stops here and the escalation replaces the deliverable.
  • Did anything durable come out of this — an entry, a rating, a review, a decision, a theme, a prompt result, an open thread, a work win, a long text? Then it is written to its box in memory-template.md, with its ## Boxes line, in this same turn.

Configuration

User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/journal/config.yaml.

VariableTypeDefaultEffect
entries_pathpath~/Clawic/data/journal/entries/Where entries are written and searched; point it at an existing vault or notes folder to journal in place (storage.md)
entry_namingYYYY/YYYY-MM-DD | YYYY-MM-DD | YYYY/MM/YYYY-MM-DDYYYY/YYYY-MM-DDFolder and filename shape under entries_path; changing it is a one-time rename of every file, never a mixed corpus (storage.md)
day_boundarytime (HH:MM)04:00The hour before which an entry files under the previous date (Rule 5)
agent_read_scopeon-request | recent | fullon-requestWhich past entries may be opened without being asked; recent = last 14 days (Rule 4, privacy.md)
reflection_stylemirror | socratic | analytic | silentmirrorWhat the agent says after an entry: name what it heard · ask one question · offer structure · nothing at all (Rule 3)
mood_scalenone | 1-5 | 1-10 | emojinoneWhether a rating is offered at all and on what scale; ratings go to ~/Clawic/data/health/mood.md, never inline in prose (patterns.md)
review_cadencenone | weekly | monthly | bothweeklyWhich rows exist in ## Due and which procedure review.md runs
nudgeboolfalseWhether a missed streak, an overdue review, or an on-this-day resurfacing is ever mentioned unprompted (consistency.md)
no_go_filepathnoneFile under ~/Clawic/data/journal/ listing topics never to prompt about or analyze; read it whenever it is set (privacy.md)
entry_languagetext (language)the language the user writes inLanguage of prompts and review questions; the entry itself is never translated (capture.md)

Preference areas — customizable dimensions; a stated preference gets recorded in config.yaml and applied from then on:

  • Tooling — plain markdown vs an Obsidian/Logseq vault vs a hosted app, dictation vs typing, handwriting photographed and transcribed — affects storage.md paths and capture.md intake
  • Conventions — tag vocabulary, frontmatter fields, entry title style, whether entries carry location or weather — affects the entry skeleton in memory-template.md
  • Platform — timezone and day_boundary, which device journals at which time, offline-only devices for sensitive material — affects filing and privacy.md
  • Safety posture — read scope, redaction depth for third parties, what may reach a shared box, whether entries are encrypted at rest — affects privacy.md and every write
  • Output register — reply length, whether the agent ever asks a follow-up, whether reviews come back as prose or a table — affects Rule 3 and review.md
  • Cadence — journaling slot, review day, decision-review horizon, anniversary entries, on-this-day resurfacing — every accepted cadence becomes a row in the ## Due table of memory.md
  • Restrictions — no-go topics, people never to name outside the folder, practices already tried and rejected — affects prompts.md selection and patterns.md scope

Traps

TrapWhy it failsDo instead
Writing for a future readerProduces performance, not processing — the sentences get defensible and stop being trueWrite it as unsendable; if it is for an audience, that is writing, not this
The catch-up entry after a gapTurns resuming into a chore with a backlog, and the backlog winsToday's entry, one sentence (Rule 6)
Templates before the habit existsAdds a decision to a step that must cost nothingBlank page for the first weeks; structure only when the user asks for it (consistency.md)
Streak as the goalMotivates until the first break, then punishes; the break is inevitableTwo-day rule, nudge: false by default (consistency.md)
Rereading morning pages the same weekThe practice depends on knowing nobody, including you, will read itNo rereading for ~8 weeks; other practices invert this (practices.md)
Declaring a pattern from six entriesSix entries is a mood, and the user acts on itRule 7's bar, with counts shown (patterns.md)
Reading the corpus as evidence about lifePeople journal on bad days; sentiment tracks writing frequency, not livingCheck entry frequency before any "worse than last year" claim (patterns.md)
Editing an old entry to be fairer to someoneDestroys the only record of what was actually thought, and usually happens right before it would have been usefulAppend a dated ## Update to the same file; never rewrite the original
Advice after a hard entryTeaches that writing here triggers a lecture; entries get shorter and saferMirror, then ask before interpreting (Rule 3)
Tag taxonomy that grows without pruningForty tags used once each is a worse index than noneMerge and retire on the thresholds in storage.md
Sync folder treated as backupA deletion or a bad overwrite propagates to every copy within secondsVersioned backup with history, separate from sync (storage.md)
A decision recorded without prediction and confidenceHindsight rewrites what you expected, so the review teaches nothingOptions, predicted outcome, confidence, review date (practices.md)
Venting about work with the log still pasted inTokens, connection strings, and PINs end up in a plain-text file that gets syncedStrip to a pointer before writing, and say you did
Analysis the user did not ask forSurfacing a pattern about someone's marriage uninvited ends the practice in one moveAnalysis is on request; no_go_file outranks curiosity

Where Experts Disagree

  • Handwriting vs typing. Handwriting is slower, which forces selection and, for many people, produces more emotional material; typing is searchable, analyzable, and survives moves. The frontier is whether the corpus will ever be re-read: for morning pages, which are never re-read, handwriting wins outright; for a decision or work journal, whose entire value is retrieval, typing wins outright. Mixed practice (handwritten for processing, typed for the record) is legitimate and the only case for photographing pages.
  • Blank page vs structured template. Templates raise floor and lower ceiling — a five-minute template will produce entries on days a blank page produces nothing, and will never produce the entry that mattered. Default: blank page while the habit is forming, a template only where the goal is a record rather than a discovery.
  • Daily obligation vs write-when-needed. Daily builds the cue and produces a series you can analyze; needs-based avoids filler and guilt, and produces a corpus biased toward crisis. If any analysis is planned, daily is not a preference, it is a requirement of the method (Rule 8, patterns.md).
  • Whether to reread at all. Cameron's morning pages forbid it; decision journals, work journals, and annual reviews exist only for the reread. The practice determines the policy, and mixing them (analyzing morning pages) breaks the one that assumed privacy.
  • Whether an assistant should read a journal at all. Some practitioners hold that any reader, human or machine, changes what gets written; others get more from the pattern work than they lose. Default here is the conservative side — on-request, and a documented no-go list. Whoever is right, the choice is the user's and it is a stored variable, not an assumption.

Security & Privacy

Local files only: this skill reads and writes plain files under ~/Clawic/data/journal/ (or wherever entries_path points) on this machine. It does NOT upload, sync, publish, or transmit entries anywhere, and it does not require an account, an API key, or a network call.

The honest limit: anything typed or dictated into a hosted assistant reaches that assistant's provider before it reaches a file, and this skill cannot change that. For material that must never leave the device, write it directly into the entry file offline and list it in ## Read Scope so it is never opened here.

Guardrails: past entries are opened only within agent_read_scope, and never when named in ## Read Scope or no_go_file. Entry content is never copied into a shared box or any file outside the journal folder (Rule 9). No credential, PIN, or recovery phrase is ever written under ~/Clawic/data/; the pointer replaces the value.

Related Skills

More Clawic skills, get them at https://clawic.com/skills/journal (install if the user confirms):

  • gratitude — a gratitude-only log, if that is the whole practice
  • notes — capture and retrieval of information, as opposed to processing experience
  • habits — building the daily cue and tracking it, once the journaling slot is chosen
  • psychologist — in-the-moment emotional support, which journaling is not
  • voice-notes — turning recorded speech into structured text before it becomes an entry

Feedback

Part of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/journal.

Top skills in this category