scheduled-job-best-practices
Patterns for resilient, non-interactive scheduled opencode jobs
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Patterns for resilient, non-interactive scheduled opencode jobs
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Create and manage isolated git worktrees safely.
Opinionated workflow for submodule development + PRs + control-center pointer bumps.
Store Apple notarization IDs in Keychain and notarize/staple OpenWork DMGs locally.
Sync control-center master and update submodule pointers safely.
Require every OpenCode plugin to expose get_skills and get_version tools.
Use client.app.log() instead of console.log in OpenCode plugins
| name | scheduled-job-best-practices |
| description | Patterns for resilient, non-interactive scheduled opencode jobs |
Put this line at the very top of any scheduled job prompt:
@scheduled-job-best-practices
Then write your task below it.
If you need local dates, compute them at runtime.
TODAY="$(date +%F)"
TOMORROW="$(date -v+1d +%F)"
TODAY="$(date +%F)"
TOMORROW="$(date -d 'tomorrow' +%F)"
if [ "$(uname)" = "Darwin" ]; then
TODAY="$(date +%F)"
TOMORROW="$(date -v+1d +%F)"
else
TODAY="$(date +%F)"
TOMORROW="$(date -d 'tomorrow' +%F)"
fi
If timezone matters, set TZ explicitly (example: TZ=America/Los_Angeles date +%F).
Before doing any expensive work:
Prefer the Telegram Bot API (non-interactive) over web.telegram.org.
End every run with a compact summary:
When notifying about “new” items (deals, alerts, etc.):