Skill: sky-lv/email-router-assistant (version 1.0.0)

--- name: email-skill description: "当用户提到邮箱相关能力时，进入这个skill，统一邮件入口（纯路由层）：识别用户意图后路由到 public-skill 或 imap-smtp-email，自身不执行任何脚本" version: "3.0" trigger_keywords: - 发邮件 - 发送邮件 - 写邮件 - 邮箱 - email - send email - 收邮件 - 查邮件 - 检查邮箱 - 收件箱 - inbox - 搜索邮件 - 查找邮件 - 下载附件 - 邮件附件 - 绑定邮箱 - 邮箱绑定 - 日报推送 - 天气推送 - 报告推送 - 提醒推送 - 邮件通知 - 邮件推送 - 推送到邮箱 - 消息留存 exclude_when: - 操作与邮件完全无关（如日历、文件管理、聊天） - 用户要求发送短信或站内信（非邮件渠道） --- # 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` | | "发给 [REDACTED_SECRET]" | `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`


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)