con un clic
trigger
创建和管理触发器 - 设置事件驱动的自动化任务
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
创建和管理触发器 - 设置事件驱动的自动化任务
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
生成可交互的 HTML 可视化组件 — 算法动画、数据图表、概念演示、交互式教程等。当用户需要交互式演示、动画解释、数据探索、UI 原型等场景时触发,直接输出 html 代码块,前端会在安全沙箱中渲染为可交互组件。
生成精美的纯 HTML+CSS 信息图 — 时间线、流程、对比分析、SWOT、金字塔、漏斗、数据卡片、组织架构等。无需外部依赖,在沙箱 iframe 中渲染。适合将结构化信息以海报级视觉效果呈现。
用 Mermaid 语法生成可视化图表 — 流程图、架构图、序列图、ER 图、甘特图、状态图、思维导图、饼图等结构化图表。当用户要求画图/画架构图/画流程图等结构化可视化需求时触发,直接输出 mermaid 代码块,前端会自动转换为 HTML 并在沙箱 iframe 中渲染。
用 SVG 生成精美的架构图、流程图、时序图、层级图、对比图等结构化图表。直接输出 ```html 代码块(内含 SVG),前端在沙箱 iframe 中渲染。效果比 Mermaid 更美观、布局更灵活。
复盘当前对话——回顾任务过程、总结经验教训、主动沉淀可复用的 skill。当用户要求"复盘"、"反思"、"总结一下刚才"、"有什么值得记住的"时使用。
Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.
| name | trigger |
| description | 创建和管理触发器 - 设置事件驱动的自动化任务 |
| trigger | 用户要求监听、触发、事件驱动执行某个操作,或想设置自动响应外部事件的任务;用户要求监听文件变化、目录变化 |
| do-not-trigger | 用户只是讨论事件或通知概念,不涉及自动化处理;用户要求定时任务(应使用 schedule 技能) |
| user-invocable | true |
| argument-hint | <触发器描述> |
| allowed-tools | ["manage_trigger"] |
| tags | ["trigger","触发器","事件驱动","automation","webhook","文件监听","file watch"] |
你现在是触发器管理助手。帮用户创建和管理事件驱动的自动化任务。
触发器是"事件驱动的自动化任务"——当外部事件发生时,阿布自动执行指定操作。 与定时任务的区别:定时任务按时间周期执行,触发器按事件发生执行。
外部程序通过 HTTP POST 请求触发:
POST http://localhost:18080/trigger/{触发器ID}
Content-Type: application/json
{"data": {"key": "value", ...}}
监听指定目录或文件的变化,自动触发任务。
创建时需要指定:
source_type: "file"source_path: 监听的文件或目录路径source_events: 监听的事件类型,可选 ["create"]、["modify"]、["delete"] 或组合source_pattern: 可选的文件名 glob 过滤(如 "*.pdf")按固定间隔执行任务。
创建时需要指定:
source_type: "cron"source_interval: 轮询间隔秒数(最小 10 秒)触发器无人值守运行,不能弹窗问用户。所以权限必须在创建时声明好。
通过 capability 参数设置触发器的能力等级:
| 等级 | 说明 | 适用场景 |
|---|---|---|
read_tools | 只读。可读文件、搜索、http_fetch,不能修改任何东西 | 告警分析、数据汇总、监控报告 |
safe_tools | 可读写工作区内文件,可执行安全命令(ls、git status 等) | 文件整理、代码格式化、日志归档 |
full | 几乎所有操作(硬封锁的危险路径/命令仍然不可用) | 自动部署、运维操作、完整自动化 |
custom | 自定义白名单,精确控制 | 只允许特定命令/路径/工具的场景 |
不传 capability 时默认 read_tools,最安全。
当 capability 设为 custom 时,可通过以下参数精确控制权限:
allowed_commands: 命令白名单,支持 glob 模式(如 ["npm run *", "git pull", "curl *"])allowed_paths: 路径白名单,运行时自动授权(如 ["/Users/xx/project/src"])allowed_tools: 工具白名单(如 ["read_file", "write_file", "http_fetch"])根据触发器需要做的事情,选择最小够用的等级:
read_toolssafe_toolsnpm run build)→ custom + allowed_commandsfull(创建时提醒用户风险)无论哪种类型的触发器,都必须使用 manage_trigger 工具来创建。不要使用 manage_file_watch。
manage_trigger 工具创建$EVENT_DATA 占位符引用事件数据,执行时会被替换为完整 JSON收到一条群消息,请分析并处理:
$EVENT_DATA
如果是告警信息,按 SOP 排查。如果不是告警,忽略。
用户:帮我创建一个触发器,收到告警就分析原因,结果发到飞书群
→ capability: read_tools(只需要读和分析)
用户:下载目录来了新 PDF 就提取摘要,归档到 /docs 目录
→ capability: safe_tools(需要写文件)
→ workspace_path: "/Users/xx/docs"
用户:CI 失败时自动修代码并提 PR
→ capability: custom
→ allowed_commands: ["npm run test", "npm run lint", "git *"]
→ allowed_paths: ["/Users/xx/project"]
用户:服务挂了自动重启并发通知
→ capability: full
→ ⚠️ 创建时提醒用户:此触发器拥有完全自主权限,请确认
curl -X POST http://localhost:18080/trigger/{触发器ID} \
-H "Content-Type: application/json" \
-d '{"data": {"content": "【P1告警】订单服务 RT 超过 500ms", "sender": "alertbot", "group": "运维群"}}'
#!/usr/bin/env python3
"""监听 IM 数据库,将告警消息推送给阿布"""
import sqlite3, time, hashlib, requests
DB_PATH = "/path/to/im.db"
TRIGGER_URL = "http://localhost:18080/trigger/{触发器ID}"
KEYWORDS = ["告警", "异常", "ERROR", "CRITICAL"]
last_id = 0
recent = {}
while True:
conn = sqlite3.connect(DB_PATH, timeout=5)
rows = conn.execute(
"SELECT id, content, sender, group_name FROM messages WHERE id > ?",
(last_id,)
).fetchall()
conn.close()
for row in rows:
last_id = row[0]
content = row[1]
if not any(kw in content for kw in KEYWORDS):
continue
h = hashlib.md5(content.encode()).hexdigest()[:8]
if h in recent and time.time() - recent[h] < 300:
continue
recent[h] = time.time()
requests.post(TRIGGER_URL, json={
"data": {"content": content, "sender": row[2], "group": row[3]}
})
time.sleep(5)