src/skills/builtin/scheduler/SKILL.md
Schedule and manage cron jobs to trigger AI actions at specific times. Create one-time or recurring jobs with natural language prompts.
npx skillsauth add mcarcaso/phousevito schedulerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Description: Schedule and manage cron jobs to trigger AI actions at specific times. Create one-time or recurring jobs with natural language prompts.
Jobs are scheduled using the global timezone from settings.timezone in vito.config.json. Each job can also override this with a per-job timezone field. If nothing is set, defaults to America/Toronto.
The timezone ACTUALLY WORKS — jobs will fire at the specified time in the configured timezone, not system time. This is powered by croner with native timezone support.
Priority order: Per-job timezone > Global settings.timezone > America/Toronto default
In vito.config.json:
{
"settings": {
"timezone": "America/New_York"
}
}
Or per-job (when scheduling):
node src/skills/builtin/scheduler/index.js schedule \
--name "london-report" \
--schedule "0 9 * * 1-5" \
--timezone "Europe/London" \
--prompt "Good morning London!"
Run the CLI script at src/skills/builtin/scheduler/index.js:
node src/skills/builtin/scheduler/index.js schedule \
--name "morning-standup" \
--schedule "0 9 * * 1-5" \
--prompt "Give me a motivational quote to start the day"
Optional flags:
--session "dashboard:default" — session to route the response to--oneTime true — job runs once and is auto-deleted--timezone "America/New_York" — override global timezone for this job--sendCondition "Only send if temperature is below 10°C" — suppress response if condition not metnode src/skills/builtin/scheduler/index.js schedule \
--name "reminder" \
--schedule "2026-04-06T09:45:00" \
--prompt "Check your email for the presale code!"
ISO dates are interpreted in the job's effective timezone (job > global > default).
If the user doesn't specify which session to use, ALWAYS use the current session (the one you're responding in). Never hallucinate or guess a session ID. You have access to the current session in your context — use it.
❌ Wrong: Making up a session like discord:1234567890 or defaulting to dashboard:default when unspecified
✅ Right: Using the actual session from your current conversation context (e.g., discord:1466899925127266325 if that's where you're talking)
node src/skills/builtin/scheduler/index.js cancel --name "morning-standup"
node src/skills/builtin/scheduler/index.js list
Scheduled recurring job "morning-standup" (timezone: America/Toronto)
→ will execute: "Give me a motivational quote to start the day"
→ next run: 3/25/2026, 9:00:00 AM
Jobs firing at wrong time?
settings.timezone in vito.config.jsonlist to see which timezone each job is usingValid timezone strings:
America/Toronto, America/New_York, America/Los_AngelesEurope/London, Europe/Paris, Asia/Tokyodata-ai
Maintain and discover updates for user/profile.md — what belongs, how to edit, daily discovery sweeps, and refinement passes
tools
Browse the web, take screenshots, and extract content from web pages using Playwright MCP
tools
Generic MCP client bridge for skills — discover and call tools from MCP servers declared in SKILL.md frontmatter or passed as URLs
data-ai
How to update user/profile.md — what's profile-worthy, where to put it, when to clean up. Read this skill any time you're about to Edit profile.md.