Agent skill

Cloudflare Cron Triggers

by secondsky in secondsky/claude-skills

Cloudflare Cron Triggers for scheduled Workers execution. An agent skill from secondsky/claude-skills.

MITAuto-check passedProductivity & Automation

Install Cloudflare Cron Triggers

skills CLI
$ npx skills add secondsky/claude-skills --skill cloudflare-cron-triggers -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install secondsky/claude-skills cloudflare-cron-triggers --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/cloudflare-cron-triggers/skills/cloudflare-cron-triggers .claude/skills/cloudflare-cron-triggers && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
cloudflare-cron-triggers
GitHub stars
227
Token cost
~5.5k tokens
SKILL.md length
1,647 words
Files
11 (incl. references)
Skills in repo
169
Repo updated
First seen
Licence
MIT

At a glance

Cloudflare Cron Triggers for scheduled Workers execution. An agent skill from secondsky/claude-skills.

  • Works in 4 steps: Add Scheduled Handler to Your Worker → Configure Cron Trigger in Wrangler → Test Locally → …
  • Scheduled Workers execution
  • SKILL.md covers Quick Start (5 Minutes), When to Load References, Cron Expression Syntax and ScheduledController Interface, plus 9 more sections
  • Runs TypeScript scripts from its folder; calls bunx, curl and wrangler

What it does

Cloudflare Cron Triggers is an agent skill from secondsky/claude-skills. Cloudflare Cron Triggers for scheduled Workers execution. Use for periodic tasks, scheduled jobs, or encountering handler not found, invalid cron expression, timezone errors.

Its SKILL.md is about 5.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including reference files (for example `references/common-patterns.md`, `references/cron-expressions-reference.md` and `references/integration-patterns.md`).

It sits in Productivity & Automation, covering Scheduled and recurring tasks. It works with Cloudflare and Cloudflare Workers. The repository describes itself as: Production-ready skills for Claude Code CLI - Cloudflare, React, Tailwind v4, and AI integrations. The licence is MIT.

When your agent uses it

  • Scheduled Workers execution
  • Encountering handler not found
  • Invalid cron expression
  • Timezone errors

Example prompts

  • “/cloudflare-cron-triggers”

Requirements

  • Python 3
  • Node.js

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Add Scheduled Handler to Your Worker
  2. Configure Cron Trigger in Wrangler
  3. Test Locally
  4. Deploy

What it can do on your machine

Read from SKILL.md and the folder at commit 8837836. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (TypeScript), which the agent can run.

    Shell commands in SKILL.md call:

    • bunx
    • curl
    • wrangler
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • developers.cloudflare.com
    • crontab.guru
    • timeanddate.com
    • dash.cloudflare.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Cloudflare Cron Triggers loads about 5.5k tokens when it runs, and up to ~19k if it reads all its reference files. Until then it costs about 50 tokens; SKILL.md has 1,647 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~50
When it runs · the whole SKILL.md, loaded when a task matches
~5.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~19k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from secondsky/claude-skills at commit 8837836, republished under its MIT licence (© secondsky). 1,647 words, ~5,533 tokens.

Download SKILL.mdSave it as .claude/skills/cloudflare-cron-triggers/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
cloudflare-cron-triggers
description
Cloudflare Cron Triggers for scheduled Workers execution. Use for periodic tasks, scheduled jobs, or encountering handler not found, invalid cron expression, timezone errors.
metadata.keywords
cloudflare cron, cron triggers, scheduled workers, scheduled handler, periodic tasks, background jobs, scheduled tasks, cron expression, wrangler crons…
license
MIT

Cloudflare Cron Triggers

Status: Production Ready ✅ Last Updated: 2025-11-25 Dependencies: cloudflare-worker-base (for Worker setup) Latest Versions: wrangler@4.81.0, @cloudflare/workers-types@4.20260408.0


Quick Start (5 Minutes)

1. Add Scheduled Handler to Your Worker

src/index.ts:

