Skip to content
Productivity
Command

/obsidian-calendar

One calendar command with four modes - agenda (read a snapshot), reconcile (vault vs calendar gaps), meeting (event to note), schedule (task to event)

From plugin
obsidian-second-brain
5.3k49 skills49 commands3 hooks
> /plugin marketplace add eugeniughelbur/obsidian-second-brain
> /plugin install obsidian-second-brain@obsidian-second-brain

Command definition

obsidian-calendar.md
description: One calendar command with four modes - agenda (read a snapshot), reconcile (vault vs calendar gaps), meeting (event to note), schedule (task to event)
category: vault
exclude: [codex-cli, gemini-cli, opencode, hermes, pi, agent-skills, grok-bot]
triggers_en: ["review my agenda", "check my calendar", "what's on my schedule", "what's on the calendar", "agenda for this week", "calendar check", "reconcile calendar", "what's not on my calendar", "am I missing anything on my calendar", "create a meeting note", "log this meeting", "meeting note for", "prep this meeting", "schedule a meeting", "book a meeting", "put this on my calendar", "schedule this task", "find a time for"]
triggers_de: ["meine Agenda durchgehen", "meinen Kalender prüfen", "was steht in meinem Kalender", "was steht diese Woche an", "Agenda für diese Woche", "Kalender abgleichen", "was fehlt in meinem Kalender", "habe ich etwas im Kalender übersehen", "eine Besprechungsnotiz erstellen", "dieses Meeting festhalten", "Notiz für dieses Meeting", "dieses Meeting vorbereiten", "ein Meeting planen", "einen Termin buchen", "in meinen Kalender eintragen", "diese Aufgabe terminieren", "einen passenden Zeitpunkt finden"]
triggers_es: ["revisa mi agenda", "revisa mi calendario", "qué tengo esta semana", "concilia mi calendario con el vault", "qué me falta en el calendario", "crea una nota de reunión", "registra esta reunión", "prepárame para esta reunión", "agenda una reunión", "reserva una reunión", "pon esto en mi calendario", "agenda esta tarea", "búscame un hueco para", "encuentra un horario para"]
triggers_pt: ["revise minha agenda", "veja meu calendário", "o que está na minha agenda", "o que está no calendário", "agenda desta semana", "checagem de calendário", "reconcilie o calendário", "o que não está no meu calendário", "estou esquecendo algo no meu calendário", "crie uma nota de reunião", "registre esta reunião", "nota de reunião para", "prepare esta reunião", "agende uma reunião", "marque uma reunião", "coloque isto no meu calendário", "agende esta tarefa", "encontre um horário para"]
triggers_zh: ["看看我的日程", "这周有什么安排", "检查我的日历", "把知识库和日历对一下", "日历里是不是漏了什么", "为这次会议建笔记", "记录这次会议", "帮我准备这次会议", "安排一个会议", "把这件事放进日历", "给这个任务找个时间"]

Use the obsidian-second-brain skill. Execute `/obsidian-calendar $ARGUMENTS`:

One command for everything that touches the calendar, selected by the first word (the **mode**):

  • `agenda [range]` - read the calendar and write an AI-first snapshot to the vault (read-only on the calendar).
  • `reconcile [window]` - flag commitments the vault implies that are NOT on the calendar (read-only; flags, never writes events).
  • `meeting [selector]` - turn a calendar event into a meeting note in the vault.
  • `schedule <args>` - create or move a calendar event (the only mode that writes to the calendar).

If no mode word is given, infer it: a bare range word (`today`, `week`, `next-week`, a date) means `agenda`; otherwise ask which mode. Default with no argument at all: `agenda today`.

All modes require a Google Calendar MCP. The claude.ai connector exposes `mcp__claude_ai_Google_Calendar__list_calendars`, `list_events`, `get_event`, `create_event`, `update_event`, `suggest_time`; if your calendar MCP namespaces its tools differently, use that server's equivalents. If no calendar MCP is connected, say so clearly and stop - do not fall back to asking the user to paste their calendar.

Always start by reading `_CLAUDE.md` (folder conventions, working hours) and `CRITICAL_FACTS.md` (timezone) if they exist. If neither declares a timezone, default to the session timezone and note that as a caveat. Resolve every folder per `references/folder-map.md` (wiki-style paths shown below).

---

Mode: agenda - read the calendar into a snapshot note

Range argument: `today` (default), `tomorrow`, `week` (current ISO week Mon-Sun), `next-week`, `YYYY-MM-DD`, or `YYYY-MM-DD..YYYY-MM-DD`.

1. Resolve the range against the user's current date; convert start/end to ISO 8601 (`YYYY-MM-DDTHH:MM:SS+/-HH:MM`) in the user's timezone, end bound exclusive at end-of-day local. 2. `list_calendars` once, pick the primary (`primary: true`). Accept `--calendars <id1>,<id2>` to include more; otherwise primary only. 3. `list_events` with `timeMin`, `timeMax`, `singleEvents: true`, `orderBy: "startTime"`; filter cancelled events client-side. 4. For each event capture verbatim: id, htmlLink, summary, start, end, location, description, hangoutLink/conferenceData URL, attendees (email + displayName + responseStatus), organizer, status, recurringEventId. 5. Cross-link attendees against the entities folder (resolved per `references/folder-map.md`): match by full name then email local-part, fuzzy (handle missing diacritics/short forms). Found -> `[[Person Name]]`; not found -> plain name + `(unknown person)`. 6. Detect quality issues: **conflicts** (overlapping intervals on one calendar), **back-to-back stretches** (3+ with no gap), **focus gaps** (working-hours blocks 09:00-18:00 local unless overridden, with no meeting), **externally-organized events** (organizer domain != user's). 7. Write the snapshot (`type: agenda-snapshot`, schema in `references/ai-first-rules.md`) to the agenda folder (resolved per `references/folder-map.md` - wiki-style `wiki/agenda/`, Obsidian-style `Agenda/`): single day `YYYY-MM-DD - <today|tomorrow|day>.md`, week `YYYY-MM-DD - week.md` (Monday prefix), range `YYYY-MM-DD - range.md` (start prefix). If one exists for the range, overwrite it (the calendar is the source of truth) and add `superseded-at: <previous fetched-at>`. The `## For future agent` preamble must state the calendar is the source of truth, not this note, and `fetched-at` is the recency anchor. Body: `## Range`, `## Summary`, `## Events` (one `### YYYY-MM-DD - <Weekday>` subsection per day; each event a bullet with start-end, title, `[[attendees]]`, location, conference link verbatim, and `event-id: <id>` so other modes can locate it), then

Read more
@eugeniughelbur
Ships withobsidian-second-brain

Persistent memory for Claude Code, Codex and 6 other AI agents, stored as plain markdown in your Obsidian vault. New: Crew, one shared logbook so Claude Code, Codex, Cursor and Grok Bot know what each other did. 48 commands: semantic search, self-rewriting notes, key-less research, scheduled agents.

Stars on GitHub

Momentum

stars in total
5.3k
Star history of eugeniughelbur/obsidian-second-brain on GitHub, a chart by star-history.com

Other commands on obsidian-second-brain.

More commands from other plugins.

analyze-cohorts

analyze-cohorts

Command

Perform cohort analysis on user data — retention curves, feature adoption, and engagement trends

@phuryn@phurynInstall Command
again

again

Command

PUA Again — 用于再试试、换个方法、别放弃、为什么还不行、同一路径失败多次;要求停止微调同一思路,改用本质不同方案。

pua2mo20k
@tanweai@tanweaiInstall Command