Best for
- Use when the user wants to find a meeting time, schedule a meeting, check availability, or book time with someone.
jackchuka/skills/gws-meeting-scheduler/SKILL.md
Schedule meetings between people using the `gws` CLI (Google Calendar). Use when the user wants to find a meeting time, schedule a meeting, check availability, or book time with someone. Triggers on requests like "schedule a meeting with X", "find time with Y", "book a 1:1", "when can I meet with Z", "set up a sync".
Decision brief
Find mutual availability and create Google Calendar events using the gws CLI.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/jackchuka/skills --skill "gws-meeting-scheduler"Inspect the Agent Skill "gws-meeting-scheduler" from https://github.com/jackchuka/skills/blob/7b0b33f68b8f11522e43622e5cb3bacd802999d2/gws-meeting-scheduler/SKILL.md at commit 7b0b33f68b8f11522e43622e5cb3bacd802999d2. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
If the user provides a name but no email, search past calendar events:
gws CLI installed and authenticated
If the user provides a name but no email, search past calendar events:
Detect each person's timezone by querying their own calendar directly. When you query a person's calendar via their email as calendarId, the API returns start.dateTime with that person's local UTC offset — this is the most reliable signal.
Ask the user for a preferred date range, or default to the next 5 business days.
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 88/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 15 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Find mutual availability and create Google Calendar events using the gws CLI.
gws CLI installed and authenticatedIf the user provides a name but no email, search past calendar events:
gws calendar events list --params '{"calendarId":"primary","q":"<name>","maxResults":10}'
Look at the attendees array in results to find the matching email. If multiple matches, ask the user to confirm.
Detect each person's timezone by querying their own calendar directly. When you query a person's calendar via their email as calendarId, the API returns start.dateTime with that person's local UTC offset — this is the most reliable signal.
gws calendar events list --params '{"calendarId":"<user-email>","maxResults":10}'
gws calendar events list --params '{"calendarId":"<attendee-email>","maxResults":10}'
For each person:
start.dateTime on non-all-day events (skip events with only start.date)-08:00, +09:00) — this reflects their calendar's timezonestart.timeZone field on events matching that offset to get the IANA name (e.g., -08:00 → America/Los_Angeles)Important: Do NOT rely on start.timeZone alone — it often reflects the organizer's or attendee's timezone rather than the calendar owner's. The dateTime offset from the person's own calendar is the source of truth.
If no timezone can be determined for either person, ask the user.
Ask the user for a preferred date range, or default to the next 5 business days.
Query both calendars together. The query range must cover work hours in both timezones:
gws calendar freebusy query --json '{
"timeMin": "<start-RFC3339>",
"timeMax": "<end-RFC3339>",
"items": [{"id": "<user-email>"}, {"id": "<attendee-email>"}]
}'
Day | User (JST) | Attendee (PST) | Duration
Thu Feb 26 | 15:00 - 16:00 | 22:00 - 23:00 | 1h
If work-hour overlap is very limited (e.g., < 1 hour), note this and suggest the user consider extending hours.
Once the user picks a slot, duration, and title:
gws calendar +insert \
--summary "<title>" \
--start "<start-RFC3339>" --end "<end-RFC3339>" \
--attendee "<user-email>" --attendee "<attendee-email>"
For Google Meet links or other advanced options, use the raw API instead:
gws calendar events insert --params '{"calendarId":"primary","conferenceDataVersion":1,"sendUpdates":"all"}' \
--json '{
"summary": "<title>",
"start": {"dateTime": "<start-RFC3339>"},
"end": {"dateTime": "<end-RFC3339>"},
"attendees": [{"email": "<user-email>"}, {"email": "<attendee-email>"}],
"conferenceData": {"createRequest": {"requestId": "<unique-id>", "conferenceSolutionKey": {"type": "hangoutsMeet"}}}
}'
Key notes:
--attendee — repeat for each attendee, always include the user themselvesconferenceDataVersion=1 param required when adding Meet linkssendUpdates=all — notify attendees via emailShow: title, date/time (in both timezones if cross-timezone), attendees, and Meet link.
gws uses --params for query/path parameters and --json for request bodies--format json (or omit, as JSON is default) for reliable parsing+09:00 for JST)gws calendar +insert helper for simple events; use gws calendar events insert raw API for advanced features (Meet links, recurrence, etc.)Alternatives
event4u-app/agent-config
Use when the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility, and more.
K-Dense-AI/scientific-agent-skills
Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.
K-Dense-AI/scientific-agent-skills
Medicinal chemistry filters for compound triage. Apply drug-likeness rules (Lipinski, Veber, CNS), structural alert catalogs (PAINS, NIBR, ChEMBL), complexity metrics, and the medchem query language for library filtering.
K-Dense-AI/scientific-agent-skills
Use NeuroKit2 to build or audit reproducible research workflows for physiological time-series preprocessing, event/interval analysis, multimodal alignment, variability, and complexity. Trigger when code imports neurokit2 or needs its current APIs, schemas, and method-aware validation—not for diagnosis or device validation.