Install
openclaw skills install normieclaw-meeting-scheduler-proHandles full meeting lifecycle by integrating with Google Calendar—schedules meetings, manages availability, generates prep briefs, agendas, and follow-up ta...
openclaw skills install normieclaw-meeting-scheduler-proYour AI meeting co-pilot. Not just a booking link.
Meeting Scheduler Pro handles the full meeting lifecycle: prep → schedule → agenda → follow-up. It connects to Google Calendar via the gog CLI, manages your availability through conversation, preps you before every call, generates agendas, and creates follow-up tasks when the meeting ends.
gog auth login)bash scripts/setup.sh
gog auth login
gog calendar list
config/settings.json with your working hours, buffer preferences, and meeting defaults.All calendar operations use the gog CLI. The agent reads, writes, and queries Google Calendar directly.
Reading Events:
# Today's meetings
gog calendar events list --from today --to today
# This week
gog calendar events list --from "Monday" --to "Friday"
# Specific date range
gog calendar events list --from "2026-03-15" --to "2026-03-22"
Creating Events:
gog calendar events create \
--title "Call with Sarah — Q3 Roadmap" \
--start "2026-03-18T10:00:00" \
--end "2026-03-18T10:30:00" \
--description "Discuss Q3 roadmap priorities and timeline" \
--attendees "sarah@example.com"
Checking Availability:
# Pull events for a date range, then compute open slots against settings.json availability
gog calendar events list --from "2026-03-16" --to "2026-03-20"
The agent parses event output and cross-references with your availability windows defined in config/settings.json to identify open slots.
The scheduling engine handles the full booking conversation. When a user requests a meeting, the agent:
Step 1: Parse the Request
When the user says something like "Schedule a 30-min call with Sarah next week about the roadmap," extract:
Step 2: Check Calendar & Suggest Slots
Query the date range via gog calendar events list, parse occupied blocks, and apply settings.json rules (working hours, buffers, no-meeting blocks, lunch).
Present 3 options with context:
Here are 3 open slots for a 30-min call with Sarah next week:
1. Monday Mar 16, 10:00–10:30 AM — light morning, no adjacent meetings
2. Tuesday Mar 17, 2:00–2:30 PM — 1-hour gap before your next call
3. Thursday Mar 19, 11:00–11:30 AM — open morning block
Which works? Or want me to look at different times?
Step 4: Book It
Once confirmed:
gog calendar events create \
--title "Call with Sarah — Roadmap Discussion" \
--start "2026-03-16T10:00:00" \
--end "2026-03-16T10:30:00" \
--description "Discuss Q3 roadmap priorities and timeline.\n\nAgenda will be generated before the meeting." \
--attendees "sarah@example.com"
Confirm with: event title, date/time, attendee, and note that prep/agenda will be generated.
Availability rules live in config/settings.json. The agent reads these before every scheduling decision.
See config/settings.json for the full structure: working hours, timezone, buffer minutes, no-meeting blocks (day/start/end/label), preferred times for external vs internal, max meetings per day, and lunch block.
Users can update availability through conversation:
When someone asks for your availability (via the agent), format it conversationally:
Sarah asked when you're free next week for a 30-min call. Here's what I'd share:
Available slots:
- Mon 10:00–11:30 AM
- Tue 2:00–4:00 PM
- Thu 9:00–11:00 AM
- Fri 10:00–12:00 PM
Want me to send these options, or adjust anything first?
No booking page required — the agent handles the back-and-forth. If the user wants a booking page, generate a simple availability summary they can share.
Before every meeting, the agent generates a prep brief. This runs automatically when triggered by a cron/heartbeat check, or on demand when the user asks "What's my next meeting?"
📋 MEETING PREP: Call with Sarah Chen
📅 Monday Mar 16, 10:00–10:30 AM
📍 Google Meet (link)
👤 ATTENDEE
- Sarah Chen, VP Product at Acme Corp
- Last met: Feb 3, 2026 (Q2 planning call)
- Connected via: LinkedIn, mutual intro from David
📝 LAST INTERACTION NOTES
- Discussed Q2 product roadmap timeline concerns
- She flagged resource constraints on the mobile team
- Agreed to revisit in 6 weeks (this meeting)
💡 SUGGESTED TALKING POINTS
1. Follow up on mobile team resourcing — did they hire?
2. Q3 roadmap priorities she wants to align on
3. Timeline for the API v2 launch she mentioned last time
⚡ CONTEXT
- Acme Corp announced Series C last month ($45M)
- Their Q1 earnings call mentioned expanding developer tools
- You have an open proposal with them (sent Feb 15)
The agent gathers prep context from available sources:
Use gog calendar events list --query "<name>" for past meetings and gog gmail search --query "from:<email>" for recent emails.
For meetings you're hosting, the agent auto-generates an agenda based on context.
📋 AGENDA: Q3 Roadmap Discussion with Sarah Chen
📅 Monday Mar 16, 10:00–10:30 AM
1. Check-in (2 min)
- How's the team doing after Q2 push?
2. Q2 Retrospective (8 min)
- What shipped vs. what slipped
- Mobile team capacity update
3. Q3 Priorities (12 min)
- Top 3 roadmap items to align on
- API v2 timeline and dependencies
- Resource allocation for new initiatives
4. Open Questions (5 min)
- Partnership proposal status
- Any blockers you need help with?
5. Next Steps & Follow-up (3 min)
- Action items
- Schedule follow-up if needed
Total: 30 min
Add the agenda to the calendar event description via gog calendar events update, email it to attendees via gog gmail send, or both. Always ask the user: "Want me to add this to the invite, email it, or both?"
After a meeting ends, the agent initiates follow-up. This triggers based on calendar events ending or the user saying "Just got off a call with Sarah."
Step 1: Check In
Your call with Sarah just ended. How'd it go? Any action items?
Step 2: Capture Notes User responds naturally: "Good call. She needs the API docs by Friday. We agreed to push the mobile launch to April. I need to send her the updated timeline."
Step 3: Parse and Create Tasks
Extract action items and create structured follow-ups:
Got it. Here's what I captured:
Action Items:
1. ☐ Send API docs to Sarah — due Friday Mar 20
2. ☐ Update mobile launch timeline to April — no due date
3. ☐ Send Sarah the updated timeline — due this week
Follow-up Meeting:
- Sarah mentioned revisiting in 2 weeks. Want me to schedule a 30-min follow-up for week of March 30?
Shall I create these tasks in Project Manager Pro?
Step 4: Create Tasks (if Project Manager Pro is installed)
# Tasks are created via Project Manager Pro's task creation interface
# The agent formats tasks and passes them to the PM Pro skill
If Project Manager Pro isn't installed, tasks are stored as a local note:
Follow-up notes saved to: meeting-notes/2026-03-16-sarah-chen-roadmap.md
Step 5: Send Follow-Up Email (optional)
Want me to send Sarah a follow-up email? Here's a draft:
---
Subject: Follow-up: Q3 Roadmap Discussion
Hi Sarah,
Great chatting today. Here's a quick recap:
- I'll send over the API docs by Friday
- We're aligning on an April timeline for the mobile launch
- I'll share the updated timeline this week
Let me know if I missed anything. Talk soon.
---
Send it, edit it, or skip?
Notes are saved as meeting-notes/YYYY-MM-DD-attendee-topic.md with: date, attendees, discussion points, action items (owner + due date), decisions, and next meeting date. These feed back into future meeting prep for the same attendees. See examples/example-follow-up.md for a full example.
The agent proactively monitors your calendar and offers suggestions. These surface during daily briefings, heartbeat checks, or when you interact with the scheduler.
Back-to-back detection:
⚠️ Heads up — you have 4 meetings back-to-back Tuesday (9 AM to 1 PM) with no breaks.
Want me to add 10-min buffers between them? Or move the 11:30 to 2 PM?
Overloaded day warning:
Wednesday has 7 meetings scheduled. Your max is 6.
The least critical one looks like "Team Social Planning" at 4 PM.
Want me to suggest rescheduling it?
Meeting-free day protection:
You have no meetings Friday — nice! Want me to block it as a focus day
so nothing gets booked?
Recurring meeting audit:
You have 3 recurring weekly meetings that haven't had agenda updates in 4+ weeks:
1. Monday standup with Dev Team
2. Wednesday sync with Marketing
3. Friday review with Ops
Worth checking if any of these can go async or biweekly?
Stale relationship nudge:
You haven't met with David Park in 8 weeks. Last meeting was about the
partnership deal. Want me to schedule a 15-min check-in?
scripts/weekly-agenda.sh)Meeting Scheduler Pro tracks metrics for the NormieClaw dashboard.
All 12 metrics are defined in dashboard-kit/manifest.json (prefix: ms_). Key metrics: meetings today/week, prep completion rate, pending/completed follow-ups, avg meetings/day, busiest day/hour, no-show rate, buffer compliance, agent-booked count, reschedule count.
See dashboard-kit/DASHBOARD-SPEC.md for full visualization specs:
| User Says | Agent Does |
|---|---|
| "Schedule a call with Sarah next week" | Checks calendar, suggests 3 slots, books on confirmation |
| "Find 30 minutes for me and John Tuesday" | Scans Tuesday availability, offers slots |
| "Book a 1-hour meeting with the team on Thursday" | Creates group event, sends invites |
| "Reschedule my 2 PM to Friday" | Finds Friday slots, moves the event |
| "Cancel tomorrow's standup" | Confirms and deletes the event |
| "What's my availability next week?" | Generates shareable availability summary |
| "Block off Friday afternoon" | Adds a calendar block, updates settings |
| User Says | Agent Does |
|---|---|
| "Prep me for my next meeting" | Generates prep brief for the next upcoming meeting |
| "What do I need to know about tomorrow?" | Preps all of tomorrow's meetings |
| "Who am I meeting with today?" | Lists today's meetings with attendee context |
| "Generate an agenda for my 10 AM" | Creates and optionally shares an agenda |
| User Says | Agent Does |
|---|---|
| "Just got off a call with Sarah" | Initiates follow-up: asks how it went, captures action items |
| "Meeting with John went great, follow up on the proposal" | Creates task, drafts follow-up email |
| "What action items do I have open?" | Lists all pending follow-up tasks |
| "Send Sarah a follow-up" | Drafts and optionally sends follow-up email |
| User Says | Agent Does |
|---|---|
| "How's my week looking?" | Calendar overview with health check |
| "Am I overbooked?" | Checks against meeting limits, flags issues |
| "Audit my recurring meetings" | Reviews recurring meetings for relevance |
| "Who haven't I met with recently?" | Flags stale relationships based on meeting history |
If Relationship Buddy is installed, Meeting Scheduler Pro pulls:
This enriches meeting prep significantly. Without Relationship Buddy, prep relies on calendar history, email context, and web search.
If Project Manager Pro is installed, follow-up tasks are created directly in the task management system:
Without PM Pro, tasks are stored as local markdown files.
Meeting Scheduler Pro contributes to the daily briefing:
Validates gog installation, checks calendar auth, creates config directory, initializes settings.json with defaults. Run once during installation.
Exports upcoming meetings (default: next 7 days) to a formatted markdown file. Useful for sharing your schedule or generating a weekly overview.
bash scripts/export-schedule.sh # Next 7 days
bash scripts/export-schedule.sh 14 # Next 14 days
bash scripts/export-schedule.sh 7 /tmp/schedule.md # Custom output path
Generates a week-ahead meeting prep document. Pulls next week's meetings, generates prep briefs for each, identifies conflicts, and outputs a comprehensive planning document.
bash scripts/weekly-agenda.sh # Next week
bash scripts/weekly-agenda.sh 2026-03-23 # Specific week start date
All settings live in config/settings.json. See the file directly for field names, types, and defaults. Key sections:
Install gog: npm install -g gog or check your OpenClaw installation — gog should be bundled.
Re-authenticate: gog auth login — make sure you grant calendar read/write permissions.
Check that you're querying the correct calendar. gog calendar list shows all available calendars. If you use multiple calendars, specify the calendar ID in your queries.
Prep quality depends on available data. For richer briefs:
Check config/settings.json — ensure working_hours and timezone are set correctly.