Google Calendar Weekly Review
Generates a weekly calendar review: time spent in meetings vs focus work, meeting categories, overload analysis, and improvement recommendations. Prerequisites: gcalcli, gcloud, curl, jq.
MCP get_skill({ skillId: "google-calendar-weekly-review-d513bea1" })Use this skill with your agent
Create a free account and connect via MCP
# Google Calendar Weekly Review
Analyze the past week's calendar to generate insights on time allocation, meeting load, and schedule optimization opportunities.
## When to Use
- "Review my week"
- "How much time did I spend in meetings this week?"
- "Give me a weekly schedule analysis"
## Requirements
- **gcalcli** or **Google Cloud CLI** with Calendar API
- `jq` for JSON parsing
- `bc` or `python3` for calculations
## Workflow
### Step 1 — Fetch Past Week's Events
```bash
# Using gcalcli
gcalcli agenda "last monday" "next monday" --details all --tsv
# Using Calendar API
ACCESS_TOKEN=$(gcloud auth print-access-token)
TIME_MIN=$(date -d 'last monday' -u '+%Y-%m-%dT00:00:00Z')
TIME_MAX=$(date -d 'next monday' -u '+%Y-%m-%dT00:00:00Z')
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://www.googleapis.com/calendar/v3/calendars/primary/events?timeMin=${TIME_MIN}&timeMax=${TIME_MAX}&singleEvents=true&orderBy=startTime&maxResults=100" | \
jq '[.items[] | {summary: .summary, start: .start.dateTime, end: .end.dateTime, attendees: (.attendees // [] | length), duration_min: (((.end.dateTime | sub("\\.[0-9]+"; "") | strptime("%Y-%m-%dT%H:%M:%S%z") | mktime) - (.start.dateTime | sub("\\.[0-9]+"; "") | strptime("%Y-%m-%dT%H:%M:%S%z") | mktime)) / 60)}]'
```
### Step 2 — Categorize Events
Classify each event:
- **External meetings** — attendees from outside your org
- **Internal meetings** — attendees from your org
- **1:1s** — exactly 2 attendees
- **Focus blocks** — no attendees, or labeled as focus/deep work
- **Personal** — from personal calendar
- **Recurring** — part of a recurring series
### Step 3 — Calculate Metrics
| Metric | Calculation |
|--------|-------------|
| Total meeting hours | Sum of all events with attendees |
| Focus hours | Workday hours minus meeting hours |
| External vs internal ratio | External / total meetings |
| Longest focus block | Largest gap between meetings |
| Busiest day | Day with most meeting hours |
| Meeting-free windows | Gaps > 1 hour |
| Recurring meeting load | % of meetings that are recurring |
### Step 4 — Generate Weekly Report
Save to `outputs/YYYY/weekly/YYYY-WXX-review.md`:
```markdown
# Weekly Review — Week {N}, {YEAR}
## Time Allocation
| Category | Hours | % of Work Week |
|----------|-------|----------------|
| External meetings | 4.5h | 11% |
| Internal meetings | 8.0h | 20% |
| 1:1s | 3.0h | 8% |
| Focus time | 22.5h | 56% |
| Admin/breaks | 2.0h | 5% |
## Daily Breakdown
| Day | Meetings | Focus | Score |
|-----|----------|-------|-------|
| Mon | 3h | 5h | 🟢 |
| Tue | 6h | 2h | 🔴 |
| Wed | 2h | 6h | 🟢 |
| Thu | 4h | 4h | 🟡 |
| Fri | 0.5h | 7.5h | 🟢 |
## Insights
- Tuesday was meeting-heavy (6h) — consider blocking Tuesdays as meeting-lite
- 5 recurring meetings consume 40% of meeting time — review if all are needed
- Longest focus block: 3h on Wednesday afternoon
## Recommendations
1. Decline or shorten [Meeting X] — 1h weekly meeting with 8 attendees, consider async
2. Batch 1:1s onto one day to protect other days
3. Add a "No Meetings Wednesday" policy
```
### Step 5 — Compare to Previous Weeks
If previous reports exist in `outputs/YYYY/weekly/`, compare trends:
- Meeting hours trending up or down?
- Focus time improving?
- Any new recurring meetings added?
## Important Rules
- Read-only — never modify calendar without explicit request
- Don't expose attendee names in shared reports unless asked
- Use 40h work week as baseline for percentages
## Example Prompts
- "Review my calendar this week"
- "How many hours of meetings did I have?"
- "Compare this week's schedule to last week"Related Skills
More skills in Calendar & Scheduling
Google Calendar Availability Finder
Finds mutual free times across multiple Google Calendar users and proposes meeting slots. Generates scheduling links or draft calendar invites. Prerequisites: gcalcli, gcloud, curl, jq.
Google Calendar Daily Planner
Pulls today's or tomorrow's Google Calendar events via gcalcli, analyzes meeting density, identifies focus blocks, and generates a time-blocked daily plan. Prerequisites: gcalcli, gcloud, curl, jq.
Google Calendar Event Creator
Creates Google Calendar events from natural language descriptions using gcalcli or Calendar API. Handles recurring events, attendees, reminders, and conference links. Prerequisites: gcalcli, gcloud, curl, jq.
Google Calendar Meeting Prep
Pulls upcoming meeting details from Google Calendar, researches attendees and topics via Brave Search, and generates a meeting prep brief with talking points. Prerequisites: gcalcli, gcloud, curl, jq, brave-search MCP.
Explore Other Categories
Skills from other categories with shared topics
.NET/C# Best Practices
Ensure .NET/C# code meets best practices for the solution/project.
Ab Test Analysis
Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop recommendations. Use when evaluating experiment results, checking if a test reached significance, interpreting split test data, or deciding whether to ship a variant.
Adaptyv
How to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.