task_automation
GitHub指导用户设计自动化工作流,包括定时任务、提醒及消息流转。涵盖工作流类型、提示词编写技巧、变量使用及多步骤协作模式,旨在实现高效自主的后台任务执行。
Trigger Scenarios
Install
npx skills add siddsachar/row-bot --skill task_automation -g -y
SKILL.md
Frontmatter
{
"icon": "⚙️",
"name": "task_automation",
"tags": [
"automation",
"productivity"
],
"author": "Row-Bot",
"version": "4.2",
"activation": {
"phrases": [
"recurring task",
"scheduled task",
"every monday",
"automate this",
"reminder workflow"
],
"examples": [
"Help me set up a recurring task every Monday"
],
"keywords": [
"recurring",
"schedule",
"scheduled",
"task",
"workflow",
"monday",
"reminder"
],
"negative_phrases": [
"meeting notes",
"human tone"
]
},
"description": "Design effective automated workflows using scheduled tasks, clear messages, and delivery channels.",
"display_name": "Task Automation",
"enabled_by_default": true
}
When the user wants to set up automations, create recurring workflows, schedule something, or set a reminder, apply these principles:
How Workflows Work
A workflow is a chat that runs on its own. Each run sends its message to the workflow's own conversation, in the background, as a chat turn: it has every tool a chat has, finds apps and tools the same way, and asks before actions at the workflow's approval level, on the same cards. Every run is a new turn in that same conversation, so a run can see what earlier runs found.
Each workflow also keeps short notes between runs. A run's first message starts with them, and the run keeps them current with task_update(task_id=..., notes=...) before it ends: what it checked and when, ids it will need again, what's left. So a run doesn't check again what an earlier one already did.
There are three kinds:
- Message workflows — usually one message, sometimes a few. A second message is sent after the first turn is done, so it can build on the answer.
- Notify-only reminders — fire a desktop/channel notification with no agent turn. Use for simple reminders and timers.
- One-shot timers — use
delay_minutesfor quick "remind me in 30 minutes" requests. These delete themselves after firing.
Writing The Message
-
Keep it short and positive — A good brief says, in a few sentences, what to make, for whom, in what voice, and where the results go. Say what to do; a list of what not to do makes results timid and long. "Each weekday, write one post for @rowbot_ai about something Row-Bot does well, for people who run AI on their own computer. Friendly and concrete, in the voice of the account's best posts. Attach a real screenshot when it shows the point. Post it."
-
Let Row-Bot enforce the rules — The approval level, the card each post or email asks on, the account a post names, X's length limit and never sending the same thing twice are all enforced by the app. Don't repeat them in the brief ("ask me before posting", "don't post twice", "keep it under 280 characters").
-
Say the branches in words — There are no condition steps: write what to do in each case. "Check my calendar for tomorrow. If there are no events, just say 'Clear schedule tomorrow.' Otherwise list them with times and highlight any conflicts."
-
Say what to do when there is nothing to do — "If nothing is new since the last run, say so in one line and stop."
-
Use template variables —
{{date}},{{day}},{{time}},{{month}},{{year}}make messages context-aware at runtime. "Summarise news for {{date}}" produces different results each day. -
Add a second message only when it helps — for example "Draft a short email to my team from the summary above" after a research message. Most workflows need one.
When to Use One Workflow vs. Several
- One workflow when the work belongs together — research that searches, reads sources and writes a brief is one message.
- Separate workflows when the pieces are independent — a morning weather check and an inbox summary don't need each other. Separate workflows can be turned on and off, scheduled and delivered on their own.
Handing Work On
- Send, don't search — when one workflow's result is another's input (a trends brief for a publisher), the first ends with
conversation_sendto the second workflow's conversation, by name. It arrives as a message from that conversation and starts a turn there; never leave a result for the next one to search for. - Share pictures, clips and voice lines through Library › Media —
media_findfinds them by words, kind or tag,media_tagtags them ("x post", "launch"), andmedia_bringcopies one into the conversation or workflow that needs it. - Real screenshots and clips — a
sandboxis a second Row-Bot on made-up data. Open it in Row-Bot's browser, then take abrowser_screenshot, orbrowser_recorda few steps and mark beats, and make the clip withvideo,recording=rec-…. Never film or capture the person's own Row-Bot.
Scheduling
- Match the schedule to the rhythm:
daily:HH:MM— briefings, digests, check-insweekly:DAY:HH:MM— reviews, summaries, reportsinterval:H/interval_minutes:M— monitoring, polling, frequent checkscron:EXPR— complex schedules (e.g.cron:0 9 * * mon-frifor weekdays only)
Delivery & Notification
- Pick the right channel — Telegram for mobile-friendly results the user needs on the go, email for reports others need to see, desktop notification (
notify_only) for simple nudges. - Ask before defaulting — Don't assume a delivery channel. Ask how the user wants to receive results. Some automations are better read on demand in the app.
- Each delivery says what happened first — "Sent · …" with what went out, or "Finished · nothing was posted or sent", then the reply. The person chooses in Workflow settings › Send results whether results go after every run, only when a run needs them, or in a daily digest at 6 PM; suggest the digest for frequent runs.
Approval Levels
Every workflow has an approval level (approval_mode), as a chat does:
block(default) — reads only; actions are refused. Safest for automated runs.approve— each action asks the person on its card before it runs (a post shows its full text and account; an email its recipients and body). The run waits until they answer.auto— a reviewer approves actions that clearly match the workflow's own messages; anything else asks the person, asapprovedoes.- Hands-off (
full) runs every action without asking. Only the person can turn it on, in the workflow's settings; never set or suggest it yourself.
A run's outcome comes from what its tools did, so a post or email that went out is recorded with its link. A run that fails on a passing problem tries again by itself, but never after something has gone out.
Other Settings
- Model override — Use the
modelparameter to run a workflow on a different model (e.g. a heavier model for complex research, a lighter one for quick checks). - Agent profile —
agent_profilepicks the profile whose instructions and capability the runs use. Profiles list no tools.
Maintenance
- Check first — Before creating a new workflow, check
task_listto avoid duplicates or overlapping schedules. - Test immediately — Always suggest
task_run_nowafter creation so the user can check the result before the first scheduled run. - Iterate the message — If the output isn't right, update the messages with
task_updaterather than deleting and recreating.
Monitoring / Polling
When the user wants to monitor a condition and be told when it changes ("check X and tell me when Y", "alert me if Z drops below W"), use the interval + self-disable pattern:
-
Use an interval schedule —
interval_minutes:Mfor frequent checks (stock availability, price drops) orinterval:Hfor slower checks. -
Write a conditional message — It should:
- Check the condition (e.g. search the web, read a URL, check a price)
- If the condition IS met → report the finding and self-disable with
task_update(task_id='{{task_id}}', enabled=false) - If the condition is NOT met → say so briefly The runs share one conversation, so each check can compare with the last one ("tell me when there's a new version" needs to know the old version).
-
Template: polling message pattern —
Search for [condition]. If [success criteria], report your findings and call task_update(task_id='{{task_id}}', enabled=false) to stop this monitor. If [condition not met], say '[thing] not yet available as of {{time}} — will check again.' -
Self-disable, don't self-delete — Background runs cannot delete their own workflow (safety restriction). Use
task_update(enabled=false)instead. The user can re-enable, delete, or leave the disabled workflow.
Version History
-
aea3219
Current 2026-11-02 23:13
重构为基于聊天轮次的工作流模型,引入运行间笔记机制;优化提示词编写规范,强调正向指令与模板变量;移除工具列表限制,完善媒体传递与沙盒功能说明。
- edc0ac0 2026-07-24 22:29


