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:
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
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.