typescript
export default {
  async scheduled(
    controller: ScheduledController,
    env: Env,
    ctx: ExecutionContext
  ): Promise<void> {
    console.log('Cron job executed at:', new Date(controller.scheduledTime));
    console.log('Triggered by cron:', controller.cron);

    // Your scheduled task logic here
    await doPeriodicTask(env);
  },
};

Why this matters:

  • Handler must be named exactly scheduled (not scheduledHandler or onScheduled)
  • Must be exported in default export object
  • Must use ES modules format (not Service Worker format)
2. Configure Cron Trigger in Wrangler

wrangler.jsonc:

jsonc
{
  "name": "my-scheduled-worker",
  "main": "src/index.ts",
  "compatibility_date": "2025-10-23",
  "triggers": {
    "crons": [
      "0 * * * *"  // Every hour at minute 0
    ]
  }
}

CRITICAL:

  • Cron expressions use 5 fields: minute hour day-of-month month day-of-week
  • All times are UTC only (no timezone conversion)
  • Changes take up to 15 minutes to propagate globally
3. Test Locally
bash
# Enable scheduled testing
bunx wrangler dev --test-scheduled

# In another terminal, trigger the scheduled handler
curl "http://localhost:8787/__scheduled?cron=0+*+*+*+*"

# View output in wrangler dev terminal

Testing tips:

  • /__scheduled endpoint is only available with --test-scheduled flag
  • Can pass any cron expression in query parameter
  • Python Workers use /cdn-cgi/handler/scheduled instead
4. Deploy
bash
npm run deploy
# or
bunx wrangler deploy

After deployment:

  • Changes may take up to 15 minutes to propagate
  • Check dashboard: Workers & Pages > [Your Worker] > Cron Triggers
  • View past executions in Logs tab

When to Load References

Load immediately when user mentions:

  • cron-expressions-reference.md → "cron syntax", "schedule format", "expression", "minute hour day", "every X minutes"
  • common-patterns.md → "examples", "use cases", "patterns", "real-world", "database cleanup", "report generation", "how to"
  • integration-patterns.md → "implement", "Hono", "multiple triggers", "bindings", "workflows", "error handling"
  • wrangler-config.md → "configuration", "wrangler.jsonc", "multiple crons", "environment-specific", "dev staging production"
  • testing-guide.md → "test", "local development", "__scheduled", "unit test", "curl", "debugging"

Load proactively when:

  • Building new scheduled task → Load integration-patterns.md
  • Configuring wrangler.jsonc → Load wrangler-config.md
  • Debugging cron expression → Load cron-expressions-reference.md
  • Testing locally → Load testing-guide.md
  • Looking for examples → Load common-patterns.md

Cron Expression Syntax

Five-Field Format
* * * * *
│ │ │ │ │
│ │ │ │ └─── Day of Week (0-6, Sunday=0)
│ │ │ └───── Month (1-12)
│ │ └─────── Day of Month (1-31)
│ └───────── Hour (0-23)
└─────────── Minute (0-59)
Special Characters
CharacterMeaningExample
*Every* * * * * = every minute
,List0,30 * * * * = every hour at :00 and :30
-Range0 9-17 * * * = every hour from 9am-5pm
/Step*/15 * * * * = every 15 minutes
Common Patterns
bash
# Every minute
* * * * *

# Every 5 minutes
*/5 * * * *

# Every 15 minutes
*/15 * * * *

# Every hour at minute 0
0 * * * *

# Every hour at minute 30
30 * * * *

# Every 6 hours
0 */6 * * *

# Every day at midnight (00:00 UTC)
0 0 * * *

# Every day at noon (12:00 UTC)
0 12 * * *

# Every day at 3:30am UTC
30 3 * * *

# Every Monday at 9am UTC
0 9 * * 1

# Every weekday at 9am UTC
0 9 * * 1-5

# Every Sunday at midnight UTC
0 0 * * 0

# First day of every month at midnight UTC
0 0 1 * *

