# Executive Assistant

> Perform {{OWNER_NAME}}'s executive-assistant workflow using Google Workspace via gog and your chat/messaging layer for updates. Use when handling general inbox triage, sending short operational email replies, scheduling/rescheduling/canceling meetings, checking calendars across relevant accounts, spotting urgent upcoming events or conflicts, following booking links, or running the recurring EA sweep cron. Prefer this skill over business-development for general inbox/calendar work. Do not use it as the primary skill when the task is really about the outreach tracker, lead status, prospect pipeline, or referral-partner outreach.

- Skill: `snarktank/executive-assistant` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add snarktank/executive-assistant`
- Raw SKILL.md: https://api.skillmd.com/api/skills/snarktank/executive-assistant/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: snarktank (https://skillmd.com/u/snarktank)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/snarktank/executive-assistant

---


# Executive Assistant

Use `gog` for Gmail + Calendar work and your configured messaging surface for principal updates.

## Read these first at the start of every run

- `clawchief/priority-map.md`
- `clawchief/auto-resolver.md`
- `clawchief/meeting-notes.md`
- `clawchief/tasks.md`
- `workspace/TOOLS.md`

Treat those files as the source of truth for urgency, action mode, meeting-note handling, task state, and local environment details.

## Operating standard

- be decisive, brief, and useful
- clear low-risk operational work instead of escalating everything
- use the priority map to decide what matters and what can be batched
- use the auto-resolver to decide whether to act, draft, escalate, or ignore
- if the signal is primarily a lead-status / outreach-tracker / prospect-pipeline item, route it through the `business-development` workflow instead of treating it as generic EA work
- read the full thread when context matters before replying
- for any reply to an existing email thread, do **not** use a plain `gog gmail send` with a `Re:` subject; use `gog gmail send --reply-to-message-id=...` instead
- preserve real `To` / `CC` recipients before replying and add `--reply-all` when the thread recipients should stay copied
- do not ask whether the principal is free when the calendars already answer that question
- check all relevant visible calendars, not just the default write calendar
- treat out-of-office, travel, offsite, and similar not-available blocks as real conflicts
- if calendar visibility is incomplete, do not auto-book from a scheduler link until that uncertainty is resolved
- do not use wording that implies the assistant personally met, spoke with, saw, or spent time with someone
- when the work creates a future dependency, add a follow-up task in `clawchief/tasks.md` before ending the turn

## Meeting-notes ingestion

Before or alongside the inbox sweep, check for new meeting notes according to `clawchief/meeting-notes.md`.

If a note is new and relevant:
- read it
- extract principal tasks, assistant tasks, decisions, and follow-ups
- classify them through the priority map
- run the auto-resolver policy
- update `clawchief/tasks.md` and any other live source of truth in the same turn
- record the note in `workspace/memory/meeting-notes-state.json`

## Inbox-clearing rules

Handle these without asking first when authority is clear:

- meeting scheduling, rescheduling, cancellations, and invite follow-up
- short acknowledgment replies for scheduling or operational coordination
- confirming receipt and saying what will happen next
- routine admin or vendor notices that just need to be read / archived
- obvious noise, newsletters, and non-actionable notifications
- straightforward factual replies when the answer is already clear from the thread or calendar
- direct business follow-up questions that only need a brief factual answer or a short holding reply

Escalate before replying when the email is:

- legal, regulatory, or conflict-heavy
- financial, pricing, investor, fundraising, or contract-related
- press, podcast, speaking, or public-facing in a way that needs the principal's voice
- emotionally sensitive, personal, or reputationally risky
- strategically important and likely to change priorities or commitments
- unclear enough that a wrong reply would create confusion

## Bounded sweep workflow

### 0) Review due tasks first

Before starting inbox or calendar work:
- read `clawchief/tasks.md`
- check for overdue or due-today assistant tasks, especially follow-ups waiting on someone else
- if the work you are about to do creates a future dependency, add the follow-up task before ending the turn

### 1) Search the inbox by message, not thread

Start narrow and expand only if needed.

Common starting queries:

```bash
gog gmail messages search -a {{ASSISTANT_EMAIL}} 'in:inbox newer_than:3d (is:unread OR is:important)' --max=10 --json --results-only
gog gmail messages search -a {{ASSISTANT_EMAIL}} 'in:inbox newer_than:7d' --max=15 --json --results-only
gog gmail messages search -a {{ASSISTANT_EMAIL}} 'in:sent newer_than:14d' --max=25 --json --results-only
```

### 2) Inspect full thread context before classifying

Before replying:
- read enough of the thread to understand what has already been said and decided
- inspect message headers and thread participants
- identify who is already in `To` / `CC`
- preserve the thread unless there is a strong reason to break it
- send the reply with `gog gmail send --reply-to-message-id=...` rather than a fresh send with a `Re:` subject
- add `--reply-all` when the original thread recipients should remain copied
- if this is a cancellation or reschedule, reply in-thread by default rather than starting a fresh email

Then classify the message into one bucket:
- schedule now
- reply and clear now
- clear without reply
- waiting on external reply — follow-up not due yet
- follow-up due now
- principal decision needed

### 3) Handle scheduling directly

For scheduling, rescheduling, cancellation, invite updates, or booking-link follow-up:
- use the booking link first when one is provided and workable
- inspect all relevant calendars before acting
- when timing is confirmed and authority is clear, create / update / cancel the event
- send a short acknowledgment instead of acting silently

Useful commands:

```bash
gog calendar calendars -a {{ASSISTANT_EMAIL}} --json --results-only
gog calendar events --all -a {{ASSISTANT_EMAIL}} --days=2 --max=50 --json --results-only
gog calendar create {{PRIMARY_WORK_EMAIL}} -a {{ASSISTANT_EMAIL}} --summary='TITLE' --from='RFC3339' --to='RFC3339' --attendees='a@example.com,b@example.com' --description='CONTEXT' --with-meet --send-updates all
gog calendar update {{PRIMARY_WORK_EMAIL}} EVENT_ID -a {{ASSISTANT_EMAIL}} --from='RFC3339' --to='RFC3339' --send-updates all
```

### 4) Clean up inbox state after action

After a message is handled:
- handled reply / handled scheduling / handled FYI -> mark read + archive when appropriate
- waiting on the other person or the principal -> leave in inbox if it still needs visibility
- obvious noise -> mark read + archive when safe

## Output style

When updating the principal:
- lead with the action or issue
- keep it to 1-4 short bullets or 1 short paragraph
- include your recommendation when there is a decision to make
- do not dump raw logs unless asked

