-
Notifications
You must be signed in to change notification settings - Fork 91
Add a calendar plugin to find free overlapping times to meet with one or more people #111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: jhou1 The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
Hi @jhou1. Thanks for your PR. I'm waiting for a github.com member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
/ok-to-test Please join the openshift-eng org so things get tested automatically |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Really neat!
…to meet with one or more people across timezones.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you! I've renamed the plugin and replaced the bundled mcp server with manual configuration instruction.
|
I've joint our org and addressed the review. /test ? |
|
@jhou1: The following commands are available to trigger optional jobs: Use In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
WalkthroughAdds a Calendar plugin: registration entries, plugin manifest, and comprehensive documentation (README and two command specs) implementing two commands — Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Assistant
participant CalendarPlugin as Plugin
participant GoogleMCP as Google Calendar MCP
Note over User,Assistant: User invokes calendar command (natural language)
User->>Assistant: "Find a time for Alice and Bob next week"
Assistant->>Plugin: call `calendar:find-time` (args: emails, duration, days_ahead)
Plugin->>GoogleMCP: request free/busy for participants
GoogleMCP-->>Plugin: free/busy data
Plugin->>Plugin: compute overlapping slots (apply business-hours, weekend rules)
Plugin-->>Assistant: return candidate slots (sorted)
Assistant-->>User: present suggested times and ask for confirmation
sequenceDiagram
participant User
participant Assistant
participant CalendarPlugin as Plugin
participant GoogleMCP as Google Calendar MCP
Note over User,Assistant: Create event flow (confirm details then create)
User->>Assistant: "Create meeting with Carol tomorrow 3pm"
Assistant->>Plugin: call `calendar:create-event` (parsed event data)
Plugin->>User: request clarification/confirm missing details (if any)
User-->>Plugin: confirmation/extra info
Plugin->>GoogleMCP: create event (with attendees, Meet link)
GoogleMCP-->>Plugin: event created (event id, join link)
Plugin-->>Assistant: success payload (event details)
Assistant-->>User: confirm event created with link/time
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20–30 minutes
✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (1)
PLUGINS.md (1)
33-33: Capitalize opening word for consistency.Line 33 should start with an uppercase "F" to align with the command descriptions (line 37) and the past review feedback.
-find overlapping free time to meet with people +Find overlapping free time to meet with people
🧹 Nitpick comments (2)
plugins/calendar/commands/create-event.md (1)
10-10: Add language identifiers to fenced code blocks.Fenced code blocks should specify a language for syntax highlighting. These blocks should use a language tag like
bashortext.-``` +```text /calendar:create-event <natural_language_prompt_for_the_event> -``` +```Apply the same pattern to lines 82, 87, 92, 97, and 102.
Also applies to: 82-82, 87-87, 92-92, 97-97, 102-102
plugins/calendar/commands/find-time.md (1)
10-10: Add language identifiers to fenced code blocks.Fenced code blocks should specify a language for syntax highlighting. These blocks should use a language tag like
text.-``` +```text /calendar:find-time <email_addresses> [duration_in_minutes] [days_ahead] -``` +```Apply the same pattern to lines 63, 68, and 73.
Also applies to: 63-63, 68-68, 73-73
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (7)
.claude-plugin/marketplace.json(1 hunks)PLUGINS.md(2 hunks)docs/data.json(1 hunks)plugins/calendar/.claude-plugin/plugin.json(1 hunks)plugins/calendar/README.md(1 hunks)plugins/calendar/commands/create-event.md(1 hunks)plugins/calendar/commands/find-time.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
plugins/calendar/commands/create-event.md
[grammar] ~49-~49: Ensure spelling is correct
Context: ...input until user confirms you correctly intepreted the intent. ### Phase 5: Create Calend...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
PLUGINS.md
[style] ~33-~33: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: ... ### Calendar Plugin find overlapping free time to meet with people Commands: - **...
(FREE_TIME)
[style] ~37-~37: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: ...tes] [days_ahead]`** - Find overlapping free time to meet with one or more people. See [...
(FREE_TIME)
plugins/calendar/README.md
[style] ~7-~7: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: ...Smart Time Finding** - Find overlapping free time across multiple participants' calendars...
(FREE_TIME)
[style] ~69-~69: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: .../calendar:find-time` - Find Overlapping Free Time Find overlapping available time with m...
(FREE_TIME)
[style] ~170-~170: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: ...e necessary scopes ### "No overlapping free time found" - Try a shorter meeting duration...
(FREE_TIME)
plugins/calendar/commands/find-time.md
[style] ~33-~33: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: ...for each participant - Find overlapping free time across all participants - Filter out bl...
(FREE_TIME)
[style] ~47-~47: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: ...Handling - Handle cases where no common free time exists - Provide helpful suggestions (s...
(FREE_TIME)
🪛 markdownlint-cli2 (0.18.1)
plugins/calendar/commands/create-event.md
10-10: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
82-82: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
87-87: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
92-92: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
97-97: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
102-102: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
plugins/calendar/commands/find-time.md
10-10: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
63-63: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
68-68: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
73-73: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (4)
plugins/calendar/README.md (1)
1-189: Documentation is comprehensive and well-structured.The setup guide, usage examples, and troubleshooting sections are clear and actionable. All prerequisites and installation steps are properly documented.
plugins/calendar/.claude-plugin/plugin.json (1)
1-8: Plugin manifest is valid and complete.JSON structure is well-formed with all required metadata.
docs/data.json (1)
554-573: Calendar plugin entry is complete and properly structured.All required metadata is present: plugin name, description, version, commands with full specifications, and readme flag.
.claude-plugin/marketplace.json (1)
82-86: Marketplace entry is properly structured and positioned.Calendar plugin registration is complete with correct source path and description.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (4)
plugins/calendar/commands/create-event.md (2)
10-12: Specify language for code block to comply with linting rules.Specifying a language improves content rendering by using the correct syntax highlighting for code. The Synopsis code block should specify
bashas the language.## Synopsis -``` +```bash /calendar:create-event <natural_language_prompt_for_the_event>--- `82-104`: **Add language specifier to all example code blocks.** The example code blocks (lines 82–84, 87–89, 92–94, 97–99, and 102–104) are missing language specifications for markdownlint compliance. Each example shows a command invocation and should be marked as `bash`. ```diff 1. **Simple meeting**: - ``` + ```bash /calendar:create-event Team standup tomorrow at 9am for 30 minutes ``` 2. **Meeting with specific attendees**: - ``` + ```bash /calendar:create-event Project review Friday 2pm with [email protected] and [email protected] ``` 3. **Detailed planning session**: - ``` + ```bash /calendar:create-event Quarterly planning session next Monday 10am-12pm with the whole engineering team ``` 4. **Quick 1:1 meeting**: - ``` + ```bash /calendar:create-event Coffee chat with Sarah tomorrow 3pm for 45 minutes ``` 5. **All-hands meeting**: - ``` + ```bash /calendar:create-event Monthly all-hands meeting first Friday of next month 2-3pm with leadership team ```plugins/calendar/commands/find-time.md (2)
10-12: Specify language for Synopsis code block.Specifying a language improves content rendering by using the correct syntax highlighting for code. Add
bashas the language identifier.## Synopsis -``` +```bash /calendar:find-time <email_addresses> [duration_in_minutes] [days_ahead]--- `63-75`: **Add language specifier to all example code blocks.** The example code blocks (lines 63–65, 69–71, and 74–76) lack language specifications for markdownlint compliance. Mark them as `bash` since they show command invocations. ```diff 1. **Basic usage with two people**: - ``` + ```bash /calendar:find-time [email protected],[email protected] 60 ``` 2. **Including date range**: - ``` + ```bash /calendar:find-time [email protected],[email protected] 30 7 ``` 3. **Multiple participants with specific date**: - ``` + ```bash /calendar:find-time [email protected],[email protected],[email protected] 45 15 ```
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (3)
plugins/calendar/README.md(1 hunks)plugins/calendar/commands/create-event.md(1 hunks)plugins/calendar/commands/find-time.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
plugins/calendar/README.md
[style] ~7-~7: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: ...Smart Time Finding** - Find overlapping free time across multiple participants' calendars...
(FREE_TIME)
[style] ~69-~69: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: .../calendar:find-time` - Find Overlapping Free Time Find overlapping available time with m...
(FREE_TIME)
[style] ~170-~170: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: ...e necessary scopes ### "No overlapping free time found" - Try a shorter meeting duration...
(FREE_TIME)
plugins/calendar/commands/find-time.md
[style] ~33-~33: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: ...for each participant - Find overlapping free time across all participants - Filter out bl...
(FREE_TIME)
[style] ~47-~47: The word “free” tends to be overused. Consider using an alternative wording to strengthen your writing.
Context: ...Handling - Handle cases where no common free time exists - Provide helpful suggestions (s...
(FREE_TIME)
🪛 markdownlint-cli2 (0.18.1)
plugins/calendar/commands/create-event.md
10-10: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
82-82: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
87-87: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
92-92: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
97-97: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
102-102: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (1)
plugins/calendar/README.md (1)
1-196: Excellent documentation structure and content.The README provides comprehensive setup instructions, clear examples, and helpful troubleshooting guidance. The documentation is well-organized and accessible.
Add a meet plugin to find free overlapping times to meet with one or more people.
What this PR does / why we need it
Adds a meet plugin and two slash commands
It's hard to visualize everyone's availability at a glance on Google Calendar, AI came to help.