pp-outlook-calendar
The first Outlook calendar CLI built for AI agents on personal Microsoft 365 accounts — with offline conflict... Trigger phrases: `what's on my calendar today`, `find me an hour next week`, `do I have any conflicts`, `what meetings haven't I responded to`, `prep me for my next meeting`, `schedule a meeting on my Outlook calendar`, `use outlook-calendar`, `run outlook-calendar`.
What this skill does
<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/productivity/outlook-calendar/SKILL.md,
regenerated post-merge by tools/generate-skills/. Hand-edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->
# Outlook Calendar — Printing Press CLI
## Prerequisites: Install the CLI
This skill drives the `outlook-calendar-pp-cli` binary. **You must verify the CLI is installed before invoking any command from this skill.** If it is missing, install it first:
1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
```bash
npx -y @mvanhorn/printing-press-library install outlook-calendar --cli-only
```
2. Verify: `outlook-calendar-pp-cli --version`
3. Ensure the reported install directory is on `$PATH` for the agent/runtime that will invoke this skill.
If the `npx` install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.3 or newer):
```bash
go install github.com/mvanhorn/printing-press-library/library/productivity/outlook-calendar/cmd/outlook-calendar-pp-cli@latest
```
If `--version` reports "command not found" after install, the runtime cannot see the binary directory on `$PATH`. Do not proceed with skill commands until verification succeeds.
## When to Use This CLI
Reach for outlook-calendar-pp-cli when an agent needs to read or write a personal Microsoft 365 calendar non-interactively. It is the right choice for daily-brief, schedule-this-meeting, find-me-time, what-changed-this-week, and prep-me-for-my-next-meeting tasks. Prefer it over hitting Microsoft Graph directly when you want offline-shaped queries (conflicts, free-time math, recurring drift) that the Graph endpoints don't expose as single calls.
## Unique Capabilities
These capabilities aren't available in any other tool for this API.
### Local state that compounds
- **`conflicts`** — Find overlapping events across all your Outlook calendars in one pass — the double-bookings Outlook's own UI never shows.
_When the agent needs to know whether a proposed time blocks the user, this is the source of truth across every calendar the user owns._
```bash
outlook-calendar-pp-cli conflicts --from today --to +7d --json --select pair_id,a.subject,b.subject,overlap_minutes
```
- **`freetime`** — Compute N-minute gaps in your working hours over the next K days, honoring all calendars and optional OOF/tentative exclusion.
_When the agent needs to propose a meeting time, this gives a deterministic answer that respects the user's actual working hours._
```bash
outlook-calendar-pp-cli freetime --duration 60m --within 'Mon-Fri 9-17' --next 7d --exclude-oof --json
```
- **`review`** — Diff against the last delta-sync snapshot: what was added, rescheduled, cancelled, or had its RSVP change.
_Lets the agent answer "what changed since I last looked?" without scanning the whole week._
```bash
outlook-calendar-pp-cli review --since last-sync --json
```
- **`pending`** — List events whose RSVP is still pending and whose start time is in the future, ordered by start.
_Agent task: "what invites do I still need to answer?" — answered in one query._
```bash
outlook-calendar-pp-cli pending --json
```
- **`recurring-drift`** — For each recurring-series master, list instances whose start/end/subject/location diverged from the master pattern.
_Catches the silent organizer-side reschedules that cause people to join Teams calls at the wrong hour._
```bash
outlook-calendar-pp-cli recurring-drift --json
```
- **`with`** — How often have I met with this person, and when did I see them last? Counts and recent N events from local store.
_Agent task: "how often do I meet with X?" without reading the whole calendar._
```bash
outlook-calendar-pp-cli with [email protected] --since 90d --json
```
- **`tz-audit`** — Surface events whose start time-zone differs from the calendar's default or from their own end-time TZ — likely-broken displays on other devices.
_Agent task: "are any of my events about to render at the wrong hour for someone?" — yes/no with the offenders._
```bash
outlook-calendar-pp-cli tz-audit --json
```
### Agent-native plumbing
- **`prep`** — For upcoming events in the next N hours, return a dossier: subject, location, attendee emails, organizer, body excerpt, attachments list, recurrence/online-meeting flags.
_Single tool call that gives an agent everything needed to brief the user on what's coming up._
```bash
outlook-calendar-pp-cli prep --next 4h --json
```
## Command Reference
**attachments** — Manage event attachments
- `outlook-calendar-pp-cli attachments delete` — Delete an attachment
- `outlook-calendar-pp-cli attachments get` — Get a specific attachment by id
- `outlook-calendar-pp-cli attachments list` — List attachments on an event
**availability** — Free/busy and meeting-time intelligence (degraded on personal Microsoft accounts; prefer freetime for self-only queries)
- `outlook-calendar-pp-cli availability find` — Suggest meeting times based on attendee availability and constraints
- `outlook-calendar-pp-cli availability schedule` — Get free/busy schedule for a list of users (limited on personal Microsoft accounts)
**calendars** — Manage Outlook calendars on your account
- `outlook-calendar-pp-cli calendars create` — Create a new calendar
- `outlook-calendar-pp-cli calendars default` — Get the user's default calendar
- `outlook-calendar-pp-cli calendars delete` — Delete a calendar
- `outlook-calendar-pp-cli calendars get` — Get a calendar by id
- `outlook-calendar-pp-cli calendars list` — List all calendars on the account
- `outlook-calendar-pp-cli calendars update` — Update a calendar
**categories** — Manage Outlook master categories used to tag events
- `outlook-calendar-pp-cli categories create` — Create a new master category
- `outlook-calendar-pp-cli categories delete` — Delete a master category
- `outlook-calendar-pp-cli categories list` — List master categories
**delta** — Incremental delta-sync of events into the local SQLite store
- `outlook-calendar-pp-cli delta events` — Pull incremental event changes since the last delta token
- `outlook-calendar-pp-cli delta view` — Pull incremental calendar-view changes within a window
**events** — Outlook calendar events on your default or named calendar
- `outlook-calendar-pp-cli events accept` — Accept a meeting invite
- `outlook-calendar-pp-cli events cancel` — Cancel an event you organized (notifies attendees)
- `outlook-calendar-pp-cli events create` — Create a new event on the default calendar
- `outlook-calendar-pp-cli events decline` — Decline a meeting invite
- `outlook-calendar-pp-cli events delete` — Delete an event by id
- `outlook-calendar-pp-cli events dismiss` — Dismiss the reminder for an event
- `outlook-calendar-pp-cli events forward` — Forward an event to additional attendees
- `outlook-calendar-pp-cli events get` — Get a single event by id
- `outlook-calendar-pp-cli events instances` — List occurrences of a recurring event in a date range
- `outlook-calendar-pp-cli events list` — List events on the default calendar
- `outlook-calendar-pp-cli events range` — List events occurring within a date range (calendarView; expands recurring instances)
- `outlook-calendar-pp-cli events search` — Server-side search across events ($search query)
- `outlook-calendar-pp-cli events snooze` — Snooze the reminder for an event until a specific time
- `outlook-calendar-pp-cli events tentative` — Tentatively accept a meeting invite
- `outlook-calendar-pp-cli events update` — Update fields on an existing event (subject, body, time, location, attendees)
### Finding the right command
When you know what you want to do but not which command doeRelated in Productivity
gitea-workflow
IncludedOrchestrate agile development workflows for Gitea repositories using the tea CLI. Use when working with Gitea-hosted repos and asking to 'run the workflow', 'continue working', 'what's next', 'complete the task cycle', 'start my day', 'end the sprint', 'implement the next task', or wanting guided step-by-step development assistance. Keywords: workflow, orchestrate, agile, task cycle, sprint, daily, implement, review, PR, standup, retrospective, gitea, tea.
microsoft-graph-gateway
IncludedRoute Microsoft Graph work in this workspace. Use when users want to read or write Outlook mail, calendar events, contacts, OneDrive or SharePoint files, Teams, Planner, To Do, users, groups, directory data, or arbitrary Microsoft Graph endpoints from VS Code. Prefer WorkIQ for common read scenarios. Use Microsoft Graph for write actions and gap-read scenarios that need exact Graph properties, filters, permissions, or endpoints.
copilotkit
IncludedUse when building with CopilotKit — setup, development, integrations, debugging, upgrading, or contributing. Routes to the appropriate specialized skill based on the task.
wordly-wisdom
IncludedProvides calibrated decision analysis using Charlie Munger-style multiple mental models, inversion, incentive mapping, circle-of-competence checks, misjudgment audits, second-order effects, and forecast updates. Use when the user asks for an oracle take, a hard call, a decision memo, a premortem, an outside view, a red-team, a sanity-check, what am I missing, think this through, or wants a strategy, hire, investment, plan, product, partnership, or major life choice analysed. Avoid for simple factual lookups or time-sensitive legal, medical, or market questions without fresh evidence.
swain-session
IncludedSession management and project status dashboard. Owns the full session lifecycle (start/work/close/resume), focus lane, bookmarks, worktree detection, and tab naming. Also serves as the project status dashboard — shows active epics, progress, actionable next steps, blocked items, tasks, GitHub issues, and recommendations. Worktree creation is deferred to swain-do task dispatch (SPEC-195). Triggers on: 'session', 'status', 'what's next', 'dashboard', 'overview', 'where are we', 'what should I work on', 'show me priorities', 'bookmark', 'focus on', 'session info'.
gandi
IncludedComprehensive Gandi domain registrar integration for domain and DNS management. Register and manage domains, create/update/delete DNS records (A, AAAA, CNAME, MX, TXT, SRV, and more), configure email forwarding and aliases, check SSL certificate status, create DNS snapshots for safe rollback, bulk update zone files, and monitor domain expiration. Supports multi-domain management, zone file import/export, and automated DNS backups. Includes both read-only and destructive operations with safety controls.