office:email-management
Handle email tasks (checking inbox, drafting replies, managing threads, adding events to calendar). Use when working with emails to prevent common mistakes like broken threading or missing recipients.
What this skill does
# Email Management with Office Admin
Use this skill when handling:
- Checking inbox or finding specific emails
- Drafting email replies
- Adding events from emails to calendar
- Managing email workflows
- Bulk email triage
## Core Principles
1. **Always draft, never send** - Save emails as drafts for user review before sending
2. **Threading is critical** - Replies must appear in the correct conversation thread
3. **Match user's voice** - Reference their office-admin config for tone and style
4. **Extract structured data** - Pull event details, action items, contact info from emails
5. **Proactive calendar integration** - Auto-check conflicts and add events
## User Style Configuration
Before drafting emails, load the user's style from `~/.claude/office-admin-config.json`:
```json
{
"email": {
"tone": "ultra-terse" | "conversational" | "professional" | "warm",
"signature": "none" | "minimal" | "full",
"formality": "casual" | "standard" | "formal",
"responseLength": "minimal" | "balanced" | "detailed",
"patterns": ["common phrases they use"],
"customGuidelines": "Additional freeform style notes"
}
}
```
If config doesn't exist, prompt user to run `/setup-office-admin` first.
## Email Drafting Workflow
### Step 1: Find the Thread
When drafting a reply, ALWAYS search for the original email first:
```
Search for: [subject] from [sender name]
Get: Full email content, thread ID, message ID, recipient email
```
**Why:** You need context AND threading information. Skipping this = standalone draft instead of threaded reply.
### Step 2: Get Threading Details
Extract from search results:
- `thread_id` - Links all messages in the conversation
- `message_id` - The specific message you're replying to (usually most recent)
- `recipient_email` - The To: address (CRITICAL - tool doesn't auto-extract!)
**Critical:** All three are required for proper threading. Missing any = broken draft.
### Step 3: Draft Using User's Voice
Reference their config for:
**Tone Guidelines:**
- **Ultra-terse**: 1-2 lines, no fluff, direct
- **Conversational**: Casual but complete, friendly
- **Professional**: Formal, structured, proper grammar
- **Warm**: Friendly, personal, include pleasantries
**Signature Guidelines:**
- **None**: No sign-off, message ends immediately
- **Minimal**: Simple "Best," or "Thanks,"
- **Full**: Complete signature block from config
**Response Length:**
- **Minimal**: One-liners when possible
- **Balanced**: 2-3 sentences typical
- **Detailed**: Thorough explanations
**User Patterns:**
Use their common phrases from config `patterns` array when appropriate.
### Step 4: Create Threaded Draft
When creating the draft, specify:
- **To:** Recipient's email address (CRITICAL - always explicit!)
- **Thread ID** (to keep it in conversation)
- **In-Reply-To message ID** (the message you're replying to)
- **Subject** (maintain thread subject, usually "Re: [original]")
- **Body** (match user's voice from config)
- **Signature** (based on user's preference)
**CRITICAL:** Always explicitly provide the `To:` email address. The MCP tool does NOT automatically extract the recipient from the thread - if you omit it, it will create a broken draft with invalid addresses.
**Example tool call structure:**
```
To: [email protected]
Thread ID: 19a5fc252ad4dd3a
In-Reply-To message ID: 19a711957d96874d
Subject: Re: Project Discussion
Body: [message in user's style]
[Signature if configured]
```
### Step 5: Verify Threading
After creating draft, confirm:
- Draft appears in the correct conversation thread
- Subject line maintains thread format
- Draft is saved (not sent)
If threading failed:
1. Get correct thread ID and message ID again
2. Recreate draft with proper IDs
3. Don't create a new standalone email
### Step 6: Iterate on Feedback
User will refine wording:
- Update the draft with changes
- Maintain proper threading
- Keep user's voice consistent
## Calendar Integration
**IMPORTANT:** When emails contain event information, PROACTIVELY add them to the calendar and check for conflicts. Don't wait for user to ask.
### Step 1: Extract Event Details
Look for:
- Date and time
- Location
- Event title/description
- Attendees/who's invited
- Any special notes
### Step 2: Check Calendar for Conflicts
BEFORE creating the event:
1. Check user's calendar for the event date
2. Look for conflicts around the event time
3. Note any existing commitments
4. Reference their working hours from config
**Why:** User needs to know if there's a conflict before committing.
### Step 3: Report Conflicts or Availability
Tell the user:
- "You're free at [time] on [date]" ✅
- "That conflicts with [existing event] at [time]" ⚠️
- Show the relevant portion of the day's schedule
### Step 4: Add Event to Calendar (if appropriate)
If user confirms or if there's no conflict, create the event with:
- Clear title (include location if helpful)
- Correct date/time with timezone awareness (from config)
- Location field
- Description noting who invited/context
- Attendees (if it's a meeting with others)
**Example:**
```
Title: "Lunch with Mike Evans at Soho House"
Date: December 3, 2025
Time: 12:00 PM to 1:30 PM ([User's Timezone from config])
Location: Soho House
Description: "Lunch invitation from Mike Evans to discuss Q1 planning"
Attendees: [email protected]
```
### Step 5: Confirm Addition
Let user know the event was added and provide:
- Calendar link for verification
- Note any conflicts that were identified
- Confirm if adjustments are needed
### Step 6: Handle Tentative Events
For events pending confirmation:
- Create calendar event with "HOLD:" prefix in title
- Example: "HOLD: Call with Jean (pending confirmation)"
- Add "(pending confirmation)" in description
- Update to remove "HOLD" once confirmed
- Delete if falls through
### Step 7: Timezone Handling
When scheduling with people in other timezones:
- Use user's timezone from config as primary
- Specify BOTH timezones in the email
- Example: "9am [your timezone] (4pm their timezone)"
- Double-check timezone conversion before sending
## Inbox Triage
When checking inbox:
### Step 1: Search for Unread
Get recent unread emails with:
- Sender
- Subject
- Date
- Preview snippet
### Step 2: Categorize
Group mentally by type:
- **Urgent/Today**: Meetings, time-sensitive requests
- **Action needed**: Need response or calendar add
- **FYI**: Updates, newsletters
- **Archive**: No action needed, informational only
**NEVER categorize as "DELETE"** - Users should archive instead of deleting.
**For spam/unwanted emails:**
- Mark as spam using Gmail's spam function (if truly spam)
- Unsubscribe from newsletters (if there's an unsubscribe link)
- Archive everything else (don't delete - email storage is cheap, deletion is permanent)
### Step 3: Summarize Clearly
Present in order of priority:
- Recent/urgent first
- Group related emails (threads)
- Highlight action items
- Note any follow-ups needed
### Step 4: Use Subagents for Bulk Processing
For large triage operations (10+ emails):
- Use Task tool with general-purpose subagent
- Have subagent categorize all emails
- Subagent can draft multiple replies in one go
- More efficient than processing one-by-one
## Bulk Email Processing with Subagents
When user asks to triage many emails or handle multiple replies:
1. **Use subagent for triage**:
- Pass clear categorization criteria
- Have subagent check calendars for scheduling
- Pass user's email style config to subagent
- Get comprehensive report back
2. **Use subagent for bulk drafting**:
- Provide list of emails needing replies
- Give subagent user's voice guidelines from config
- Subagent creates all drafts with proper threading
- Review and user sends
**Example prompt structure for subagent:**
```
Triage all unread emails in inbox. Categorize as:
- ACTION NEEDED (with specific next steps)
- CALENDAR (extract event details, check conflicts)
- ARCHIVE (no actRelated 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.