# Twice a day (6am and 6pm UTC)
0 6,18 * * *

# Every 30 minutes during business hours (9am-5pm UTC, weekdays)
*/30 9-17 * * 1-5

CRITICAL: UTC Timezone Only

  • All cron triggers execute on UTC time
  • No timezone conversion available
  • Convert your local time to UTC manually
  • Example: 9am PST = 5pm UTC (next day during DST)

ScheduledController Interface

typescript
interface ScheduledController {
  readonly cron: string;           // The cron expression that triggered this execution
  readonly type: string;           // Always "scheduled"
  readonly scheduledTime: number;  // Unix timestamp (ms) when scheduled
}
Properties
controller.cron (string)

The cron expression that triggered this execution.

typescript
export default {
  async scheduled(controller: ScheduledController, env: Env): Promise<void> {
    console.log(`Triggered by: ${controller.cron}`);
    // Output: "Triggered by: 0 * * * *"
  },
};

Use case: Differentiate between multiple cron schedules (see Multiple Cron Triggers pattern).

controller.type (string)

Always returns "scheduled" for cron-triggered executions.

typescript
if (controller.type === 'scheduled') {
  // This is a cron-triggered execution
}
controller.scheduledTime (number)

Unix timestamp (milliseconds since epoch) when this execution was scheduled to run.

typescript
export default {
  async scheduled(controller: ScheduledController): Promise<void> {
    const scheduledDate = new Date(controller.scheduledTime);
    console.log(`Scheduled for: ${scheduledDate.toISOString()}`);
    // Output: "Scheduled for: 2025-10-23T15:00:00.000Z"
  },
};

Note: This is the scheduled time, not the actual execution time. Due to system load, actual execution may be slightly delayed (usually <1 second).


Execution Context

typescript
export default {
  async scheduled(
    controller: ScheduledController,
    env: Env,
    ctx: ExecutionContext  // ← Execution context
  ): Promise<void> {
    // Use ctx.waitUntil() for async operations that should complete
    ctx.waitUntil(logToAnalytics(env));
  },
};
ctx.waitUntil(promise: Promise<any>)

Extends the execution context to wait for async operations to complete after the handler returns.

Use cases:

  • Logging to external services
  • Analytics tracking
  • Cleanup operations
  • Non-critical background tasks
typescript
export default {
  async scheduled(controller: ScheduledController, env: Env, ctx: ExecutionContext): Promise<void> {
    // Critical task - must complete before handler exits
    await processData(env);

    // Non-critical tasks - can complete in background
    ctx.waitUntil(sendMetrics(env));
    ctx.waitUntil(cleanupOldData(env));
    ctx.waitUntil(notifySlack({ message: 'Cron completed' }));
  },
};

Important: First waitUntil() that fails will be reported as the status in dashboard logs.


Integration Patterns

6 production-ready cron patterns:

  1. Standalone Worker with Cron - Single scheduled function for background tasks (database cleanup, report generation)
  2. Hono + Cron Combination - HTTP endpoints + scheduled tasks in one Worker, sharing bindings and reducing costs
  3. Multiple Cron Triggers - Different schedules for different tasks using controller.cron to route execution
  4. Accessing Bindings - Use D1, KV, R2, AI, Vectorize, Queues, Workflows, Durable Objects in scheduled functions
  5. Integrating with Workflows - Trigger complex, long-running multi-step workflows on schedule
  6. Error Handling Best Practices - Comprehensive error handling with retry logic, alerting (Slack/email), failure logging, and monitoring

Load references/integration-patterns.md for complete implementations with code examples, configuration details, and best practices.


Wrangler Configuration

Add cron triggers to wrangler.jsonc in the triggers.crons array. Each trigger requires a cron expression. Supports multiple crons (Free: 3 max, Paid: higher limits) and environment-specific configurations for dev/staging/production deployments.

Load references/wrangler-config.md for complete configuration examples including multiple triggers, environment-specific schedules, timezone handling, and removal procedures.


