Install any skill in seconds. Free to start, no credit card required.
Get Started Free →waynesutton/convex-cron-jobs
Scheduled function patterns for background tasks including interval scheduling, cron expressions, job monitoring, retry strategies, and best practices for long-running tasks
Passed 22 of 23 test cases with the skill, and 16 of 23 without it.
and 5 more in the full report
6 fixed16 passed either way1 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
A newer attempt on gemini-3.6-flash on 10/3/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 6 test cases the skill fixed. Same model, same prompt, with and without the skill.
I need to set up a daily cleanup task in Convex that executes every night at midnight UTC. Should I use `crons.daily('cleanup', ...)` or something else in my `convex/crons.ts` file? Write out the configuration snippet.
| Checked | Without skill | With skill |
|---|---|---|
| The cron schedule uses crons.cron with '0 0 * * *'. | Missed | Passed |
| The cron schedule avoids deprecated helper functions such as crons.daily. | Missed | Passed |
The instructions your model reads when the skill loads.
Recurring work lives in convex/crons.ts. One off work is scheduled from inside a function with ctx.scheduler. Both must target internal.* functions, never api.*.
Deeper material lives in two reference files:
_scheduled_functions, debouncing, or local time zones.One file, one default export. crons.interval for "every N", crons.cron for calendar times. crons.daily, crons.hourly, and crons.weekly are deprecated helpers. Do not use them.
// convex/crons.ts
import { cronJobs } from "convex/server";
import { internal } from "./_generated/api";
const crons = cronJobs();
// Every hour
crons.interval(
"expire sessions",
{ hours: 1 },
internal.sessions.expireBatch,
{},
);
// Every day at 09:00 UTC. Cron expressions are always UTC.
crons.cron("daily digest", "0 9 * * *", internal.digest.send, {});
export default crons;
test cases passed, vs 16 / 23 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.