npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

croncool

v1.2.1

Published

croncool cli to manage cron jobs and more

Readme

croncool

Command-line access to your cron jobs on app.cron.cool: projects, scheduled jobs, their schedules and HTTP targets, and each job's last execution status — plus running a job immediately or deleting it.

Install

npm install -g croncool   # global install
npx croncool --help       # or run without installing

Requires Node.js 18 or newer.

Quick start

croncool login            # browser or API-key login (asks which)
croncool projects list    # your projects with their ids
croncool jobs list --projectId PROJECT_ID
Found 2 job(s):
1. warm-cache [rate(5 minutes)] (64a1f2c9e4b0a1b2c3d4e5f6)
2. nightly-report [cron(0 3 * * ? *)] (64a1f2c9e4b0a1b2c3d4e5f7)

Signing up

No account yet? Create one from the terminal — the generated password prints exactly once, and the session is stored so every other command works immediately:

croncool signup --email [email protected] --json

Authentication

Two ways in, both stored in ~/.croncool/:

  • Browsercroncool login --browser starts a temporary localhost server, opens app.cron.cool to authorize, and receives the session tokens on the redirect back. If the browser does not open, the login URL is printed so you can visit it by hand. Tokens are refreshed automatically when they expire.
  • API keycroncool login --with-key prompts (masked) for an API key secret from a project's API-keys page on app.cron.cool, verifies it with one authenticated call, and stores it. The secret is never accepted as a command argument — argv leaks into shell history and ps listings.

Headless environments (CI, agents) skip login entirely and export CRONCOOL_API_KEY=<key secret> instead — the key is read from the environment at request time. When several credentials exist the stored browser session wins, then the stored key, then the environment variable.

Plain croncool login on an interactive terminal asks which method to use. Without a terminal and without credentials, commands fail immediately with exit code 1 and instructions on stderr — nothing blocks waiting for a browser. croncool logout clears the stored session and any stored key secret (an exported CRONCOOL_API_KEY stays in effect and the CLI says so).

New API keys default to read-only scopes: jobs execute and jobs delete need the key widened on the project's API-keys page.

JSON output and exit codes

Every data subcommand accepts --json: real, parseable JSON on stdout with no color — pipe it to jq or JSON.parse. Mutations print a small result object such as { "ok": true, "id": "…", "executed": true }. Errors always go to stderr with exit code 1; under --json the error is a single JSON line: {"error":{"message":"…","status":404}}.

croncool jobs list --json | jq '.[].expression'
croncool schema                # the whole command tree as JSON
croncool schema jobs list      # one subtree: options, arguments, subcommands

Commands

Session

croncool signup --email [email protected]   # create an account and log in
croncool login               # interactive choice of browser vs API key
croncool login --browser     # browser flow; tokens land in ~/.croncool/
croncool login --with-key    # masked prompt for an API key secret
croncool logout              # clear the stored session and stored key

Projects

croncool projects list                    # list projects with name and id
croncool projects get [projectIdOrName]   # one project (or all) as an object dump
croncool projects read <projectIdOrName>  # formatted view: organizationId, countryCode, timestamps

Jobs

croncool jobs list                        # 10 most recent jobs (-n/--limit, --projectId)
croncool jobs get <jobId>                 # one job as an object dump
croncool jobs get --projectId <id> -n 20  # no jobId: dump an array of jobs
croncool jobs read <jobId>                # formatted view: schedule, url, method, enabled,
                                          #   last execution, timestamps
croncool jobs execute <jobId>             # fire the job's configured request immediately
croncool jobs delete <jobId>              # delete the job (no confirmation prompt)

--projectId can be omitted when a croncool.json supplies it — see Configuration below. All of these take --json; without it get prints Node's inspect format — readable, but not strict JSON.

execute sends the HTTP request configured on the job right away; the downstream target runs for real, so double-check the job id first with croncool jobs read. delete removes the job immediately and cannot be undone.

Introspection

croncool schema                # print the command tree as JSON
croncool schema <command...>   # print one command's subtree

Skills

croncool skills list           # names and descriptions of the bundled agent guides
croncool skills get croncool   # print a bundled SKILL.md to stdout

Configuration

A croncool.json in the working directory (or any directory below it) supplies the default --projectId for jobs list and jobs get:

{ "projectId": "64a1f2c9e4b0a1b2c3d4e5f6" }

Explicit CLI options take priority over the file.

CRONCOOL_API_URL overrides the API endpoint (default https://api.cron.cool) — only needed against a non-production deployment.

Usage with AI agents

Install the Croncool agent skills — croncool (this CLI) and scheduler-operations (the MCP-based scheduled-operations workflow) — for Claude Code, Cursor, Codex, and any other agent that supports the Skills standard:

npx skills add croncool/skills

The same guides ship inside the npm package, version-matched to the installed CLI:

croncool skills list           # what is bundled
croncool skills get croncool   # the CLI guide matching this version

Or paste this into your AGENTS.md / CLAUDE.md:

## Cron jobs

Use the `croncool` CLI for Croncool data: projects, scheduled jobs, their
schedules and last execution status. Run
`npx croncool skills get croncool` for the full guide, and
`croncool schema` for the command tree as JSON. Add `--json` to any data
command for parseable output. Auth: `croncool login` once, or export
`CRONCOOL_API_KEY` in headless environments.

Prefer a connector? The Croncool MCP server at https://mcp.cron.cool/mcp exposes the same data as tools for Claude, ChatGPT, and any MCP-capable host — see cron.cool/developers.

License

Apache-2.0