Testing & Development

Test scheduled functions locally using the /__scheduled endpoint by running bunx wrangler dev --test-scheduled, then triggering handlers with curl "http://localhost:8787/__scheduled?cron=0+*+*+*+*" (use + instead of spaces in cron expressions).

Load references/testing-guide.md for complete testing strategies, local development setup, unit testing examples, integration testing patterns, and production monitoring techniques.


Green Compute

Run cron triggers only in data centers powered by renewable energy.

Enable Green Compute

Via Dashboard:

  1. Go to Workers & Pages
  2. In Account details section, find Compute Setting
  3. Click Change
  4. Select Green Compute
  5. Click Confirm

Applies to:

  • All cron triggers in your account
  • Reduces carbon footprint
  • No additional cost
  • May introduce slight delays in some regions

How it works:

  • Cloudflare routes cron executions to green-powered data centers
  • Uses renewable energy: wind, solar, hydroelectric
  • Verified through Power Purchase Agreements (PPAs) and Renewable Energy Credits (RECs)

Known Issues Prevention

This skill prevents 6 documented issues:

Issue #1: Cron Changes Not Propagating

Error: Cron triggers updated in wrangler.jsonc but not executing

Source: Cloudflare Docs - Cron Triggers

Why It Happens:

  • Changes to cron triggers take up to 15 minutes to propagate globally
  • Cloudflare network needs time to update edge nodes
  • No instant propagation like regular deploys

Prevention:

  • Wait 15 minutes after deploy before expecting execution
  • Check dashboard: Workers & Pages > [Worker] > Cron Triggers
  • Use wrangler triggers deploy for trigger-only changes
bash
# If you only changed triggers (not code), use:
bunx wrangler triggers deploy

# Wait 15 minutes, then verify in dashboard

Issue #2: Handler Does Not Export

Error: Handler does not export a 'scheduled' method

Source: Common deployment error

Why It Happens:

  • Handler not named exactly scheduled
  • Handler not exported in default export object
  • Using Service Worker format instead of ES modules

Prevention:

typescript
// ❌ Wrong: Incorrect handler name
export default {
  async scheduledHandler(controller, env, ctx) { }
};

// ❌ Wrong: Not in default export
export async function scheduled(controller, env, ctx) { }

// ✅ Correct: Named 'scheduled' in default export
export default {
  async scheduled(controller, env, ctx) { }
};

Issue #3: UTC Timezone Confusion

Error: Cron runs at wrong time

Source: User expectation vs. reality

Why It Happens:

  • All cron triggers run on UTC time only
  • No timezone conversion available
  • Users expect local timezone

Prevention:

Convert your local time to UTC manually:

typescript
// Want to run at 9am PST (UTC-8)?
// 9am PST = 5pm UTC (17:00)
{
  "triggers": {
    "crons": ["0 17 * * *"]  // 9am PST = 5pm UTC
  }
}

// Want to run at 6pm EST (UTC-5)?
// 6pm EST = 11pm UTC (23:00)
{
  "triggers": {
    "crons": ["0 23 * * *"]  // 6pm EST = 11pm UTC
  }
}

// Remember: DST changes affect conversion!
// PST is UTC-8, PDT is UTC-7

Tools:


Issue #4: Invalid Cron Expression

Error: Cron doesn't execute, no error shown

Source: Silent validation failure

Why It Happens:

  • Invalid cron syntax silently fails
  • Validation happens at deploy, but may not be obvious
  • Common mistakes: wrong field order, invalid ranges

Prevention:

bash
# ❌ Wrong: Too many fields (6 fields instead of 5)
"crons": ["0 0 * * * *"]  # Has seconds field - not supported

# ❌ Wrong: Invalid minute range
"crons": ["65 * * * *"]  # Minute must be 0-59

# ❌ Wrong: Invalid day of week
"crons": ["0 0 * * 7"]  # Day of week is 0-6 (use 0 for Sunday)

