> ## Documentation Index
> Fetch the complete documentation index at: https://docs.newenergycoder.club/llms.txt
> Use this file to discover all available pages before exploring further.

# email-skill

> 当用户提到邮箱相关能力时，进入这个skill，统一邮件入口（纯路由层）：识别用户意图后路由到 public-skill 或 imap-smtp-email，自身不执行任何脚本

| 项目 | 内容                                                                                                                                                                                                                                                                 |
| -- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 来源 | [skills/email-skill/SKILL.md](https://github.com/new-energy-coder-club/new_energy_coder_club/blob/Skill/skills/email-skill/SKILL.md)                                                                                                                               |
| 分类 | 文档 & 办公文件                                                                                                                                                                                                                                                          |
| 安装 | 克隆 [Skill 分支](https://github.com/new-energy-coder-club/new_energy_coder_club/tree/Skill) 后，将 `skills/email-skill/` 目录复制到 `~/.claude/skills/`（Claude Code）、`~/.trae/skills/`（Trae IDE）或 `~/.qclaw/skills/`（QClaw/OpenClaw），详见 [Skill 安装方式](/community/skill-branch) |

# Email Skill（统一邮件入口 / 纯路由层）

> **定位**：`email-skill` 是所有邮件需求的唯一入口。它**只做意图识别和路由分发**，不执行任何脚本，不调用任何接口。识别用户意图后，直接将任务交给下游 skill 执行。

## 1. 架构总览

| Skill                    | 角色          | 说明                           |
| ------------------------ | ----------- | ---------------------------- |
| **email-skill**（本 skill） | 统一入口 / 纯路由层 | 识别意图 → 路由到下游 skill，自身不执行任何操作 |
| **public-skill**         | 平台公邮通道      | 零配置，把内容推送到用户自己的邮箱（纯文本）       |
| **imap-smtp-email**      | 个人邮箱通道      | 需配置，支持完整 IMAP/SMTP 邮件收发能力    |

```
用户邮件需求
     │
     ▼
 email-skill（意图识别）
     │
     ├── 推送到自己邮箱 / 绑定公邮 ──► public-skill
     │
     └── 完整邮件收发 ──► imap-smtp-email
```

## 2. 路由规则

### 2.1 核心原则：先理解场景，再选路径

**不要**先检查公邮是否可用再决定路径。**应该**先理解用户要解决什么问题，再选择对应的 skill。

### 2.2 路由到 `public-skill` 的条件

同时满足以下**所有**条件时，路由到 `public-skill`：

* 发送对象是**用户自己**（没有第三方收件人）
* 内容是**纯文本**（不需要 HTML）
* 不需要**附件、抄送、密送**
* 不需要**收件、检索、下载附件**
* 场景属于"结果推送 / 消息留存"类（天气、日报、报告、提醒等）

### 2.3 路由到 `imap-smtp-email` 的条件

出现以下**任一**信号，直接路由到 `imap-smtp-email`：

* 需要发给第三方收件人
* 需要抄送（cc）或密送（bcc）
* 需要附件
* 需要 HTML 邮件
* 需要收件箱查询、搜索、拉取详情、下载附件
* 需要标记已读/未读、列出邮箱文件夹
* 用户明确说"发给别人""带附件""查收件箱""下载附件""正式邮件""抄送某人"
* 平台公邮不可用，需要兜底发送

### 2.4 快速判断表

| 用户意图信号                                         | 路由目标              |
| ---------------------------------------------- | ----------------- |
| "发到我的邮箱""推送到我邮箱"                               | `public-skill`    |
| "天气/日报/报告 发到我邮箱"                               | `public-skill`    |
| "绑定邮箱""绑定公邮"                                   | `public-skill`    |
| "发给 [xxx@example.com](mailto:xxx@example.com)" | `imap-smtp-email` |
| "抄送""密送"                                       | `imap-smtp-email` |
| "带附件""发 PDF"                                   | `imap-smtp-email` |
| "HTML 邮件""富文本"                                 | `imap-smtp-email` |
| "查收件箱""搜索邮件""最近的邮件"                            | `imap-smtp-email` |
| "下载附件"                                         | `imap-smtp-email` |
| "配置邮箱""设置个人邮箱"                                 | `imap-smtp-email` |

## 3. 两条路径的能力对比

| 能力             | public-skill | imap-smtp-email |
| -------------- | :----------: | :-------------: |
| 发送到自己的邮箱       |       ✅      |        ✅        |
| 发给第三方收件人       |       ❌      |        ✅        |
| 抄送 / 密送        |       ❌      |        ✅        |
| 附件             |       ❌      |        ✅        |
| HTML 邮件        |       ❌      |        ✅        |
| 收件 / 搜索 / 下载附件 |       ❌      |        ✅        |
| 零配置            |       ✅      |        ❌        |
| 需要授权码/密码       |       ❌      |        ✅        |

## 4. 场景示例

### 路由到 `public-skill` 的场景

| 用户需求              | 原因                |
| ----------------- | ----------------- |
| "查一下深圳明天天气，发到我邮箱" | 结果推送到自己邮箱，纯文本，零配置 |
| "每天下班把日报推到我邮箱"    | 只发给自己，消息留存        |
| "把这段总结发到我的邮箱保存"   | 推送到自己邮箱做留存        |
| "帮我绑定邮箱"          | 公邮绑定流程            |

### 路由到 `imap-smtp-email` 的场景

| 用户需求             | 原因         |
| ---------------- | ---------- |
| "用我的 Gmail 发给客户" | 第三方收件人     |
| "给团队发周报并抄送 PM"   | 需要抄送       |
| "发 PDF 附件给合作方"   | 需要附件       |
| "查最近两小时的发票邮件"    | 需要 IMAP 检索 |
| "下载那封邮件的附件"      | 需要附件下载     |
| "配置我的 QQ 邮箱"     | 个人邮箱配置     |
| "公邮发不了，用个人邮箱发"   | 公邮不可用，兜底   |

## 5. 回退策略

当路由到 `public-skill` 后执行失败，且失败原因属于以下类型时，应自动回退到 `imap-smtp-email`：

**可回退的失败类型：**

* 平台公邮日发送上限 / 额度不足
* 通道不可用 / 连接失败
* 请求超时
* 登录已过期 / 未登录
* 网关层通信错误

**不可回退的失败类型（应直接报错）：**

* 邮箱未绑定平台公邮（应引导用户走绑定流程）
* 参数校验错误
* 频率限制

## 6. 安全规则

1. **禁止泄露授权码、SMTP/IMAP 密码、验证码等敏感信息**
2. **发送邮件为非幂等操作，失败后禁止自动重试**
3. **附件路径必须落在允许读取目录内**
4. **下载附件路径必须落在允许写入目录内**
5. **必须用utf8编码**
6. **禁止使用代码块：回答中不得出现任何形式的代码块（包括行内代码 `...` 和围栏代码块 `...`），应使用纯自然语言进行描述**。

## 7. 一句话记忆

* **推给自己做留存** → `public-skill`
* **像正常邮箱那样完整收发** → `imap-smtp-email`
