search-calendar
关于
This skill enables natural language search of Google Calendar events by date, title, or attendees. It returns detailed event data including timestamps in Asia/Singapore timezone, attendee statuses, and conferencing links. Use it to build calendar briefing features or event lookup tools within Claude.
快速安装
Claude Code
推荐/plugin add https://github.com/christopheryeo/claude-skillsgit clone https://github.com/christopheryeo/claude-skills.git ~/.claude/skills/search-calendar在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
Search Calendar Skill
This skill teaches Claude how to intelligently search your Google Calendar with multiple search criteria and flexible natural language understanding.
When to Use This Skill
Use this skill when users ask questions like:
- "Show me events on Monday with Eddie"
- "Find all 'SnR:Huddle' meetings this week"
- "What do I have on 21 Oct 2025?"
- "List standup meetings with John Hor next week"
- "Events with sentient.io emails today"
- "When am I meeting with Wilson Ang?"
How to Search Calendars Effectively
Search Dimensions
Claude can search calendars across these dimensions:
1. By Day (Today, Tomorrow, Specific Weekdays)
- "today", "tomorrow", "yesterday"
- Weekday names: "Monday", "Tuesday", etc.
- With modifiers: "next Monday", "last Friday", "this Thursday"
2. By Date (Specific Dates)
- Multiple formats supported: "21 Oct 2025", "October 21", "2025-10-21", "21/10/2025"
- Claude can parse these flexibly
3. By Week (Calendar Weeks)
- "this week", "next week", "last week"
4. By Subject/Title (Event Names)
- Search event titles: "SnR:Huddle", "standup", "planning", "review"
- Use partial matches: "huddle" finds "SnR:Huddle"
5. By Attendee Name (People Invited)
- Search by name: "Eddie", "Wilson Ang", "John Hor"
- Use first name, last name, or abbreviations: "Ed" finds "Eddie"
- Names are fuzzy-matched to handle variations
6. By Email Address (Attendee Emails)
- Full or partial emails: "[email protected]", "sentient.io", "mani@"
- Searches attendee email list
Combining Criteria (AND Logic)
Combine multiple search dimensions to narrow results:
- Date + Attendee: "Show me events with Eddie on Monday"
- Subject + Week: "Find all 'standup' meetings this week"
- Subject + Attendee + Date: "'SnR:Huddle' with John on Friday"
- Multiple attendees: "Events with Eddie and Mani next week"
Implementation Strategy
When searching calendars, Claude should:
-
Parse the user query to identify:
- Time reference (day, date, week)
- Subject/keywords
- Attendee names or emails
-
Use Google Calendar tools to:
- Get list of calendars accessible using
list_gcal_calendars - Retrieve events for the identified time range using
list_gcal_events - Filter by subject, attendees, and other criteria
- Get list of calendars accessible using
-
Enrich each event with:
- Precise start/end times in Asia/Singapore timezone (ISO 8601 format)
- Duration calculation (end_time - start_time in minutes)
- Prep time indicator based on:
- Presence of Drive links in description
- Number of attendees (>5 = needs prep)
- Attachments or conferenceData
- Full event description (no truncation)
- Conferencing details extracted from event data
-
Format results with:
- Event title and time (with explicit timezone)
- Duration in minutes
- Location
- Full attendee list with email addresses and RSVP status
- Link to the calendar event
- Description (if present)
- Prep needed flag
- Conference link (if present)
-
Apply filtering logic:
- Exclude cancelled events
- Include all other event statuses (accepted, tentative, needs action, declined)
- Limit to 50 most recent results
- Sort by start time (chronological order for briefings)
Natural Language Processing
Claude should understand:
- Flexible phrasing: "What's on my calendar?" vs "Show me my events"
- Fuzzy matching: "Wil" for "Wilson", "Ed" for "Eddie"
- Multiple date formats naturally
- Partial information: "meetings with sentient.io" or just "Eddie" without full context
- Relative time references: "this week", "next Monday", "last Friday"
Event Enrichment Logic
After retrieving events from list_gcal_events, Claude must enrich each event:
1. Duration Calculation:
duration_minutes = (end_time - start_time).total_seconds() / 60
2. Prep Time Detection - Set prep_needed: true if:
- Description contains:
docs.google.com/document,docs.google.com/spreadsheets,docs.google.com/presentation,drive.google.com - Description contains keywords:
agenda,review,presentation,proposal,deck - Attendee count > 5
- Event has
attachmentsorconferenceDatafields
3. Conference Link Extraction:
- Check
conferenceData.entryPointsfor video conference URLs - Fallback: Search description for
meet.google.com,zoom.us,teams.microsoft.comlinks - Return:
{type: "Google Meet", url: "https://..."}
4. Timezone Conversion:
- Convert all event times to Asia/Singapore timezone (UTC+8)
- Format as ISO 8601:
2025-10-26T14:30:00+08:00
Reference: See /mnt/skills/user/search-calendar/search_calendar_helper.py for example implementations of:
calculate_duration(start, end)needs_prep_time(event)extract_conference_link(event)
Examples
Example 1: Today's Events
User: "Show me my calendar for today"
Claude should:
- Get current date
- Use
list_gcal_eventsto retrieve events for today from all accessible calendars - Enrich each event with duration, prep indicators, timezone conversion
- Format and display them
Example 2: Events with Specific Person
User: "Find all meetings with Eddie this week"
Claude should:
- Identify time range: this week (Monday-Sunday)
- Use
list_gcal_eventsto query all calendars for events in that range - Filter for events where "Eddie" is an attendee (fuzzy match on attendee names)
- Enrich each event with duration, prep indicators, conference links
- Return matching events with full details
Example 3: Subject + Attendee + Date
User: "Show me 'SnR:Huddle' meetings with John Hor next week"
Claude should:
- Identify time range: next week
- Use
list_gcal_eventsto query calendars for events with "Huddle" or "SnR" in title - Filter for events where "John Hor" is invited
- Enrich events with prep indicators, duration, conference links
- Return combined results
Example 4: Email-based Search
User: "What meetings do I have with people from sentient.io?"
Claude should:
- Use
list_gcal_eventsto query recent events (default: next 30 days) - Filter for events with attendees having @sentient.io email
- Enrich events with all additional context
- Return matching events
Important Guidelines
Timezone Handling (CRITICAL for briefings)
- ALL timestamps MUST be returned in Asia/Singapore timezone (SGT / UTC+8)
- Use ISO 8601 format with explicit timezone:
2025-10-26T14:30:00+08:00 - Never return times without timezone information
- Ensure consistency across all events for time-based sorting and briefing integration
- If user is in different timezone, convert display times but maintain SGT in data structure
Time Ranges
- Day-based search: Search that specific 24-hour period
- Week-based search: Search Monday through Sunday of that calendar week
- Date-based search: Search that specific date
- No time specified: Default to next 30 days for open searches
Attendee Matching
- Use fuzzy matching for names (70% similarity threshold)
- Handle partial names and nicknames
- For emails: support partial matches (e.g., "eddie@" matches "[email protected]")
- Match against all visible attendees, not just organizer
Event Status
- Always exclude: Cancelled events
- Always include: All other statuses (Accepted, Tentative, Declined, Needs Action)
- Display attendee RSVP status when listing events
Result Limits
- Return maximum 50 events per search
- Show newest/most recent first
- Include full details: title, time, location, attendees, calendar link
Enriched Event Data (for briefing integration)
- Duration: Calculate and return event duration in minutes
- Prep Time Indicator: Set
prep_needed: trueif event has:- Description containing Drive links (docs.google.com/document, docs.google.com/spreadsheet, etc.)
- Description containing meeting agendas or action items
- Attachments (check for conferenceData or attachments in event)
- More than 5 attendees (larger meetings typically need prep)
- Descriptions: Always include event descriptions by default (don't truncate)
- Attendee Context: Include full attendee list with emails and response status
- Conferencing: Extract and return video conference links (Meet, Zoom, Teams, etc.)
Tips for Better Results
- Be specific: Include attendee names or subjects when possible to narrow results
- Use natural dates: "next Monday" works better than calculating dates manually
- Combine criteria: Rather than "all my meetings with Eddie", use "Eddie next week" for faster results
- Verify attendee names: If unsure of spelling, use nicknames - fuzzy matching handles it
Handling Edge Cases
Multiple people with similar names:
- Display all matches and ask user to clarify if needed
- Show email addresses to help distinguish
Events without attendees:
- Include in results when subject matches
- Mark "No attendees" or "Private" if applicable
All-day events:
- Include in results
- Display as "All day" rather than specific times
Recurring events:
- Return individual instances for the date range queried
- Show the full series context if available
No results:
- Explain why no events were found
- Suggest broadening the search (e.g., "try searching all week instead of just Monday")
Integration with Other Tools
This skill works with Claude's existing calendar tools and can be combined with:
- Email searches (find emails about specific meetings) - use
recent-emailswith aligned timestamps - Document searches (find prep materials) - use
work-day-filesto locate meeting-related documents - Task management (create tasks from meeting discussions)
- Daily briefings - provides the timeline anchor for time-based organization
Briefing Integration (Primary Use Case)
This skill is optimized to serve as the timeline anchor for daily briefings:
-
Timestamp Alignment: All events return precise start/end times in Asia/Singapore timezone matching the format used by
recent-emailsandwork-day-files -
Prep Time Intelligence: The
prep_neededflag helps briefings surface:- Events requiring document review (Drive links in description)
- Large meetings (>5 attendees)
- Events with attachments or agendas
-
Contextual Linking: When building briefings:
- Check if recent emails (from
recent-emails) are from meeting attendees - Check if recent file modifications (from
work-day-files) relate to meeting topics - Flag "action items" by correlating email subjects with event titles
- Check if recent emails (from
-
Time-Based Output: Sort events chronologically to create a clear timeline that other briefing components can reference
Example Briefing Flow:
08:00 - Check work-day-files for documents modified overnight
09:00 - Morning standup (from search-calendar)
↳ prep_needed: true (has agenda doc)
↳ Related file: "Standup Notes 2025-10-26.docx" modified at 08:30
10:00 - Review recent-emails for urgent items from standup attendees
14:00 - Client meeting (from search-calendar)
↳ prep_needed: true (>5 attendees)
↳ Related email: "Q4 Proposal" from [email protected] at 13:45
Security and Privacy
- Search only calendars the user has read access to
- Don't expose private event details beyond what the user authorized
- Respect calendar sharing permissions
- Only display information the user can see
Troubleshooting
"No calendars found"
- User may need to grant calendar access
- Verify Google Calendar permissions
"No events matching"
- Try broader search terms
- Check spelling of names/subjects
- Extend date range
"Wrong person matched"
- For ambiguous names, ask user to clarify
- Use email addresses for specific identification
- Provide full names in results to avoid confusion
Quick Start for Claude
When a user asks about their calendar:
-
Parse their request for: time (when), subject (what), people (who)
-
Use calendar tools to fetch events:
list_gcal_calendarsto get available calendarslist_gcal_eventswith appropriate date range filters
-
Enrich each event with:
- Duration calculation (in minutes)
- Prep time indicator (Drive links, >5 attendees, attachments, keywords)
- Conference link extraction (Meet, Zoom, Teams)
- Ensure timestamps are in Asia/Singapore timezone (SGT/UTC+8)
-
Apply intelligent filtering based on all criteria provided:
- Attendee name matching (fuzzy)
- Email domain filtering
- Subject/title matching
-
Format results clearly with:
- Event details with explicit SGT timestamps
- Duration, prep indicators, conference links
- Full attendee context with RSVP status
- Calendar event links
-
For unclear queries, ask clarifying questions
Reference Implementation: The search_calendar_helper.py file contains example code for the enrichment logic (duration calculation, prep time detection, conference link extraction). Claude can reference these functions when implementing the enrichment steps.
The skill is designed to be conversational - Claude should handle natural language calendar queries without requiring specific syntax or complex instructions from the user.
GitHub 仓库
相关推荐技能
sglang
元SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。
evaluating-llms-harness
测试该Skill通过60+个学术基准测试(如MMLU、GSM8K等)评估大语言模型质量,适用于模型对比、学术研究及训练进度追踪。它支持HuggingFace、vLLM和API接口,被EleutherAI等行业领先机构广泛采用。开发者可通过简单命令行快速对模型进行多任务批量评估。
llamaguard
其他LlamaGuard是Meta推出的7-8B参数内容审核模型,专门用于过滤LLM的输入和输出内容。它能检测六大安全风险类别(暴力/仇恨、性内容、武器、违禁品、自残、犯罪计划),准确率达94-95%。开发者可通过HuggingFace、vLLM或Sagemaker快速部署,并能与NeMo Guardrails集成实现自动化安全防护。
langchain
元LangChain是一个用于构建LLM应用程序的框架,支持智能体、链和RAG应用开发。它提供多模型提供商支持、500+工具集成、记忆管理和向量检索等核心功能。开发者可用它快速构建聊天机器人、问答系统和自主代理,适用于从原型验证到生产部署的全流程。
