Agent skill

gmail

This skill should be used when the user asks to "check email", "read emails", "send email", "reply to email", "search inbox", or manages Gmail. Supports multi-account Gmail integration for reading, searching, sending, and label management.

Stars 692
Forks 85

Install this agent skill to your Project

npx add-skill https://github.com/team-attention/plugins-for-claude-natives/tree/main/plugins/gmail/skills/gmail

SKILL.md

Gmail Skill

Manage emails through Gmail API - read, search, send, and organize across multiple Google accounts.

Account Setup

Before running any command, read accounts.yaml to check registered accounts.

If accounts.yaml is missing or empty → Read references/setup-guide.md for initial setup

yaml
# accounts.yaml example
accounts:
  personal:
    email: user@gmail.com
    description: Personal Gmail
  work:
    email: user@company.com
    description: Work account

Email Sending Workflow (5 Steps)

When sending emails, create 5 Tasks with TaskCreate and execute sequentially:

Step Task Key Action
1 Gather context Run Explore SubAgents in parallel: recipient info, related projects, background context
2 Check previous conversations Search --query "to:recipient OR from:recipient newer_than:90d" → AskUserQuestion for thread selection
3 Draft email Compose draft → AskUserQuestion for feedback
4 Test send Send [TEST] email to user's own address → Open in Gmail web → Request confirmation
5 Actual send Send to recipient → Report completion

Signature: Append ---\nSent with Claude Code to all outgoing emails

Workflow Example: "Send a meeting email to John"

1. Create 5 Tasks
2. Step 1: Run parallel Explore SubAgents
   - Search recipient (John) info (partners/, projects/, context.md, etc.)
   - Search meeting context (calendar, recent meeting notes, etc.)
3. Step 2: Search "to:john@company.com OR from:john@company.com"
   → If previous conversation exists, AskUserQuestion (reply/new email)
4. Step 3: Draft email → AskUserQuestion (proceed/revise)
5. Step 4: Test send to my email → Open in Gmail web (`open "https://mail.google.com/mail/u/0/#inbox/{message_id}"`) → Request confirmation
6. Step 5: Actual send → Done

CLI Quick Reference

bash
# List messages
uv run python scripts/list_messages.py --account work --query "is:unread" --max 10

# Send email
uv run python scripts/send_message.py --account work --to "user@example.com" --subject "Subject" --body "Content"

# Check profile
uv run python scripts/manage_labels.py --account work profile

Detailed CLI usage: references/cli-usage.md Search query reference: references/search-queries.md

View Email in Web

After sending, use the returned Message ID to view directly in Gmail web:

bash
# URL format
https://mail.google.com/mail/u/0/#inbox/{message_id}

# Example: Open in browser after test send
open "https://mail.google.com/mail/u/0/#inbox/19c145bbd47ddd01"

Note: u/0 is the first logged-in account, u/1 is the second account

File Structure

skills/gmail/
├── SKILL.md
├── accounts.yaml           # Account metadata
├── scripts/                # CLI scripts
├── references/
│   ├── setup-guide.md      # Initial setup guide
│   ├── cli-usage.md        # Detailed CLI usage
│   ├── search-queries.md   # Search query reference
│   └── credentials.json    # OAuth Client ID (gitignore)
├── assets/
│   ├── accounts.default.yaml  # Account config template
│   ├── email-templates.md     # Email body templates
│   └── signatures.md          # Signature templates (Plain/HTML)
└── accounts/               # Per-account tokens (gitignore)

Error Handling

Situation Resolution
accounts.yaml missing Read references/setup-guide.md for initial setup
Token missing Guide user to run setup_auth.py --account <name>
Token expired Auto-refresh; if failed, guide re-authentication

Expand your agent's capabilities with these related and highly-rated skills.

team-attention/plugins-for-claude-natives

dev-scan

개발 커뮤니티에서 기술 주제에 대한 다양한 의견 수집. "개발자 반응", "커뮤니티 의견", "developer reactions" 요청에 사용. Reddit, HN, Dev.to, Lobsters 등 종합.

692 85
Explore
team-attention/plugins-for-claude-natives

tech-decision

This skill should be used when the user asks to "기술 의사결정", "뭐 쓸지 고민", "A vs B", "비교 분석", "라이브러리 선택", "아키텍처 결정", "어떤 걸 써야 할지", "트레이드오프", "기술 선택", "구현 방식 고민", or needs deep analysis for technical decisions. Provides systematic multi-source research and synthesized recommendations.

692 85
Explore
team-attention/plugins-for-claude-natives

google-calendar

Google 캘린더 일정 조회/생성/수정/삭제. "오늘 일정", "이번 주 일정", "미팅 추가해줘" 요청에 사용. 여러 계정(work, personal) 통합 조회 지원.

692 85
Explore
team-attention/plugins-for-claude-natives

metamedium

This skill should be used when the user is building, planning, or strategizing and the key question is whether to optimize content (what) or change form (how/medium). Trigger on "내용 vs 형식", "content vs form", "metamedium", "형식을 바꿔볼까", "새로운 포맷", "관점 전환", "perspective shift", "다른 방법 없을까", "같은 방식이 안 먹혀", "diminishing returns". Applies Alan Kay's metamedium concept to surface form-level alternatives. For requirement clarification use vague; for strategy blind spots use unknown.

692 85
Explore
team-attention/plugins-for-claude-natives

unknown

This skill should be used when the user provides a strategy, plan, or decision document and wants to surface hidden assumptions and blind spots using the Known/Unknown 4-quadrant framework. Trigger on "known unknown", "4분면 분석", "blind spots", "뭘 놓치고 있지", "뭘 모르는지 모르겠어", "전략 점검", "전략 분석", "assumption check", "가정 점검", "quadrant analysis", "what am I missing". Strategy-level blind spot analysis with hypothesis-driven questioning. For requirement clarification use vague; for content-vs-form reframing use metamedium.

692 85
Explore
team-attention/plugins-for-claude-natives

vague

This skill should be used when the user's request or requirement is ambiguous and needs iterative questioning to become actionable. Trigger on "clarify requirements", "refine requirements", "요구사항 명확히", "요구사항 정리", "뭘 원하는 건지", "make this clearer", "spec this out", "scope this", "/clarify". Turns vague inputs into concrete specs. For strategy blind spots use unknown; for content-vs-form reframing use metamedium.

692 85
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results