@wonsukchoi/crondex 0.22.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -15
- package/catalog.json +4839 -118
- package/jobs/automotive/ase-certification-expiry-check.yaml +36 -0
- package/jobs/automotive/csi-score-monitor.yaml +33 -0
- package/jobs/automotive/customer-pay-warranty-pay-mix-tracker.yaml +47 -0
- package/jobs/automotive/fi-product-attachment-rate-tracker.yaml +39 -0
- package/jobs/automotive/loaner-fleet-availability-check.yaml +40 -0
- package/jobs/automotive/manufacturer-recall-notice-check.yaml +39 -0
- package/jobs/automotive/parts-reorder-point-check.yaml +36 -0
- package/jobs/automotive/repair-cycle-time-trend-monitor.yaml +42 -0
- package/jobs/automotive/service-appointment-no-show-tracker.yaml +38 -0
- package/jobs/automotive/service-bay-utilization-check.yaml +38 -0
- package/jobs/automotive/shop-supply-reorder-check.yaml +31 -0
- package/jobs/automotive/trade-in-appraisal-variance-check.yaml +39 -0
- package/jobs/automotive/used-vehicle-inventory-aging-check.yaml +35 -0
- package/jobs/construction/critical-path-material-lead-time-review.yaml +43 -0
- package/jobs/construction/daily-jobsite-log-compliance-check.yaml +34 -0
- package/jobs/construction/equipment-utilization-cost-check.yaml +35 -0
- package/jobs/construction/heavy-equipment-inspection-compliance-check.yaml +34 -0
- package/jobs/construction/jobsite-safety-incident-near-miss-tracker.yaml +35 -0
- package/jobs/construction/lien-waiver-collection-tracker.yaml +27 -0
- package/jobs/construction/permit-application-approval-backlog-check.yaml +33 -0
- package/jobs/construction/project-budget-variance-check.yaml +34 -0
- package/jobs/construction/punch-list-completion-tracker.yaml +36 -0
- package/jobs/construction/retainage-holdback-release-tracker.yaml +33 -0
- package/jobs/construction/rfi-response-time-tracker.yaml +33 -0
- package/jobs/construction/subcontractor-pay-application-approval-tracker.yaml +35 -0
- package/jobs/construction/submittal-shop-drawing-review-check.yaml +45 -0
- package/jobs/construction/weather-delay-impact-log.yaml +44 -0
- package/jobs/education/chronic-absenteeism-tracker.yaml +34 -0
- package/jobs/education/department-budget-variance-check.yaml +37 -0
- package/jobs/education/enrollment-withdrawal-trend-tracker.yaml +39 -0
- package/jobs/education/facility-work-order-backlog-check.yaml +34 -0
- package/jobs/education/free-reduced-lunch-eligibility-renewal-check.yaml +36 -0
- package/jobs/education/iep-504-review-deadline-tracker.yaml +35 -0
- package/jobs/education/parent-teacher-conference-noshow-tracker.yaml +29 -0
- package/jobs/education/school-bus-route-ontime-check.yaml +40 -0
- package/jobs/education/standardized-test-registration-deadline-check.yaml +35 -0
- package/jobs/education/substitute-teacher-fill-rate-tracker.yaml +35 -0
- package/jobs/education/teacher-certification-expiry-tracker.yaml +35 -0
- package/jobs/education/textbook-inventory-shortage-check.yaml +32 -0
- package/jobs/fleet/accident-incident-report-tracker.yaml +34 -0
- package/jobs/fleet/driver-mvr-review-tracker.yaml +34 -0
- package/jobs/fleet/driver-safety-score-monitor.yaml +39 -0
- package/jobs/fleet/ev-battery-health-check.yaml +36 -0
- package/jobs/fleet/fuel-efficiency-trend-monitor.yaml +33 -0
- package/jobs/fleet/geofence-violation-check.yaml +37 -0
- package/jobs/fleet/lease-return-condition-check.yaml +33 -0
- package/jobs/fleet/tire-wear-replacement-check.yaml +30 -0
- package/jobs/fleet/toll-violation-tracker.yaml +34 -0
- package/jobs/fleet/vehicle-pool-scheduling-conflict-check.yaml +37 -0
- package/jobs/fleet/vehicle-tco-tracker.yaml +41 -0
- package/jobs/fleet/vehicle-utilization-rate-check.yaml +37 -0
- package/jobs/growth/cohort-retention-curve-monitor.yaml +39 -0
- package/jobs/growth/customer-health-score-monitor.yaml +37 -0
- package/jobs/growth/dau-mau-engagement-ratio-check.yaml +39 -0
- package/jobs/growth/dormant-account-reactivation-check.yaml +39 -0
- package/jobs/growth/expansion-revenue-opportunity-tracker.yaml +44 -0
- package/jobs/growth/feature-adoption-rate-tracker.yaml +44 -0
- package/jobs/growth/nps-trend-tracker.yaml +40 -0
- package/jobs/growth/onboarding-funnel-dropoff-check.yaml +39 -0
- package/jobs/growth/paywall-upgrade-prompt-conversion-check.yaml +40 -0
- package/jobs/growth/product-qualified-lead-tracker.yaml +42 -0
- package/jobs/growth/referral-program-performance-tracker.yaml +35 -0
- package/jobs/growth/trial-to-paid-conversion-rate-tracker.yaml +48 -0
- package/jobs/growth/winback-reactivation-campaign-tracker.yaml +46 -0
- package/jobs/hospitality/adr-revpar-tracker.yaml +43 -0
- package/jobs/hospitality/cancellation-rate-spike-check.yaml +21 -0
- package/jobs/hospitality/group-booking-space-utilization-check.yaml +40 -0
- package/jobs/hospitality/guest-complaint-sla-tracker.yaml +34 -0
- package/jobs/hospitality/guest-satisfaction-score-monitor.yaml +41 -0
- package/jobs/hospitality/linen-inventory-turnover-check.yaml +35 -0
- package/jobs/hospitality/loyalty-points-reconciliation-check.yaml +33 -0
- package/jobs/hospitality/minibar-charge-reconciliation-check.yaml +38 -0
- package/jobs/hospitality/occupancy-forecast-variance-check.yaml +33 -0
- package/jobs/hospitality/ota-rate-parity-check.yaml +36 -0
- package/jobs/hospitality/overbooking-risk-alert.yaml +38 -0
- package/jobs/hospitality/room-maintenance-work-order-tracker.yaml +31 -0
- package/jobs/hospitality/upsell-upgrade-conversion-tracker.yaml +37 -0
- package/jobs/insurance/adjuster-caseload-balance-check.yaml +45 -0
- package/jobs/insurance/agent-broker-license-expiry-tracker.yaml +40 -0
- package/jobs/insurance/cat-event-exposure-monitor.yaml +37 -0
- package/jobs/insurance/claims-aging-backlog-tracker.yaml +48 -0
- package/jobs/insurance/doi-filing-deadline-tracker.yaml +42 -0
- package/jobs/insurance/loss-ratio-by-line-monitor.yaml +43 -0
- package/jobs/insurance/policy-lapse-rate-monitor.yaml +41 -0
- package/jobs/insurance/premium-payment-delinquency-tracker.yaml +42 -0
- package/jobs/insurance/quote-to-bind-conversion-tracker.yaml +41 -0
- package/jobs/insurance/reinsurance-treaty-renewal-tracker.yaml +38 -0
- package/jobs/insurance/siu-fraud-referral-tracker.yaml +36 -0
- package/jobs/insurance/subrogation-recovery-tracker.yaml +41 -0
- package/jobs/insurance/underwriting-queue-sla-monitor.yaml +45 -0
- package/jobs/logistics/3pl-performance-scorecard.yaml +45 -0
- package/jobs/logistics/bol-freight-class-accuracy-audit.yaml +33 -0
- package/jobs/logistics/cargo-insurance-claim-status-check.yaml +39 -0
- package/jobs/logistics/carrier-load-tender-acceptance-check.yaml +34 -0
- package/jobs/logistics/carrier-otd-performance-scorecard.yaml +41 -0
- package/jobs/logistics/carrier-rate-contract-renewal-check.yaml +35 -0
- package/jobs/logistics/cross-dock-dwell-time-watch.yaml +43 -0
- package/jobs/logistics/freight-invoice-rate-audit.yaml +38 -0
- package/jobs/logistics/fuel-surcharge-rate-monitor.yaml +40 -0
- package/jobs/logistics/international-shipment-documentation-check.yaml +36 -0
- package/jobs/logistics/linehaul-transit-time-variance-check.yaml +43 -0
- package/jobs/logistics/proof-of-delivery-reconciliation-check.yaml +38 -0
- package/jobs/logistics/route-load-optimization-check.yaml +32 -0
- package/jobs/manufacturing/changeover-time-tracker.yaml +29 -0
- package/jobs/manufacturing/critical-spare-parts-stock-check.yaml +29 -0
- package/jobs/manufacturing/first-pass-yield-report.yaml +37 -0
- package/jobs/manufacturing/lot-traceability-audit.yaml +37 -0
- package/jobs/manufacturing/non-conformance-report-backlog-check.yaml +34 -0
- package/jobs/manufacturing/oee-efficiency-check.yaml +37 -0
- package/jobs/manufacturing/osha-recordable-incident-audit.yaml +37 -0
- package/jobs/manufacturing/production-schedule-adherence-check.yaml +35 -0
- package/jobs/manufacturing/safety-certification-expiry-check.yaml +37 -0
- package/jobs/manufacturing/scrap-waste-rate-watch.yaml +33 -0
- package/jobs/manufacturing/shift-handoff-report.yaml +37 -0
- package/jobs/manufacturing/supplier-quality-ppm-watch.yaml +38 -0
- package/jobs/manufacturing/tooling-die-wear-check.yaml +31 -0
- package/jobs/manufacturing/work-order-backlog-check.yaml +37 -0
- package/jobs/marketing/ad-creative-fatigue-check.yaml +44 -0
- package/jobs/marketing/affiliate-partner-performance-check.yaml +38 -0
- package/jobs/marketing/attribution-discrepancy-check.yaml +42 -0
- package/jobs/marketing/brand-share-of-voice-check.yaml +43 -0
- package/jobs/marketing/campaign-roas-cpa-anomaly-check.yaml +41 -0
- package/jobs/marketing/competitor-ad-creative-watch.yaml +40 -0
- package/jobs/marketing/email-list-growth-rate-check.yaml +43 -0
- package/jobs/marketing/landing-page-conversion-drop-check.yaml +44 -0
- package/jobs/marketing/mql-to-sql-handoff-sla-check.yaml +29 -0
- package/jobs/marketing/mql-volume-pace-check.yaml +34 -0
- package/jobs/marketing/paid-search-negative-keyword-waste-check.yaml +37 -0
- package/jobs/marketing/press-release-pickup-tracking.yaml +32 -0
- package/jobs/marketing/webinar-registration-attendance-check.yaml +38 -0
- package/jobs/restaurant/comp-void-anomaly-tracker.yaml +39 -0
- package/jobs/restaurant/daily-sales-flash-report.yaml +36 -0
- package/jobs/restaurant/delivery-platform-commission-reconciliation.yaml +33 -0
- package/jobs/restaurant/delivery-receiving-discrepancy-check.yaml +33 -0
- package/jobs/restaurant/food-handler-permit-expiry-tracker.yaml +33 -0
- package/jobs/restaurant/gift-card-liability-check.yaml +45 -0
- package/jobs/restaurant/kitchen-ticket-time-watch.yaml +38 -0
- package/jobs/restaurant/liquor-pour-cost-variance-check.yaml +34 -0
- package/jobs/restaurant/menu-86-frequency-tracker.yaml +39 -0
- package/jobs/restaurant/menu-item-profitability-check.yaml +33 -0
- package/jobs/restaurant/pos-end-of-day-reconciliation-check.yaml +31 -0
- package/jobs/restaurant/table-turnover-rate-tracker.yaml +36 -0
- package/jobs/restaurant/waitlist-conversion-check.yaml +37 -0
- package/jobs/retail/cash-office-deposit-variance-check.yaml +34 -0
- package/jobs/retail/competitor-price-monitoring-check.yaml +42 -0
- package/jobs/retail/damaged-merchandise-writeoff-tracker.yaml +41 -0
- package/jobs/retail/employee-discount-abuse-check.yaml +39 -0
- package/jobs/retail/layaway-special-order-pickup-tracker.yaml +33 -0
- package/jobs/retail/loyalty-enrollment-redemption-rate-tracker.yaml +37 -0
- package/jobs/retail/markdown-execution-audit-check.yaml +29 -0
- package/jobs/retail/planogram-compliance-audit-check.yaml +36 -0
- package/jobs/retail/pos-void-refund-anomaly-tracker.yaml +42 -0
- package/jobs/retail/price-tag-audit-accuracy-check.yaml +37 -0
- package/jobs/retail/sales-per-square-foot-tracker.yaml +36 -0
- package/jobs/retail/seasonal-staffing-coverage-check.yaml +35 -0
- package/jobs/retail/store-closing-checklist-compliance-check.yaml +32 -0
- package/jobs/retail/visual-merchandising-compliance-check.yaml +40 -0
- package/jobs/veterinary/appointment-no-show-rate-tracker.yaml +49 -0
- package/jobs/veterinary/boarding-kennel-capacity-utilization-check.yaml +39 -0
- package/jobs/veterinary/client-payment-plan-delinquency-check.yaml +36 -0
- package/jobs/veterinary/dvm-license-dea-registration-expiry-check.yaml +41 -0
- package/jobs/veterinary/microchip-registration-verification-check.yaml +40 -0
- package/jobs/veterinary/patient-record-completeness-audit.yaml +41 -0
- package/jobs/veterinary/pet-medication-refill-backlog-check.yaml +36 -0
- package/jobs/veterinary/puppy-kitten-vaccine-series-compliance-check.yaml +39 -0
- package/jobs/veterinary/senior-pet-wellness-recall-tracker.yaml +43 -0
- package/jobs/veterinary/spay-neuter-followup-compliance-check.yaml +35 -0
- package/jobs/veterinary/specialist-referral-followup-check.yaml +38 -0
- package/jobs/veterinary/surgical-schedule-utilization-check.yaml +36 -0
- package/jobs/veterinary/vet-staff-ce-credit-tracking.yaml +36 -0
- package/jobs/warehousing/conveyor-sortation-downtime-watch.yaml +48 -0
- package/jobs/warehousing/labor-productivity-rate-check.yaml +33 -0
- package/jobs/warehousing/mhe-preventive-maintenance-check.yaml +38 -0
- package/jobs/warehousing/order-fulfillment-sla-watch.yaml +42 -0
- package/jobs/warehousing/shift-headcount-coverage-check.yaml +33 -0
- package/jobs/warehousing/slotting-velocity-review-check.yaml +44 -0
- package/jobs/warehousing/warehouse-damage-writeoff-review.yaml +41 -0
- package/jobs/warehousing/warehouse-near-miss-incident-rate-watch.yaml +47 -0
- package/jobs/warehousing/warehouse-space-utilization-check.yaml +39 -0
- package/jobs/warehousing/wave-pick-batch-efficiency-check.yaml +33 -0
- package/jobs/warehousing/wms-integration-error-check.yaml +36 -0
- package/jobs/warehousing/yard-trailer-detention-watch.yaml +41 -0
- package/lib/category-descriptions.js +12 -12
- package/lib/duplicates-allowlist.js +10 -0
- package/package.json +2 -2
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: standardized-test-registration-deadline-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Standardized Test Registration Deadline Check
|
|
4
|
+
description: >
|
|
5
|
+
Warns before the registration cutoff for a standardized test (state
|
|
6
|
+
assessment, AP, SAT, etc.). Use this if a student has ever missed the
|
|
7
|
+
window to register for a test because the deadline landed during a busy
|
|
8
|
+
stretch of the term and nobody flagged it in advance.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, testing, deadlines]
|
|
11
|
+
schedule: "0 8 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
due_ts=$(date -d "{{registration_deadline}}" +%s 2>/dev/null || date -jf "%Y-%m-%d" "{{registration_deadline}}" +%s);
|
|
17
|
+
days_left=$(( (due_ts - today) / 86400 ));
|
|
18
|
+
if [ "$days_left" -le "{{warn_days}}" ] && [ "$days_left" -ge 0 ]; then
|
|
19
|
+
echo "WARNING: {{test_name}} registration closes in $days_left days ({{registration_deadline}})";
|
|
20
|
+
exit 1;
|
|
21
|
+
else
|
|
22
|
+
echo "OK: {{test_name}} registration closes in $days_left days";
|
|
23
|
+
fi
|
|
24
|
+
variables:
|
|
25
|
+
test_name:
|
|
26
|
+
default: "state standardized assessment"
|
|
27
|
+
description: Name of the test whose registration window this tracks.
|
|
28
|
+
registration_deadline:
|
|
29
|
+
default: "2026-12-15"
|
|
30
|
+
description: Registration cutoff date (YYYY-MM-DD).
|
|
31
|
+
warn_days:
|
|
32
|
+
default: 10
|
|
33
|
+
description: Days before the deadline to start warning.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: Run one instance per test/deadline you need to track — AP, SAT, and state assessments usually have different windows.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: substitute-teacher-fill-rate-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Substitute Teacher Fill Rate Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Compares substitute requests against how many were actually filled and
|
|
6
|
+
flags days or schools with a low fill rate. Use this if classes have
|
|
7
|
+
ever gone uncovered because nobody was tracking whether sub requests
|
|
8
|
+
were actually getting filled.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, staffing, substitute-teachers]
|
|
11
|
+
schedule: "0 6 * * 1-5"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v minRate="{{min_fill_rate_pct}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{ requested[$1] += 1; if ($3 == "filled") filled[$1] += 1; }
|
|
18
|
+
END {
|
|
19
|
+
for (school in requested) {
|
|
20
|
+
rate = (filled[school] / requested[school]) * 100;
|
|
21
|
+
if (rate < minRate) {
|
|
22
|
+
printf "LOW FILL RATE: %s — %.1f%% (%d/%d requests filled)\n", school, rate, filled[school], requested[school];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
' "{{sub_requests_csv_path}}"
|
|
27
|
+
variables:
|
|
28
|
+
sub_requests_csv_path:
|
|
29
|
+
default: "./sub-requests.csv"
|
|
30
|
+
description: "Path to a CSV with columns: school,request_date,status (filled or unfilled)."
|
|
31
|
+
min_fill_rate_pct:
|
|
32
|
+
default: 85
|
|
33
|
+
description: Fill rate percentage below which a school is flagged.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: Run this early in the morning before the school day starts so unfilled slots can still be covered.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: teacher-certification-expiry-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Teacher Certification Expiry Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Checks teaching certifications and endorsements against their renewal
|
|
6
|
+
dates and flags anything expiring soon. Use this if a teacher has ever
|
|
7
|
+
had their state license lapse mid-year because the renewal deadline
|
|
8
|
+
wasn't on anyone's radar until an audit or licensing-board notice.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, staff, certification, compliance]
|
|
11
|
+
schedule: "0 8 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Review teaching certification/endorsement records from
|
|
16
|
+
{{credentialing_system_hint}} for all instructional staff.
|
|
17
|
+
1. List any certification or endorsement expiring within
|
|
18
|
+
{{warn_days}} days.
|
|
19
|
+
2. Separate staff whose core teaching license is expiring (cannot
|
|
20
|
+
legally teach without it) from those with a secondary endorsement
|
|
21
|
+
lapsing (may still teach, but affects course assignments).
|
|
22
|
+
3. Note any continuing-education or renewal-credit requirements that
|
|
23
|
+
still need to be completed before the deadline, if that data is
|
|
24
|
+
available.
|
|
25
|
+
4. Summarize so HR/administration can start the renewal process with
|
|
26
|
+
enough lead time.
|
|
27
|
+
variables:
|
|
28
|
+
credentialing_system_hint:
|
|
29
|
+
default: "your state licensing portal or HR credentialing system"
|
|
30
|
+
description: Where certification/endorsement records and expiration dates live.
|
|
31
|
+
warn_days:
|
|
32
|
+
default: 60
|
|
33
|
+
description: Days before expiration to start warning — certification renewals often take longer than typical HR paperwork.
|
|
34
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
35
|
+
notes: Distinct from general HR compliance training tracking — this is specifically about the state teaching license/endorsements required to legally hold a classroom assignment.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
id: textbook-inventory-shortage-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Textbook Inventory Shortage Check
|
|
4
|
+
description: >
|
|
5
|
+
Compares textbook/material stock counts against enrolled class sizes and
|
|
6
|
+
flags courses that are short. Use this if a class has ever started the
|
|
7
|
+
term with more students than available textbooks because nobody checked
|
|
8
|
+
inventory against the roster ahead of time.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, inventory, textbooks, materials]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v buffer="{{buffer_copies}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
needed = $2 + buffer;
|
|
19
|
+
if ($3 < needed) {
|
|
20
|
+
printf "SHORTAGE: %s — %d in stock, %d needed (%d enrolled + %d buffer)\n", $1, $3, needed, $2, buffer;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
' "{{inventory_csv_path}}"
|
|
24
|
+
variables:
|
|
25
|
+
inventory_csv_path:
|
|
26
|
+
default: "./textbook-inventory.csv"
|
|
27
|
+
description: "Path to a CSV with columns: course_title,enrolled_count,copies_in_stock."
|
|
28
|
+
buffer_copies:
|
|
29
|
+
default: 3
|
|
30
|
+
description: Extra copies to keep on hand beyond the enrolled count.
|
|
31
|
+
compatible_agents: [generic, claude, codex]
|
|
32
|
+
notes: Run this before the start of term and again a few weeks in, since enrollment (and thus the shortfall) can shift after add/drop.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
id: accident-incident-report-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Accident/Incident Report Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Flags open accident or incident reports that have gone too long without
|
|
6
|
+
being closed out. Use this if a fender-bender report has ever sat
|
|
7
|
+
unresolved for weeks because nobody was tracking it after the initial
|
|
8
|
+
paperwork was filed.
|
|
9
|
+
category: fleet
|
|
10
|
+
tags: [fleet, safety, incidents, compliance]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
awk -F',' -v today="$today" -v max_days="{{max_open_days}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
$4 == "open" {
|
|
19
|
+
cmd="date -d \"" $2 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $2 "\" +%s";
|
|
20
|
+
cmd | getline reported_ts; close(cmd);
|
|
21
|
+
days_open = int((today - reported_ts) / 86400);
|
|
22
|
+
if (days_open >= max_days)
|
|
23
|
+
print "STALE REPORT: vehicle " $1 " incident reported " $2 " (" days_open " days open, driver " $3 ")";
|
|
24
|
+
}
|
|
25
|
+
' "{{incidents_csv_path}}"
|
|
26
|
+
variables:
|
|
27
|
+
incidents_csv_path:
|
|
28
|
+
default: "./fleet-incidents.csv"
|
|
29
|
+
description: "Path to a CSV with columns: vehicle_id,reported_date(YYYY-MM-DD),driver_name,status(open/closed)."
|
|
30
|
+
max_open_days:
|
|
31
|
+
default: 10
|
|
32
|
+
description: Days an incident can stay open before it's flagged as stale.
|
|
33
|
+
compatible_agents: [generic, claude, codex]
|
|
34
|
+
notes: Tracks report closure aging, not the claim payout itself — see `fleet-insurance-expiry-check` for policy coverage lapses.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
id: driver-mvr-review-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Driver MVR Review Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Tracks when each driver's motor vehicle record (MVR) was last pulled and
|
|
6
|
+
reviewed, and flags drivers overdue for their periodic re-check. Use
|
|
7
|
+
this if a driver has ever kept racking up points or violations on their
|
|
8
|
+
record for a year or more before anyone at the company noticed.
|
|
9
|
+
category: fleet
|
|
10
|
+
tags: [fleet, drivers, mvr, compliance]
|
|
11
|
+
schedule: "0 8 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
awk -F',' -v today="$today" -v max_days="{{max_days_since_review}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
{
|
|
19
|
+
cmd="date -d \"" $2 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $2 "\" +%s";
|
|
20
|
+
cmd | getline last_ts; close(cmd);
|
|
21
|
+
days_since = int((today - last_ts) / 86400);
|
|
22
|
+
if (days_since >= max_days)
|
|
23
|
+
print "MVR REVIEW OVERDUE: " $1 " — last pulled " $2 " (" days_since " days ago)";
|
|
24
|
+
}
|
|
25
|
+
' "{{mvr_review_csv_path}}"
|
|
26
|
+
variables:
|
|
27
|
+
mvr_review_csv_path:
|
|
28
|
+
default: "./driver-mvr-reviews.csv"
|
|
29
|
+
description: "Path to a CSV with columns: driver_name,last_mvr_pull_date(YYYY-MM-DD)."
|
|
30
|
+
max_days_since_review:
|
|
31
|
+
default: 365
|
|
32
|
+
description: Days since a driver's last MVR pull before it's flagged as overdue for a re-check.
|
|
33
|
+
compatible_agents: [generic, claude, codex]
|
|
34
|
+
notes: Tracks the periodic driving-record re-check cadence, distinct from `driver-license-cdl-expiry-check`, which tracks license/CDL expiry dates specifically.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
id: driver-safety-score-monitor
|
|
2
|
+
version: 1
|
|
3
|
+
name: Driver Safety Score Monitor
|
|
4
|
+
description: >
|
|
5
|
+
Reviews telematics-derived driver safety scores (harsh braking, hard
|
|
6
|
+
acceleration, speeding events) and flags drivers trending toward risky
|
|
7
|
+
behavior. Use this if a driver's habits have ever gone unaddressed until
|
|
8
|
+
an accident or a spiked insurance premium made it impossible to ignore.
|
|
9
|
+
category: fleet
|
|
10
|
+
tags: [fleet, drivers, safety, telematics]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Pull this week's driver safety scorecards from {{telematics_provider_hint}}
|
|
16
|
+
for all tracked drivers.
|
|
17
|
+
1. Flag any driver whose composite safety score fell below
|
|
18
|
+
{{min_safety_score}} (0-100 scale).
|
|
19
|
+
2. Flag any driver with more than {{max_harsh_events}} combined harsh
|
|
20
|
+
braking/hard acceleration/speeding events this week.
|
|
21
|
+
3. Note drivers trending downward over the last {{trend_weeks}} weeks even
|
|
22
|
+
if still above threshold.
|
|
23
|
+
4. Report flagged drivers with score, event counts, and week-over-week
|
|
24
|
+
trend so a manager can decide on coaching.
|
|
25
|
+
variables:
|
|
26
|
+
telematics_provider_hint:
|
|
27
|
+
default: "your telematics/GPS provider (Samsara, Motive, Geotab, etc.)"
|
|
28
|
+
description: Name of the telematics provider/portal driver scorecards come from.
|
|
29
|
+
min_safety_score:
|
|
30
|
+
default: 70
|
|
31
|
+
description: Composite safety score (0-100) below which a driver is flagged.
|
|
32
|
+
max_harsh_events:
|
|
33
|
+
default: 5
|
|
34
|
+
description: Combined harsh-driving events per week that triggers a flag.
|
|
35
|
+
trend_weeks:
|
|
36
|
+
default: 4
|
|
37
|
+
description: Number of trailing weeks to check for a declining trend.
|
|
38
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
39
|
+
notes: No generic script mode — telematics scorecard formats vary by provider and trend judgment benefits from an agent rather than a fixed CSV parse. Distinct from `vehicle-idle-time-check`, which tracks fuel waste, not driving behavior.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: ev-battery-health-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: EV Battery Health & Charging Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks electric fleet vehicles' battery state-of-health and charging
|
|
6
|
+
session logs, flagging vehicles with degrading batteries or charging
|
|
7
|
+
problems. Use this if an EV has ever shown up for a route with far less
|
|
8
|
+
range than expected because nobody was watching battery degradation
|
|
9
|
+
between scheduled services.
|
|
10
|
+
category: fleet
|
|
11
|
+
tags: [fleet, ev, battery, charging]
|
|
12
|
+
schedule: "0 7 * * 1"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
awk -F',' -v min_soh="{{min_battery_soh_pct}}" -v max_hours="{{max_hours_since_charge}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
{
|
|
19
|
+
if ($2 < min_soh)
|
|
20
|
+
printf "DEGRADED BATTERY: vehicle %s — %s%% state of health (min %s%%)\n", $1, $2, min_soh;
|
|
21
|
+
if ($3 > max_hours)
|
|
22
|
+
printf "NOT CHARGED: vehicle %s — %s hours since last charge (max %s)\n", $1, $3, max_hours;
|
|
23
|
+
}
|
|
24
|
+
' "{{ev_fleet_csv_path}}"
|
|
25
|
+
variables:
|
|
26
|
+
ev_fleet_csv_path:
|
|
27
|
+
default: "./ev-fleet-status.csv"
|
|
28
|
+
description: "Path to a CSV with columns: vehicle_id,battery_soh_pct,hours_since_last_charge."
|
|
29
|
+
min_battery_soh_pct:
|
|
30
|
+
default: 80
|
|
31
|
+
description: Battery state-of-health percentage below which a vehicle is flagged for degradation review.
|
|
32
|
+
max_hours_since_charge:
|
|
33
|
+
default: 24
|
|
34
|
+
description: Hours since last charging session before a vehicle is flagged as possibly not charging on schedule.
|
|
35
|
+
compatible_agents: [generic, claude, codex]
|
|
36
|
+
notes: Requires an EV telematics/charging-network export with state-of-health and last-charge data; format varies by provider (Ford Pro, Geotab EV, ChargePoint, etc.).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
id: fuel-efficiency-trend-monitor
|
|
2
|
+
version: 1
|
|
3
|
+
name: Fuel Efficiency Trend Monitor
|
|
4
|
+
description: >
|
|
5
|
+
Tracks each vehicle's miles-per-gallon (or equivalent) trend over time
|
|
6
|
+
and flags vehicles losing efficiency, which often signals a mechanical
|
|
7
|
+
problem before it shows up as a breakdown. Use this if a vehicle's fuel
|
|
8
|
+
costs have ever crept up for months before a mechanic found the actual
|
|
9
|
+
cause.
|
|
10
|
+
category: fleet
|
|
11
|
+
tags: [fleet, fuel, efficiency, maintenance]
|
|
12
|
+
schedule: "0 7 1 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
awk -F',' -v drop_pct="{{efficiency_drop_pct}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
{
|
|
19
|
+
baseline=$2; current=$3;
|
|
20
|
+
drop = ((baseline - current) / baseline) * 100;
|
|
21
|
+
if (drop >= drop_pct)
|
|
22
|
+
printf "EFFICIENCY DROP: vehicle %s — %.1f%% below baseline (%.1f -> %.1f mpg)\n", $1, drop, baseline, current;
|
|
23
|
+
}
|
|
24
|
+
' "{{fuel_efficiency_csv_path}}"
|
|
25
|
+
variables:
|
|
26
|
+
fuel_efficiency_csv_path:
|
|
27
|
+
default: "./fleet-fuel-efficiency.csv"
|
|
28
|
+
description: "Path to a monthly CSV with columns: vehicle_id,baseline_mpg,current_month_mpg."
|
|
29
|
+
efficiency_drop_pct:
|
|
30
|
+
default: 15
|
|
31
|
+
description: Percentage drop from baseline mpg before a vehicle is flagged for a possible mechanical issue.
|
|
32
|
+
compatible_agents: [generic, claude, codex]
|
|
33
|
+
notes: Distinct from `fuel-card-anomaly-check` (fraud/misuse in individual transactions) and `vehicle-idle-time-check` (fuel burned while stationary) — this tracks actual driving efficiency degradation over time.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: geofence-violation-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: GPS Geofence Violation Check
|
|
4
|
+
description: >
|
|
5
|
+
Reviews telematics geofence alerts for fleet vehicles that left
|
|
6
|
+
authorized zones or moved outside approved hours, and flags them for
|
|
7
|
+
follow-up. Use this if a vehicle has ever turned up far outside its
|
|
8
|
+
assigned route or job site and nobody knew until a fuel bill or mileage
|
|
9
|
+
report gave it away.
|
|
10
|
+
category: fleet
|
|
11
|
+
tags: [fleet, gps, geofence, telematics]
|
|
12
|
+
schedule: "0 7 * * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: agent-prompt
|
|
15
|
+
prompt: |
|
|
16
|
+
Review geofence alerts from {{telematics_provider_hint}} for the last
|
|
17
|
+
24 hours.
|
|
18
|
+
1. Flag any vehicle that exited an assigned geofence zone without a
|
|
19
|
+
matching dispatch/job assignment.
|
|
20
|
+
2. Flag any vehicle movement recorded outside approved operating hours
|
|
21
|
+
({{operating_hours}}).
|
|
22
|
+
3. Group repeat offenders (same vehicle or driver flagged more than
|
|
23
|
+
{{repeat_offense_threshold}} times this week) separately.
|
|
24
|
+
4. Report flagged events with vehicle, driver (if known), zone/time, and
|
|
25
|
+
duration outside bounds.
|
|
26
|
+
variables:
|
|
27
|
+
telematics_provider_hint:
|
|
28
|
+
default: "your telematics/GPS provider (Samsara, Motive, Geotab, etc.)"
|
|
29
|
+
description: Name of the telematics provider/portal geofence alerts come from.
|
|
30
|
+
operating_hours:
|
|
31
|
+
default: "06:00-19:00"
|
|
32
|
+
description: Normal operating hours; movement outside this window is flagged.
|
|
33
|
+
repeat_offense_threshold:
|
|
34
|
+
default: 2
|
|
35
|
+
description: Number of flagged events in a week that marks a vehicle/driver as a repeat offender.
|
|
36
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
37
|
+
notes: No generic script mode — geofence alert volume and false-positive rate vary too much by provider/zone setup for a fixed script; judgment is needed to separate legitimate detours from real violations. Distinct from `vehicle-idle-time-check` (fuel waste) and `driver-safety-score-monitor` (driving behavior).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
id: lease-return-condition-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: End-of-Lease Vehicle Return Condition Check
|
|
4
|
+
description: >
|
|
5
|
+
Reviews vehicles approaching lease-end and flags condition issues
|
|
6
|
+
(excess mileage, damage, missing equipment) that could trigger return
|
|
7
|
+
fees, giving time to fix them before turn-in. Use this if a leased
|
|
8
|
+
vehicle has ever come back with a surprise excess-wear bill because
|
|
9
|
+
nobody inspected it until the leasing company did.
|
|
10
|
+
category: fleet
|
|
11
|
+
tags: [fleet, leasing, inspection, cost]
|
|
12
|
+
schedule: "0 8 1 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: agent-prompt
|
|
15
|
+
prompt: |
|
|
16
|
+
Review fleet lease records and identify vehicles reaching lease-end
|
|
17
|
+
within the next {{lookahead_days}} days.
|
|
18
|
+
1. For each vehicle, compare current mileage against the lease's
|
|
19
|
+
allowed mileage; flag any vehicle projected to exceed the allowance
|
|
20
|
+
by return date.
|
|
21
|
+
2. Review the most recent condition/inspection notes for damage beyond
|
|
22
|
+
normal wear, missing equipment, or aftermarket modifications that
|
|
23
|
+
would need reverting.
|
|
24
|
+
3. Estimate likely excess-wear/excess-mileage fees where the lease
|
|
25
|
+
terms make that possible.
|
|
26
|
+
4. Report flagged vehicles with lease-end date, projected mileage
|
|
27
|
+
overage, and condition concerns, ranked by estimated fee exposure.
|
|
28
|
+
variables:
|
|
29
|
+
lookahead_days:
|
|
30
|
+
default: 60
|
|
31
|
+
description: How many days ahead of lease-end to start reviewing a vehicle.
|
|
32
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
33
|
+
notes: No generic script mode — estimating fee exposure from mileage and freeform condition notes needs judgment, not a fixed threshold. Distinct from `vehicle-maintenance-due-check`, which tracks routine service, not lease turn-in condition.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
id: tire-wear-replacement-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Tire Wear & Replacement Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks tread depth readings against a safe minimum and flags tires
|
|
6
|
+
approaching replacement. Use this if a fleet vehicle has ever failed a
|
|
7
|
+
roadside inspection, or blown a tire on the road, because tread wear was
|
|
8
|
+
only checked at annual service instead of tracked between visits.
|
|
9
|
+
category: fleet
|
|
10
|
+
tags: [fleet, tires, maintenance, safety]
|
|
11
|
+
schedule: "0 7 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v min_tread="{{min_tread_depth_32nds}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
if ($3 <= min_tread)
|
|
19
|
+
printf "REPLACE TIRE: vehicle %s, position %s — %s/32\" tread (min %s/32\")\n", $1, $2, $3, min_tread;
|
|
20
|
+
}
|
|
21
|
+
' "{{tire_tread_csv_path}}"
|
|
22
|
+
variables:
|
|
23
|
+
tire_tread_csv_path:
|
|
24
|
+
default: "./fleet-tire-tread.csv"
|
|
25
|
+
description: "Path to a CSV with columns: vehicle_id,tire_position,tread_depth_32nds_inch."
|
|
26
|
+
min_tread_depth_32nds:
|
|
27
|
+
default: 4
|
|
28
|
+
description: Minimum tread depth in 32nds of an inch before a tire is flagged for replacement (legal minimum is commonly 2/32).
|
|
29
|
+
compatible_agents: [generic, claude, codex]
|
|
30
|
+
notes: Update fleet-tire-tread.csv from tread depth readings taken at fuel stops, inspections, or a telematics tire-pressure/tread add-on.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
id: toll-violation-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Toll & Parking Violation Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Flags unpaid tolls and parking citations against fleet vehicles before
|
|
6
|
+
they escalate into late fees, registration holds, or collections. Use
|
|
7
|
+
this if a parking ticket has ever turned into a much bigger bill because
|
|
8
|
+
it sat unnoticed until a renewal got blocked.
|
|
9
|
+
category: fleet
|
|
10
|
+
tags: [fleet, tolls, violations, compliance]
|
|
11
|
+
schedule: "0 7 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
awk -F',' -v today="$today" -v warn_days="{{warn_days_before_due}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
$4 == "unpaid" {
|
|
19
|
+
cmd="date -d \"" $3 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $3 "\" +%s";
|
|
20
|
+
cmd | getline due_ts; close(cmd);
|
|
21
|
+
days_left = int((due_ts - today) / 86400);
|
|
22
|
+
if (days_left <= warn_days)
|
|
23
|
+
print "UNPAID: vehicle " $1 " — " $2 " (" $5 " USD, due " $3 ", " days_left " days left)";
|
|
24
|
+
}
|
|
25
|
+
' "{{violations_csv_path}}"
|
|
26
|
+
variables:
|
|
27
|
+
violations_csv_path:
|
|
28
|
+
default: "./fleet-toll-parking-violations.csv"
|
|
29
|
+
description: "Path to a CSV with columns: vehicle_id,violation_type,due_date(YYYY-MM-DD),status(unpaid/paid),amount_usd."
|
|
30
|
+
warn_days_before_due:
|
|
31
|
+
default: 5
|
|
32
|
+
description: Days before the due date to start warning about an unpaid violation.
|
|
33
|
+
compatible_agents: [generic, claude, codex]
|
|
34
|
+
notes: Pull unpaid toll/citation exports from your toll transponder provider and city/county ticket portals into the CSV before each run.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: vehicle-pool-scheduling-conflict-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Vehicle Pool Scheduling Conflict Check
|
|
4
|
+
description: >
|
|
5
|
+
Scans upcoming pool vehicle reservations for double-bookings and flags
|
|
6
|
+
overlaps before two employees show up for the same vehicle. Use this if
|
|
7
|
+
a pool vehicle has ever been double-booked because reservations were
|
|
8
|
+
tracked in a shared calendar or spreadsheet with no overlap check.
|
|
9
|
+
category: fleet
|
|
10
|
+
tags: [fleet, scheduling, pool-vehicles]
|
|
11
|
+
schedule: "0 6 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
vehicle=$1; start=$3; end=$4; requester=$2;
|
|
19
|
+
key = vehicle;
|
|
20
|
+
if ((key SUBSEP "count") in count) {
|
|
21
|
+
n = count[key SUBSEP "count"];
|
|
22
|
+
} else { n = 0; }
|
|
23
|
+
for (i = 0; i < n; i++) {
|
|
24
|
+
s2 = starts[key, i]; e2 = ends[key, i]; r2 = reqs[key, i];
|
|
25
|
+
if (start < e2 && s2 < end)
|
|
26
|
+
printf "CONFLICT: vehicle %s booked by %s (%s-%s) overlaps %s (%s-%s)\n", vehicle, requester, start, end, r2, s2, e2;
|
|
27
|
+
}
|
|
28
|
+
starts[key, n] = start; ends[key, n] = end; reqs[key, n] = requester;
|
|
29
|
+
count[key SUBSEP "count"] = n + 1;
|
|
30
|
+
}
|
|
31
|
+
' "{{reservations_csv_path}}"
|
|
32
|
+
variables:
|
|
33
|
+
reservations_csv_path:
|
|
34
|
+
default: "./pool-vehicle-reservations.csv"
|
|
35
|
+
description: "Path to a CSV with columns: vehicle_id,requester_name,start_datetime(sortable string, e.g. ISO 8601),end_datetime(sortable string)."
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: Reservation times must sort correctly as strings (ISO 8601 recommended) for the overlap comparison to work; re-export sorted by vehicle_id if your booking tool doesn't already group by vehicle.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
id: vehicle-tco-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Vehicle Total Cost of Ownership Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Reviews each vehicle's running cost per mile (fuel, maintenance,
|
|
6
|
+
insurance, depreciation) against a threshold and flags vehicles that
|
|
7
|
+
have quietly become more expensive to keep than to replace. Use this if
|
|
8
|
+
an aging vehicle has ever stayed on the road years past the point it
|
|
9
|
+
made financial sense.
|
|
10
|
+
category: fleet
|
|
11
|
+
tags: [fleet, cost, depreciation, tco]
|
|
12
|
+
schedule: "0 8 1 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: agent-prompt
|
|
15
|
+
prompt: |
|
|
16
|
+
Review this month's fleet cost data from {{fleet_management_system_hint}}
|
|
17
|
+
covering fuel, maintenance, insurance, and depreciation for each vehicle.
|
|
18
|
+
1. Calculate or pull the trailing {{trailing_months}}-month cost per mile
|
|
19
|
+
(or cost per day if mileage isn't tracked) for each vehicle.
|
|
20
|
+
2. Flag any vehicle whose cost per mile exceeds {{max_cost_per_mile_usd}}
|
|
21
|
+
USD, or whose costs have risen more than {{cost_increase_pct}}% versus
|
|
22
|
+
the prior period.
|
|
23
|
+
3. For flagged vehicles, note vehicle age/mileage and whether recent
|
|
24
|
+
costs are dominated by maintenance (repair spiral) or fuel
|
|
25
|
+
(efficiency loss).
|
|
26
|
+
4. Report flagged vehicles ranked by cost per mile, highest first.
|
|
27
|
+
variables:
|
|
28
|
+
fleet_management_system_hint:
|
|
29
|
+
default: "your fleet management/telematics system"
|
|
30
|
+
description: Name of the system fuel, maintenance, insurance, and depreciation data comes from.
|
|
31
|
+
trailing_months:
|
|
32
|
+
default: 3
|
|
33
|
+
description: Number of trailing months to average costs over.
|
|
34
|
+
max_cost_per_mile_usd:
|
|
35
|
+
default: 0.75
|
|
36
|
+
description: Cost per mile (USD) above which a vehicle is flagged.
|
|
37
|
+
cost_increase_pct:
|
|
38
|
+
default: 20
|
|
39
|
+
description: Percentage cost increase versus the prior period that triggers a flag.
|
|
40
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
41
|
+
notes: No generic script mode — cost data is scattered across fuel cards, maintenance logs, and insurance statements, and judging whether a rising cost trend means "replace this vehicle" needs more than a threshold check.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: vehicle-utilization-rate-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Vehicle Utilization Rate Check
|
|
4
|
+
description: >
|
|
5
|
+
Flags fleet vehicles running well below or above a target utilization
|
|
6
|
+
rate (miles or days driven per period). Use this if a vehicle has ever
|
|
7
|
+
sat mostly idle in a lot racking up lease and insurance costs while
|
|
8
|
+
another vehicle got run into the ground.
|
|
9
|
+
category: fleet
|
|
10
|
+
tags: [fleet, vehicles, utilization]
|
|
11
|
+
schedule: "0 7 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v low="{{low_utilization_pct}}" -v high="{{high_utilization_pct}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
pct = ($3 / $2) * 100;
|
|
19
|
+
if (pct < low) {
|
|
20
|
+
printf "UNDERUSED: vehicle %s — %.1f%% utilization (target %d-%d%%)\n", $1, pct, low, high;
|
|
21
|
+
} else if (pct > high) {
|
|
22
|
+
printf "OVERUSED: vehicle %s — %.1f%% utilization (target %d-%d%%)\n", $1, pct, low, high;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
' "{{utilization_csv_path}}"
|
|
26
|
+
variables:
|
|
27
|
+
utilization_csv_path:
|
|
28
|
+
default: "./vehicle-utilization.csv"
|
|
29
|
+
description: "Path to a monthly CSV with columns: vehicle_id,available_days_or_miles,used_days_or_miles."
|
|
30
|
+
low_utilization_pct:
|
|
31
|
+
default: 30
|
|
32
|
+
description: Utilization percentage below which a vehicle is flagged as underused.
|
|
33
|
+
high_utilization_pct:
|
|
34
|
+
default: 90
|
|
35
|
+
description: Utilization percentage above which a vehicle is flagged as overused/at risk of premature wear.
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: Pulls whatever "used" metric you track (days checked out, miles driven) against "available" — pick one unit and stay consistent across rows.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
id: cohort-retention-curve-monitor
|
|
2
|
+
version: 1
|
|
3
|
+
name: Cohort Retention Curve Monitor
|
|
4
|
+
description: >
|
|
5
|
+
Compares a new signup cohort's early retention (e.g. week-1, week-4)
|
|
6
|
+
against your historical baseline and flags when a cohort is retaining
|
|
7
|
+
worse than usual. Use this if a bad cohort has ever only been noticed
|
|
8
|
+
months later when overall retention numbers had already softened.
|
|
9
|
+
category: growth
|
|
10
|
+
tags: [growth, retention, cohort-analysis, activation]
|
|
11
|
+
schedule: "0 9 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
file={{cohort_retention_csv_path}}; baseline={{baseline_retention_pct}}; drop={{drop_threshold_pct}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
tail -n +2 "$file" | while IFS=',' read -r cohort_week cohort_size retained; do
|
|
18
|
+
[ "$cohort_size" -eq 0 ] 2>/dev/null && continue;
|
|
19
|
+
pct=$(awk "BEGIN{printf \"%.1f\", ($retained/$cohort_size)*100}");
|
|
20
|
+
below=$(awk "BEGIN{print ($pct < ($baseline - $drop)) ? 1 : 0}");
|
|
21
|
+
if [ "$below" = "1" ]; then
|
|
22
|
+
echo "BELOW BASELINE: cohort $cohort_week — ${pct}% retained ($retained/$cohort_size), baseline ${baseline}%";
|
|
23
|
+
fi
|
|
24
|
+
done
|
|
25
|
+
variables:
|
|
26
|
+
cohort_retention_csv_path:
|
|
27
|
+
default: "./cohort-retention.csv"
|
|
28
|
+
description: "Path to a CSV with header: cohort_week,cohort_size,retained_at_checkpoint (retained_at_checkpoint is the count still active at your chosen checkpoint, e.g. week 4)."
|
|
29
|
+
baseline_retention_pct:
|
|
30
|
+
default: 60
|
|
31
|
+
description: Your historical average retention percent at the checkpoint being measured.
|
|
32
|
+
drop_threshold_pct:
|
|
33
|
+
default: 10
|
|
34
|
+
description: Percentage points below baseline that flags a cohort as underperforming.
|
|
35
|
+
compatible_agents: [generic, claude, codex]
|
|
36
|
+
notes: >
|
|
37
|
+
Zero-token. You maintain cohort-retention.csv yourself (export from
|
|
38
|
+
product analytics, one row per signup cohort with its retention count
|
|
39
|
+
at a fixed checkpoint like week 4).
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: customer-health-score-monitor
|
|
2
|
+
version: 1
|
|
3
|
+
name: Customer Health Score Monitor
|
|
4
|
+
description: >
|
|
5
|
+
Rolls up usage, support, billing, and sentiment signals into a
|
|
6
|
+
per-account health score and flags accounts that dropped into the red
|
|
7
|
+
zone. Use this if account health only ever comes up in a QBR deck, long
|
|
8
|
+
after an account has already quietly gone cold.
|
|
9
|
+
category: growth
|
|
10
|
+
tags: [growth, health-score, retention, customer-success]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Pull recent signals for each active account from {{signal_sources}}:
|
|
16
|
+
product usage trend, open support ticket volume/severity, days since
|
|
17
|
+
last login, payment status, and (if available) latest NPS/CSAT
|
|
18
|
+
response.
|
|
19
|
+
1. Combine the signals into a rough health score per account (e.g.
|
|
20
|
+
green/yellow/red), weighting usage decline and payment issues most
|
|
21
|
+
heavily.
|
|
22
|
+
2. List accounts that land in the red zone, with the specific signals
|
|
23
|
+
that dragged them down.
|
|
24
|
+
3. Note any account that moved from green/yellow to red since the last
|
|
25
|
+
run, since a sudden drop is more urgent than a chronically weak
|
|
26
|
+
score.
|
|
27
|
+
variables:
|
|
28
|
+
signal_sources:
|
|
29
|
+
default: "your product analytics, support/helpdesk tool, and billing system"
|
|
30
|
+
description: Where usage, support, and billing signals come from.
|
|
31
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
32
|
+
notes: >
|
|
33
|
+
No generic script mode — combining several signal types into one score
|
|
34
|
+
and judging what counts as "red" needs reasoning across sources, not a
|
|
35
|
+
single threshold. Distinct from churn-risk-watch (which only looks at
|
|
36
|
+
usage drop-off) — this rolls up multiple signal types into one composite
|
|
37
|
+
score.
|