Skip to main content
skill CX Codex

crontap-ai-built-apps — Claude Code skill: setup and features

Configures recurring HTTP jobs and heartbeat monitoring for apps created in Lovable, Bolt, Replit, or v0. It offloads scheduling to Crontap after deployment.

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

What crontap-ai-built-apps does

AI builders do not provide persistent runtimes for scheduled executions. This skill bridges that gap. It guides the model to set up an authenticated HTTP route in the project and hands execution timing over to Crontap.

The generated route expects an authorization check against a server-side CRON_SECRET variable. It mandates idempotency storage for each logical execution window to prevent duplicate side effects. Long-running actions must run through background queues. It also sets up liveness tracking via Crontap heartbeats.

Direct REST API access requires a Crontap Ultra subscription. Projects without Ultra must connect via the Crontap MCP server at https://mcp.crontap.com/mcp.

What it helps with

  • secure backend job endpoints with server-side CRON_SECRET checks
  • schedule recurring HTTP triggers using Crontap
  • track missed runs using independent heartbeat monitors
  • guard against duplicate executions with idempotency keys

Example prompts for the agent

  • Generate a protected daily report endpoint for my Bolt app and set up a Crontap schedule
  • Create a Crontap heartbeat monitor for the overnight sync job
  • Add CRON_SECRET authentication and idempotency tracking to /api/jobs/daily-report

How to install crontap-ai-built-apps

1Skills CLI (Vercel)

npx skills add Crontap/skills --skill crontap-ai-built-apps -a claude-code

2Manually: put the files in place

~/.claude/skills/crontap-ai-built-apps/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/crontap-ai-built-apps/

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

Questions about crontap-ai-built-apps

How to install crontap-ai-built-apps in Claude Code?

Run npx skills add Crontap/skills --skill crontap-ai-built-apps -a claude-code. The skill file will be stored at ~/.claude/skills/crontap-ai-built-apps/SKILL.md.

What does crontap-ai-built-apps do?

It helps models generate secure endpoints for periodic tasks in Lovable, Bolt, Replit, or v0 apps. It then connects those endpoints to Crontap schedules and heartbeats.

Do I need an Ultra plan to use this skill?

Direct REST API calls with $CRONTAP_CLIENT_ID require Ultra. Connecting via the Crontap MCP endpoint at https://mcp.crontap.com/mcp works on all subscription tiers.

Source text

SKILL.md · MIT
---
name: crontap-ai-built-apps
description: >
  Add recurring HTTP work and liveness monitoring to apps built with Lovable,
  Bolt, Replit, or v0 by exposing a protected endpoint. Use when a user wants
  an AI-built app to perform durable scheduled work after deployment.
license: MIT
metadata:
  version: "1.0.0"
  group: patterns-migrations
  order: 11
  title: Add recurring work to an AI-built app
  summary: Give apps built with Lovable, Bolt, Replit, or v0 a secure HTTP boundary for recurring work.
  bestFor: Lovable, Bolt, Replit, and v0 projects
  guide: https://crontap.com/blog/scheduled-tasks-for-ai-built-apps
  guideTitle: Scheduled tasks for AI-built apps
  tools: create_schedule,create_heartbeat
---

# Recurring work for AI-built apps

The deployed app must expose an HTTP endpoint. Crontap owns the clock and calls
that endpoint. The builder chat is used to create code, not as the production
runtime for recurring prompts.

## 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.

- Identify the builder's deployed server or function runtime.
- Define one narrow recurring operation and its durable side effect.
- Add a server-only cron secret and idempotency storage.
- Confirm the production URL and IANA timezone.

## Builder prompt

Adapt this prompt to the app's framework:

```text
Create a POST /api/jobs/daily-report endpoint. Before any work, compare the
Authorization bearer value with the server-only CRON_SECRET environment
variable and return 401 on mismatch. Persist an idempotency key for the current
logical reporting day before creating side effects. Queue long work durably.
Return JSON with a bounded status and no secrets. Add tests for unauthorized,
first-run, and duplicate-run behavior.
```

Review the generated code. Verify that secret comparison and idempotency happen
server-side, not in browser code.

## Workflow

1. Generate and review the protected endpoint in the builder.
2. Deploy it and run authorized and unauthorized tests.
3. Optionally create a heartbeat for independent run evidence.
4. Create the schedule with the protected endpoint.
5. Inspect the first run in both Crontap and application logs.

## MCP examples

Create a heartbeat first when missed-run monitoring is useful:

```json
{
  "tool": "create_heartbeat",
  "arguments": {
    "name": "Daily report delivery",
    "periodMinutes": 1440,
    "graceMinutes": 30
  }
}
```

Store the returned ping URL securely. It can be connected to schedule outcome
webhooks or called by the deployed endpoint after durable completion.

Create the HTTP schedule:

```json
{
  "tool": "create_schedule",
  "arguments": {
    "url": "https://app.example.com/api/jobs/daily-report",
    "text": "every day at 08:00",
    "timezone": "America/New_York",
    "method": "POST",
    "headers": {
      "Authorization": "Bearer <cron-secret-from-secure-store>",
      "Content-Type": "application/json"
    },
    "body": {
      "source": "crontap"
    },
    "label": "AI-built app daily report"
  }
}
```

## 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://app.example.com/api/jobs/daily-report",
    "interval": "0 8 * * *",
    "timezone": "America/New_York",
    "verb": "POST",
    "headers": {
      "Authorization": "Bearer <cron-secret-from-secure-store>",
      "Content-Type": "application/json"
    },
    "data": {"source": "crontap"},
    "label": "AI-built app daily report"
  }'
```

Use MCP for connected non-Ultra accounts.

## Verification

- Confirm the endpoint is server-side and unavailable before authentication.
- Confirm duplicate requests for one logical period create one side effect.
- Verify the first Crontap run and the corresponding application record.
- If using a heartbeat, verify success and explicit failure paths separately.

## Safety and plan limits

- Never put a cron secret or heartbeat URL in client-side environment values.
- Avoid scheduling preview or development deployment URLs.
- Crontap does not keep the builder session open and does not initiate prompts.
- If creation hits a cap or cadence floor, present the returned four-option
  ladder and smallest viable option.

## Troubleshooting

- A 404 often means the builder did not deploy the server route.
- A 401 means the deployed environment and Crontap use different secrets.
- Platform sleep or cold starts can cause timeouts. Queue long work durably.
- Duplicate effects mean the endpoint's idempotency boundary is incomplete.

## References

- [Crontap Agent Skills catalogue](https://crontap.com/skills)
- [Scheduled tasks for AI-built apps](https://crontap.com/blog/scheduled-tasks-for-ai-built-apps)
- [Scheduled AI jobs](https://crontap.com/use-cases/scheduled-ai-jobs)
- [Cron jobs for Lovable](https://crontap.com/use-cases/cron-jobs-for-lovable)
- [Cron jobs for Bolt](https://crontap.com/use-cases/cron-jobs-for-bolt)
- [Cron jobs for Replit](https://crontap.com/use-cases/cron-jobs-for-replit)

© Crontap · MIT · Crontap/skills

Similar skills

All skills for Backend and APIs →

From the same set12

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-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 crontap-natural-language-schedules Turns everyday timing requests into reviewed cron, timezone details, and upcoming runs. It previews the result without creating a schedule. CX Codex +1 880installs crontap-debug-failed-runs Walks through failed Crontap schedule runs using saved config and execution history. Useful when a scheduled HTTP job is late, failing or returning 401. CX Codex +1 879installs

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