From office-admin
Handles email management tasks including checking inbox, drafting threaded replies, and adding calendar events. Prevents common threading and recipient mistakes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/office-admin:email-managementThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill when handling:
Use this skill when handling:
Before drafting emails, load the user's style from ~/.claude/office-admin-config.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.
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.
Extract from search results:
thread_id - Links all messages in the conversationmessage_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.
Reference their config for:
Tone Guidelines:
Signature Guidelines:
Response Length:
User Patterns:
Use their common phrases from config patterns array when appropriate.
When creating the draft, specify:
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]
After creating draft, confirm:
If threading failed:
User will refine wording:
IMPORTANT: When emails contain event information, PROACTIVELY add them to the calendar and check for conflicts. Don't wait for user to ask.
Look for:
BEFORE creating the event:
Why: User needs to know if there's a conflict before committing.
Tell the user:
If user confirms or if there's no conflict, create the event with:
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]
Let user know the event was added and provide:
For events pending confirmation:
When scheduling with people in other timezones:
When checking inbox:
Get recent unread emails with:
Group mentally by type:
NEVER categorize as "DELETE" - Users should archive instead of deleting.
For spam/unwanted emails:
Present in order of priority:
For large triage operations (10+ emails):
When user asks to triage many emails or handle multiple replies:
Use subagent for triage:
Use subagent for bulk drafting:
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 action needed)
For ACTION NEEDED, draft replies using this style:
[Include user's email config]
Return comprehensive report.
Problem: Draft appears as new email, not in conversation thread Solution: Always get thread ID and message ID before creating draft
Problem: Email doesn't sound like the user Solution: Reference their office-admin config for tone, formality, patterns
Problem: Adding "Best," when user configured "none"
Solution: Check config email.signature setting
Problem: User can't review before it goes out Solution: ALWAYS save as draft, let user send
Problem: User has to manually add events later Solution: Proactively offer to add events when you see them in emails
To: FieldProblem: Draft created with invalid @example.com address that bounces
Solution: ALWAYS explicitly provide recipient email address from thread search
Problem: Event added in wrong timezone Solution: Use timezone from user's config (default: their local timezone)
Before completing an email task, verify:
When processing emails with new contacts:
See office:crm-management skill for details.
You've successfully handled email tasks when:
Email is personal communication using the user's voice. The goal is to save time while maintaining authentic, effective communication that sounds like THEM.
When in doubt: Check their config, follow their patterns, and always draft first.
npx claudepluginhub harperreed/office-admin-claude --plugin office-adminCreates, edits, and verifies skills using a test-driven development approach with pressure scenarios and subagents.