Prismer Google Workspace
Prismer-AI/PrismerCloud
Gives an agent account-scoped access to Gmail, Calendar, Drive, Contacts, Docs and Sheets through the gws CLI or a bundled Python client.
A skill your agent uses when a product needs a booking surface — a pick-a-slot page, a Cal.com/Calendly embed, or real availability plus the confirmed meeting written to Google/Outlook — or when…
$ npx skills add ericrisco/rsc-harness --skill calendar-scheduling -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness calendar-scheduling --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/calendar-scheduling .claude/skills/calendar-scheduling && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "calendar-scheduling" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/calendar-scheduling into .claude/skills/calendar-scheduling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "calendar-scheduling", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/calendar-schedulingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ericrisco/rsc-harness --skill calendar-scheduling -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness calendar-scheduling --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/calendar-scheduling .agents/skills/calendar-scheduling && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "calendar-scheduling" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/calendar-scheduling into .agents/skills/calendar-scheduling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "calendar-scheduling", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill calendar-scheduling -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness calendar-scheduling --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/calendar-scheduling .cursor/skills/calendar-scheduling && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "calendar-scheduling" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/calendar-scheduling into .cursor/skills/calendar-scheduling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "calendar-scheduling", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/calendar-scheduling--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill calendar-scheduling -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness calendar-scheduling --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/calendar-scheduling .gemini/skills/calendar-scheduling && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "calendar-scheduling" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/calendar-scheduling into .gemini/skills/calendar-scheduling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "calendar-scheduling", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ericrisco/rsc-harness calendar-schedulingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ericrisco/rsc-harness --skill calendar-scheduling -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/calendar-scheduling .github/skills/calendar-scheduling && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "calendar-scheduling" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/calendar-scheduling into .github/skills/calendar-scheduling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "calendar-scheduling", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill calendar-scheduling -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness calendar-scheduling --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/calendar-scheduling .opencode/skills/calendar-scheduling && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "calendar-scheduling" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/calendar-scheduling into .opencode/skills/calendar-scheduling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "calendar-scheduling", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
calendar-schedulingA skill your agent uses when a product needs a booking surface — a pick-a-slot page, a Cal.com/Calendly embed, or real availability plus the confirmed meeting written to Google/Outlook — or when…
Calendar Scheduling is an agent skill from ericrisco/rsc-harness. Use when a product needs a booking surface — a pick-a-slot page, a Cal.com/Calendly embed, or real availability plus the confirmed meeting written to Google/Outlook — or when fixing double-booking, DST drift, or orphaned reschedule events. NOT calendar CRUD with no booking surface (that is google-workspace), NOT the payment (that is stripe).
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/google-calendar-sync.md`).
It sits in Productivity & Automation, covering Calendar and scheduling and Cloud office suites. It works with Google Workspace and Stripe. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 1f8d9bb. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
googleapis.comapi.cal.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Calendar Scheduling loads about 2.6k tokens when it runs, and up to ~4.3k if it reads all its reference files. Until then it costs about 92 tokens; SKILL.md has 1,167 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from ericrisco/rsc-harness at commit 1f8d9bb, republished under its MIT licence (© ericrisco). 1,167 words, ~2,607 tokens.
.claude/skills/calendar-scheduling/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Scheduling is always two halves bolted together: a booking surface (an external person reserves a slot — embed, atom, or API call) and calendar sync (you read free/busy to compute availability and write the confirmed event back). Ship one without the other and you get the three bugs the rest of this skill exists to prevent: double-booking, timezone drift after a DST change, and orphaned events on reschedule.
Pick the lowest-code option that still owns the data model you actually need.
| You need… | Reach for | What you own | Escape hatch |
|---|---|---|---|
| A booking page fast, minimal code | Embed Cal.com or Calendly | Nothing — the widget owns slots/sync | Call the API later to read bookings / fire automation |
| Bookings in your UI, your branding/data model | Cal.com Booker atom or Scheduling API (Cal.com / Calendly) | Your UI; provider owns sync | Drop to raw provider API if the data model chafes |
| Read/write one provider's calendar directly | Google freebusy.query + events.insert | OAuth, refresh, slot math, watch/sync | If it's pure CRUD with no booking → google-workspace |
| Many providers (Google + Outlook + Apple), no N integrations | Unified API (Cronofy or Nylas v3) | One auth/availability surface | Cronofy if cross-domain scheduling matters; Nylas v3 is domain-scoped |
Why per row: the embed is zero-maintenance but a black box; the atom/API buys
your own UI without owning sync; raw provider is full control and full
liability; a unified API trades a vendor for not maintaining three calendar
integrations. Hosting, auth/scopes, webhook events, cross-domain support and
when each wins, per provider:
references/provider-matrix.md.
https://api.cal.com/v2.The default mistake is requesting the broad scope "to be safe." On Google, both
calendar and calendar.events are restricted scopes — they force a
third-party security assessment before you can ship to production. Avoid
them when a granular scope does the job.
// Bad — restricted scope, blocks production until a security assessment.
const SCOPES = ["https://www.googleapis.com/auth/calendar"];
// Good — granular ladder, no restricted tier for the common booking case.
const SCOPES = [
"https://www.googleapis.com/auth/calendar.app.created", // app-owned secondary calendar it creates
"https://www.googleapis.com/auth/calendar.freebusy", // your own availability
// add only if you must read the user's existing events to compute slots:
"https://www.googleapis.com/auth/calendar.events.owned", // manage only events your app created
"https://www.googleapis.com/auth/calendar.events.freebusy", // others' busy blocks
];Scope ladder, narrowest first:
calendar.app.created — a dedicated secondary calendar your app creates and
owns. Best dodge for the restricted assessment when you only need your events.calendar.freebusy / calendar.events.freebusy — read availability (own /
others') without reading event contents.calendar.readonly / calendar.events.readonly — read paths only.calendar.events.owned — write, but only events your app created.calendar / calendar.events — restricted; request only if you genuinely
manage arbitrary events the app didn't create.Both classic races (computing slots in the browser, and writing the event before re-checking) are eliminated by doing this server-side, in order:
freebusy.query across every relevant calendar (the host's, plus any
secondary calendars that block time). Never trust a cached availability blob.freebusy inside the write transaction. If the slot went busy
between step 1 and now, abort and re-offer. This is the line that actually
prevents the double-book.Decision — do you need a hold step?
| Situation | Hold/lock? |
|---|---|
| Low traffic, single host, instant write | No — steps 1→5 with the in-transaction re-check is enough |
| Multi-step booking form, payment, or high contention | Yes — a TTL lock so the slot survives the form and releases if abandoned |
Google's availability primitive is freebusy.query (POST, returns busy blocks
per calendar); the write is events.insert. Both payloads (with
conferenceData for Meet), watch channels + sync tokens, recurring-event edge
cases and refresh-token handling:
references/google-calendar-sync.md.
DST is where naive scheduling code dies. Rules:
Europe/Andorra) separately. Never store a bare wall-clock string.+02:00) is correct only on the day it was
captured; it silently breaks across a DST boundary.timeZone alongside dateTime, or Google
interprets the time in the calendar's default zone and the meeting drifts.// Bad — floating wall-clock, no zone. Drifts after the clocks change.
{ "start": { "dateTime": "2026-10-25T10:00:00" } }
// Good — instant + explicit IANA zone on both ends.
{
"start": { "dateTime": "2026-10-25T10:00:00", "timeZone": "Europe/Andorra" },
"end": { "dateTime": "2026-10-25T10:30:00", "timeZone": "Europe/Andorra" }
}A booking is not confirmed because the embed said so — it is confirmed when the webhook says so. Providers retry, deliver duplicates, and arrive out of order. Your handler must assume all three.
invitee.created /
invitee.canceled (and routing-form submissions); Cal.com fires
BOOKING_CREATED / BOOKING_CANCELLED / BOOKING_RESCHEDULED. Map both to
your own created/canceled/rescheduled handlers.user or organization. Single-use scheduling links expire after
90 days if unused — don't hand out links you cache forever.The generic inbound-receiver scaffolding (queue, retry, replay) lives in the webhooks skill; this skill only owns the booking-specific lifecycle mapping. For "on booking, also create a CRM record + Slack + sheet" cross-tool fan-out, that orchestration is automation-flows, not here.
events.update (or the provider's PATCH) the times — never
events.insert a second one. The phantom-event bug is always a missing lookup.| Anti-pattern | Why it bites | Do instead |
|---|---|---|
| Compute available slots in the browser | Stale/raced data → double-book | freebusy.query server-side, re-check in the write txn |
Request auth/calendar for a read-only widget | Restricted scope → blocked by security assessment | Narrowest scope: calendar.freebusy / calendar.app.created |
| Store local "wall-clock" times | Drift after DST → wrong-hour meetings | UTC instant + IANA zone; set timeZone on Google payloads |
| Trust the embed for confirmation state | Embed lies on network failures | Confirm only on a signature-verified webhook |
| Create a new event on reschedule | Orphaned phantom events pile up | events.update the same event id; release old slot |
| No idempotency on the webhook | Retries duplicate the booking | Dedupe on provider event id before acting |
| Cache a single-use scheduling link forever | Calendly links expire after 90 days | Generate on demand; treat expiry as expected |
| Poll the calendar for changes | Slow, rate-limited, misses edits | watch push channels + incremental sync tokens |
| Write new code against Calendly v1 | v1 API + webhooks dead since May 2025 | Calendly v2 (OAuth 2.1 / PAT) |
Adjacent skills: raw calendar CRUD / watch channels with no booking →
../google-workspace/SKILL.md; charging for a
paid appointment → ../stripe/SKILL.md; booking funnel as
sales stages → ../sales-pipeline/SKILL.md;
sending the confirmation email itself → ../email-connector/SKILL.md.
© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts, references) in skills/calendar-scheduling of ericrisco/rsc-harness.
Open the folder on GitHubat commit 1f8d9bb
Calendar Scheduling next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Calendar Scheduling this skillericrisco/rsc-harness | 180 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Prismer Google WorkspacePrismer-AI/PrismerCloud | 1.6k | 3 repos | ~4.2k | Automated safety check: Pass | MIT | |
| Google Workspace CLILeoYeAI/openclaw-master-skills | 2.2k | — | ~2.6k | Automated safety check: Notes | MIT | |
| Google Workspaceyc-software/qm | 15k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Google Workspace CLIalirezarezvani/claude-skills | 28k | — | ~3k | Automated safety check: Notes | MIT | |
| Gogtrpc-group/trpc-agent-go | 1.9k | 15 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 |
Prismer-AI/PrismerCloud
Gives an agent account-scoped access to Gmail, Calendar, Drive, Contacts, Docs and Sheets through the gws CLI or a bundled Python client.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
yc-software/qm
Read and act on the user's Gmail, Google Calendar, and Google Tasks through per-user OAuth.
alirezarezvani/claude-skills
Google Workspace administration via the gws CLI (github.com/googleworkspace/cli).
trpc-group/trpc-agent-go
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
letta-ai/lettabot
Google Workspace CLI (gog) for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Works with
A skill your agent uses when a product needs a booking surface — a pick-a-slot page, a Cal.com/Calendly embed, or real availability plus the confirmed meeting written to Google/Outlook — or when…. Calendar Scheduling is an agent skill from ericrisco/rsc-harness.com/Calendly embed, or real availability plus the confirmed meeting written to Google/Outlook — or when fixing double-booking, DST drift, or orphaned reschedule events.
Calendar Scheduling fits situations like: A product needs a booking surface — a pick-a-slot page; A Cal.com/Calendly embed; real availability plus the confirmed meeting written to Google/Outlook —; fixing double-booking.
Run `npx skills add ericrisco/rsc-harness --skill calendar-scheduling -a claude-code`. Or copy the skill folder (skills/calendar-scheduling in ericrisco/rsc-harness) into .claude/skills/calendar-scheduling in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill calendar-scheduling -a codex`. Or copy the skill folder (skills/calendar-scheduling in ericrisco/rsc-harness) into .agents/skills/calendar-scheduling in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill calendar-scheduling -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/calendar-scheduling, .gemini/skills/calendar-scheduling, .github/skills/calendar-scheduling and .opencode/skills/calendar-scheduling in your project.
Going by SKILL.md and its folder, Calendar Scheduling needs a shell for the scripts in its folder. Our summary lists: A Bash shell.
SKILL.md names 2 domains. In commands or code: googleapis.com and api.cal.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Calendar Scheduling is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Calendar Scheduling: Prismer Google Workspace (Prismer-AI/PrismerCloud, 1.6k stars), Google Workspace CLI (LeoYeAI/openclaw-master-skills, 2.2k stars), Google Workspace (yc-software/qm, 15k stars) and Google Workspace CLI (alirezarezvani/claude-skills, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 180 GitHub stars. The repository holds 233 skills in this directory. The repository was last updated on October 9, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.