关于 notis-automation
notis-automation 是指导 Notis 中提醒、自动化和技能使用的技能,面向需要安排未来任务或事件触发工作的用户。它强调根据任务是否需要处理逻辑来选择正确机制,并提供创建有效配置的规则。
主要功能
- 01区分提醒、自动化与技能
- 02支持定时、单次及事件触发
- 03指导编写自动化提示词
- 04创建前检查并避免重复
适用场景
- 01安排固定文本提醒
- 02设置定时或事件触发任务
- 03将可复用流程封装为技能
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mindtheflo/ notis-skills --skill notis-automation安装后在 Claude Code 中输入/notis-automation确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/automation-common.mddatabase.mdintegration.mdone-time.mdreminders.mdschedule.mdskill-business-logic.mdwebhook.md详细介绍
Notis 自动化技能
当用户希望稍后执行某项操作、按计划执行,或在事件发生时执行操作时,都使用此技能。它涵盖 Notis 的三个构建模块,以及它们如何协同工作:
- 技能承载业务逻辑——可重复使用的“要做什么”。
- 自动化是连接纽带:将触发器与业务逻辑关联起来。它们也是让 Notis 在未来执行操作的方式。
- 提醒是简单的:在指定时间或按计划发送固定消息。不进行推理,不使用工具,也不生成计算内容。
此技能最重要的作用是选对基本构件,然后为其构建有效载荷。
工具名称
这些是 Notis 原生工具。如果当前工具集中有其规范的 LOCAL_NOTIS_* 名称,请直接调用。不要通过 COMPOSIO_SEARCH_TOOLS 发送已可用的原生自动化或提醒工具,也不要将其包装在 COMPOSIO_MULTI_EXECUTE_TOOL 中;仅在尚未加载某项能力时才进行发现。始终使用原生工具的规范名称调用:
| 领域 | 规范工具 |
|---|---|
| 提醒 | LOCAL_NOTIS_INSERT_REMINDER、LOCAL_NOTIS_UPDATE_REMINDER、LOCAL_NOTIS_LIST_REMINDERS、LOCAL_NOTIS_DELETE_REMINDER |
| 自动化 | LOCAL_NOTIS_INSERT_AUTOMATION、LOCAL_NOTIS_UPDATE_AUTOMATION、LOCAL_NOTIS_LIST_AUTOMATIONS、LOCAL_NOTIS_GET_AUTOMATION、LOCAL_NOTIS_RUN_AUTOMATION、LOCAL_NOTIS_LIST_AUTOMATION_RUNS、LOCAL_NOTIS_GET_AUTOMATION_RUN、LOCAL_NOTIS_DELETE_AUTOMATION、LOCAL_NOTIS_LIST_INTEGRATION_TRIGGERS |
| 技能 | LOCAL_NOTIS_CREATE_SKILL、LOCAL_NOTIS_LIST_SKILLS、LOCAL_NOTIS_UPDATE_SKILL、LOCAL_NOTIS_INSTALL_SKILL、LOCAL_NOTIS_DISABLE_SKILL、LOCAL_NOTIS_DELETE_SKILL |
数据库(用于 database 触发器) | LOCAL_NOTIS_DATABASE_LIST_DATABASES、LOCAL_NOTIS_DATABASE_GET_DATABASE |
范式
trigger -> automation -> business logic (often a skill)
time -> reminder -> static message
- 触发器是任何应当启动工作的事物:时钟(cron)、未来某个时刻(一次性)、传入的 HTTP 调用(webhook)、外部集成事件(新邮件、新日历事件),或 Notis 数据库记录发生变化。
- 自动化将触发器绑定到一个
prompt,由 Notis Agent 实际运行(完整的 Agent 轮次)。提示词是连接纽带,不是用来倾倒冗长流程的地方。 - 技能是存放真正可重复使用流程的地方。当工作并非简单操作或会重复使用时,应将步骤放入技能,并让自动化的提示词引用该技能(
/skill-name)。自动化提示词应保持简短;逻辑应放在技能中。 - 提醒适用于完全没有任何内容需要计算的情况——用户只是想收到一条固定文本的提示。
选择基础构件
| 用户想要…… | 使用 | 原因 |
|---|---|---|
| 在某个时间或按计划收到固定提醒(“提醒我下午 5 点给牙医打电话”) | Reminder | 无需推理——只需发送准确的文本 |
| 按计划、在事件发生时或通过 webhook 运行工作(“每周一汇总上周的交易”,“收到新的 Gmail 时回复”) | Automation | 触发器必须运行业务逻辑 |
| 在未来执行一次性任务(“两小时后起草摘要”) | Automation,使用 trigger_type: "one_time" | “稍后做某事”只要涉及工作,仍然属于自动化 |
| 在未来发送固定文本且无需计算的消息(“今晚 6 点给我发‘出发去机场’”) | Reminder,使用 trigger_type: "one_time" | 虽然是未来发送,但仍只是一条静态消息 |
| 让某个流程可供多个触发器或对话重复使用 | skill(由自动化引用) | 业务逻辑应放在 skill 中 |
经验法则:
- 如果操作需要 Agent 思考、读写数据库、调用任何工具、获取任何内容或生成计算得出的文本 → 使用 automation,绝不要使用 reminder。
- 仅仅因为“发生在未来”,并不意味着要用 reminder。未来要执行的工作任务属于 one-time automation;未来发送的固定消息属于 one-time reminder。
- 如果你发现自己在 automation
prompt中编写冗长的分步流程,请停下来,将其移入 skill,然后在 prompt 中引用该 skill。
创建任何内容之前,请列出已有内容(LOCAL_NOTIS_LIST_REMINDERS、LOCAL_NOTIS_LIST_AUTOMATIONS),以免创建重复项,并用通俗的语言向用户确认触发条件和操作。
编写 automation prompt 的两条规则
这两种错误会导致自动化失效。请务必遵守。
1. 绝不要在 prompt 中写入发送目标
automation 的响应发送到哪里,由 channel(和 channel_account_id)字段设定——而不是由 prompt 设定。automation 的输出会自动发送到该 channel。
- 不要在 prompt 中写“通过 WhatsApp 发给我”、“将摘要发布到 Slack”、“通过邮件把结果发给我”或“在此对话中回复”。
- prompt 只描述要执行的工作和要生成的输出。发送方式需单独配置。
Bad prompt: "Summarize yesterday's sales and post it to my Slack."
Good prompt: "Summarize yesterday's sales." (with channel: "slack")
2. 绝不要在 prompt 中写入计划安排或重复周期相关措辞
计划安排由触发器设定(cron 表达式或一次性时间戳)。每次触发器触发时,prompt 都只会运行一次。如果 prompt 写了“每天早上”、“每周一”、“每天”或“设置为定期运行……”,Agent 可能会将其理解为要求创建另一个 automation,从而导致递归循环,而不是执行工作。
- 将 prompt 写成一个现在就要执行的、使用现在时的单一操作。
- 所有时间和频率都交由触发器设定。
Bad prompt: "Every morning, send me a digest of new emails."
Good prompt: "Compile a digest of emails received since yesterday." (with cron: "0 8 * * *")
使用规范
- 面向用户使用通俗语言。 说“提醒”“每周自动化”“Slack 频道”“Tasks 数据库”,而不是工具名称、
trigger_type值或原始 JSON。在内部构建并验证负载。 - 通过渠道投递,绝不写进提示词。 使用
channel/channel_account_id设置输出位置。不要在自动化的prompt中写“发送到……”“发布到……”“给我发邮件……”或“在讨论串中回复”。 - 提示词中不要提及重复周期。 计划由触发器决定。提示词中写“每天早上”或“设置每日……”,可能会导致 Agent 新建另一个自动化,而不是执行工作。请将提示词写成一个现在时动作。
- 先查找,再询问。 在询问用户之前,自行解析由选择器提供的值:频道账号(有多个时)、集成工具包/触发器/已连接账号(
LOCAL_NOTIS_LIST_INTEGRATION_TRIGGERS),以及数据库 ID 和属性 ID(LOCAL_NOTIS_DATABASE_LIST_DATABASES/LOCAL_NOTIS_DATABASE_GET_DATABASE)。只有一个匹配项 → 确认;有多个 → 提供选项;没有 → 询问或暂缓。 - 绝不捏造标识符。 集成提供方、
triggerName、connectedAccountId、database_id和property_id必须通过查找获取,不能凭记忆填写。 - 明确计划时间。 计划触发器需要具体的 cron 表达式;一次性触发器需要带时区的真实未来时间戳。时间未明确时,不要创建计划项目。
- 去重。 先列出现有提醒/自动化,并删除重复项,不要叠加近似项。
- 先确认,再创建。 用一句简短通俗的话概述触发器和操作,征得同意后再创建,随后提供门户 URL(如果有,也提供 webhook URL)。
- 选择正确的基础组件。 固定消息 → 提醒。由触发器启动的工作 → 自动化。可复用逻辑 → 由自动化引用的技能。不确定该使用一次性提醒还是一次性自动化时,询问用户未来的操作是固定文本还是实际工作。
对于自动化,阅读 automation-common 和一份对应的触发器指南。对于固定消息,只阅读 reminders。可复用流程使用 skill-business-logic。
任务指南
只阅读完成此任务所需的指南。相对链接以技能包为基准解析。
对于托管的 MCP,使用 resources/read 或可用的 Notis 资源获取工具,获取对应的 notis://docs/notis-automation/references/<file>.md URI;
根资源也会将这些链接改写为其已发布的 URI。