ravila4/daily-journal
Draft, organize, or update development journal entries. Use when user requests daily journal generation, work review, standup preparation, or asks "what did I work on today/this week?
npx skills add https://github.com/ravila4/claude-adhd-skills --skill daily-journal
An interactive, conversational skill for creating meaningful daily journal entries. Conversation first, data second.
Commits are not what matters. They're often mechanical, LLM-generated, or busywork. A journal should capture:
Conversation first, data second. Ask the user about their day. Use collected data (git, sessions) only as a *memory jogger* for days when they can't remember what they did.
Context matters. Weekends are different from workdays. Mornings are different from evenings. Hobby projects are valid. Tooling optimization is valid.
flowchart TD
Start([/daily-journal]) --> CheckTime{What time is it?}
CheckTime -->|Morning| MorningFlow
CheckTime -->|Afternoon/Evening| EveningFlow
subgraph MorningFlow[Morning: Planning Mode]
M1[Read yesterday's entry] --> M2[Show yesterday's open questions]
M2 --> M3{Ask: What's your focus today?}
M3 --> M4{Ask: Any carryover from yesterday?}
M4 --> M5[Create/update today's entry with intentions]
end
subgraph EveningFlow[Afternoon/Evening: Reflection Mode]
E1{Ask: What did you work on?} --> E2{Ask: How did it go?}
E2 --> E3{Ask: What's still open?}
E3 --> E4[Offer data as memory aid]
E4 --> E5{Anything else to add?}
E5 --> E6[Synthesize journal from conversation]
end
subgraph DataAid[Data as Memory Aid]
D1[Run collect_day_data.py] --> D2[Show: I see activity in X...]
D2 --> D3{Worth mentioning?}
D3 -->|Yes| D4[User describes in their words]
D3 -->|No| D5[Skip]
end
E4 --> DataAid
DataAid --> E5
MorningFlow --> Save
EveningFlow --> Save
Save[Save to Obsidian] --> End([Done])
style MorningFlow fill:#e8f4e8
style EveningFlow fill:#e8e8f4
style DataAid fill:#f4f4e8
Check the current time before starting. Different times trigger different modes:
| Time | Mode | Primary Questions |
|------|------|-------------------|
| Before noon | Planning | What's your focus? Carryover from yesterday? |
| Afternoon (12-5pm) | Mid-day check | How's the day going? Stuck on anything? |
| Evening (after 5pm) | Reflection | What did you work on? How did it go? |
| Weekend | Lighter touch | What did you tinker with? Any hobby wins? |
How to check:
# Get current time
date "+%H:%M %A" # e.g., "14:32 Saturday"
Use this to:
weekend tag, lighter expectationsweekend tag automaticallyThe collect_day_data.py script is a secondary tool, not the primary input.
When to use it:
How to present it:
I see some activity that might jog your memory:
- 3 commits in my-project
- 45 sessions in data-pipeline
- Files touched in config skill
Any of these worth mentioning in your own words?
Running the script:
uv run ~/.claude/skills/daily-journal/scripts/collect_day_data.py [--date YYYY-MM-DD] [--skip-sessions]
Clearly differentiate personal voice from LLM context using Obsidian-compatible markdown:
Use blockquotes for the user's own words and feelings:
> Spent most of the morning yak-shaving on my dev tools again.
> It felt productive in the moment but I'm not sure it was the best use of time.
> The API debugging is getting frustrating - every fix reveals another issue.
Use regular text or callouts for factual context:
> [!info] Context
> Continued from [[2026-01-23]] - API authentication debugging.
> Related to the data pipeline project.
Use collapsible sections for technical details that shouldn't dominate:
<details>
<summary>Technical: Auth token fix</summary>
The issue was that refresh tokens were expiring before the batch job completed.
Fixed with: token rotation middleware.
</details>
| Callout | Role | Example titles |
|---------|------|----------------|
| [!info] | Context, continuity, collapsible references | "Context", "Reference URLs" |
| [!success] | Wins, milestones, progress | "Win", "Big day", "Progress" |
| [!warning] | Concerns, friction, blockers | "Blocker", "Growing Pain" |
| [!question] | Open loops, things still thinking about | "Still thinking about..." |
| [!bug] | Bugs discovered | "Script Bug Found" |
| [!note] | Observations, non-actionable insights | "Observation: ..." |
Use the collapsible variant ([!info]-) for bulky reference material (URLs, log snippets).
See callout-conventions.md for detailed examples and placement guidance.
The final journal should feel personal, not mechanical:
---
date: {date}
tags:
- daily-log
- {weekend if applicable}
- {project tags from conversation}
---
## {date} - {day of week}
> {User's summary of the day in their own words - from conversation}
### What I Worked On
> {User's description of their focus, in their voice}
> [!info] Context
> {Any relevant background - continued from yesterday, etc.}
### How It Went
> {User's reflection on the experience - what felt good, what was frustrating}
### Open Loops
> [!question] Still thinking about...
> - {Open questions from conversation}
> - {Blockers mentioned}
### Tomorrow
> {User's stated intentions for tomorrow}
---
*{Day character} - {One-line takeaway}*
## Related
- [[{relevant links}]]
| Flag | Description |
|------|-------------|
| --date YYYY-MM-DD | Target date (default: today) |
| --quick | Skip interactive questions, just use data (not recommended) |
Never delete historical context. Journal entries are a record of thinking over time - even wrong thinking has value.
~~Outdated info~~~~Thought X caused the bug~~ Turned out to be a race conditionExamples:
### Open Loops
> [!question] Still thinking about...
> - ~~Should I re-run step 1 after the config change?~~ No, step 2 handles it
> - ~~Investigate flaky test in pipeline~~ Was a CI caching issue, fixed 2026-01-25
> - New question that replaced the old one
Every entry ends with a footer: a horizontal rule followed by an italicized one-liner that captures the overall character of the day. This goes after the last content section and before the Related links.
Format: *{Day character} - {One-line takeaway}*
The "day character" is a brief descriptor of the day's shape -- how long, what kind of energy. The takeaway summarizes the arc.
---
*Full day - Auth system working, merged feature branches, but blocked on deploy permissions for live testing*
Guidelines:
Don't:
Do:
Take ravila4/daily-journal from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.