Daily Review logo

Daily Review

Community
davekilleen
daily-review

Close out the day: what got done vs planned, meeting follow-ups, learnings, and tomorrow's focus. Use when the user says 'review my day', 'wrap up', 'end of day', or it's evening. Also use proactively when the day's work is clearly done. Not for setting up the morning; use `daily-plan`.

Overview

Publisherdavekilleen
RepositoryDex
Skill namedaily-review
Stars
481
Forks
130
Bundled files
1
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by davekilleen on GitHub. Read the source before you install it.

Installation

Install the Daily Review AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/davekilleen/Dex.git /tmp/Dex
mkdir -p .claude/skills
cp -r /tmp/Dex/packages/dex-agent-plugin/skills/daily-review .claude/skills/daily-review
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Daily Review in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Daily Review on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Daily Review is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Purpose

Conduct an end-of-day review to capture progress, track what you actually accomplished vs. planned, surface meeting follow-ups, and set up tomorrow.

Execution mode

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.

Delegated gathering (large-vault scaling)

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:

  1. Read .agents/skills/daily-review/AGENT_INSTRUCTIONS.md.
  2. Substitute its placeholders ({{TARGET_DATE}}, {{TOMORROW_DATE}}, {{TOMORROW_DATE_PLUS_1}}, {{DAY_NAME}}, {{MONTH}}, {{DD}}, {{YYYY}}).
  3. Call the Agent tool with subagent_type: "general-purpose", that prompt, and a short description.
  4. Verify it wrote the draft to 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:

  • Do not count on hooks for the subagent's writes. The hooks declared in this skill's own frontmatter belong to this skill's run, not the subagent's, and whether the repository-wide hooks in the host's lifecycle settings 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.
  • Always fall back. If the subagent fails, times out, or returns nothing usable, say so plainly and run the gathering inline from the same 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.

Tone Calibration

Read System/user-profile.yamlcommunication section and adapt accordingly.


Step 1: File Discovery

Find files modified TODAY:

bash
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:

  1. No truncation — list all modified files
  2. Today only — use date-based filtering
  3. Verify with user — "These are the files I found. What did you actually work on?"

Step 1.5: Process Today's Meetings

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.

  • If no new meetings are found, continue silently
  • If meetings are processed, note the count for the review summary
  • Do NOT ask for a skill rating after this sub-step — save that for the end of the full review

Step 2: Gather Context

From 03-Tasks/Tasks.md

  • Tasks completed today (look for ✅ YYYY-MM-DD matching today)
  • Tasks started but not finished

From Weekly Priorities

Read 02-Week_Priorities/Week_Priorities.md for:

  • This week's strategic focus
  • How today's work connects to weekly priorities

From Recent Meetings

Check 00-Inbox/Meetings/ for meeting notes from today (should now include anything just pulled from the meeting source).


Step 2.5: Semantic Context Enrichment (if QMD available)

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.

What to search:

  1. 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.

  2. 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.

  3. 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.

How to use results:

  • Only surface genuinely new connections — if a task was already linked to a goal, don't repeat it
  • Merge insights into the Plan vs. Reality section: "Task X also advanced Goal Y (semantic match)"
  • Add to the Weekly Priorities Progress section if semantic search reveals hidden progress
  • If QMD is not available, skip this step silently — the review works fine without it

Step 2.55: Dex Inbox Check (Phone Captures)

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:

  • Surface them: "📱 Phone captures not yet triaged (X items in Dex Inbox)"
  • Run the same triage flow as daily-plan Step 5.10a: infer pillar, confirm with user, create task, mark Reminder complete
  • If user wants to defer: leave in Dex Inbox for tomorrow's daily-plan

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."


Step 2.6: Reminders Completion Sync (Dex Today → Dex)

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:

  • Match to a Dex task by title
  • Update task status via Work MCP: update_task_status(task_title="...", status="d")
  • Surface what was synced:

"📱 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.


Step 3: Daily Plan Completion Tracking (NEW)

Compare what you planned vs. what you did.

3.1 Find Today's Plan

