> **convex-crons** — skill 10 of 33 in [convex/agent-skills](https://skillsdocs.com/convex/agent-skills).
>
> Book (all skills, one file): https://skillsdocs.com/convex/agent-skills.md
> Machine manifest: https://skillsdocs.com/convex/agent-skills/.well-known/agent-skills/index.json
> Install the book: `npx skills add convex/agent-skills`
> Upstream: https://github.com/convex/agent-skills/blob/main/skills/convex-crons/SKILL.md @ `main`
> Raw bytes, no header: https://raw.githubusercontent.com/convex/agent-skills/main/skills/convex-crons/SKILL.md
> Base for relative paths: https://raw.githubusercontent.com/convex/agent-skills/main/skills/convex-crons/
> Licence: Apache-2.0 — https://spdx.org/licenses/Apache-2.0.html
>
> Content © its authors, served unmodified. Takedown: https://github.com/DreambaseAI/skillsdocs/issues/new?labels=takedown&title=Takedown+request

<!-- Verbatim upstream SKILL.md follows, YAML frontmatter included. -->

---
name: convex-crons
description: "Add recurring scheduled jobs (crons) to the Convex app."
---

<!-- GENERATED from convex-agents content/capabilities/crons.json — do not edit by hand. -->

# Add scheduled jobs (crons)

Define recurring jobs in convex/crons.ts targeting internal functions, with sane intervals and idempotent handlers.

## Workflow

1. Create convex/crons.ts with cronJobs().
2. Schedule internal functions (never public api.*) at the right interval.
3. Make handlers idempotent (safe to re-run); keep each run small.
4. Verify the job appears in the dashboard schedule.

## Rules

- Schedule internal.* functions, never api.*.
- Keep cron handlers small + idempotent.
- Don't poll tight intervals for things a subscription can push.
