Skip to main content
skill CX Codex

crontap-supabase-edge-function-cron — Claude Code skill: setup guide

This skill schedules recurring HTTP calls to Supabase Edge Functions using Crontap. It brings observable delivery, failure history, and retries.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Crontap/skills --skill crontap-supabase-edge-function-cron -a claude-code
Open on GitHub

What crontap-supabase-edge-function-cron does

The skill configures scheduled HTTP triggers for Supabase Edge Functions or RPCs through Crontap. While Supabase pg_cron handles internal SQL maintenance, this tool targets web endpoints that need an independent clock, run tracking, and retry logic.

Setup uses the create_schedule tool via Crontap MCP or direct REST calls. MCP access at https://mcp.crontap.com/mcp works across all plan tiers. Direct REST calls require $CRONTAP_CLIENT_ID and $CRONTAP_API_KEY on an Ultra plan.

Never share SUPABASE_SERVICE_ROLE_KEY with the scheduler. Secure endpoints with a custom cron secret inside the Authorization header instead. Idempotency must be handled in the function code to prevent duplicate actions during retries.

What it helps with

  • schedule recurring runs for Supabase Edge Functions
  • configure custom auth headers for automated cron triggers
  • track delivery history and failure logs outside the database
  • enqueue long operations to prevent HTTP timeouts

Example prompts for the agent

  • Schedule a daily run for https://project-ref.supabase.co/functions/v1/nightly-cleanup at 02:00 UTC via Crontap.
  • Set up a recurring POST request to our Supabase Edge Function using the create_schedule MCP tool.

How to install crontap-supabase-edge-function-cron

1Skills CLI (Vercel)

npx skills add Crontap/skills --skill crontap-supabase-edge-function-cron -a claude-code

2Manually: put the files in place

~/.claude/skills/crontap-supabase-edge-function-cron/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/crontap-supabase-edge-function-cron/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about crontap-supabase-edge-function-cron

How to install crontap-supabase-edge-function-cron in Claude Code?

Run npx skills add Crontap/skills --skill crontap-supabase-edge-function-cron -a claude-code. The definition is stored at ~/.claude/skills/crontap-supabase-edge-function-cron/SKILL.md.

When should I use this instead of pg_cron?

Use pg_cron when work stays strictly inside database SQL queries. Choose Crontap when the target is an HTTP Edge Function that requires external run history and retry monitoring.

Can I pass my Supabase service role key to Crontap?

Do not send SUPABASE_SERVICE_ROLE_KEY to Crontap. Authenticate using a dedicated cron secret passed in the Authorization header and verified in function logic.

Source text

SKILL.md · MIT
---
name: crontap-supabase-edge-function-cron
description: >
  Schedule a protected Supabase Edge Function or HTTP-facing RPC through
  Crontap with an external clock and observable delivery. Use when a user needs
  recurring Supabase work with retries, history, or failure alerts.
license: MIT
metadata:
  version: "1.0.0"
  group: patterns-migrations
  order: 10
  title: Schedule a Supabase Edge Function
  summary: Call a Supabase Edge Function on a dependable cadence without exposing service credentials in logs.
  bestFor: Protected Edge Functions, RPCs, and database jobs
  guide: https://crontap.com/guides/supabase-cron-jobs
  guideTitle: Supabase cron jobs
  tools: create_schedule
---

# Schedule a Supabase Edge Function

Use Supabase `pg_cron` for SQL-only database maintenance. Use this pattern when
the recurring unit is an HTTP Edge Function and an external scheduler is
desired.

## Prerequisites

Before using the required tools, check whether they are available. If any are
missing, stop and offer the user exactly two choices:

1. Connect Crontap MCP at `https://mcp.crontap.com/mcp`. MCP access works on
   every Crontap tier.
2. Configure `$CRONTAP_CLIENT_ID` and `$CRONTAP_API_KEY` for the raw API. Raw
   API access requires Ultra.

Do not silently choose a path or continue until the user selects one.

- Deploy the function before creating its schedule.
- Make the function idempotent for one logical period.
- Protect it with a dedicated server-side cron secret.
- Never send a Supabase service-role key to Crontap.

## Function security pattern

Read a dedicated header or bearer value and compare it with a server-only
environment variable before doing work. If Supabase gateway JWT verification
is disabled for the function, this application-layer check is mandatory.

Keep the function response bounded. For long work, durably enqueue the job and
return success only after the queue accepts it.

## Workflow

