Install
openclaw skills install cronlintScheduled task & cron job anti-pattern analyzer -- detects overlapping execution risks, timezone scheduling errors, missing error recovery, resource contention, lifecycle management issues, and observability gaps in cron jobs, schedulers, and periodic task code
openclaw skills install cronlintCronLint scans codebases for scheduled task and cron job anti-patterns: overlapping execution risks, timezone scheduling errors, missing error recovery, resource contention, lifecycle management issues, and observability gaps. It uses regex-based pattern matching against 90 scheduling-specific patterns across 6 categories, lefthook for git hook integration, and produces markdown reports with actionable remediation guidance. 100% local. Zero telemetry.
Note: CronLint focuses on cron jobs, schedulers (node-cron, APScheduler, Quartz, Celery beat, Bull/BullMQ), setInterval/setTimeout scheduling, Kubernetes CronJobs, and periodic task code. It detects anti-patterns in scheduling logic, not HTTP cron endpoints.
cronlint scan [file|directory]One-shot scheduling quality scan of files or directories.
How to execute:
bash "<SKILL_DIR>/scripts/dispatcher.sh" --path [target]
What it does:
Example usage scenarios:
cronlint scan .cronlint scan src/scheduler.tscronlint scan src/cronlint scan .cronlint scan .cronlint scan --tier pro [file|directory]Extended scan with 60 patterns covering overlap, timezone, error recovery, and resource contention.
How to execute:
bash "<SKILL_DIR>/scripts/dispatcher.sh" --path [target] --tier pro
What it does:
cronlint scan --format json [directory]Generate JSON output for CI/CD integration.
bash "<SKILL_DIR>/scripts/dispatcher.sh" --path [directory] --format json
cronlint scan --format html [directory]Generate HTML report for browser viewing.
bash "<SKILL_DIR>/scripts/dispatcher.sh" --path [directory] --format html
cronlint scan --category OE [directory]Filter scan to a specific check category (OE, TZ, ER, RC, LM, OB).
bash "<SKILL_DIR>/scripts/dispatcher.sh" --path [directory] --category OE
cronlint scan --tier team [directory]Full scan with all 90 patterns across all 6 categories including lifecycle and observability.
How to execute:
bash "<SKILL_DIR>/scripts/dispatcher.sh" --path [directory] --tier team
What it does:
cronlint scan --verbose [directory]Verbose output showing every matched line and pattern details.
bash "<SKILL_DIR>/scripts/dispatcher.sh" --path [directory] --verbose
cronlint statusShow license and configuration information.
bash "<SKILL_DIR>/scripts/dispatcher.sh" status
cronlint patternsList all detection patterns with their IDs, severities, and descriptions.
bash "<SKILL_DIR>/scripts/dispatcher.sh" patterns
CronLint detects 90 scheduled task anti-patterns across 6 categories:
| Category | Code | Patterns | Description | Severity Range |
|---|---|---|---|---|
| Overlapping Execution | OE | 15 | Missing locks, concurrent runs, no mutex, no pid file check | low -- critical |
| Timezone & Scheduling | TZ | 15 | Hardcoded TZ, DST risks, UTC confusion, midnight pitfalls | low -- high |
| Error & Recovery | ER | 15 | No try/catch, missing retry, silent failure, no dead letter queue | low -- critical |
| Resource Contention | RC | 15 | Every-minute cron, no rate limit, unbounded queries, memory risk | low -- critical |
| Lifecycle Management | LM | 15 | No graceful shutdown, orphaned tasks, stale entries, no health check | low -- high |
| Observability | OB | 15 | No duration logging, no metrics, no alerting, no execution history | low -- high |
| Tier | Patterns | Categories |
|---|---|---|
| Free | 30 | OE, TZ |
| Pro | 60 | OE, TZ, ER, RC |
| Team | 90 | OE, TZ, ER, RC, LM, OB |
| Enterprise | 90 | OE, TZ, ER, RC, LM, OB + priority support |
CronLint uses a deductive scoring system starting at 100 (perfect):
| Severity | Point Deduction | Description |
|---|---|---|
| Critical | -25 per finding | Severe risk (overlapping execution, silent failure, resource abuse) |
| High | -15 per finding | Significant problem (missing locks, DST scheduling, no error handling) |
| Medium | -8 per finding | Moderate concern (hardcoded TZ, missing retry, no rate limiting) |
| Low | -3 per finding | Informational / best practice suggestion |
| Grade | Score Range | Meaning |
|---|---|---|
| A | 90-100 | Excellent scheduling quality |
| B | 80-89 | Good scheduling with minor issues |
| C | 70-79 | Acceptable but needs improvement |
| D | 60-69 | Poor scheduling quality |
| F | Below 60 | Critical scheduling problems |
Users can configure CronLint in ~/.openclaw/openclaw.json:
{
"skills": {
"entries": {
"cronlint": {
"enabled": true,
"apiKey": "YOUR_LICENSE_KEY_HERE",
"config": {
"severityThreshold": "medium",
"ignorePatterns": ["**/test/**", "**/fixtures/**", "**/*.test.*"],
"ignoreChecks": [],
"reportFormat": "text"
}
}
}
}
}
The user might say things like: