Skip to main content
skill CX Codex

catalyst-job-scheduling — Claude Code skill: setup and usage

Orchestrates job pools, background executions, and cron triggers in Zoho Catalyst. It helps write job handlers and prevents SDK payload errors.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add catalystbyzoho/agent-skills --skill catalyst-job-scheduling -a claude-code
Open on GitHub

What catalyst-job-scheduling does

This skill guides coding agents through background processing in Zoho Catalyst across job pools, immediate jobs, and crons. It provides payload rules for Job functions, Webhooks, Circuits, and AppSail targets. Without an existing job pool, any dispatch fails immediately because Catalyst provides no default pool.

Strict runtime constraints are built into the skill references. For example, job_name accepts only alphanumeric characters and underscores between 1 and 20 characters. The retry interval must be passed in seconds within 60 to 86400 rather than milliseconds. It also warns against the broken SDK enum CRON_TYPE.CALENDER, requiring the literal string 'Calendar'.

Security guidance prevents leaking credentials. Dumping getJobDetails() into logs exposes project secret keys in plaintext. In addition, the skill advises monitoring executions via specific job records instead of cron counters, since success and failure counters remain at zero on cron objects.

What it helps with

  • configure a job pool with correct memory constraints
  • schedule periodic or one-time crons via the Catalyst SDK
  • implement Job function handlers with proper context closures
  • resolve SDK validation errors for retry_interval or cron types

Example prompts for the agent

  • Submit an immediate background job to process the data queue
  • Set up a calendar cron job in Catalyst for monthly billing
  • Check the job function handler for sensitive credential logging

How to install catalyst-job-scheduling

1Skills CLI (Vercel)

npx skills add catalystbyzoho/agent-skills --skill catalyst-job-scheduling -a claude-code

2Manually: put the files in place

~/.claude/skills/catalyst-job-scheduling/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/catalyst-job-scheduling/

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

Questions about catalyst-job-scheduling

How do I install catalyst-job-scheduling in Claude Code?

Run npx skills add catalystbyzoho/agent-skills --skill catalyst-job-scheduling -a claude-code in your terminal.

What does catalyst-job-scheduling do?

It equips the agent with validated rules for Zoho Catalyst job scheduling, covering pools, immediate tasks, and cron timetables. It prevents runtime syntax rejections and execution errors.

Why does CRON_TYPE.CALENDER fail in the SDK?

The SDK enum CRON_TYPE.CALENDER has a typo and gets rejected by the Catalyst server. You must pass the string 'Calendar' instead.

Source text

SKILL.md · Apache-2.0
---
name: catalyst-job-scheduling
description: "Catalyst Job Scheduling — job pools, immediate/background jobs, and crons (Periodic, OneTime, Calendar, CronExpression) executing Job functions, Webhooks, Circuits, AppSail. Trigger on 'job scheduling', 'job pool', 'jobpool_id', 'submit a job', 'immediate job', 'cron job', 'scheduled function', 'submitJob', 'createCron', 'retry_interval', 'time_of_execution', or errors 'not a job function', 'job_name must contain only alphanumeric'. Replaces deprecated Cron."
metadata:
  version: "2.0.0"
---

# Catalyst Job Scheduling

Job Scheduling runs background work in three pieces: **job pools** (capacity containers), **jobs** (one execution each, submitted immediately via API/SDK/MCP), and **crons** (schedulers that submit jobs on a timetable). Every fact in this skill and its references is runtime-verified against a live Catalyst project (Aug 2026) unless marked otherwise.

## Prerequisites

Before any operation, load `references/job-scheduling-basics.md` — it covers the five setup rules that cause most failures: job pool must exist first (no default), targets must be JOB-type functions, all time values in seconds, `job_name` limits, and function-vs-pool memory constraints.

## How It Works

1. **Identify the target type**: Job function (most common), Webhook (any HTTP URL), Circuit, or AppSail. Create/verify a matching-type job pool (Function pools size by `memory` MB; the others by concurrent `number` 1–10).
2. **One-off work → submit an immediate job** (MCP `CatalystbyZoho_Create_Immediate_Job` or SDK `jobScheduling().job().submitJob()`). Recurring or delayed work → create a cron (`CatalystbyZoho_Create_Cron_Job` or SDK `cron().createCron()`) choosing Periodic / OneTime / Calendar / CronExpression. Load `references/job-scheduling-basics.md` for exact payloads for both paths.
3. **Write the Job function handler** `(jobRequest, context)`: initialize the SDK with `catalyst.initialize(context, { scope: 'admin' })`, read inputs via `jobRequest.getAllJobParams()` (all values arrive as strings), and ALWAYS end with `context.closeWithSuccess()` or `closeWithFailure()` — failure is what triggers the retry chain.
4. **For retries, dynamic scheduling, webhook targets, or monitoring**, load `references/job-scheduling-advanced.md` — retry semantics (new job records linked by `parent_job_id`), firing behaviors (Periodic crons fire immediately on create AND update; past-dated OneTime fires instantly; OneTime auto-disables after firing), and observability traps (success/failure counters stay 0; dynamic crons are hidden from list APIs).
5. **Verify by job records, not counters**: `CatalystbyZoho_Get_Job_By_Id` shows `job_status` (`PENDING → RUNNING → SUCCESS | FAILURE`), `execution_time`, `dispatch_delay`, `response_code`. Do not trust cron `success_count`/`failure_count` — they stay 0.