1. Deploy the Edge Function and configure its cron secret.
2. Call it manually from a controlled environment with and without the secret.
3. Confirm expected status codes and idempotency behavior.
4. Create the Crontap schedule with the deployed HTTPS URL.
5. Verify the resolved cadence and first retained run.

## MCP example

```json
{
  "tool": "create_schedule",
  "arguments": {
    "url": "https://project-ref.supabase.co/functions/v1/nightly-cleanup",
    "text": "every day at 02:00",
    "timezone": "UTC",
    "method": "POST",
    "headers": {
      "Authorization": "Bearer <cron-secret-from-secure-store>",
      "Content-Type": "application/json"
    },
    "body": {
      "source": "crontap"
    },
    "label": "Supabase nightly cleanup"
  }
}
```

Use the real project reference from the Supabase project URL. Do not place a
secret in the function URL or JSON body.

## REST fallback

REST requires Ultra API access:

```bash
curl --fail-with-body https://api.crontap.com/v1/schedule \
  -X POST \
  -H "ClientId: $CRONTAP_CLIENT_ID" \
  -H "ApiKey: $CRONTAP_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "url": "https://project-ref.supabase.co/functions/v1/nightly-cleanup",
    "interval": "0 2 * * *",
    "timezone": "UTC",
    "verb": "POST",
    "headers": {
      "Authorization": "Bearer <cron-secret-from-secure-store>",
      "Content-Type": "application/json"
    },
    "data": {"source": "crontap"},
    "label": "Supabase nightly cleanup"
  }'
```

Prefer MCP when available.

## Verification

- A request without the cron secret returns 401 before side effects.
- A request with the secret returns the intended success status.
- Two requests for the same logical period create one durable side effect.
- The Crontap history outcome matches Supabase function logs at the same time.

## Safety and plan limits

- Do not use `SUPABASE_SERVICE_ROLE_KEY` as the scheduler credential.
- Scope the function to the narrow recurring operation.
- If the Supabase project can pause, remember that an external clock exposes
  the failure but cannot make an unavailable project execute.
- If Crontap rejects the cadence or capacity, present the returned four-option
  ladder and smallest viable option.

## Troubleshooting

- Supabase 401 means gateway or function authorization rejected the request.
- Supabase 404 usually means the project reference, function slug, or deploy
  environment is wrong.
- A 2xx with missing work requires application logs and an idempotency-record
  check.
- Timeouts are better fixed with durable queueing than aggressive retries.

## References

- [Crontap Agent Skills catalogue](https://crontap.com/skills)
- [Supabase cron jobs](https://crontap.com/guides/supabase-cron-jobs)
- [Supabase Edge Function cron jobs](https://crontap.com/use-cases/cron-jobs-for-supabase-edge-functions)
- [Cron troubleshooting](https://crontap.com/guides/cron-troubleshooting)
- [Live REST API reference](https://api.crontap.com/docs/)

© Crontap · MIT · Crontap/skills

Similar skills

All skills for Backend and APIs →

From the same set12

crontap-replace-vercel-cron Moves a Vercel Cron schedule to Crontap while keeping the deployed HTTP route, timezone intent, and rollback plan. Use it for external scheduling. CX Codex +1 883installs crontap-heartbeat-for-cron Adds a Crontap dead-man's-switch ping to a recurring job, so you hear about a crash or a silent stop. Built for unattended cron work. CX Codex +1 883installs crontap-quickstart Selects the right Crontap resource, inspects plan limits, and verifies IANA timezones before provisioning jobs. CX Codex +1 883installs crontap-uptime-monitor Configures Crontap HTTP endpoint monitoring from Claude Code. It sets up health checks, defines failure thresholds, pauses monitors during releases, and inspects probe logs. CX Codex +1 882installs crontap-retries-and-idempotency Sets up Crontap retry policy and helps make a scheduled endpoint idempotent, so a repeated request does not create a second side effect. CX Codex +1 881installs crontap-ai-built-apps Configures recurring HTTP jobs and heartbeat monitoring for apps created in Lovable, Bolt, Replit, or v0. It offloads scheduling to Crontap after deployment. CX Codex +1 881installs crontap-recurring-agent-endpoint Puts an app-owned HTTP endpoint on a Crontap schedule and tracks completion with a heartbeat. Useful when your agent runtime already exists but has no clock of its own. CX Codex +1 880installs crontap-replace-github-actions-cron Replaces GitHub Actions cron triggers with Crontap HTTP dispatches with IANA timezone support. Eliminates schedule drift while keeping workflows and logs on GitHub. CX Codex +1 880installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor