daily-diary
v1.0.1AI-assisted daily diary system. Automatically review the day's conversations, extract key events, decisions, and insights, then generate a structured diary draft for user review. Use when the user wants to keep a daily journal, needs help writing diary entries, wants to reflect on their day, or when...
Installation
Daily Diary
Generate structured diary entries by reviewing conversation history.
Workflow
Diary generation follows these steps:
- Review today's conversations → extract topics, achievements, decisions, insights
- Generate draft → fill structured template, write in first person
- Deliver to user → present draft with prompts for additions
- Archive → save to
~/diary/YYYY/MM/YYYY-MM-DD.md
Step 1: Review Conversations
Scan all conversations from today. Extract:
- Topics discussed — projects, domains, problems worked on
- Concrete achievements — tasks completed, features shipped, issues resolved
- Key decisions — choices made and their rationale
- Challenges — blockers, bugs, frustrations encountered
- Insights — ideas, lessons learned, perspectives shifted
Sensitive data filter — ALWAYS strip all credentials, keys, personal identity information, server addresses, and configuration file contents from extracted content before including in diary. Redact paths containing usernames to ~/. Content the user explicitly marked as confidential must also be excluded.
Step 2: Generate Draft
Write in first person ("I"). Tone: warm, natural, like writing to future self.
Use this structure:
📔 YYYY-MM-DD Diary
☀️ Today's Summary
(One sentence capturing the day's main thread)
✅ Achievements
- Achievement 1
- Achievement 2
🧭 Key Decisions
- Decision: rationale and conclusion
💡 Reflections
(Insights or lessons extracted from conversations)
📋 Tomorrow's Plan
- [ ] Task 1
- [ ] Task 2
🎯 One-Line Mood
(Leave blank for user to fill)
🏷️ Tags
#tag1 #tag2 #tag3
Quality rules:
- Be specific with details, avoid generic summaries
- Preserve the user's original phrasing when it captures something well
- Extract 3-5 topic tags from content (domains like #AI, #product; types like #decision, #milestone; moods like #productive, #focused)
- Omit sections with no content rather than filling with filler
- Double-check that no sensitive data made it into the draft before delivery
Writing style: - State facts directly. Drop filler phrases like "Additionally", "It is worth noting", "In this context" - Vary sentence length. Short punchy sentences, then longer ones with detail. Mix it up, avoid mechanical repetition - Do not inflate significance. "Finished security hardening" not "Completed a landmark security upgrade marking a new era for the system" - Use concrete facts over vague attribution. "Deployed rate limiting" not "Took a series of critical measures" - Have opinions and warmth. Diaries are personal — say "Hit a nasty bug today" or "Really happy with this solution"
Step 3: Deliver to User
Append this footer to every diary draft:
---
💬 To complete your entry:
1. How was your mood today? (one sentence is fine)
2. Anything to add or change?
3. Reply ✅ to archive as-is
Step 4: Archive
| User response | Action |
|---|---|
| Adds content | Merge additions, then save |
| Replies ✅ or "ok" | Save immediately |
| No reply within 24h | Save as draft (status: unreviewed) |
Save path: ~/diary/YYYY/MM/YYYY-MM-DD.md
Append status line at end of file:
---
*Generated by [agent-name] at HH:MM | Status: confirmed/unreviewed*
Empty Day Handling
When no conversations exist for today:
- Briefly inform user: "No conversation records today."
- Offer 2 guided prompts from the reference file. See quick-prompts.md.
- If user responds, build entry from their input.
- If no response, skip today's entry.
Guided Prompts
When the user says they have nothing to write, or when conversation content is thin, use prompts from quick-prompts.md to draw out content.
Rules: pick at most 2-3 questions per session. Choose based on the day's conversation topics. Keep the tone light — journaling should never feel like homework.
Cron Setup
Add to cron/jobs.json for automated daily triggers:
{
"name": "daily-diary",
"schedule": { "expr": "0 20 * * *", "kind": "cron", "tz": "Asia/Shanghai" },
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"message": "It's evening diary time. Review today's conversations and generate a diary draft following the daily-diary skill workflow.",
"timeoutSeconds": 180
},
"delivery": { "channel": "feishu", "mode": "announce", "to": "chat:<group-id>" }
}
Adjust tz, channel, and to for your setup.
Storage Structure
~/diary/
├── YYYY/
│ └── MM/
│ └── YYYY-MM-DD.md
└── weekly/ (future: auto-generated weekly summaries)
Security
- Filter all sensitive data (credentials, personal identity info, etc.) before writing. When uncertain, omit.
- Diary files are local-only. Never transmit beyond the configured delivery channel.
- May read user personality files to match writing style, but never copy raw content into entries.
- Never access system configuration or credential directories unrelated to diary generation.
- Only deliver to the conversation owner. Drafts remain drafts until user confirms.
Scope
This skill ONLY:
- Reads conversation history for content extraction
- Creates and edits files within ~/diary/
- Delivers diary drafts through the user's configured channel
This skill NEVER: - Modifies files outside the diary directory (reading personality files for tone matching is allowed) - Sends diary content to external services or third parties - Deletes diary entries without explicit user approval - Stores any sensitive information in diary text - Makes network requests beyond the configured delivery channel