mcpField
E
encore-go-cron

encore-go-cron

github.com/encoredevDevelopment30316 installsUpdated 2d ago
Repository

About encore-go-cron

A skill for defining scheduled jobs in Encore Go by connecting cron schedules to API endpoints. It helps Encore Go developers run time-based tasks in deployed environments.

Key features

  1. 01Bind schedules to API endpoints
  2. 02Use intervals or five-field cron expressions
  3. 03Configure schedules in UTC
  4. 04Keep cron endpoints private

Use cases

  1. 01Run cleanup tasks on a recurring interval
  2. 02Trigger a task at a specific UTC time
  3. 03Schedule weekly or monthly endpoint work

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/encoredev/skills --skill encore-go-cron

After installing, type/encore-go-cronin Claude Code to confirm it loaded.

Details

From the project README

Encore Go Cron Jobs

Instructions

A cron.NewJob declaration in Encore Go ties a schedule to an existing //encore:api endpoint. The endpoint runs at the chosen cadence. Declare the job as a package-level variable — not inside a function.

package cleanup

import (
    "context"
    "encore.dev/cron"
)

// 1. The endpoint to call (typically private: //encore:api private)
//encore:api private
func CleanupExpiredSessions(ctx context.Context) error {
    // Cleanup logic
    return nil
}

// 2. Package-level cron declaration
var _ = cron.NewJob("cleanup-sessions", cron.JobConfig{
    Title:    "Clean up expired sessions",
    Schedule: "0 * * * *", // Every hour
    Endpoint: CleanupExpiredSessions,
})

Schedule Formats

FieldExampleDescription
Every"1h", "30m", "6h"Simple interval. Must divide 24h evenly — "7h" is invalid.
Schedule"0 9 * * 1"Standard cron expression (5 fields, UTC).
Common cron expressions
CronMeaning
"0 * * * *"Every hour, on the hour
"0 2 * * *"Daily at 02:00 UTC
"0 0 * * 0"Weekly on Sunday at midnight UTC
"0 4 15 * *"04:00 UTC on the 15th of each month

Important behaviour

  • Cron jobs do not execute when running locally with encore run. Only deployed environments fire crons.
  • The cron endpoint should be private so it can't be triggered externally — only the cron scheduler should call it.
  • All times in Schedule are UTC. Convert from local time when designing the schedule.
  • The endpoint must be defined at module load — declare it before the cron.NewJob reference.

Guidelines

  • Use Every for "run on a regular interval" (must divide 24h).
  • Use Schedule for specific times of day or days of week.
  • Keep endpoint logic idempotent: a cron may fire late or be retried in a redeploy window.
  • For event-driven background work (not time-driven), use the encore-go-pubsub skill instead.

Comments

Markdown supported