End of day review with learning capture, daily plan completion tracking, and meeting follow-up surfacing.
Conduct an end-of-day review to capture progress, track what you actually accomplished vs. planned, surface meeting follow-ups, and set up tomorrow.
Run inline in the current conversation by default. Do not fork merely because this skill was selected. Only run in the background when the user explicitly asks for a background review or the host has already obtained a specific background-work approval for this review.
Before authoring anything, check for existing day state: today's archived plan, today's completion metrics, and any review or closeout already written for today. If existing day state is present, enter verifier mode. Read it, compare it with the current tasks and meeting evidence, and surface omissions or proposed corrections. Do not create a competing review or overwrite the existing author. Any proposed write still follows the confirmation and write-guard rules below.
This skill stays inline as described above: it keeps session awareness, it asks the user the questions, and it owns every interactive step. What it does NOT do inline is the bulk read-gathering, which on a mature vault (hundreds of notes, thousands of indexed messages, a live calendar and multiple integrations) can be large enough to exhaust the main conversation before the useful work starts.
So the gathering phase is delegated to one general-purpose subagent via the
Agent tool, using the self-contained prompt in this skill's
AGENT_INSTRUCTIONS.md:
.claude/skills/daily-review/AGENT_INSTRUCTIONS.md.{{TARGET_DATE}}, {{TOMORROW_DATE}},
{{TOMORROW_DATE_PLUS_1}}, {{DAY_NAME}}, {{MONTH}}, {{DD}}, {{YYYY}}).subagent_type: "general-purpose", that prompt, and
a short description.07-Archives/Reviews/Daily_Review_YYYY-MM-DD.md,
then run the interactive steps from its findings and complete the placeholder
sections.The subagent inherits MCP connections, runs in its own context, and that context is freed when it completes, so only its findings reach this conversation.
Use AGENT_INSTRUCTIONS.md verbatim. Read the file and pass its content as
the subagent prompt, substituting only the placeholders. Do NOT hand-write a
replacement brief from what you already know about the day: that is how steps get
silently dropped, and the omission looks complete because nothing errors. If
context from this conversation is worth adding, APPEND it to the file's content;
never substitute for it.
Two caveats that are load-bearing:
.claude/settings.json reach a
subagent's tool calls is not something a skill should assume either way.
Nothing in this skill's gathering depends on a hook; the subagent's writes
must stand on their own.AGENT_INSTRUCTIONS.md. A missing subagent must never mean a missing result.Stays inline: verifier mode, meeting follow-up surfacing, learning capture and categorisation, tomorrow's focus confirmation, the Dex Inbox check (Step 2.55), the retrospective insight (Step 9.5), the evening journal, and the rating prompt. These need the user, so they must not be delegated.
Read System/user-profile.yaml → communication section and adapt accordingly.
Find files modified TODAY:
TODAY=$(date +%Y-%m-%d)
find . -type f -name "*.md" -newermt "$TODAY 00:00:00" ! -newermt "$TODAY 23:59:59" 2>/dev/null
Critical rules:
Before gathering context, ensure today's meetings are in the vault by running /process-meetings today. This pulls any unprocessed meetings from the meeting source (Otter.ai, Granola, etc.), creates meeting notes, updates person/company pages, and extracts tasks — so the rest of the review has complete data.
✅ YYYY-MM-DD matching today)Read 02-Week_Priorities/Week_Priorities.md for:
Check 00-Inbox/Meetings/ for meeting notes from today (should now include anything just pulled from the meeting source).
Check if semantic search is available by looking for qmd in PATH. If available, use it to map today's work to priorities and goals more intelligently.
Map completed tasks to goals: For each task completed today, search semantically:
qmd query "task description here" --limit 3
Look for connections to quarterly goals or weekly priorities that keyword matching would miss. Example: completing "finalize stakeholder deck" might connect to a goal about "executive engagement strategy" — same concept, different words.
Enrich meeting follow-ups: For each meeting today, search for related past discussions:
qmd query "meeting topic" --limit 5
Surface any commitments, decisions, or context from previous meetings on the same theme.
Priority alignment check: For each weekly priority, search for today's work that advanced it:
qmd query "priority title/description" --limit 5
Catch work that moved the needle but wasn't explicitly tagged to the priority.
Check for tasks added from phone during the day that weren't triaged in the morning plan:
Use: reminders_list_items(list_name="Dex Inbox")
If the tool is unavailable or errors (Apple Reminders phone-capture is optional and may not be set up on this machine): skip this step silently — do not surface an error for a feature the user never enabled. Note: Reminders access never works when Claude Code runs inside the VS Code extension (macOS never shows the permission dialog to that process) — see the known limitation in 06-Resources/Dex_System/Calendar_Setup.md. Do not advise reinstalling or reconfiguring; skip silently.
If items found:
If empty: Skip silently.
Setup: If the user hasn't created a "Dex Inbox" Reminders list yet, mention it: "You can capture tasks from your phone by adding them to a 'Dex Inbox' list in Apple Reminders. They'll show up here automatically."
Check if tasks were completed on phone since the morning plan:
Use: reminders_list_completed(list_name="Dex Today")
If the tool is unavailable or errors (Apple Reminders sync is optional and may not be set up on this machine): skip this step silently — do not surface an error for a feature the user never enabled. Note: Reminders access never works when Claude Code runs inside the VS Code extension (macOS never shows the permission dialog to that process) — see the known limitation in 06-Resources/Dex_System/Calendar_Setup.md. Do not advise reinstalling or reconfiguring; skip silently.
For each completed item:
update_task_status(task_title="...", status="d")"📱 Synced from phone:
- ✅ "Follow up with Hero Coders" — marked done in Dex"
Also check for tasks completed in Dex today that still have active Reminders:
# For each task completed today in Dex, check if a matching Reminder exists
Use: reminders_find_and_complete(list_name="Dex Today", title_query="task title")
Clean up completed items:
Use: reminders_clear_completed(list_name="Dex Today")
If nothing to sync: Skip silently.
Compare what you planned vs. what you did.
Look for 00-Inbox/Daily_Plans/YYYY-MM-DD.md (today's date).
From the "Today's Focus" section, extract the 3 items you planned to focus on.
For each planned focus item:
Surface this:
"📊 Daily Plan Completion:
You planned 3 focus items this morning:
- ✅ Prep for Acme meeting — Complete
- 🔄 Write pricing proposal — In progress (about 60% done)
- ❌ Reply to Mike — Didn't get to it
Completion rate today: 1 of 3 (33%)
What happened with #3? Should it carry to tomorrow?"
If tracking completion rates:
System/metrics/daily-completion.md with today's rateFor each meeting you had today, surface follow-ups.
From calendar or meeting notes, list meetings that happened today.
Use: get_meeting_context(meeting_title="...", attendees=[...])
Then prompt:
"📍 You met with Sarah Chen today (Acme Quarterly Review)
Any follow-ups to capture?
- Action items you committed to?
- Things they owe you?
- Decisions that need documentation?
(Type your follow-ups or 'none')"
For any follow-ups mentioned, create each one via Work MCP create_task — never by
writing checkboxes into Tasks.md directly (hand-written tasks get no task ID, so
completion sync, dedup, and goal rollups can't track them). Pass:
pillar (inferred per the Task Creation flow, confirmed with the user) and prioritypeople: the page path(s) of who you met (e.g. 05-Areas/People/External/Sarah_Chen.md)
— this keeps the person page's Related Tasks table in sync automaticallyaccount if the meeting was with a company you trackdue (YYYY-MM-DD) if a date was mentionedweekly_priority_id / goal if the follow-up clearly serves oneWith user-verified information:
Use: get_week_progress()
Show how today's work moved weekly priorities:
"Week Progress Update:
After today, you're at:
- Priority 1: ✅ Complete (finished today!)
- Priority 2: 🔄 60% (moved from 40%)
- Priority 3: ⚠️ Still not started
You have 2 days left. Tomorrow should focus on Priority 3."
Scan today's conversation for learnings:
Write to System/Session_Learnings/YYYY-MM-DD.md.
Then ask: "I captured [N] learnings from today's session. Anything else you'd like to add?"
Check if any learnings should be elevated to pattern files:
06-Resources/Learnings/Mistake_Patterns.md06-Resources/Learnings/Working_Preferences.mdGet user confirmation before adding.
Based on:
Suggest 3 focus items for tomorrow:
"Suggested focus for tomorrow (Thursday):
- Priority 3 — It's been untouched all week and you have 2 days left
- Finish pricing proposal — 40% left, should be quick to complete
- Reply to Mike — Carried from today
Tomorrow's shape: Moderate (4 meetings). You have a 2-hour block in the afternoon.
Does this feel right?"
At the end of the review, check if there's a relevant backlog idea to surface:
list_ideas(status="active", min_score=70) from Improvements MCPRetrospective Insight: Today's meeting processing struggles connect to idea-027 (RAG-Powered Vault Search) — semantic search could make finding meeting context much faster. Worth exploring? Run
/dex-improve idea-027.
Rules:
Update System/usage_log.md to mark daily review as used.
Analytics (Silent):
Call track_event with event_name daily_review_completed and properties:
wins_countlearnings_countThis only fires if the user has opted into analytics. No action needed if it returns "analytics_disabled".
Check System/user-profile.yaml → journaling.evening.
If journaling.evening: true, run the actual /journal evening flow from
.claude/skills/journal/SKILL.md — do not just mention reflection and move on, and do
not substitute a single ad-hoc question. The real flow:
00-Inbox/Journals/
Offer it plainly: "You have evening journaling enabled — want to do a quick reflection before we close the day?" If the user declines, skip without pushing back and continue to Step 12.
If journaling.evening is false or missing: Skip this step silently.
Create 07-Archives/Reviews/Daily_Review_YYYY-MM-DD.md:
---
date: YYYY-MM-DD
type: daily-review
plan_completion_rate: X%
---
# Daily Review — [Day], [Month] [DD], [YYYY]
## 📊 Plan vs. Reality
**Planned focus:**
1. [x] [Planned item 1] — ✅ Complete
2. [ ] [Planned item 2] — 🔄 In progress (X%)
3. [ ] [Planned item 3] — ❌ Didn't start
**Completion rate:** X of 3 (X%)
**What happened:** [Brief explanation of deviations]
---
## ✅ Accomplished
- ✓ [Completed item 1]
- ✓ [Completed item 2]
---
## 🔄 Progress Made
| Area | Movement |
|------|----------|
| [Priority 1] | [What moved forward] |
| [Priority 2] | [What moved forward] |
---
## 📊 Weekly Priorities Progress
After today:
- **Priority 1:** [Status/progress] — [emoji]
- **Priority 2:** [Status/progress] — [emoji]
- **Priority 3:** [Status/progress] — [emoji]
**Days remaining this week:** [X]
---
## 📍 Meeting Follow-Ups
### From [Meeting Name]
- [ ] [Follow-up action] — due [date]
- [ ] [Follow-up action]
---
## 💡 Insights
- [Key realization or connection]
- [Important learning]
---
## 🚫 Blocked/Stuck
| Item | Blocker | Status |
|------|---------|--------|
| [Item] | [What's blocking] | [Status] |
---
## ❓ Discovered Questions
1. [New question that emerged]
2. [Thing to research]
---
## 📅 Tomorrow's Focus
Based on weekly priorities and today's carryover:
1. [Priority 1 — tied to weekly focus]
2. [Priority 2]
3. [Priority 3]
**Tomorrow's shape:** [stacked/moderate/open]
---
## 🔄 Open Loops
- [ ] [Thing to remember]
- [ ] [Person to follow up with]
- [ ] **Awaiting:** [What you're waiting on from others]
---
*Generated: [timestamp]*
*Daily completion rate: X%*
*Week progress: X/3 priorities on track*
After generating the review, call get_skill_ratings(skill_name="daily-review") from Work MCP.
If 3+ ratings exist and average has dropped below 3.0 over the last 5 entries: Add one line at the end of the review output:
"Your daily reviews have been averaging [X]/5 lately. Common note: '[most recent note]'. Want to adjust the format?"
If no ratings exist or average is 3.0+: Say nothing. Don't mention ratings at all.
Then: Run /identity-snapshot silently in the background if System/identity-model.md is older than 7 days (check file mtime). Don't announce this.
| Integration | MCP Server | Tools Used |
|-------------|------------|------------|
| Meetings | Meeting source MCP (via /process-meetings today) | Fetches and processes unprocessed meetings |
| Work | work-mcp | list_tasks, get_week_progress, get_commitments_due, analyze_calendar_capacity |
| Calendar | calendar-mcp | calendar_get_today |
| Reminders | calendar-mcp | reminders_list_completed, reminders_find_and_complete, reminders_clear_completed, reminders_list_items |
npx skills add davekilleen/daily-review下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks OpenClaw to add a note, list notes, search notes, or manage note folders.
Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.
Use when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
Manage Trello boards, lists, and cards via the Trello REST API.
Category:productivity