# ✅ Correct: 5 fields, valid ranges
"crons": ["0 0 * * 0"]  # Sunday at midnight UTC

Validation:

  • Use Crontab Guru to validate expressions
  • Check wrangler deploy output for errors
  • Test locally with --test-scheduled

Issue #5: Missing ES Modules Format

Error: Worker must use ES modules format

Source: Legacy Service Worker format

Why It Happens:

  • Scheduled handler requires ES modules format
  • Old Service Worker format not supported
  • Mixed format in codebase

Prevention:

typescript
// ❌ Wrong: Service Worker format
addEventListener('scheduled', (event) => {
  event.waitUntil(handleScheduled(event));
});

// ✅ Correct: ES modules format
export default {
  async scheduled(controller, env, ctx) {
    await handleScheduled(controller, env, ctx);
  },
};

Show full SKILL.md (668 more words)Show less
Issue #6: CPU Time Limits Exceeded

Error: CPU time limit exceeded

Source: Long-running scheduled tasks

Why It Happens:

  • Default CPU limit: 30 seconds
  • Long-running tasks exceed limit
  • No automatic timeout extension

Prevention:

Option 1: Increase CPU limit in wrangler.jsonc

jsonc
{
  "limits": {
    "cpu_ms": 300000  // 5 minutes (max for Standard plan)
  }
}

Option 2: Use Workflows for long-running tasks

typescript
// Instead of long task in cron:
export default {
  async scheduled(controller, env, ctx) {
    // Trigger Workflow that can run for hours
    await env.MY_WORKFLOW.create({
      params: { task: 'long-running-job' },
    });
  },
};

Option 3: Break into smaller chunks

typescript
export default {
  async scheduled(controller, env, ctx) {
    // Process in batches
    const batch = await getNextBatch(env.DB);

    for (const item of batch) {
      await processItem(item);
    }

    // If more work, send to Queue for next batch
    const hasMore = await hasMoreWork(env.DB);
    if (hasMore) {
      await env.MY_QUEUE.send({ type: 'continue-processing' });
    }
  },
};

Always Do ✅

  1. Use exact handler name - Must be scheduled, not scheduledHandler or variants
  2. Use ES modules format - Export in default object, not addEventListener
  3. Convert to UTC - All cron times are UTC, convert from local timezone
  4. Wait 15 minutes - Cron changes take up to 15 min to propagate
  5. Test locally first - Use wrangler dev --test-scheduled
  6. Validate cron syntax - Use Crontab Guru
  7. Handle errors gracefully - Log, alert, and optionally re-throw
  8. Use ctx.waitUntil() - For non-critical async operations
  9. Consider Workflows - For tasks that need >30 seconds CPU time
  10. Monitor executions - Check dashboard logs regularly

Never Do ❌

  1. Never assume local timezone - All crons run on UTC
  2. Never use 6-field cron expressions - Cloudflare uses 5-field format (no seconds)
  3. Never rely on instant propagation - Changes take up to 15 minutes
  4. Never use Service Worker format - Must use ES modules format
  5. Never forget error handling - Uncaught errors fail silently
  6. Never run CPU-intensive tasks without limit increase - Default 30s limit
  7. Never use day-of-week 7 - Use 0 for Sunday (0-6 range only)
  8. Never deploy without testing - Always test with --test-scheduled first
  9. Never ignore execution logs - Dashboard shows past failures
  10. Never hardcode schedules for testing - Use environment-specific configs

Common Use Cases

Load references/common-patterns.md for 10 real-world cron patterns including database cleanup, API data collection, daily reports generation, cache warming, monitoring & health checks, data synchronization, backup automation, sitemap generation, webhook processing, and scheduled notifications.


TypeScript Types

typescript
// Scheduled event controller
interface ScheduledController {
  readonly cron: string;
  readonly type: string;
  readonly scheduledTime: number;
}

// Execution context
interface ExecutionContext {
  waitUntil(promise: Promise<any>): void;
  passThroughOnException(): void;
}

