From engineering-os
View today's or this week's calendar from Google Calendar via Playwright
How this skill is triggered — by the user, by Claude, or both
Slash command
/engineering-os:calendarThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
View your Google Calendar schedule parsed into a clean markdown table with conflict detection
View your Google Calendar schedule parsed into a clean markdown table with conflict detection and focus time estimates.
/calendar → today's schedule
/calendar today → today's schedule
/calendar week → this week's schedule
Read the config file to find the vault location:
~/.config/engineering-os/config — parse VAULT_PATH=... and
ENGINEERING_OS_MODE=...%APPDATA%\engineering-os\config.ps1 — parse $env:VAULT_PATH and
$env:ENGINEERING_OS_MODEAll file references in this skill use $VAULT_PATH as the base directory.
If the config file does not exist, tell the user: "Engineering OS is not set up.
Run setup.sh (or setup.ps1 on Windows) from the plugin directory first."
Based on the argument (default: today):
https://calendar.google.com/calendar/u/0/r/dayhttps://calendar.google.com/calendar/u/0/r/weekUse mcp__playwright__browser_navigate to open the URL.
Wait 3 seconds for the page to fully load using mcp__playwright__browser_wait_for.
Use mcp__playwright__browser_snapshot — NOT a screenshot.
The snapshot returns the accessibility tree with all calendar events as interactive elements.
Events typically appear as button elements with text patterns like:
"9:30 AM to 10 AM, Meeting Name, Organizer Name, Accepted, No location, Color: Grape"
"2 PM to 3 PM, Sprint Planning, Team Lead, Tentative, Room 4B, Color: Banana"
For each event, extract:
SKIP these entries — do not include in the active events table:
Track separately:
Detect conflicts:
For each day, output:
### [Day of week], [Month] [Day], [Year]
| Time | Event | Status | Category |
|------|-------|--------|----------|
| 09:30–10:00 | Meeting Name | Accepted | Color |
| 10:00–11:00 | Another Meeting | ⚠ Tentative | Color |
...
**Conflicts:** [list overlapping events, or "None"]
**Declined:** [list declined events, or "None"]
Use 24h or AM/PM format matching what the snapshot provides. Use en-dash (–) for time ranges.
After all days, add:
**Summary:**
- Active events: [count] (excluding declined, focus time, lunch)
- Meeting hours: [total hours]
- Estimated focus time: [hours] ([list gaps ≥ 30 min])
Focus time = gaps between meetings that are at least 30 minutes, within working hours (9 AM – 6 PM).
/morning and daily planning.npx claudepluginhub jerovino/engineering-os-extension --plugin engineering-osCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.