A public, growing directory of pre-made cron jobs β built so any AI agent (Claude, Codex, Hermes, OpenClaw, or a plain LLM with shell access) can pull one, tweak it, and schedule it. Clone it, grab a job, adjust the knobs, run it.
git clone https://github.com/wonsukchoi/crondex.git
cat crondex/catalog.json # browse what's available
cat crondex/jobs/devops/dependency-audit.yaml # read one job
Give an agent the repo and a goal ("set up something that checks my repo
health every morning") β it reads catalog.json
, finds the closest match,
adjusts schedule
/variables
, and wires it into whatever scheduler it has.
Published on npm as @wonsukchoi/crondex
(the plain name crondex
was
blocked by npm's anti-typosquat check). The command itself is still
crondex
once installed β only the package name is scoped:
npx @wonsukchoi/crondex list # browse everything
npx @wonsukchoi/crondex list --category devops # filter by category or --tag
npx @wonsukchoi/crondex show backup-reminder # print one job's YAML
npx @wonsukchoi/crondex add backup-reminder --dest ./cron/backup-reminder.yaml
Or install once and drop the scope prefix on every call:
npm install -g @wonsukchoi/crondex
crondex list
add
copies the job's YAML as-is into your project β it's yours to edit
from there. npx
always pulls the latest published catalog; a global
install needs npm update -g @wonsukchoi/crondex
to see new jobs (crondex list
prints a reminder either way).
A clone works too, no npm required:
git clone https://github.com/wonsukchoi/crondex.git && cd crondex
node bin/crondex.js list
crondex/
βββ bin/crondex.js CLI: list / show / add
βββ catalog.json generated index of every job β read this first
βββ schema/job.schema.json spec every job file follows
βββ jobs/
β βββ devops/
β βββ productivity/
β βββ personal/
β βββ content/
β βββ finance/
β βββ security/
β βββ learning/
βββ scripts/
βββ build-catalog.js regenerates catalog.json from jobs/**/*.yaml
βββ validate-jobs.js validates every job against the schema
35 jobs across 7 categories. Full details (description, tags, variables)
live in catalog.json
and each job's YAML file β run crondex list
or
browse jobs/<category>/
for the plain-language rundown of each.
devops
| id | schedule | modes |
|---|---|---|
dependency-audit |
||
0 8 * * 1 |
||
| script + agent-prompt | ||
log-cleanup |
||
30 3 * * * |
||
| script | ||
repo-health-check |
||
0 9 * * 1-5 |
||
| script + agent-prompt | ||
backup-reminder |
||
0 9 * * * |
||
| script | ||
ssl-cert-expiry-check |
||
0 6 * * * |
||
| script | ||
uptime-ping-check |
||
*/15 * * * * |
||
| script | ||
cost-alert |
||
0 7 * * * |
||
| script + agent-prompt | ||
disk-space-check |
||
0 */6 * * * |
||
| script | ||
docker-image-prune |
||
0 4 * * * |
||
| script | ||
env-drift-check |
||
0 8 * * * |
||
| script | ||
stale-dependency-pr-nudge |
||
0 9 * * 1-5 |
||
| script | ||
db-backup-verify |
||
0 5 * * * |
||
| script | ||
license-compliance-check |
||
0 8 * * 1 |
||
| script | ||
orphaned-branch-cleanup |
||
0 9 * * 1 |
||
| script |
productivity
| id | schedule | modes |
|---|---|---|
daily-standup-summary |
||
0 8 * * 1-5 |
||
| script + agent-prompt | ||
inbox-triage |
||
0 7,13 * * 1-5 |
||
| agent-prompt only | ||
weekly-report |
||
0 16 * * 5 |
||
| script + agent-prompt | ||
focus-block-reminder |
||
0 9,14 * * 1-5 |
||
| script |
personal
| id | schedule | modes |
|---|---|---|
bill-due-reminder |
||
0 9 * * * |
||
| script | ||
habit-checkin |
||
0 20 * * * |
||
| script | ||
meal-plan-reminder |
||
0 9 * * 0 |
||
| script + agent-prompt | ||
water-intake-reminder |
||
0 9,12,15,18 * * * |
||
| script | ||
screen-time-check |
||
0 20 * * * |
||
| agent-prompt only |
content
| id | schedule | modes |
|---|---|---|
changelog-digest |
||
0 10 * * 5 |
||
| script + agent-prompt | ||
broken-link-check |
||
0 7 * * 1 |
||
| script | ||
social-mentions-watch |
||
0 9 * * * |
||
| agent-prompt only |
finance
| id | schedule | modes |
|---|---|---|
subscription-audit |
||
0 9 1 * * |
||
| script | ||
net-worth-snapshot |
||
0 9 1 * * |
||
| script | ||
saas-seat-audit |
||
0 9 1 * * |
||
| script |
security
| id | schedule | modes |
|---|---|---|
secrets-scan |
||
0 3 * * * |
||
| script | ||
open-port-check |
||
0 */4 * * * |
||
| script | ||
failed-login-watch |
||
*/15 * * * * |
||
| script |
learning
| id | schedule | modes |
|---|---|---|
daily-flashcard-review |
||
0 8 * * * |
||
| script | ||
reading-list-nudge |
||
0 9 * * 6 |
||
| script | ||
course-progress-checkin |
||
0 9 * * 1 |
||
| script |
Every job is one YAML file with a runner
:
β runshell
command
directly. Zero LLM tokens, deterministic, no judgment calls.β hand theagent-prompt
prompt
field to an LLM agent each run. Costs tokens, but can synthesize, prioritize, and draft prose.β ships both. You (or your agent) pick per run:hybrid
command
to save tokens and get raw data, orprompt
when you want the LLM to interpret it.script_note
on the job explains exactly what you trade away by choosing the script.
{{placeholders}}
in command
/prompt
resolve from variables
. Each job
also carries a version
β bumped whenever prompt
/command
behavior changes, so if you've already scheduled a job elsewhere you can tell when the upstream copy has moved on without you.
id: dependency-audit
version: 1
name: Dependency Vulnerability Audit
description: ...
category: devops
tags: [security, dependencies]
schedule: "0 8 * * 1" # standard 5-field cron
timezone: "UTC"
runner: hybrid
command: |
...raw shell audit, zero tokens...
prompt: |
...instructions with {{repo_path}}, LLM synthesizes+prioritizes...
script_note: what you lose by using `command` instead of `prompt`
variables:
repo_path:
default: "."
description: ...
compatible_agents: [claude, codex, hermes, openclaw, generic]
Full spec: schema/job.schema.json.
- Pick a job from
catalog.json
β checkmodes
to see if it's script-only, agent-prompt-only, or both. - Decide script vs. agent-prompt if the job is
hybrid
: script saves tokens, agent-prompt gives you more detail/judgment (seescript_note
). - Override any
variables
andschedule
for your case. - Hand
command
orprompt
plusschedule
to your scheduler β system crontab, a hosted cron, or your agent's own scheduling mechanism. This repo defineswhatto run andwhen, not the executor.
See CONTRIBUTING.md β copy
templates/job.template.yaml
,
fill it in, npm run validate && npm run build-catalog
, open a PR.