skills/create-system-routine/SKILL.md
Create time-based system routines (cron/launchd) for scripts or commands. Use this for OS-level scheduling, NOT for Jazz Workflows.
npx skillsauth add lvndry/jazz create-system-routineInstall 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.
Use this skill when the user wants to create or manage time-based routines (scheduled tasks) at the OS level (e.g., running a shell script, a binary, or a specific command).
cron (crontab -e, system/user crontabs)launchd (LaunchAgents / LaunchDaemons with plist files)Detect the operating system
Use standard OS detection via shell commands:
uname_s=$(uname -s 2>/dev/null || echo unknown)
case "$uname_s" in
Linux) os=linux ;;
Darwin) os=macos ;;
MINGW*|MSYS*|CYGWIN*|Windows_NT) os=windows ;;
*) os=unknown ;;
esac
os=linux → follow the Linux / cron workflow.os=macos → follow the macOS / launchd workflow.os=windows or os=unknown → explain that this skill does not create routines on this OS and suggest Windows Task Scheduler or another platform-specific mechanism.Gather routine parameters from the user (questionnaire if needed)
Do not create the cron entry or plist until you have enough information. If the user's request is vague (e.g. "schedule something", "run a script daily") or missing any of the items below, guide them through a short questionnaire instead of guessing.
You have enough info when you know:
0 8 * * *)StartCalendarInterval (e.g. Hour=8, Minute=0)How to run the questionnaire:
Linux / cron workflow (os=linux)
Validate tools:
Check for crontab availability:
command -v crontab >/dev/null 2>&1
If missing, explain that cron is not available and suggest systemd timers or another scheduler; this skill does not configure those directly.
Prepare the cron entry:
Build a cron line like:
"<CRON_SCHEDULE> <COMMAND> # created-by-jazz-create-routines"
Use absolute paths for both the command and any scripts. If environment variables are needed, recommend wrapping logic in a shell script and calling that script from cron.
Install the cron entry (user crontab):
Safely append the new entry to the user's crontab:
tmp_cron=$(mktemp)
crontab -l 2>/dev/null >"$tmp_cron" || true
printf '%s\n' "<CRON_LINE>" >>"$tmp_cron"
crontab "$tmp_cron"
rm -f "$tmp_cron"
(Optional) Boot or login catch-up:
For "run at 8am or next boot" semantics, instruct the user to:
0 8 * * *) and an @reboot cron entry that call the same script.macOS / launchd workflow (os=macos)
Choose target: LaunchAgent vs LaunchDaemon:
~/Library/LaunchAgentsCreate LaunchAgents directory if needed:
Ensure ~/Library/LaunchAgents exists before writing plist files.
Define a unique label:
Use a reverse-DNS-style label, e.g. com.jazz.create-routines.<name>.
Write a plist file
Create a plist at:
~/Library/LaunchAgents/com.jazz.create-routines.<name>.plist
Example template:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.jazz.create-routines.<name></string>
<key>ProgramArguments</key>
<array>
<string>/bin/zsh</string>
<string>-lc</string>
<string>/absolute/path/to/script.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<!-- Optional: run when the agent is loaded (e.g. on login) -->
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Notes:
Load (or reload) the LaunchAgent
launchctl unload ~/Library/LaunchAgents/com.jazz.create-routines.<name>.plist 2>/dev/null || true
launchctl load ~/Library/LaunchAgents/com.jazz.create-routines.<name>.plist
Explain off/asleep behavior
Clarify that:
StartCalendarInterval with RunAtLoad and implement a small guard in the script that only runs once per day after a certain time.Windows / unsupported workflow (os=windows or os=unknown)
Removal / update of routines
When the user wants to remove or update routines created by this skill:
Linux (cron):
crontab -l.# created-by-jazz-create-routines.macOS (launchd):
launchctl unload.~/Library/LaunchAgents.Always explain what will be changed and keep backups where practical (e.g. copy old crontab to a temp file) before destructive edits.
tools
Create and track task lists for complex multi-step work. Use when planning projects, breaking down work, tracking progress, or when a task has 3+ steps. Triggers on "plan", "todo", "task list", "break down", "step by step", or complex requests requiring multiple actions.
development
Brainstorm startup ideas using top-founder mental models, trend analysis, and competition research. Use when the user wants to brainstorm startup ideas, explore business opportunities, validate concepts, or think like elite founders. Triggers on "startup ideas", "business ideas", "what should I build", "startup brainstorm", "idea validation", "trends and opportunities", "think like a founder".
tools
Create new Jazz skills for automating workflows. Use when the user asks to create a skill, make a skill, or wants to define custom automation behavior.
tools
Generate pull request titles and descriptions from diffs and context. Use when creating a PR, writing PR description, drafting merge request, or summarizing changes for review.