Look for 00-Inbox/Daily_Plans/YYYY-MM-DD.md (today's date).

3.2 Extract Planned Focus

From the "Today's Focus" section, extract the 3 items you planned to focus on.

3.3 Track Completion

For each planned focus item:

  • Check if it was completed (look in Tasks.md for completion timestamps)
  • Check if it was started but not finished
  • Check if it was blocked or deferred

Surface this:

"📊 Daily Plan Completion:

You planned 3 focus items this morning:

  1. Prep for Acme meeting — Complete
  2. 🔄 Write pricing proposal — In progress (about 60% done)
  3. Reply to Mike — Didn't get to it

Completion rate today: 1 of 3 (33%)

What happened with #3? Should it carry to tomorrow?"

3.4 Track Over Time (Optional)

If tracking completion rates:

  • Update System/metrics/daily-completion.md with today's rate
  • Surface patterns: "Your average completion rate this week is 67%"

Step 4: Meeting Follow-Up Surfacing (NEW)

For each meeting you had today, surface follow-ups.

4.1 Identify Today's Meetings

From calendar or meeting notes, list meetings that happened today.

4.2 For Each Meeting, Ask:

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')"

4.3 Create Follow-Up Tasks

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 priority
  • people: 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 automatically
  • account if the meeting was with a company you track
  • due (YYYY-MM-DD) if a date was mentioned
  • weekly_priority_id / goal if the follow-up clearly serves one

Step 5: Progress Assessment

With user-verified information:

  • What was accomplished?
  • What progress was made against weekly priorities?
  • What got stuck or blocked?
  • What unexpected things came up?

Step 6: Week Progress Check (Midweek Context)

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."


Step 7: Auto-Extract Session Learnings

Scan today's conversation for learnings:

  1. Mistakes or corrections — Did something not work as expected?
  2. Preferences mentioned — Did you express how you like to work?
  3. Documentation gaps — Were there questions about how the system works?
  4. Workflow inefficiencies — Did any task take longer than it should?

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?"


Step 8: Categorize Learnings (If Applicable)

Check if any learnings should be elevated to pattern files:

  • Recurring mistakes06-Resources/Learnings/Mistake_Patterns.md
  • Workflow preferences06-Resources/Learnings/Working_Preferences.md

Get user confirmation before adding.


Step 9: Tomorrow's Setup

Based on:

  • Incomplete items from today
  • Weekly priorities (especially lagging ones)
  • Commitments due tomorrow
  • Tomorrow's calendar shape

Suggest 3 focus items for tomorrow:

"Suggested focus for tomorrow (Thursday):

  1. Priority 3 — It's been untouched all week and you have 2 days left
  2. Finish pricing proposal — 40% left, should be quick to complete
  3. 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?"


Step 9.5: Retrospective Insight (Innovation Concierge)

At the end of the review, check if there's a relevant backlog idea to surface:

  1. Call list_ideas(status="active", min_score=70) from Improvements MCP
  2. Look for ideas that connect to today's work or learnings:
    • Did the user work on tasks related to a backlog idea?
    • Did learnings captured today strengthen an existing idea?
    • Is there a "Why Now?" idea with fresh evidence?
  3. If a relevant match exists, surface it briefly:

Retrospective 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:

  • Show at most 1 insight per review
  • Only show if genuinely connected to today's work (not random)
  • Frame as retrospective — "based on what you just did, here's what could help"
  • If no connection, skip entirely
  • Keep it to 1-2 lines max

Step 10: Track Usage (Silent)

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_count
  • learnings_count

This only fires if the user has opted into analytics. No action needed if it returns "analytics_disabled".


Step 11: Evening Journal (If Enabled)

Check System/user-profile.yamljournaling.evening.

If journaling.evening: true, run the actual /journal evening flow from .agents/skills/journal/SKILL.md — do not just mention reflection and move on, and do not substitute a single ad-hoc question. The real flow:

  1. Check if today's evening journal exists in 00-Inbox/Journals/
    • If yes: acknowledge it ("You already journaled this evening") and skip to Step 12
    • If no: create it from the template
  2. Pull in this morning's journal intention (if one exists) for reflection
  3. Guide the user through the evening prompts conversationally — one question at a time, per the journal skill's Prompting Style
  4. Save the entry, then continue the review

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.


Output Format

Create 07-Archives/Reviews/Daily_Review_YYYY-MM-DD.md:

markdown
---
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*

Step 12: Skill Quality Check (Gentle)

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.


MCP Dependencies

IntegrationMCP ServerTools Used
MeetingsMeeting source MCP (via /process-meetings today)Fetches and processes unprocessed meetings
Workwork-mcplist_tasks, get_week_progress, get_commitments_due, analyze_calendar_capacity
Calendarcalendar-mcpcalendar_get_today
Reminderscalendar-mcpreminders_list_completed, reminders_find_and_complete, reminders_clear_completed, reminders_list_items

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Daily Review AI skill do?

Close out the day: what got done vs planned, meeting follow-ups, learnings, and tomorrow's focus. Use when the user says 'review my day', 'wrap up', 'end of day', or it's evening. Also use proactively when the day's work is clearly done. Not for setting up the morning; use `daily-plan`.

Why use Daily Review on TypingMind?

Because you install it once and use it with any model. Daily Review is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Daily Review in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/davekilleen/Dex/tree/main/packages/dex-agent-plugin/skills/daily-review. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Daily Review?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Daily Review?

As many as you like. As long as a model supports skills, you can use Daily Review with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Daily Review AI skill free?

It is published on GitHub by davekilleen. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