Tlon Product Guide
tloncorp/tlon-apps
Answer questions about Tlon, Urbit, Tlon Messenger, Tlonbot, and OpenClaw — what they are, how they work, and how to use them.
Analyze, diagnose, and optimize Hermes cron jobs via the cronalytics CLI.
$ npx skills add 8bit64k/cronalytics --skill cronalytics -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install 8bit64k/cronalytics cronalytics --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/8bit64k/cronalytics.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/cronalytics .claude/skills/cronalytics && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "cronalytics" agent skill from https://github.com/8bit64k/cronalytics/tree/master/skills/cronalytics into .claude/skills/cronalytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cronalytics", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/8bit64k/cronalytics/tree/master/skills/cronalyticsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add 8bit64k/cronalytics --skill cronalytics -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install 8bit64k/cronalytics cronalytics --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/8bit64k/cronalytics.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/cronalytics .agents/skills/cronalytics && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "cronalytics" agent skill from https://github.com/8bit64k/cronalytics/tree/master/skills/cronalytics into .agents/skills/cronalytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cronalytics", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add 8bit64k/cronalytics --skill cronalytics -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install 8bit64k/cronalytics cronalytics --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/8bit64k/cronalytics.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/cronalytics .cursor/skills/cronalytics && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "cronalytics" agent skill from https://github.com/8bit64k/cronalytics/tree/master/skills/cronalytics into .cursor/skills/cronalytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cronalytics", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/8bit64k/cronalytics.git --path skills/cronalytics--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add 8bit64k/cronalytics --skill cronalytics -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install 8bit64k/cronalytics cronalytics --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/8bit64k/cronalytics.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/cronalytics .gemini/skills/cronalytics && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "cronalytics" agent skill from https://github.com/8bit64k/cronalytics/tree/master/skills/cronalytics into .gemini/skills/cronalytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cronalytics", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install 8bit64k/cronalytics cronalyticsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add 8bit64k/cronalytics --skill cronalytics -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/8bit64k/cronalytics.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/cronalytics .github/skills/cronalytics && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "cronalytics" agent skill from https://github.com/8bit64k/cronalytics/tree/master/skills/cronalytics into .github/skills/cronalytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cronalytics", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add 8bit64k/cronalytics --skill cronalytics -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install 8bit64k/cronalytics cronalytics --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/8bit64k/cronalytics.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/cronalytics .opencode/skills/cronalytics && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "cronalytics" agent skill from https://github.com/8bit64k/cronalytics/tree/master/skills/cronalytics into .opencode/skills/cronalytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cronalytics", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
cronalyticsAnalyze, diagnose, and optimize Hermes cron jobs via the cronalytics CLI.
Cronalytics is an agent skill from 8bit64k/cronalytics. Analyze, diagnose, and optimize Hermes cron jobs via the cronalytics CLI. Terminal-based health checks, cost attribution, failure analysis, trend detection, and schedule drift. Also references the Cronalytics dashboard plugin for visual exploration.
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/data-model.md`, `references/direct-sqlite-workarounds.md` and `references/jq-diagnostic-patterns.md`).
It sits in Productivity & Automation, covering Scheduled and recurring tasks, Root cause analysis and Hooks and plugins. It works with OpenAI. The repository describes itself as: Hermes Agent plugin for cron analytics and observability. The dashboard for agentic automations in Hermes. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f72f0d0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonjqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Cronalytics loads about 4.7k tokens when it runs, and up to ~8.5k if it reads all its reference files. Until then it costs about 65 tokens; SKILL.md has 2,365 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from 8bit64k/cronalytics at commit f72f0d0, republished under its MIT licence (© 8bit64k). 2,365 words, ~4,671 tokens.
.claude/skills/cronalytics/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Cronalytics is a cron observability plugin for Hermes Agent. It persists cron
job metadata, costs, outcomes, and model usage into a local SQLite fact DB
(facts.db), then surfaces it through both a web dashboard and a terminal CLI.
This skill teaches the CLI interface — the canonical machine-readable surface.
Every data subcommand except all supports --json for structured output. All
share the same filter grammar (--days, --outcome, --mode). The dashboard is a fallback for visual exploration. The CLI is the primary diagnostic interface because it
is scriptable, pipeable, and works inside any terminal session without a browser.
Pitfall — Skill text is historical, not oracular. The cronalytics codebase
changes. Before repeating any claim about CLI defaults, accepted values, or flag
behaviors, verify against the live source (cronalytics/cli.py for argument
parsing, cronalytics/facts.py for query semantics, dashboard/plugin_api.py for
API regex patterns). This skill was written at a point in time; code drift is
real. Never tell the user a behavior is "correct" because the skill says so —
check the code.
Do not use for:
hermes cron commands, not cronalytics)If the user installed via pip or created a shell alias use:
cronalytics --helpThe cronalytics command is available after the plugin is installed. If it is
not on $PATH, run via the plugin path:
python ~/.hermes/plugins/cronalytics/cronalytics/cli.py --help| Command | What it returns | Key flags |
|---|---|---|
all | Health + summary + jobs + models + trends in one scroll | --days, --outcome, --mode |
summary | Headline aggregates: total runs, cost, tokens, success/failure split | --days, --outcome, --mode, --json |
jobs | Per-job table: runs, cost, pace, avg duration, mode | --days, --outcome, --mode, --json |
models | Per-model cost and token attribution | --days, --outcome, --mode, --json |
trends | Daily run-count / cost sparkline | --days, --outcome, --mode, --json |
runs | Individual run rows for a specific job ID | --job <id> (required), --days, --outcome, --mode, --limit, --json |
health | Fact DB row counts, last sync watermark, schema version | --db, --json |
sync | Backfill cron sessions from state.db → facts.db | --db, --json |
All data subcommands accept these shared flags:
--days N — look-back window (default: 30, 0 = all time)health --json--days 0 for full history--outcome all|success|failure — outcome filter (default: all)--mode all|agent|no_agent — agent vs. script-only jobs (default: all)--mode agent or --mode no_agent drops jobs with mixed modes in the window--mode all unless the user explicitly wants script-only or agent-only--json — raw JSON envelope instead of formatted tablesWhen --json is used, every response is wrapped:
{
"period": "Last 7 days",
"start_date": "2026-05-09",
"end_date": "2026-05-15",
"outcome": "all",
"mode": "all",
"data": [ ... ]
}Pipe into jq '.data[]' for downstream processing.
Pitfall: The all subcommand does not support --json. It emits a
human-readable scroll with headers, ASCII tables, and section breaks. If you
need structured output from the full diagnostic suite, call the individual
subcommands (health --json, summary --json, jobs --json, etc.) and
aggregate client-side. Never claim --json works with all.
Pitfall: Rendered table headers (Name, Fail, Cost, [N]) differ from
JSON keys. Always inspect data[0].keys() from a live --json call before
writing aggregation scripts. The canonical keys in cronalytics jobs --json
are: job_id, job_name, job_mode, runs, success_runs, failure_runs,
tot_estimated_cost, avg_estimated_cost, total_tokens, total_input_tokens,
total_output_tokens, total_cache_*_tokens, total_duration, avg_duration,
last_run, first_run, last_model, schedule_display, pace, drift_ratio.
Mandatory first action. Run cronalytics health --json to read dataset
span (min_run_time to max_run_time) before calling any data subcommand.
If span > 60 days and user was vague (e.g., "recent", "lately", "what's
happening"), default to --days 0 (all time) for assessments. The CLI
defaults to 30 days, which will miss long-term creep and fleet-wide acceleration
on large datasets.
all)Below are examples: use --days with the number that matches the user's request.
Start with the full report to orient:
cronalytics all --days <days>Read the health block first: confirm last_sync is recent. A stale sync
means the data is incomplete.
When data is stale, do not end the assessment. Note the staleness
explicitly, then run cronalytics sync --json to backfill and re-query with
fresh numbers. Flag the sync anomaly as a secondary finding. Never tell the
user to "fix your sync and come back."
Then read the summary block for headline red flags:
success_rate < 80% → investigate failuresfailure_estimated_cost > 10% of tot_estimated_cost → wasted spendtotal_tokens growing week-over-week → model or frequency creepjobs --json)Fetch the jobs surface and rank by estimated cost or token volume:
cronalytics jobs --days <days> --jsonLook for:
cost_per_run — candidate for model switching or prompt optimizationlast_run within window — stale or disabled job still in scheduler[N] badge — no_agent script-only jobsCross-reference jobs.json if pace looks suspicious:
name for cleaner reportscreated_at to confirm age vs. filter windowschedule.kind and schedule.expr for schedule contextjobs.json is current-config state, not historicalruns --job <id> --json)This is the canonical drill-down step. Prefer the CLI surface over direct SQLite.
After Step 2 flags a suspect job, fetch its individual runs:
cronalytics runs --job <job_id> --days <days> --json--limit defaults to 0 (no limit), which returns all runs in the window.
Look for:
duration_secondsRun this for every job in the top-3 burners. Sort by input_tokens descending
to surface the worst creep.
Fall back to direct SQLite only when the CLI cannot express the query you need (e.g., cross-table joins, custom aggregations). If you use SQLite, cite the query and explain why the CLI surface was insufficient.
jobs --outcome failure --json with unfiltered outcome)cronalytics jobs --days <days> --jsonUse unfiltered jobs --json to compute true failure rates:
fail_rate = job['failure_runs'] / job['runs']Do not use --outcome failure on jobs to compute failure rates. That
filter pre-filters the dataset to failures-only before aggregation, so
success_runs will always be 0 (there are no successful runs in the failure
subset). This is intended behavior, not a data bug.
For failure drill-down on a specific job:
cronalytics runs --job <job_id> --days <days> --outcome failure --jsonmodels --json)cronalytics models --days <days> --jsonhigh-estimated-cost models dominating the top are candidates for down-tiering. Compare
avg_cost_per_run across models — a factor of 10× between models for similar
job types is a clear switch candidate. Don't make 'hard' recommendations
to the user to switch or down-tier. Just offer the estimated cost savings opportunity
and suggest they evaluate their current job setup.
Important: Before recommending (soft recommendation to user to evaluate) a model switch, audit input_tokens per run.
A job burning $144/wk on sonnet-4.6 with 900K input tokens per run likely
suffers from context bloat, not model premium. Downgrading to a cheaper model
reduces per-token cost but the job stays expensive if the prompt keeps growing.
Verify runs --json input_tokens are justified by the task before switching.
trends --json)cronalytics trends --days <days> --jsonDaily cost/run-count time series. Spikes that correlate with specific calendar dates are likely one-off events. Steady upward slopes indicate systemic growth that needs a schedule or model intervention.
When the user asks for an assessment, structure the response as:
Snapshot — headline numbers (runs, cost, success rate, sync freshness)
Anomalies — jobs or dates that deviate from baseline. For each anomaly, report:
Confidence grading guide:
Impact — quantified waste (failure_cost, over-schedule burn, model premium) and trend direction
Remediations — prioritized, actionable:
no_agent jobs for necessity, set token budgets,
prune deadwoodThe Cronalytics dashboard is a Hermes plugin route. It provides:
Access via the Hermes dashboard (sidebar tab "Cronalytics"). Use it when the user wants visual exploration or to share a screenshot. Do not describe it as a replacement for the CLI — it is the visual complement.
The most dangerous failures are not tool errors — they are interpretation errors where a healthy metric is read as broken.
| False Alarm | Why it happens | Correct reading |
|---|---|---|
| Pace < 1.0 on a new job | Job created after --days window start | Expected. Check jobs.json created_at. If age < window, pace is not a drift signal. |
| Pace > 1.0 on a [N] script job | Script jobs run inline | [N] jobs may show pace > 1, but they have no agent loop. Verify against other script jobs only. |
| Single spike in trends | One-off event (deploy, holiday) | Isolated spikes are not systemic. Look for sustained trends over 3+ data points. |
| High cost on a low-run job | One expensive run skews average | Check runs --json for the job. Is the cost consistent or an outlier? |
| Context creep on a deliberately growing job | Job accumulates history | Linear growth may be expected. Exponential growth is the danger signal. |
| Recommending model switch without token audit | Reflex to "downgrade expensive model" | Check runs --json input_tokens first. Unbounded context makes any model expensive. |
Do not treat every anomaly as a false alarm. Some signals are genuinely broken. The purpose of this table is to prevent premature dismissal of real problems by checking a benign explanation. It does not teach you to dismiss real problems.
no_agent jobs ([N] badge) execute as shell scripts, not agent sessions.
They have no LLM loop and therefore typically record:
total_tokens = 0avg_duration = null (if the script was not tracked by the agent timing system)last_model = "unknown"success = 1 (if the shell command returned exit 0)This is expected behavior for script-only jobs. Zero tokens on a no_agent
job is not a silent failure. It is the correct signal that no LLM was invoked.
To distinguish a healthy no_agent job from a misconfigured one, check
jobs.json:
no_agent = true (confirms it is a script job)script = actual file path to a script that existslast_status / last_error — if the script was not found or failed, this
reveals the real error (cronalytics records success=1 because the Hermes
scheduler session completed, even when the script itself failed)A no_agent job with success=1 but 0 tokens is normal if the script ran
successfully but does no LLM work. A no_agent job with success=1 but a
non-empty last_error in jobs.json is a real misconfiguration.
The fact DB records success=1 when a Hermes session completes without
crashing. This does not guarantee useful work was done.
| Pattern | Cronalytics signal | Root cause | Fix |
|---|---|---|---|
| Script misconfiguration | no_agent, success=1, 0 tokens, non-empty last_error in jobs.json | Script file missing or invalid, shell command treated as path | Check jobs.json last_error for exact message; fix script path |
| Agent returns [SILENT] | agent mode, success=1, very low tokens, end_reason == "cron_complete" | Prompt instructed silent mode | Usually expected; verify with user |
| Empty script output | no_agent, success=1, 0 tokens, last_error empty | Script ran but produced nothing | Review script logic |
1.2 = over-triggering or shortened schedule. Pace < 0.5 on an older job means backlog, hangs, or schedule mismatch. Pace indicators on no_agent [N] jobs have less estimated cost impact and should be posititioned as such.
[N] badge). No LLM loop = zero tokens
by design. Do not compare 1:1 with agent jobs.state.db, not actual provider billing. Never
present as exact invoices.last_sync is older than the look-back window, all
analysis is stale. Fix it: cronalytics sync --json, then continue.--mode agent or --mode no_agent drops jobs with
mixed-mode runs. Use --mode all unless user explicitly wants isolation.jq, Python json, or direct SQLite.references/time-window-blind-spot.md for
why this matters.cronalytics health shows a recent last_sync timestamp--days) covers the period the user cares about--mode all is the default unless user wants agent/no_agent isolationjobs.json cross-checkThe skills/devops/cronalytics/references/ directory contains session artifacts
and supporting documents. These files are not guaranteed to be current with
the live codebase. Treat them as hints, not canonical sources.
data-model.md — JSON field map and SQLite schema. Verify field names and
types against a live --json call before relying on them. The codebase
may have drifted since this file was written.direct-sqlite-workarounds.md — SQL recipes for queries the CLI cannot
express. Useful when the CLI surface is insufficient.jq-diagnostic-patterns.md — ready-to-paste filtering pipelines.time-window-blind-spot.md — why short windows hide long-term creep.silent-failure-detection.md — decision tree and one-liners for jobs that
report success but produce no value (hollow runs, misconfigured scripts).Pitfall: If a reference file contradicts cli.py, facts.py, or a live
--json response, the code wins. Reference files are historical snapshots;
live source is truth.
© 8bit64k, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in skills/cronalytics of 8bit64k/cronalytics.
Open the folder on GitHubat commit f72f0d0
Cronalytics next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Cronalytics this skill8bit64k/cronalytics | 112 | — | ~4.7k | Automated safety check: Pass | MIT | |
| Tlon Product Guidetloncorp/tlon-apps | 107 | — | ~11k | Automated safety check: Pass | MIT | |
| Codex Chatgpt BridgeZhenyu98/codex-chatgpt-bridge | 275 | — | ~4k | Automated safety check: Pass | MIT | |
| Daily Briefleiting-eric/DailyBrief | 364 | — | ~3k | Automated safety check: Notes | MIT | |
| Scrapingbee CLIScrapingBee/scrapingbee-cli | 108 | — | ~3.2k | Automated safety check: Notes | MIT | |
| Memory ManagementThinkInAIXYZ/deepchat | 6.4k | — | ~849 | Automated safety check: Pass | Apache-2.0 |
tloncorp/tlon-apps
Answer questions about Tlon, Urbit, Tlon Messenger, Tlonbot, and OpenClaw — what they are, how they work, and how to use them.
Zhenyu98/codex-chatgpt-bridge
A skill your agent uses when Codex needs to coordinate ChatGPT, Chrome, Cloudflare tunnels, verified bridge Restart/Reboot recovery, or task routing between local code execution and ChatGPT…
leiting-eric/DailyBrief
Operational knowledge for the daily-brief digest pipeline (this project).
ScrapingBee/scrapingbee-cli
Fetch and read any web page, search the web, crawl a site, or pull structured data out of pages.
ThinkInAIXYZ/deepchat
Guide the agent to recall, remember, and route durable learning into Memory, Skills, Scheduled Tasks, or Tape.
garrytan/gbrain
Connect a ChatGPT or Claude account and sync its conversation history into the brain automatically.
Works with
Categories
Analyze, diagnose, and optimize Hermes cron jobs via the cronalytics CLI. Cronalytics is an agent skill from 8bit64k/cronalytics. Analyze, diagnose, and optimize Hermes cron jobs via the cronalytics CLI.
Cronalytics fits situations like: tasks that involve Scheduled and recurring tasks; tasks that involve Root cause analysis; tasks that involve Hooks and plugins.
Run `npx skills add 8bit64k/cronalytics --skill cronalytics -a claude-code`. Or copy the skill folder (skills/cronalytics in 8bit64k/cronalytics) into .claude/skills/cronalytics in your project. Claude Code loads it when a task matches its description.
Run `npx skills add 8bit64k/cronalytics --skill cronalytics -a codex`. Or copy the skill folder (skills/cronalytics in 8bit64k/cronalytics) into .agents/skills/cronalytics in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add 8bit64k/cronalytics --skill cronalytics -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cronalytics, .gemini/skills/cronalytics, .github/skills/cronalytics and .opencode/skills/cronalytics in your project.
Going by SKILL.md and its folder, Cronalytics needs the command-line tools its instructions call (python and jq). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Cronalytics is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Cronalytics: Tlon Product Guide (tloncorp/tlon-apps, 107 stars), Codex Chatgpt Bridge (Zhenyu98/codex-chatgpt-bridge, 275 stars), Daily Brief (leiting-eric/DailyBrief, 364 stars) and Scrapingbee CLI (ScrapingBee/scrapingbee-cli, 108 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
8bit64k (a GitHub user) maintains it in 8bit64k/cronalytics, which has 112 GitHub stars. The repository was last updated on June 24, 2026.
Source: 8bit64k/cronalytics on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.