// Scheduled handler
export default {
  async scheduled(
    controller: ScheduledController,
    env: Env,
    ctx: ExecutionContext
  ): Promise<void>;
}

Limits & Pricing

Limits
FeatureFree PlanPaid Plan
Cron triggers per Worker3Higher (check docs)
CPU time per execution10 ms (avg)30 seconds (default), 5 min (max)
Wall clock time30 seconds15 minutes
Memory128 MB128 MB
Pricing

Cron triggers use Standard Workers pricing:

  • Workers Paid Plan: $5/month required
  • Requests: $0.30 per million requests (after 10M free)
  • CPU Time: $0.02 per million CPU-ms (after 30M free)

Cron execution = 1 request

Example:

  • Cron runs every hour (24 times/day)
  • 30 days × 24 executions = 720 executions/month
  • Average 50ms CPU time per execution

Cost:

  • Requests: 720 (well under 10M free)
  • CPU time: 720 × 50ms = 36,000ms (under 30M free)
  • Total: $5/month (just subscription)

High frequency example:

  • Cron runs every minute (1440 times/day)
  • 30 days × 1440 = 43,200 executions/month
  • Still under free tier limits
  • Total: $5/month

Troubleshooting

Issue: Cron not executing

Possible causes:

  1. Changes not propagated yet (wait 15 minutes)
  2. Invalid cron expression
  3. Handler not exported correctly
  4. Worker not deployed

Solution:

bash
# Re-deploy
bunx wrangler deploy

# Wait 15 minutes

# Check dashboard
# Workers & Pages > [Worker] > Cron Triggers

# Check logs
# Workers & Pages > [Worker] > Logs > Real-time Logs

Issue: Handler executes but fails

Possible causes:

  1. Uncaught error in handler
  2. CPU time limit exceeded
  3. Missing environment bindings
  4. Network timeout

Solution:

typescript
export default {
  async scheduled(controller, env, ctx) {
    try {
      await yourTask(env);
    } catch (error) {
      // Log detailed error
      console.error('Handler failed:', {
        error: error.message,
        stack: error.stack,
        cron: controller.cron,
        time: new Date(controller.scheduledTime),
      });

      // Send alert
      ctx.waitUntil(sendAlert(error));

      // Re-throw to mark as failed
      throw error;
    }
  },
};

Check logs in dashboard for error details.


Issue: Wrong execution time

Cause: UTC vs. local timezone confusion

Solution:

Convert your desired local time to UTC:

typescript
// Want 9am PST (UTC-8)?
// 9am PST = 5pm UTC (17:00)

{
  "triggers": {
    "crons": ["0 17 * * *"]
  }
}

Tools:


Issue: Local testing not working

Possible causes:

  1. Missing --test-scheduled flag
  2. Wrong endpoint (should be /__scheduled)
  3. Python Worker (use /cdn-cgi/handler/scheduled)

Solution:

bash
# Correct: Start with flag
bunx wrangler dev --test-scheduled

# In another terminal
curl "http://localhost:8787/__scheduled?cron=0+*+*+*+*"

Production Checklist

Before deploying cron triggers to production:

  • Cron expression validated on Crontab Guru
  • Handler named exactly scheduled in default export
  • ES modules format used (not Service Worker)
  • Local timezone converted to UTC
  • Error handling implemented with logging
  • Alerts configured for failures
  • CPU limits increased if needed (limits.cpu_ms)
  • Environment bindings tested
  • Tested locally with --test-scheduled
  • Deployment tested in staging environment
  • Waited 15 minutes after deploy for propagation
  • Verified execution in dashboard logs
  • Monitoring and alerting configured
  • Documentation updated with schedule details


Last Updated: 2025-10-23 Version: 1.0.0 Maintainer: Claude Skills Maintainers | maintainers@example.com

