Skip to content
Back to skills

Ops Google Calendar

ASecurity

Read and propose Google Calendar changes over OAuth for meeting-assistant scheduling. Use for "schedule a follow-up", "reschedule", "move the meeting", "push this to Friday", "what's on my calendar", "calendar oauth", or when live-evidence proposes a calendar action. Writes are PROPOSE-ONLY and require an explicit --confirm; nothing mutates a real calendar without it.

  • 6 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 11, 2026
businesspythongobashapisecurity

Works with

  • terminal
  • cli
  • api

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add grahama1970/agent-skills --skill ops-google-calendar --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ops Google Calendar?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ops Google Calendar
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/grahama1970-ops-google-calendar/badge)](https://www.skillsdirectory.com/skills/grahama1970-ops-google-calendar)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ops-google-calendar
description: >
  Read and propose Google Calendar changes over OAuth for meeting-assistant
  scheduling. Use for "schedule a follow-up", "reschedule", "move the meeting",
  "push this to Friday", "what's on my calendar", "calendar oauth", or when
  live-evidence proposes a calendar action. Writes are PROPOSE-ONLY and require
  an explicit --confirm; nothing mutates a real calendar without it.
triggers:
  - google calendar
  - calendar oauth
  - reschedule meeting
  - move the meeting
  - push meeting to friday
  - whats on my calendar
  - schedule a follow-up
  - ops-google-calendar
metadata:
  short-description: Google Calendar read + propose-only scheduling over OAuth
provides:
  - calendar-read
  - calendar-propose
  - google-calendar-oauth
composes:
  - task-monitor
  - agentic-evals
complies:
  - best-practices-skills
  - best-practices-python
  - best-practices-security
taxonomy:
  - scheduling
  - integration
  - loyalty
  - resilience
runtime_self_improvement: basic
disciplines:
  - observability-operations
  - developer-tooling
---

# Ops Google Calendar

Read the calendar, and **propose** (never silently apply) scheduling changes an
agent hears in a meeting. This is the destination for the live-evidence
`schedule` action: "can we push this to Friday?" becomes a proposal a human
approves, not an automatic calendar write.

The Google Calendar API and OAuth are **free** (quota-limited, no per-call
billing). This is unrelated to `ops-google`, which is a Gemini-API budget
manager.

## One-time auth setup

OAuth needs a Google Cloud OAuth client (Desktop type). You create it once:

1. In Google Cloud Console, enable the Calendar API and create an OAuth 2.0
   **Desktop** client. Download the JSON.
2. Save it (path is configurable):

   ```bash
   mkdir -p ~/.config/ops-google-calendar
   cp ~/Downloads/client_secret_*.json ~/.config/ops-google-calendar/client_secret.json
   ```

3. Run the consent flow in your own terminal (it opens a browser). Because this
   is interactive, run it yourself with the `!` prefix:

   ```bash
   ! ./run.sh auth
   ```

   The refresh token is stored at `~/.config/ops-google-calendar/token.json`
   (mode 0600). The scope is `calendar.events` — event read/write only, no
   account or contact access.

## Commands

```bash
./run.sh status --json                       # authed? reachable? (read-only)
./run.sh events --days 7 --json              # upcoming events (read-only)
./run.sh propose-reschedule --event-id <id> --to '2026-08-28T15:00:00-04:00'
./run.sh propose-create --summary 'Sparta sync' \
    --start '2026-08-28T15:00:00-04:00' --end '2026-08-28T15:30:00-04:00'
./run.sh sanity                              # non-mocked local checks
```

`status` and `events` are read-only. `propose-*` emit a
`ops_google_calendar.proposal.v1` receipt and **do not touch the calendar**
unless you add `--confirm`. Without `--confirm` the proposal is printed for a
human to approve; with `--confirm` and a valid token the change is applied and
the applied event is read back into the receipt.

## Boundaries

- **Propose-only by default.** A calendar write is outward-facing and affects
  other people; it fails closed without `--confirm` and without a valid token.
  Nothing here auto-executes.
- **No secrets in output.** Tokens live in a 0600 file and are never printed;
  receipts carry event ids and times, not credentials.
- **Ambiguity is surfaced, not guessed.** A proposal states exactly which event
  and time it would set; underspecified requests ("push to Friday") must be
  resolved to a concrete datetime by the caller before `--confirm`.
- **Not `ops-google`.** That skill manages the paid Gemini API; this one is a
  free Calendar OAuth integration with a separate credential.

## References (retrieve on demand — do not vendor)

External docs drift; cite the canonical URLs and fetch them when needed
with `/context7` (library docs) or `/fetcher` (any URL/PDF) rather than
caching stale copies. Verified reachable (HTTP 200) 2026-08-24.

- Google Calendar API guide: <https://developers.google.com/calendar/api/guides/overview>

```bash
skills/context7/run.sh "google calendar api events oauth"
skills/fetcher/run.sh "https://developers.google.com/calendar/api/guides/overview"
```

Files in this skill

  • SKILL.md4.2 KB
  • fixtures/agentic_eval.json2 KB
  • pyproject.toml326 B
  • run.sh344 B
  • scripts/manager.py9.3 KB
  • scripts/sanity.py2.3 KB
  • uv.lock55.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.