diary
Skill2 starsChanged 16 days agoMITView on GitHub
Write today's diary - what got done, what was wasted, what was learned - bake it into a kid's picture-diary PNG, and update the rules ledger. Use when the user says "write the diary", "diary", "/diary", "picture diary", "일기 써", "그림일기", "오늘 일기", or on a daily schedule.
10 other projects use a version of this.
Adopted by
Most recently taken up by
- memcastle/memcastletheir own version, first seen Nov 1, 2026
- wesen/skillstheir own version, first seen Oct 25, 2026
- poruzetto/ultra-second-braintheir own version, first seen Oct 15, 2026
- birdmanmandbir/skillstheir own version, first seen Oct 9, 2026
- PassionZale/skillstheir own version, first seen Sep 22, 2026
- cwinvestments/memstacktheir own version, first seen Jun 22, 2026
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 10
- cwinvestments/memstack★ 425same name
- maragudk/skills★ 49same name
- Wondermonger-daydreaming/claude-skills-library★ 7same name
- wesen/skills★ 4same name
- PassionZale/skills★ 2same name
- birdmanmandbir/skills★ 1same name
- ikangai/claude-skills★ 1same name
- memcastle/memcastle★ 1same name
- poruzetto/ultra-second-brain★ 1same name
- vbrevik/claude_code_skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repositoryOne other file it gives its agents.
- recallSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 2 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 10 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
Read the JSON: sessions.count, promptSample, corrections.samples (user corrected the agent - heuristic, may include false positives), …
- Very specific: line 25
Read the last 7 diaries in diary/*.md and run node "${CLAUDE_PLUGIN_ROOT}/scripts/rules.mjs" status.
- Distinctive: line 26
If today's mistake is one that already has a tag, it is a repeat.
- Distinctive: line 43
Never write secrets, tokens, customer data or absolute paths.
- Very specific: line 49
When it says CANDIDATE (same tag on 2+ different days), write one imperative rule sentence and add it: rules.mjs add --tag <tag> --rule …
- Very specific: line 53
Only run rules.mjs sync --file <project CLAUDE.md> when the user asked for it or that file already has the <!-- picture-diary:rules --> …
- Very specific: line 80
If the user wants to share it, also render --wide (1200×630 card with the repo link) and add --copy to put it on the clipboard.
“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Daily picture diary
The user's language decides the diary's language (Korean -> --lang ko, English -> --lang en).
Data lives in ${PICTURE_DIARY_HOME:-~/.picture-diary}: diary/<date>.md, diary/<date>.png, entries/<date>.json, rules.jsonl.
Scripts: ${CLAUDE_PLUGIN_ROOT}/scripts/. Everything is local; nothing is uploaded.
1. Collect (facts first, never from memory)
node "${CLAUDE_PLUGIN_ROOT}/scripts/collect.mjs" --date <YYYY-MM-DD> --cwd "$PWD"Read the JSON: sessions.count, promptSample, corrections.samples (user corrected the agent - heuristic, may include false positives),
mostErrors (tool-error-heavy sessions), stopHookLoops (re-prompted by a Stop hook 2+ times), compactions, tokens,
commits.list / commits.reverts, and suggested.weather / suggested.grade (a starting point, you may overrule it with a reason).
Open the suspicious sessions (~/.claude/projects/<file>) before you claim anything. An empty day is a normal day: write a short one or skip.
2. Read the past
Read the last 7 diaries in diary/*.md and run node "${CLAUDE_PLUGIN_ROOT}/scripts/rules.mjs" status.
If today's mistake is one that already has a tag, it is a repeat.
3. Write diary/<date>.md
Plain markdown, short diary voice, concrete numbers, no cheerleading. "Learned nothing today" is a valid entry; do not squeeze.
# <date> (<weekday>) - <the day in one line>
> sessions N, commits N, reverts N, corrections N
## Done today (3-6 items, results not process)
## Wasted today (time, tokens, retries, reverts - with numbers, and why it leaked)
## Learned (something you did not know this morning, with evidence)
## Lesson (what to do differently; say whether it is already enforced by a hook/test)
## Note to tomorrow's meNever write secrets, tokens, customer data or absolute paths. Do not name the user's employer or private projects unless the user wants them public.
4. Mistakes and rules
For each mistake that happened today, give it a short kebab-case tag and record it:
node "${CLAUDE_PLUGIN_ROOT}/scripts/rules.mjs" hit <tag>.
When it says CANDIDATE (same tag on 2+ different days), write one imperative rule sentence and add it:
rules.mjs add --tag <tag> --rule "<one sentence>" --source diary/<date>.md.
Then rules.mjs review (dry run). If it lists GRADUATE, RETIRE or REGRESS, apply with review --apply and tell the user in one line each.
For graduated rules ask whether a hook, linter or test could enforce it instead of a sentence, and offer to write it.
Only run rules.mjs sync --file <project CLAUDE.md> when the user asked for it or that file already has the <!-- picture-diary:rules --> block; show sync --dry-run first otherwise.
A newly written rule candidate goes into the picture's red-pen line (teacher.comment).
5. Draw one scene
Pick the single funniest or most telling moment of the "wasted" section. Write entries/<date>.json:
{ "date": "2026-10-23", "weather": "sun|cloud|rain|storm|fog", "grade": "great|good|try|redo",
"title": "short, <= 20 chars", "drawing": "<svg inner markup>", "text": "...",
"teacher": { "comment": "red pen: today's rule candidate, <= 20 chars" }, "footer": "optional small line" }- weather: sun = everything passed, cloud = ordinary/bumpy, rain = builds or tests failed, storm = outage/reverts/loops, fog = context was compacted and the agent forgot things.
- grade (the teacher's stamp): great = clean day, good = minor slips, try = repeated slips, redo = a mistake that already has a rule happened again. Base it on the numbers.
- text: child's voice, 4-5 short sentences, about 100 characters in Korean (hard limit ~110) or 35 words in English. Plain, a little proud, a little wrong about why. End with one dry adult joke line as its own paragraph (English: "Grown-up note: ...").
- drawing: SVG elements only (no
<svg>wrapper, no<script>, no external images), coordinate space 0 0 1000 560, thick strokes (4-8), flat colors, 5-9 shapes, at most 2-3 short text labels (font-family='Gaegu' font-weight='700'). Keep the subject inside x 110..890 so the--storycrop keeps it, and keep labels above y 520. Stick-figure style; the agent can be a round blob with big eyes. Look at${CLAUDE_PLUGIN_ROOT}/docs/sample-en.jsonfor a worked example. - streak is computed automatically from consecutive
entries/<date>.jsonfiles.
6. Render and look
node "${CLAUDE_PLUGIN_ROOT}/scripts/render.mjs" "$HOME/.picture-diary/entries/<date>.json" [--lang en] [--story](Use $PICTURE_DIARY_HOME instead of ~/.picture-diary if set.) It prints the PNG path. The first run installs its renderer by itself; just wait. If no browser exists it writes an HTML file instead and says so.
Open the PNG with the Read tool and check: nothing clipped, nothing overlapping, the text is in the grid, the drawing is readable. Fix the entry and re-render until it is clean. If the warning says the text needs too many rows, shorten it.
If the user wants to share it, also render --wide (1200×630 card with the repo link) and add --copy to put it on the clipboard. Remind them to look for private project names first.
7. Report
Show the PNG path and the markdown path. One line each for new candidates, graduations, retirements. Remind the user the picture contains what the agent wrote, so skim it before posting (paths and user names are masked automatically; project names and prompts are not).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

