Daily Wrapup
Produce exactly one Gmail draft per qualifying meeting on the target date (default: today).
detaileddrafts (Gemini notes or transcript available): executive themes, action items, agenda/email context.standarddrafts (no Gemini artifacts): thank attendees, reference the meeting, and share context from the calendar invite and recent emails only — do not invent discussion outcomes.
If no meetings qualify for the target date, report that and stop — no drafts is expected.
For tomorrow's calendar prep, use the separate daily-prep skill.
Prerequisites
gwsCLI installed and authenticated (gws auth status). Scopes:calendar,drive,documents,gmail.modify.- Read
ME.mdat the project root (if present).
Workflow
Daily Wrapup:
- [ ] Step 0: Check connections
- [ ] Step 1: Resolve target date
- [ ] Step 2: Gather meetings + artifacts + context
- [ ] Step 3: Infer tone from sent mail
- [ ] Step 4: Draft one email per meeting
- [ ] Step 5: Create Gmail drafts (deduplicated)
- [ ] Step 6: Confirm with user
- [ ] Step 7: Ask for feedback and improve the skill
Step 0 — Check connections
Run refresh-connections before gathering. Google Workspace (gws) is required (calendar, drive, documents, gmail.modify). Slack is optional — wrapup does not use Slack context today.
python3 ~/.cursor/skills/refresh-connections/scripts/check_connections.py \
--services gws
If gws auth fails, run gws auth login before continuing. Report connection status to the user.
Step 1 — Resolve target date
- Default ("daily wrapup"): today only in
America/New_York(override with--timezoneif needed). Do not gather other dates unless the user explicitly asks. - Explicit past day: parse the user's request into
YYYY-MM-DDbefore gathering (e.g. "wrapup for June 5"). - Zero meetings: if today yields 0 qualifying meetings, report and stop. Do not fall back to yesterday or other dates.
| User says | Use |
|---|---|
| (nothing) / "daily wrapup" | today only |
| yesterday | previous calendar day (only when user asks) |
| last Tuesday | most recent Tuesday before today (only when user asks) |
| June 5 / 2026-06-05 | that date (only when user asks) |
Step 2 — Gather meetings and context
python3 ~/.cursor/skills/daily-wrapup/scripts/gather_wrapup_meetings.py \
--date "<YYYY-MM-DD>" \
--format json
Returns meetings where you are the organizer and more than 2 invitees (non-organizer, non-declined).
Each meeting includes: draftSubject, draftType, agenda, inviteEmail, relatedEmails, Gemini notes/transcript excerpts, warnings.
Draft every qualifying meeting. Use draftType to pick the template. Never skip solely because Gemini artifacts are missing.
See reference.md for manual fallback.
Step 3 — Infer tone
From toneSamples (recent sent mail, calendar invites excluded). Match greeting, formality, and sign-off. Default to warm executive tone from ME.md if thin. Validated tone: "Hi all" opening, concise bullets, "Best, C" or full name sign-off.
Step 4 — Draft one email per meeting
Recipients: every email in invitees — include required and optional attendees; exclude the organizer only.
Subject: use draftSubject exactly (ASCII - separator, not an em dash). Write the body in plain text with • bullets — the send script converts them to HTML <ul> lists in Gmail.
Template — detailed
Sources: agenda → relatedEmails → notes.excerpt / transcript.excerpt
{Warm thank-you — 1 sentence.}
Key themes:
• {Theme — executive-level, ~15 words max}
• {Theme 2}
• {Theme 3–4 max}
Action items:
• {action} — {owner}
{Closing gratitude — 1 sentence.}
{Sign-off}
{Sender name}
Synthesize 2–3 headline themes; do not restate every note detail. ~150–220 words.
Template — standard
Sources only: agenda, inviteEmail, relatedEmails. No invented outcomes.
Hi all,
Thank you for joining {Meeting Title} on {date}. I appreciated everyone making the time.
{1–2 sentences on purpose from agenda/invite.}
Context:
• {Topic from invite or agenda}
• {Pre-meeting update from relatedEmails, if any}
{Closing — appreciation and openness to async follow-up.}
{Sign-off}
{Sender name}
~100–160 words. Mark gaps [needs input] rather than guessing.
Step 5 — Create Gmail drafts (deduplicated)
Always use the helper script — never call gws gmail users drafts create directly.
python3 ~/.cursor/skills/daily-wrapup/scripts/create_wrapup_draft.py \
--title "<Meeting Title>" \
--date-label "<Month D, YYYY>" \
--to "a@example.com,b@example.com" \
--body-file /tmp/wrapup-body.txt
One draft per meeting. Skips if subject already exists (use --force to replace). Drafts are multipart (plain text + HTML with formatted bullet lists). Do not send.
Step 6 — Confirm with user
Report: target date, meeting count, drafts created / skipped (duplicate), or no qualifying meetings if zero. Link to Gmail drafts when drafts exist.
Step 7 — Ask for feedback and improve the skill
After creating drafts (or reporting zero meetings), ask the user for feedback on:
- Theme synthesis — did the executive summary capture the right headlines?
- Action items — correct owners and completeness?
- Tone and length — adjust only if the user flags an issue (default validated tone is fine)
Incorporate recurring feedback into this skill (SKILL.md), reference.md, or the gather/draft scripts.
Example prompts
- "Daily wrapup"
- "Daily wrapup for Thursday"
- "Wrap up my meetings from 2026-06-05"
Additional resources
- reference.md