Skip to content

About

Cronsole template registry — static catalog (index.json + templates/*.json) plus the browse-and-import gallery, served via GitHub Pages.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

49 Commits

Folders and files

Repository files navigation

📚 Cronsole Template Registry

The public, versioned catalog of automation templates for Cronsole —
served as static JSON over a CDN, integrity-checked, and fetched at runtime.

Explore the schema »

Browse the catalog · Report an issue · Request a template

Served via GitHub Pages Schema: Registry v1 66 templates

JSON sha256-verified LF pinned


🧩 What this is

This repository is the decoupled catalog for Cronsole — the unified scheduled-task manager. Instead of baking its template library into the app (and needing a redeploy to change it), Cronsole reads the catalog from here, at runtime.

It's just data: an index.json manifest plus one JSON file per template. It is served as static files over GitHub Pages at:

https://mikesailab.com/cronsole-registry

A running Cronsole backend points TEMPLATE_REGISTRY_URL at that address, fetches the catalog, verifies every file, and syncs it in — so publishing a template is a push to this repo, never an app deploy.

📦 What's inside

File What it holds
index.json The manifest: registryVersion, updatedAt, and one lightweight entry per template (id, name, description, category, tags, runtime, os, compatibleTargets, the file path, and its sha256). Enough to render a catalog without fetching every file.
templates/<id>.json One full Registry v1 template per file — the abstract Trigger → Action definition plus its {{placeholder}} parameters.
.nojekyll Tells GitHub Pages to serve the files raw (no Jekyll processing).
.gitattributes Pins every file to LF line endings — the sha256 is computed over exact bytes, so a CRLF rewrite would break every checksum.

Today the catalog holds 66 templates in 8 packs — 23 parameterized script starters (PowerShell / Bash / Python / Node / executable / HTTP / …), use-case patterns (database backup, system cleanup, news digest, PR triage), the Developer Pack (git / npm / .NET / Docker), the AI Pack (Claude Code + Codex unattended runs), an Extended Pack (system/backup/cleanup/monitoring/data/notification — service restart, folder-zip & robocopy backups, disk/ping monitors, rclone cloud sync, Discord webhook, and more), plus two families added 2026-08-13: Cronsole Native (jobs Cronsole schedules and runs itself — programs, scripts, HTTP uptime checks and heartbeats, no agent required) and Claude Routines (cloud-run Claude Code routines: issue triage, dependency review, CI digests, docs drift, standups).

Each entry is flagged core or extended. A small curated core ships built into Cronsole and auto-syncs into every install by default; the rest are extended — browse them here and import the ones you want.

🔌 How Cronsole consumes it

The backend's RegistryCatalogSource treats this catalog as untrusted, executable content and defends accordingly:

  1. Fetch index.json.
  2. Fetch each templates/<id>.json.
  3. Verify each file's bytes against the index sha256 — any mismatch aborts the whole fetch (no partial or unverified seeding).
  4. Validate each template against the Registry v1 schema.
  5. Cache the result, and fall back to the app's compiled-in bundled snapshot on any failure (offline, 404, bad checksum) — so Cronsole always has a working catalog.

Note

A template is target-agnostic. It describes the automation abstractly (a trigger + an action) and is compiled to a target's native config at apply time. Only Windows Task Scheduler and Cronsole-native targets have real compilers today; a declared-but-uncompiled target is an honest "copy to set up manually" path, never a silent failure.

🧬 Template schema (Registry v1)

Each templates/<id>.json is a self-contained template:

{
  "schemaVersion": "1.0",
  "id": "tpl_starter_powershell_script",
  "name": "PowerShell Script",
  "description": "Run a PowerShell script on a schedule.",
  "runtime": "powershell",
  "os": "windows",
  "category": "system",
  "tags": ["windows", "powershell", "script"],
  "trigger": { "kind": "schedule", "cron": "0 9 * * *" },
  "commandTemplate": "powershell.exe -NoProfile -File \"{{scriptPath}}\"",
  "parameters": [
    { "key": "scriptPath", "label": "Script file path", "type": "path", "required": true }
  ],
  "compatibleTargets": ["windows"]
}
Field Meaning
schemaVersion Always "1.0" for this registry.
id Stable unique id (kebab / tpl_*). Favorites and applied tasks key off it, so it never changes.
runtime / os / category / tags Classification for search, filtering, and grouping.
trigger The abstract schedule — { "kind": "schedule", "cron": "<5-field UTC cron>" }.
commandTemplate or action What runs. commandTemplate is a command string with {{placeholders}}; the structured action form ({ "kind": "exec", "program", "args": [] }) is no-shell by design.
parameters The {{placeholder}} inputs a user fills in (key, label, type, required, options…).
compatibleTargets Where it can run (windows, cronsole-native, macos, linux, claude-code, chatgpt). Real only where a compiler exists.

Important

Placeholders are substituted server-side, per token, and structured actions never touch a shell — a {{placeholder}} value is always exactly one argument to the intended program, so it can't inject a second command.

🛠️ How this repo is maintained

This repo is a published mirror. The source of truth is the Cronsole app's registry/ folder (generated from a bundled catalog and drift-tested in CI); a publish script copies index.json + templates/ here and pushes, and GitHub Pages rebuilds within about a minute.

That means template content here is generated, not hand-edited — an edit to index.json or a templates/*.json file would be overwritten on the next publish (and would break its sha256). This repo does own its own README.md, .nojekyll, and .gitattributes.

To propose a new template or a change, open an issue describing the automation (trigger, command, parameters, target).

🖼️ Browse the gallery

A browsable gallery site over this registry is live at mikesailab.com/cronsole-registry — search and filter by category / platform / runtime / tag / availability, preview any template, then Download or Copy its JSON and import it into your local Cronsole (Templates → Import). Built-in core templates are badged so you can see what you already have vs. what to add.

🗺️ Where this is heading

This repo is the backing store for the gallery and the natural home for community-contributed templates. Next up: a one-click "Add to my Cronsole" handoff (today it's Download/Copy → Import), and a curated-core-vs-gallery split so an install ships only the essentials and pulls the rest on demand — already in place via the core flag.

🔗 Links

📚 Template Guides How to import, apply, export, and update templates.
🧰 Resources Where to find & adapt automation templates.
Live catalog (index.json) The manifest this registry serves.
Issues Report a problem or request/propose a template.
Cronsole The app this catalog powers.

Static template registry for Cronsole · served via GitHub Pages · content-addressed with sha256

(back to top)

About

Cronsole template registry — static catalog (index.json + templates/*.json) plus the browse-and-import gallery, served via GitHub Pages.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages