skills/claude-skills-open/skills/channels/email-send-direct/SKILL.md
--- name: email-send-direct description: Single email: dry-run, reply, attachments --- # Email Send Direct > Send a single email via Gmail API from CLI ## When to use - "write an email to X" - "send email to Y" - "reply to the email" - Any single email sending (not mass campaign) ## IMPORTANT: Confirmation rule **ALWAYS first --dry-run, show preview to the user, and only after "yes" send without --dry-run.** ## Composing Guidelines **Before writing a single word:** 1. **Read the full thr
npx skillsauth add aaaaqwq/claude-code-skills skills/claude-skills-open/skills/channels/email-send-directInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Send a single email via Gmail API from CLI
ALWAYS first --dry-run, show preview to the user, and only after "yes" send without --dry-run.
Before writing a single word:
email-read skill to pull last 3-5 days of correspondence with this contact.leads.csv and people.csv for context: deal stage, last activity, relationship notes. The email must reflect where we actually are, not where we were a week ago.Writing rules:
Ivan's voice:
Anti-patterns (never do these):
| Bad | Why | Instead | |-----|-----|---------| | "Please find attached the proposal" | Corporate robot | "Proposal is attached" or "Attached is the proposal we discussed" | | Bullet-point summary of what's attached | They can read it themselves | One sentence saying what it is | | Repeating info they already know | Wastes their time | Reference it briefly, move forward | | "Let me know if you have any questions" | Empty filler | Specific CTA: "Let me know if the terms work" | | Long intro before answering their question | Buries the answer | Answer first, context after |
| What | Path |
|------|------|
| Script | $GOOGLE_TOOLS_PATH/send_email.py |
| Token | $GOOGLE_TOOLS_PATH/token.json |
| venv | $GOOGLE_TOOLS_PATH/.venv/bin/python3 |
cd $GOOGLE_TOOLS_PATH
.venv/bin/python3 send_email.py \
--to [email protected] \
--subject "Subject" \
--body "Message text" \
--dry-run
.venv/bin/python3 send_email.py \
--to [email protected] \
--cc [email protected] \
--cc [email protected] \
--subject "Subject" \
--body "Message" \
--dry-run
.venv/bin/python3 send_email.py \
--to [email protected] \
--subject "NDA attached" \
--body "Please find attached." \
--attach /path/to/file.pdf \
--attach /path/to/another.pdf \
--dry-run
.venv/bin/python3 send_email.py \
--to [email protected] \
--subject "Re: Original Subject" \
--body "Reply text" \
--reply-to 'from:[email protected] subject:"Original Subject"' \
--dry-run
.venv/bin/python3 send_email.py \
--to [email protected] \
--subject "Re: Original Subject" \
--body "Reply text" \
--reply-to-id MESSAGE_ID \
--dry-run
.venv/bin/python3 send_email.py \
--to [email protected] \
--subject "Subject" \
--body-file /path/to/message.txt \
--dry-run
| Parameter | Description | Required |
|-----------|-------------|----------|
| --to EMAIL | Recipient (can specify multiple) | yes |
| --cc EMAIL | CC (can specify multiple) | no |
| --subject TEXT | Email subject | yes |
| --body TEXT | Email body text | yes* |
| --body-file FILE | Body text from file | yes* |
| --attach FILE | Attachment (can specify multiple) | no |
| --reply-to QUERY | Gmail query for thread lookup | no |
| --reply-to-id ID | Gmail message ID for reply | no |
| --dry-run | Preview only, do not send | no |
*Either --body or --body-file is required.
1. Prepare the email text
2. Run with --dry-run
3. Show preview to the user
4. After confirmation -- run WITHOUT --dry-run
5. Script automatically verifies sending (labels, snippet)
============================================================
EMAIL PREVIEW
============================================================
From: Your Name <[email protected]>
To: [email protected]
Cc: [email protected]
Subject: Re: Topic
Thread: abc123 (reply)
Attach: file.pdf (23,794 bytes)
------------------------------------------------------------
Message body here...
============================================================
[DRY RUN] Email not sent.
Sent! Message ID: 19c90af2b9ceaf61
Verify: OK
ID: 19c90af2b9ceaf61
To: [email protected]
Cc: [email protected]
Subject: Re: Topic
Labels: ['SENT']
Snippet: Message body here...
Attach: ['file.pdf']
From: Your Name <[email protected]>
| Problem | Solution |
|---------|----------|
| 401 Unauthorized | Refresh token: google-auth skill |
| Attachment not found | Check file path |
| Thread not found | Check --reply-to query |
| Encoding issues | Body is automatically UTF-8 |
email-send-bulk -- mass sending via Google Sheetsemail-read -- reading emailemail-monitor -- automatic monitoringgoogle-auth -- if authorization issuestesting
通用自媒体文章自动发布工具。支持百家号、搜狐号、知乎、微信公众号、小红书、抖音号六个平台的自动化发布流程。使用Playwright自动化实现平台导航和发布,支持通过storageState管理Cookie实现账号切换。
development
# SKILL.md - Model Configuration Status (mcstatus) ## 触发条件 - `/mcstatus` 命令 - 用户询问模型配备、模型配置、model status、模型列表等 ## 功能 实时生成 Agent + Cron 的模型配置报告,展示当前所有 agent 的主模型/fallback链和所有 cron 任务的模型分配。 ## 执行步骤 ### Step 1: 收集 Agent 模型配置 读取各 agent 的 models.json 获取主模型和 fallback 链: ```bash for agent in main ops code quant data research content market finance pm law product sales batch; do config=$(cat ~/.openclaw/agents/$agent/agent/models.json 2>/dev/null) if [ -n "$config" ]; then echo "=== $agent
tools
MCP 服务器智能管理助手。自动检测 MCP 可用性、智能开关、功能问答,提供人性化的 MCP 管理体验。
tools
从GitHub搜索并自动安装配置MCP(Model Context Protocol)服务器工具到Claude配置文件。当用户需要安装MCP工具时触发此技能。工作流程:搜索GitHub上的MCP项目 -> 提取npx配置 -> 添加到~/.claude.json -> 处理API密钥(如有)。