## Security Checklist

- **Never log `jobRequest.getJobDetails()` or `getJobMetaDetails()` wholesale** — at runtime their `headers` contain live credentials (`X-ZC-PROJECT-SECRET-KEY`, `X-ZC-Admin-Cred-Token`). Extract only the fields you need.
- Webhook-target jobs to your own project's function URLs carry those same credential headers; treat webhook receiver logs as sensitive.
- Job functions run with admin privileges — validate/whitelist anything you accept via `params` before using it in queries.
- **Never store secrets in job `headers`/`params`** — `Get_Job_By_Id` / `Get_Cron_Job_By_Id` / `List_All_Crons` return them in plaintext. Never paste a raw cron/job dump into chat, issues, or logs.

## Hallucination Guards

- The SDK enum `CRON_TYPE.CALENDER` ("Calender") is misspelled and **rejected by the server**. Use the string `'Calendar'`.
- `retry_interval` is NOT milliseconds. Seconds, 60–86400. `15 * 60 * 1000` is rejected.
- Immediate jobs and scheduled jobs share the same 15-minute timeout; `context.getMaxExecutionTimeMs()` returns the STRING `"900000"` (`parseInt` before math), while `getRemainingExecutionTimeMs()` returns a number.

## Triggers

- "job scheduling", "job pool", "jobpool", `jobpool_id`, "create a job pool"
- "submit a job", "immediate job", "background job", "run this function as a job", `submitJob`, `Create_Immediate_Job`
- "cron", "cron job", "scheduled function", "schedule a function", "recurring job", `createCron`, `Create_Cron_Job`, `cron_expression`, `time_of_execution`, "Periodic", "OneTime cron", "Calendar cron"
- "retry a job", `number_of_retries`, `retry_interval`, `parent_job_id`, "dunning", "billing schedule", "trial expiry job"
- `pauseCron`, `resumeCron`, `runCron`, `deleteCron`, "pause a cron", "trigger a cron manually", `Submit_Cron_Job`
- Errors: "The given function is not a job function", "job_name must contain only alphanumeric and underscore", "job_name should be within 1-20 char length", "retry interval should be within 60s", "Delete all associated Pre-defined Crons before deleting Job Pool", "memory allocated for the Job Function is higher"
- "webhook job", "call a URL on schedule", `notify_url`

## References

| File | Load when the query is about… |
|------|-------------------------------|
| `references/job-scheduling-basics.md` | Core concepts, job pools, immediate jobs, all 4 cron types, MCP tool workflows, Node SDK calls, Job function handler template, CLI setup |
| `references/job-scheduling-advanced.md` | Retry semantics, dynamic (in-code) cron creation, firing/timing behaviors, webhook-target jobs, notify_url, monitoring/observability, security guardrails, pool capacity rules |

© catalystbyzoho · Apache-2.0 · catalystbyzoho/agent-skills

Similar skills

All skills for Backend and APIs →

From the same set17

catalyst-slate Walks your agent through deploying a frontend to Catalyst Slate: scaffold the app, configure slate-config.toml, ship the build. Handy when React or Next.js needs to live on Catalyst. CX Codex +1 1,000installs catalyst-cache A skill that teaches the agent to use Catalyst Cache: store temporary values in segments, read them back, and respect the TTL. Handy for session data. CX Codex +1 997installs catalyst-stratus A skill for Catalyst Stratus object storage: file uploads, signed URLs, multipart upload. Useful when your project keeps files in Stratus. CX Codex +1 994installs catalyst-nosql A skill that tells the agent how to work with Catalyst NoSQL tables: build items with NoSQLItem, insert, fetch and update records. CX Codex +1 991installs catalyst-zia Wires Zia's pretrained APIs into your agent: OCR, face analytics, object detection, barcode reading and content moderation. Useful when you need image or text extraction without training a model. CX Codex +1 987installs catalyst-pricing Calculates Catalyst pricing, inspects free tier limits, and estimates function execution costs using GB-seconds. CX Codex +1 973installs catalyst-signals A skill for working with Catalyst Signals: set up publishers, rules, webhooks and dispatch policies from the console. CX Codex +1 938installs catalyst-smartbrowz Teaches coding assistants to automate browsers and generate PDFs via Catalyst SmartBrowz. It guides Puppeteer, Playwright, and Selenium workflows in the Catalyst cloud. CX Codex +1 924installs

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