© secondsky, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 10 other files (references) in plugins/cloudflare-cron-triggers/skills/cloudflare-cron-triggers of secondsky/claude-skills.

  • SKILL.md
  • references/common-patterns.md
  • references/cron-expressions-reference.md
  • references/integration-patterns.md
  • references/testing-guide.md
  • references/wrangler-config.md
  • templates/basic-scheduled.ts
  • templates/hono-with-scheduled.ts
  • templates/multiple-crons.ts
  • templates/scheduled-with-bindings.ts
  • templates/wrangler-cron-config.jsonc

Open the folder on GitHubat commit 8837836

Compare with similar skills

Cloudflare Cron Triggers next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Cloudflare Cron Triggers compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cloudflare Cron Triggers this skillsecondsky/claude-skills227—~5.5kAutomated safety check: PassMIT
Sentry Cloudflare SDKgetsentry/sentry-for-ai268—~5.3kAutomated safety check: PassApache-2.0
Agents SDKhodgef/apiker1273 repos~3kAutomated safety check: PassMIT
Building AI Agent On Cloudflaremajiayu000/claude-skill-registry6661 repos~2.3kAutomated safety check: PassMIT
Cloudflare Browser Renderingcloudflare/moltworker9.9k—~742Automated safety check: PassApache-2.0
Codex Chatgpt BridgeZhenyu98/codex-chatgpt-bridge275—~4kAutomated safety check: PassMIT

Similar skills

  • Sentry Cloudflare SDK

    getsentry/sentry-for-ai

    Official

    Full Sentry SDK setup for Cloudflare Workers and Pages. An agent skill from getsentry/sentry-for-ai.

    268 GitHub stars~5.3k tokensUpdated yesterday
    Productivity & AutomationAuto-check passed
  • Agents SDK

    hodgef/apiker

    Build AI agents on Cloudflare Workers using the Agents SDK. An agent skill from hodgef/apiker.

    127 GitHub starsUsed in 3 repos~3k tokens
    Backend & APIsAuto-check passed
  • Building AI Agent On Cloudflare

    majiayu000/claude-skill-registry

    Builds AI agents on Cloudflare using the Agents SDK with state management, real-time WebSockets, scheduled tasks, tool integration, and chat capabilities.

    666 GitHub starsUsed in 1 repo~2.3k tokens
    Backend & APIsAuto-check passed
  • Cloudflare Browser Rendering

    cloudflare/moltworker

    Official

    Drives headless Chrome through Cloudflare Browser Rendering over a CDP WebSocket to take screenshots, navigate and scrape pages, and record multi-page videos.

    9.9k GitHub stars~742 tokensUpdated 5 mo ago
    Productivity & AutomationAuto-check passed
  • Codex Chatgpt Bridge

    Zhenyu98/codex-chatgpt-bridge

    A skill your agent uses when Codex needs to coordinate ChatGPT, Chrome, Cloudflare tunnels, verified bridge Restart/Reboot recovery, or task routing between local code execution and ChatGPT…

    275 GitHub stars~4k tokensUpdated 2 mo ago
    Productivity & AutomationAuto-check passed
  • Test Fumadocs Wrangler

    clabernetes/clabernetes

    Builds and validates the Fumadocs React Router static site through Wrangler with headless browser checks.

    143 GitHub stars~569 tokensUpdated 4 days ago
    Productivity & AutomationAuto-check passed

More from secondsky/claude-skills

All 169 skills in this repo
  • Tanstack AI

    secondsky/claude-skills

    TanStack AI (alpha) provider-agnostic type-safe chat with streaming for OpenAI, Anthropic, Gemini, Ollama.

    227 GitHub starsUsed in 1 repo~3.6k tokens
    Auto-check: notes
  • Auto Animate

    secondsky/claude-skills

    AutoAnimate (@formkit/auto-animate) zero-config animations for React.

    227 GitHub stars~2.9k tokensUpdated 10 days ago
    Auto-check passed
  • Base UI React

    secondsky/claude-skills

    MUI Base UI unstyled React components with Floating UI. An agent skill from secondsky/claude-skills.

    227 GitHub stars~1.9k tokensUpdated 10 days ago
    Auto-check passed
  • Cloudflare Images

    secondsky/claude-skills

    This skill should be used when the user asks to "upload images to Cloudflare", "implement direct creator upload", "configure image transformations", "optimize WebP/AVIF", "create image variants"…

    227 GitHub stars~3.6k tokensUpdated 10 days ago
    Auto-check: notes
  • Cloudflare Nextjs

    secondsky/claude-skills

    Deploy Next.js to Cloudflare Workers via the OpenNext adapter (@opennextjs/cloudflare).

    227 GitHub stars~5.3k tokensUpdated 10 days ago
    Auto-check: notes
  • Cloudflare Sandbox

    secondsky/claude-skills

    Cloudflare Sandboxes SDK for secure code execution in Linux containers at edge.

    227 GitHub stars~4.5k tokensUpdated 10 days ago
    Auto-check passed

Questions about Cloudflare Cron Triggers

What does Cloudflare Cron Triggers do?

Cloudflare Cron Triggers for scheduled Workers execution. An agent skill from secondsky/claude-skills. Cloudflare Cron Triggers is an agent skill from secondsky/claude-skills. Cloudflare Cron Triggers for scheduled Workers execution.

When should I use Cloudflare Cron Triggers?

Cloudflare Cron Triggers fits situations like: scheduled Workers execution; encountering handler not found; invalid cron expression; timezone errors.

How do I install Cloudflare Cron Triggers in Claude Code?

Run `npx skills add secondsky/claude-skills --skill cloudflare-cron-triggers -a claude-code`. Or copy the skill folder (plugins/cloudflare-cron-triggers/skills/cloudflare-cron-triggers in secondsky/claude-skills) into .claude/skills/cloudflare-cron-triggers in your project. Claude Code loads it when a task matches its description.

How do I install Cloudflare Cron Triggers in Codex?

Run `npx skills add secondsky/claude-skills --skill cloudflare-cron-triggers -a codex`. Or copy the skill folder (plugins/cloudflare-cron-triggers/skills/cloudflare-cron-triggers in secondsky/claude-skills) into .agents/skills/cloudflare-cron-triggers in your project. Codex loads it when a task matches its description.

Can I use Cloudflare Cron Triggers in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add secondsky/claude-skills --skill cloudflare-cron-triggers -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cloudflare-cron-triggers, .gemini/skills/cloudflare-cron-triggers, .github/skills/cloudflare-cron-triggers and .opencode/skills/cloudflare-cron-triggers in your project.

What does Cloudflare Cron Triggers need to run?

Going by SKILL.md and its folder, Cloudflare Cron Triggers needs TypeScript for the scripts in its folder and the command-line tools its instructions call (bunx, curl, wrangler and npm). Our summary lists: Python 3; Node.js.

Does Cloudflare Cron Triggers access the network?

SKILL.md names 4 domains. As links in the text: developers.cloudflare.com, crontab.guru, timeanddate.com and dash.cloudflare.com. This is read from the text; nothing was executed.

Is Cloudflare Cron Triggers safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Cloudflare Cron Triggers use?

Cloudflare Cron Triggers is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cloudflare Cron Triggers use?

About 5.5k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 14k tokens, read only when the agent opens those files.

What are the alternatives to Cloudflare Cron Triggers?

Skills that share tags, products or a category with Cloudflare Cron Triggers: Sentry Cloudflare SDK (getsentry/sentry-for-ai, 268 stars), Agents SDK (hodgef/apiker, 127 stars), Building AI Agent On Cloudflare (majiayu000/claude-skill-registry, 666 stars) and Cloudflare Browser Rendering (cloudflare/moltworker, 9.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cloudflare Cron Triggers?

secondsky (a GitHub user) maintains it in secondsky/claude-skills, which has 227 GitHub stars. The repository holds 169 skills in this directory. The repository was last updated on September 28, 2026.

Source: secondsky/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.