@wonsukchoi/crondex 0.11.0 → 0.12.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.
Files changed (71) hide show
  1. package/README.md +34 -27
  2. package/catalog.json +1790 -40
  3. package/jobs/agriculture/crop-price-market-watch.yaml +32 -0
  4. package/jobs/agriculture/livestock-feed-stock-check.yaml +35 -0
  5. package/jobs/automotive/loaner-vehicle-return-reminder.yaml +35 -0
  6. package/jobs/automotive/parts-backorder-check.yaml +33 -0
  7. package/jobs/automotive/repair-order-aging-check.yaml +35 -0
  8. package/jobs/childcare/immunization-record-compliance-check.yaml +33 -0
  9. package/jobs/childcare/staff-child-ratio-compliance-check.yaml +30 -0
  10. package/jobs/childcare/tuition-payment-late-check.yaml +35 -0
  11. package/jobs/construction/equipment-rental-return-reminder.yaml +35 -0
  12. package/jobs/construction/subcontractor-insurance-expiry-check.yaml +35 -0
  13. package/jobs/creator/sponsorship-deliverable-tracker.yaml +38 -0
  14. package/jobs/crypto/defi-liquidation-risk-watch.yaml +36 -0
  15. package/jobs/crypto/token-unlock-vesting-watch.yaml +34 -0
  16. package/jobs/ecommerce/checkout-conversion-drop-watch.yaml +39 -0
  17. package/jobs/ecommerce/negative-review-alert.yaml +35 -0
  18. package/jobs/education/at-risk-student-grade-watch.yaml +35 -0
  19. package/jobs/education/field-trip-permission-slip-check.yaml +36 -0
  20. package/jobs/events/attendee-checkin-rate-watch.yaml +37 -0
  21. package/jobs/events/event-staffing-shortfall-check.yaml +34 -0
  22. package/jobs/fitness/class-utilization-check.yaml +32 -0
  23. package/jobs/fitness/gym-equipment-maintenance-check.yaml +35 -0
  24. package/jobs/fitness/gym-membership-renewal-reminder.yaml +35 -0
  25. package/jobs/fleet/driver-license-cdl-expiry-check.yaml +35 -0
  26. package/jobs/fleet/vehicle-inspection-due-check.yaml +35 -0
  27. package/jobs/gaming/game-server-uptime-check.yaml +34 -0
  28. package/jobs/gaming/tournament-registration-deadline-check.yaml +34 -0
  29. package/jobs/government/constituent-casework-followup-check.yaml +33 -0
  30. package/jobs/government/foia-request-deadline-check.yaml +36 -0
  31. package/jobs/government/permit-application-backlog-check.yaml +37 -0
  32. package/jobs/healthcare/insurance-eligibility-verification-check.yaml +32 -0
  33. package/jobs/healthcare/lab-result-followup-check.yaml +34 -0
  34. package/jobs/hiring/background-check-status-check.yaml +35 -0
  35. package/jobs/hiring/interview-feedback-overdue-check.yaml +33 -0
  36. package/jobs/hospitality/guest-maintenance-request-backlog-check.yaml +35 -0
  37. package/jobs/hospitality/guest-review-response-check.yaml +35 -0
  38. package/jobs/hr/exit-interview-completion-check.yaml +33 -0
  39. package/jobs/hr/performance-review-cycle-reminder.yaml +34 -0
  40. package/jobs/insurance/certificate-of-insurance-request-check.yaml +38 -0
  41. package/jobs/insurance/premium-payment-due-reminder.yaml +35 -0
  42. package/jobs/inventory/inventory-shrinkage-watch.yaml +36 -0
  43. package/jobs/inventory/overstock-slow-mover-check.yaml +36 -0
  44. package/jobs/investing/earnings-calendar-watch.yaml +32 -0
  45. package/jobs/investing/tax-loss-harvesting-review.yaml +33 -0
  46. package/jobs/legal/compliance-filing-deadline-reminder.yaml +38 -0
  47. package/jobs/logistics/container-demurrage-fee-watch.yaml +35 -0
  48. package/jobs/logistics/last-mile-delivery-exception-check.yaml +36 -0
  49. package/jobs/manufacturing/raw-material-shortage-risk-check.yaml +31 -0
  50. package/jobs/manufacturing/supplier-otd-performance-watch.yaml +38 -0
  51. package/jobs/marketing/campaign-utm-tracking-check.yaml +41 -0
  52. package/jobs/nonprofit/board-action-item-followup-check.yaml +28 -0
  53. package/jobs/nonprofit/grant-reporting-deadline-check.yaml +38 -0
  54. package/jobs/podcast/podcast-download-drop-watch.yaml +42 -0
  55. package/jobs/podcast/podcast-rating-review-watch.yaml +37 -0
  56. package/jobs/realestate/property-tax-deadline-reminder.yaml +35 -0
  57. package/jobs/restaurant/food-cost-percentage-watch.yaml +35 -0
  58. package/jobs/restaurant/labor-cost-percentage-watch.yaml +36 -0
  59. package/jobs/retail/employee-shift-gap-check.yaml +35 -0
  60. package/jobs/retail/pos-till-reconciliation-check.yaml +33 -0
  61. package/jobs/retail/store-opening-checklist-reminder.yaml +30 -0
  62. package/jobs/support/agent-workload-balance-check.yaml +30 -0
  63. package/jobs/support/ticket-reopened-rate-watch.yaml +35 -0
  64. package/jobs/team/on-call-fatigue-check.yaml +39 -0
  65. package/jobs/veterinary/boarding-checkout-reminder.yaml +29 -0
  66. package/jobs/veterinary/controlled-substance-log-audit.yaml +33 -0
  67. package/jobs/veterinary/pet-vaccine-due-reminder.yaml +34 -0
  68. package/jobs/warehousing/climate-control-compliance-check.yaml +40 -0
  69. package/jobs/warehousing/dock-schedule-conflict-check.yaml +30 -0
  70. package/jobs/warehousing/pick-pack-error-rate-watch.yaml +35 -0
  71. package/package.json +1 -1
@@ -0,0 +1,34 @@
1
+ id: event-staffing-shortfall-check
2
+ version: 1
3
+ name: Event Staffing Shortfall Check
4
+ description: >
5
+ Compares confirmed staff/volunteer signups against how many the event
6
+ actually needs, and flags a shortfall while there's still time to
7
+ recruit. Use this if you've ever realized you were short-staffed the day
8
+ before an event instead of weeks before.
9
+ category: events
10
+ tags: [events, staffing, volunteers, planning]
11
+ schedule: "0 9 * * 1"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ confirmed=$(wc -l < "{{signups_csv_path}}");
16
+ confirmed=$((confirmed - 1));
17
+ needed="{{staff_needed}}";
18
+ if [ "$confirmed" -lt "$needed" ]; then
19
+ echo "SHORTFALL: $confirmed of $needed staff/volunteer slots confirmed for {{event_name}}";
20
+ else
21
+ echo "OK: $confirmed of $needed staff/volunteer slots confirmed for {{event_name}}";
22
+ fi
23
+ variables:
24
+ event_name:
25
+ default: "your event"
26
+ description: Name of the event, for the output message.
27
+ signups_csv_path:
28
+ default: "./event-staff-signups.csv"
29
+ description: Path to a CSV of confirmed staff/volunteer signups (one header row plus one row per person).
30
+ staff_needed:
31
+ default: 10
32
+ description: Total staff/volunteer slots the event needs filled.
33
+ compatible_agents: [generic, claude, codex]
34
+ notes: Simple headcount comparison — doesn't check role-specific coverage (e.g. enough registration desk vs. setup crew); split into multiple CSVs/jobs per role if that granularity matters for your event.
@@ -0,0 +1,32 @@
1
+ id: class-utilization-check
2
+ version: 1
3
+ name: Class Utilization Check
4
+ description: >
5
+ Checks upcoming class signups against capacity and flags classes
6
+ running well under-booked. Use this if a class has ever quietly run
7
+ half-empty for months before anyone pulled the numbers and considered
8
+ cutting or rescheduling it.
9
+ category: fitness
10
+ tags: [fitness, classes, utilization, scheduling]
11
+ schedule: "0 8 * * *"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v min_pct="{{min_utilization_pct}}" '
16
+ NR==1 {next}
17
+ {
18
+ pct = ($3 / $2) * 100;
19
+ if (pct < min_pct) {
20
+ printf "UNDER-BOOKED: %s on %s — %d of %d spots (%.0f%%)\n", $1, $4, $3, $2, pct;
21
+ }
22
+ }
23
+ ' "{{classes_csv_path}}"
24
+ variables:
25
+ classes_csv_path:
26
+ default: "./upcoming-classes.csv"
27
+ description: "Path to a CSV with columns: class_name,capacity,signed_up,class_date."
28
+ min_utilization_pct:
29
+ default: 40
30
+ description: Minimum percentage of capacity filled before a class is flagged as under-booked.
31
+ compatible_agents: [generic, claude, codex]
32
+ notes: A pattern of under-booking on the same class/time slot is worth more attention than a single slow week — track over time before deciding to cut anything.
@@ -0,0 +1,35 @@
1
+ id: gym-equipment-maintenance-check
2
+ version: 1
3
+ name: Gym Equipment Maintenance Check
4
+ description: >
5
+ Tracks usage hours or calendar time against manufacturer service
6
+ intervals for cardio and strength equipment, and flags what's coming
7
+ due. Use this if a treadmill has ever broken down mid-workout because
8
+ its service interval quietly passed unnoticed.
9
+ category: fitness
10
+ tags: [fitness, equipment, maintenance, gym]
11
+ schedule: "0 6 * * 1"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v days="{{warn_days_before}}" '
16
+ NR==1 {next}
17
+ {
18
+ cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
19
+ cmd | getline due_epoch; close(cmd);
20
+ "date +%s" | getline now_epoch; close("date +%s");
21
+ diff_days = (due_epoch - now_epoch) / 86400;
22
+ if (diff_days <= days) {
23
+ printf "SERVICE DUE: %s — due %s (%d days)\n", $1, $2, diff_days;
24
+ }
25
+ }
26
+ ' "{{equipment_csv_path}}"
27
+ variables:
28
+ equipment_csv_path:
29
+ default: "./gym-equipment-service.csv"
30
+ description: "Path to a CSV with columns: equipment_name,next_service_due_date (YYYY-MM-DD)."
31
+ warn_days_before:
32
+ default: 14
33
+ description: How many days before service is due to start warning.
34
+ compatible_agents: [generic, claude, codex]
35
+ notes: Taking equipment out of rotation for service before it fails is safer for members than waiting for a breakdown mid-use.
@@ -0,0 +1,35 @@
1
+ id: gym-membership-renewal-reminder
2
+ version: 1
3
+ name: Gym Membership Renewal Reminder
4
+ description: >
5
+ Warns you before a member's contract term ends so there's time to reach
6
+ out before they quietly let it lapse. Use this if a membership has ever
7
+ ended and the member just never came back, without anyone reaching out
8
+ during the window when a renewal conversation could've happened.
9
+ category: fitness
10
+ tags: [fitness, membership, renewal, retention]
11
+ schedule: "0 9 * * *"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v days="{{warn_days_before}}" '
16
+ NR==1 {next}
17
+ {
18
+ cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
19
+ cmd | getline expiry_epoch; close(cmd);
20
+ "date +%s" | getline now_epoch; close("date +%s");
21
+ diff_days = (expiry_epoch - now_epoch) / 86400;
22
+ if (diff_days <= days && diff_days >= 0) {
23
+ printf "RENEWAL DUE: %s — membership ends %s (%d days)\n", $1, $2, diff_days;
24
+ }
25
+ }
26
+ ' "{{members_csv_path}}"
27
+ variables:
28
+ members_csv_path:
29
+ default: "./gym-memberships.csv"
30
+ description: "Path to a CSV with columns: member_name,membership_end_date (YYYY-MM-DD)."
31
+ warn_days_before:
32
+ default: 21
33
+ description: How many days before membership end to start warning.
34
+ compatible_agents: [generic, claude, codex]
35
+ notes: Export from your gym management software (Mindbody, Glofox, Zen Planner) on a schedule to keep this current.
@@ -0,0 +1,35 @@
1
+ id: driver-license-cdl-expiry-check
2
+ version: 1
3
+ name: Driver License/CDL Expiry Check
4
+ description: >
5
+ Checks tracked drivers' license or CDL expiry dates and warns before any
6
+ lapse. Use this if a driver has ever kept driving a fleet vehicle on an
7
+ expired license because nobody was tracking renewal dates separately
8
+ from vehicle registration.
9
+ category: fleet
10
+ tags: [fleet, drivers, license, compliance]
11
+ schedule: "0 8 * * 1"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v days="{{warn_days_before}}" '
16
+ NR==1 {next}
17
+ {
18
+ cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
19
+ cmd | getline expiry_epoch; close(cmd);
20
+ "date +%s" | getline now_epoch; close("date +%s");
21
+ diff_days = (expiry_epoch - now_epoch) / 86400;
22
+ if (diff_days <= days) {
23
+ printf "LICENSE EXPIRING: %s — expires %s (%d days)\n", $1, $2, diff_days;
24
+ }
25
+ }
26
+ ' "{{drivers_csv_path}}"
27
+ variables:
28
+ drivers_csv_path:
29
+ default: "./driver-licenses.csv"
30
+ description: "Path to a CSV with columns: driver_name,license_expiry_date (YYYY-MM-DD)."
31
+ warn_days_before:
32
+ default: 45
33
+ description: How many days before expiry to start warning.
34
+ compatible_agents: [generic, claude, codex]
35
+ notes: Tracks the driver's own license/CDL — separate from `vehicle-registration-expiry-check`, which tracks the vehicle's registration.
@@ -0,0 +1,35 @@
1
+ id: vehicle-inspection-due-check
2
+ version: 1
3
+ name: Vehicle State/DOT Inspection Due Check
4
+ description: >
5
+ Checks fleet vehicles against their state or DOT inspection due dates
6
+ and warns before any lapse. Use this if a vehicle has ever gotten pulled
7
+ off a job by an inspector because its inspection sticker quietly
8
+ expired — separate from routine maintenance or registration renewal.
9
+ category: fleet
10
+ tags: [fleet, inspection, dot, compliance]
11
+ schedule: "0 8 * * 1"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v days="{{warn_days_before}}" '
16
+ NR==1 {next}
17
+ {
18
+ cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
19
+ cmd | getline expiry_epoch; close(cmd);
20
+ "date +%s" | getline now_epoch; close("date +%s");
21
+ diff_days = (expiry_epoch - now_epoch) / 86400;
22
+ if (diff_days <= days) {
23
+ printf "INSPECTION DUE: %s — expires %s (%d days)\n", $1, $2, diff_days;
24
+ }
25
+ }
26
+ ' "{{vehicles_csv_path}}"
27
+ variables:
28
+ vehicles_csv_path:
29
+ default: "./vehicle-inspections.csv"
30
+ description: "Path to a CSV with columns: vehicle_name,inspection_expiry_date (YYYY-MM-DD)."
31
+ warn_days_before:
32
+ default: 30
33
+ description: How many days before the inspection expires to start warning.
34
+ compatible_agents: [generic, claude, codex]
35
+ notes: Tracks the state/DOT safety inspection specifically — distinct from `vehicle-maintenance-due-check` (service intervals) and `vehicle-registration-expiry-check` (registration renewal).
@@ -0,0 +1,34 @@
1
+ id: game-server-uptime-check
2
+ version: 1
3
+ name: Self-Hosted Game Server Uptime Check
4
+ description: >
5
+ Checks that your self-hosted game server (Minecraft, ARK, Valheim, etc.)
6
+ is actually up and accepting connections. Use this if your community
7
+ server has ever gone down overnight and players just assumed you took it
8
+ offline on purpose.
9
+ category: gaming
10
+ tags: [gaming, server, uptime, hosting]
11
+ schedule: "*/10 * * * *"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ if command -v nc >/dev/null 2>&1; then
16
+ if nc -z -w5 "{{server_host}}" "{{server_port}}" 2>/dev/null; then
17
+ echo "OK: {{server_host}}:{{server_port}} is accepting connections";
18
+ else
19
+ echo "DOWN: {{server_host}}:{{server_port}} is not responding";
20
+ exit 1;
21
+ fi
22
+ else
23
+ echo "ERROR: nc not installed — can't check port connectivity";
24
+ exit 1;
25
+ fi
26
+ variables:
27
+ server_host:
28
+ default: "your.server.host"
29
+ description: Hostname or IP of the game server.
30
+ server_port:
31
+ default: 25565
32
+ description: Port the game server listens on.
33
+ compatible_agents: [generic, claude, codex]
34
+ notes: Checks raw TCP connectivity only, not that the game itself is responding correctly inside that port — good enough to catch a crashed process or a down host.
@@ -0,0 +1,34 @@
1
+ id: tournament-registration-deadline-check
2
+ version: 1
3
+ name: Tournament Registration Deadline Check
4
+ description: >
5
+ Warns you before a tournament's registration window closes. Use this if
6
+ you've ever missed signing up for a tournament because the deadline
7
+ passed while you were heads-down practicing instead of checking dates.
8
+ category: gaming
9
+ tags: [gaming, tournament, esports, deadline]
10
+ schedule: "0 9 * * *"
11
+ timezone: "UTC"
12
+ runner: shell
13
+ command: >
14
+ awk -F',' -v days="{{warn_days_before}}" '
15
+ NR==1 {next}
16
+ {
17
+ cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
18
+ cmd | getline due_epoch; close(cmd);
19
+ "date +%s" | getline now_epoch; close("date +%s");
20
+ diff_days = (due_epoch - now_epoch) / 86400;
21
+ if (diff_days <= days && diff_days >= 0) {
22
+ printf "REGISTRATION CLOSING: %s — closes %s (%d days)\n", $1, $2, diff_days;
23
+ }
24
+ }
25
+ ' "{{tournaments_csv_path}}"
26
+ variables:
27
+ tournaments_csv_path:
28
+ default: "./tournament-deadlines.csv"
29
+ description: "Path to a CSV with columns: tournament_name,registration_deadline (YYYY-MM-DD)."
30
+ warn_days_before:
31
+ default: 5
32
+ description: How many days before registration closes to start warning.
33
+ compatible_agents: [generic, claude, codex]
34
+ notes: Maintain the CSV from whatever tournament listing sites/organizers you follow — this is a plain date-threshold reminder, not a tournament discovery tool.
@@ -0,0 +1,33 @@
1
+ id: constituent-casework-followup-check
2
+ version: 1
3
+ name: Constituent Casework Follow-Up Check
4
+ description: >
5
+ Checks open constituent casework (a resident's request for help with a
6
+ government agency, benefit, or service issue) and flags anything
7
+ sitting without an update. Use this if a constituent has ever called
8
+ back asking for a status update because their case quietly went quiet
9
+ on staff's end too.
10
+ category: government
11
+ tags: [government, constituent-services, casework, followup]
12
+ schedule: "0 9 * * 1"
13
+ timezone: "UTC"
14
+ runner: agent-prompt
15
+ prompt: |
16
+ Check {{casework_system}} for open constituent cases with no update
17
+ logged in the last {{stale_after_days}} days.
18
+ 1. List each: constituent name (or case ID), issue summary, and days
19
+ since the last update.
20
+ 2. Flag anything involving a time-sensitive issue (eviction, benefits
21
+ cutoff, utility shutoff) as higher priority regardless of how long
22
+ it's been open.
23
+ 3. Draft a short status-check message per stale case for the assigned
24
+ staffer.
25
+ variables:
26
+ casework_system:
27
+ default: "your constituent services/casework tracking system"
28
+ description: Where casework and update history are tracked.
29
+ stale_after_days:
30
+ default: 10
31
+ description: Days without an update before a case counts as stale.
32
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
33
+ notes: Draft-only — status updates to constituents or follow-ups with the relevant agency go through whatever process your office already uses.
@@ -0,0 +1,36 @@
1
+ id: foia-request-deadline-check
2
+ version: 1
3
+ name: Public Records Request Deadline Check
4
+ description: >
5
+ Checks open public records (FOIA/state equivalent) requests against
6
+ their statutory response deadline and flags anything close to due. Use
7
+ this if a records request has ever blown past its legal response
8
+ window because it sat in an inbox instead of on a tracked deadline
9
+ list.
10
+ category: government
11
+ tags: [government, foia, public-records, deadline]
12
+ schedule: "0 8 * * *"
13
+ timezone: "UTC"
14
+ runner: shell
15
+ command: >
16
+ awk -F',' -v days="{{warn_days_before}}" '
17
+ NR==1 {next}
18
+ $3 == "open" {
19
+ cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
20
+ cmd | getline due_epoch; close(cmd);
21
+ "date +%s" | getline now_epoch; close("date +%s");
22
+ diff_days = (due_epoch - now_epoch) / 86400;
23
+ if (diff_days <= days) {
24
+ printf "RESPONSE DUE: request %s — due %s (%d days)\n", $1, $2, diff_days;
25
+ }
26
+ }
27
+ ' "{{requests_csv_path}}"
28
+ variables:
29
+ requests_csv_path:
30
+ default: "./records-requests.csv"
31
+ description: "Path to a CSV with columns: request_id,statutory_due_date (YYYY-MM-DD),status (open/closed)."
32
+ warn_days_before:
33
+ default: 5
34
+ description: How many days before the statutory deadline to start warning.
35
+ compatible_agents: [generic, claude, codex]
36
+ notes: Statutory response windows vary by jurisdiction and request type — compute `statutory_due_date` per your actual applicable law before loading it into the CSV.
@@ -0,0 +1,37 @@
1
+ id: permit-application-backlog-check
2
+ version: 1
3
+ name: Permit Application Backlog Check
4
+ description: >
5
+ Checks how many permit applications are sitting in review past your
6
+ target processing time, from the issuing agency's side. Use this if
7
+ applications have ever piled up in a queue for weeks with no one
8
+ tracking total backlog size or average age.
9
+ category: government
10
+ tags: [government, permits, backlog, processing]
11
+ schedule: "0 8 * * 1"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ today=$(date +%s);
16
+ awk -F',' -v days="{{target_processing_days}}" -v today="$today" '
17
+ NR==1 {next}
18
+ $2 == "in-review" {
19
+ cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
20
+ cmd | getline submitted_epoch; close(cmd);
21
+ age_days = (today - submitted_epoch) / 86400;
22
+ total++;
23
+ if (age_days > days) over_target++;
24
+ }
25
+ END {
26
+ printf "%d applications in review, %d over the %d-day target\n", total, over_target, days;
27
+ }
28
+ ' "{{applications_csv_path}}"
29
+ variables:
30
+ applications_csv_path:
31
+ default: "./permit-applications.csv"
32
+ description: "Path to a CSV with columns: application_id,status (in-review/approved/denied),submitted_date (YYYY-MM-DD)."
33
+ target_processing_days:
34
+ default: 30
35
+ description: Target number of days to process a permit application.
36
+ compatible_agents: [generic, claude, codex]
37
+ notes: This is the issuing agency's view of the backlog — distinct from `permit-expiry-check` in construction, which tracks an already-issued permit's expiry from the applicant's side.
@@ -0,0 +1,32 @@
1
+ id: insurance-eligibility-verification-check
2
+ version: 1
3
+ name: Insurance Eligibility Verification Check
4
+ description: >
5
+ Checks upcoming appointments for patients whose insurance eligibility
6
+ hasn't been verified yet, so it gets confirmed before the visit instead
7
+ of at checkout. Use this if a patient has ever been surprised with a
8
+ denied claim because eligibility was never checked ahead of time.
9
+ category: healthcare
10
+ tags: [healthcare, insurance, eligibility, appointments]
11
+ schedule: "0 15 * * *"
12
+ timezone: "America/New_York"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Check {{scheduling_system}} for appointments in the next
16
+ {{lookahead_days}} days that don't have insurance eligibility marked as
17
+ verified.
18
+ 1. List each: patient name, appointment date, and insurance plan on
19
+ file.
20
+ 2. Flag anyone with no insurance information on file at all as highest
21
+ priority — that's the one most likely to cause a billing problem.
22
+ 3. Note which need a same-day eligibility check (appointment within 24
23
+ hours) versus which have more lead time.
24
+ variables:
25
+ scheduling_system:
26
+ default: "your scheduling/EHR system"
27
+ description: Name of the scheduling or EHR system to check.
28
+ lookahead_days:
29
+ default: 3
30
+ description: How far ahead to check for unverified appointments.
31
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
32
+ notes: Read-only check — running the actual eligibility verification (via clearinghouse or payer portal) is a separate step this job just prioritizes.
@@ -0,0 +1,34 @@
1
+ id: lab-result-followup-check
2
+ version: 1
3
+ name: Lab Result Follow-Up Check
4
+ description: >
5
+ Checks for lab results that came back a while ago but haven't been
6
+ reviewed by a provider or communicated to the patient yet. Use this if a
7
+ result has ever sat in a queue for days because nobody was tracking
8
+ turnaround from result-received to patient-notified.
9
+ category: healthcare
10
+ tags: [healthcare, lab-results, patients, followup]
11
+ schedule: "0 */4 * * *"
12
+ timezone: "America/New_York"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Check {{lab_system}} for results received in the last
16
+ {{lookback_hours}} hours that show no provider review or patient
17
+ notification logged yet.
18
+ 1. List each: patient, test type, and how long ago the result came in.
19
+ 2. Flag anything past {{escalate_after_hours}} hours as needing
20
+ immediate attention — especially flag any result marked abnormal or
21
+ critical regardless of how recently it arrived.
22
+ 3. If nothing is overdue, say so in one line.
23
+ variables:
24
+ lab_system:
25
+ default: "your lab/EHR system"
26
+ description: Name of the system where lab results and review status are tracked.
27
+ lookback_hours:
28
+ default: 48
29
+ description: How far back to check for unreviewed results.
30
+ escalate_after_hours:
31
+ default: 24
32
+ description: Hours after a result arrives before it counts as overdue for review.
33
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
34
+ notes: Read-only check — flags gaps in review/notification, doesn't interpret clinical results or contact patients itself. Follow your practice's actual critical-value notification protocol for anything flagged abnormal.
@@ -0,0 +1,35 @@
1
+ id: background-check-status-check
2
+ version: 1
3
+ name: Background Check Status Check
4
+ description: >
5
+ Checks pending background/reference checks for offered candidates and
6
+ flags anything stalling close to their planned start date. Use this if a
7
+ start date has ever slipped because a background check was still
8
+ pending and nobody noticed until the week before.
9
+ category: hiring
10
+ tags: [hiring, background-check, onboarding, compliance]
11
+ schedule: "0 9 * * *"
12
+ timezone: "UTC"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Check {{background_check_vendor}} for candidates with a background
16
+ check still pending, and cross-reference against {{ats_system}} for
17
+ their planned start dates.
18
+ 1. List each pending check: candidate name, days pending, and planned
19
+ start date.
20
+ 2. Flag anyone whose start date is within {{escalate_within_days}} days
21
+ and still has no completed check — that's the one worth chasing the
22
+ vendor about today.
23
+ 3. If everything's on track, say so in one line.
24
+ variables:
25
+ background_check_vendor:
26
+ default: "your background check provider (e.g. Checkr, Sterling)"
27
+ description: Where background/reference check status is tracked.
28
+ ats_system:
29
+ default: "your applicant tracking system"
30
+ description: Where candidate start dates are recorded.
31
+ escalate_within_days:
32
+ default: 5
33
+ description: Days before start date at which a still-pending check becomes urgent.
34
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
35
+ notes: Read-only status check — actually chasing the vendor or adjusting a start date is a decision for HR/recruiting to make.
@@ -0,0 +1,33 @@
1
+ id: interview-feedback-overdue-check
2
+ version: 1
3
+ name: Interview Feedback Overdue Check
4
+ description: >
5
+ Flags interviews that happened but still have no feedback submitted, so
6
+ the decision doesn't stall waiting on one interviewer. Use this if a
7
+ candidate has ever been left hanging because feedback from one
8
+ interviewer never showed up and nobody chased it down.
9
+ category: hiring
10
+ tags: [hiring, interviews, feedback, recruiting]
11
+ schedule: "0 9 * * *"
12
+ timezone: "UTC"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Check {{ats_system}} for interviews completed in the last
16
+ {{lookback_hours}} hours with no feedback/scorecard submitted yet.
17
+ 1. List each: candidate name, interviewer, and how long ago the
18
+ interview happened.
19
+ 2. Flag anyone past {{escalate_after_hours}} hours as needing a direct
20
+ nudge, not just a passive reminder.
21
+ 3. Draft a short reminder message per overdue interviewer.
22
+ variables:
23
+ ats_system:
24
+ default: "your applicant tracking system (e.g. Greenhouse, Lever, Ashby)"
25
+ description: Where interview feedback/scorecards are recorded.
26
+ lookback_hours:
27
+ default: 48
28
+ description: How far back to check for interviews missing feedback.
29
+ escalate_after_hours:
30
+ default: 24
31
+ description: Hours after an interview before a missing scorecard counts as urgent.
32
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
33
+ notes: Draft-only — nudge messages should go out through whatever channel your team already uses for interviewer reminders.
@@ -0,0 +1,35 @@
1
+ id: guest-maintenance-request-backlog-check
2
+ version: 1
3
+ name: Guest Maintenance Request Backlog Check
4
+ description: >
5
+ Checks how many guest-reported maintenance issues are still open and
6
+ flags any sitting past your target resolution time. Use this if a
7
+ reported issue (broken AC, leaking faucet) has ever gone unresolved for
8
+ days because the request lived in a notebook nobody checked.
9
+ category: hospitality
10
+ tags: [hospitality, maintenance, guest-experience, backlog]
11
+ schedule: "0 */6 * * *"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v hours="{{sla_hours}}" '
16
+ NR==1 {next}
17
+ $2 == "open" {
18
+ cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f \"%Y-%m-%d %H:%M\" \"" $3 "\" +%s 2>/dev/null";
19
+ cmd | getline reported_epoch; close(cmd);
20
+ "date +%s" | getline now_epoch; close("date +%s");
21
+ age_hours = (now_epoch - reported_epoch) / 3600;
22
+ if (age_hours >= hours) {
23
+ printf "OVERDUE: room %s — %s (open %d hrs)\n", $1, $4, age_hours;
24
+ }
25
+ }
26
+ ' "{{requests_csv_path}}"
27
+ variables:
28
+ requests_csv_path:
29
+ default: "./maintenance-requests.csv"
30
+ description: "Path to a CSV with columns: room_number,status (open/closed),reported_at (YYYY-MM-DD HH:MM),description."
31
+ sla_hours:
32
+ default: 4
33
+ description: Target hours to resolve a guest maintenance request before it counts as overdue.
34
+ compatible_agents: [generic, claude, codex]
35
+ notes: Assumes requests are logged as they come in from front desk/housekeeping — this just cross-checks the log against your SLA, it doesn't dispatch anyone.
@@ -0,0 +1,35 @@
1
+ id: guest-review-response-check
2
+ version: 1
3
+ name: Guest Review Response Check
4
+ description: >
5
+ Checks for recent guest reviews across your listing platforms that
6
+ haven't gotten a response yet. Use this if a review has ever sat
7
+ unanswered for weeks, which future guests read as nobody's paying
8
+ attention.
9
+ category: hospitality
10
+ tags: [hospitality, reviews, guest-experience, reputation]
11
+ schedule: "0 9 * * *"
12
+ timezone: "UTC"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Check {{review_platforms}} for reviews posted in the last
16
+ {{lookback_hours}} hours with no owner/manager response yet.
17
+ 1. List each: platform, rating, and a one-line summary of the review.
18
+ 2. Draft a short, specific response per review (not a copy-paste
19
+ template) — thank them and reference something specific from their
20
+ stay if mentioned.
21
+ 3. Flag any review below {{alert_threshold_stars}} stars as needing a
22
+ more careful, service-recovery-style response rather than a quick
23
+ thank-you.
24
+ variables:
25
+ review_platforms:
26
+ default: "Google, TripAdvisor, Booking.com"
27
+ description: Comma-separated list of platforms to check.
28
+ lookback_hours:
29
+ default: 24
30
+ description: How far back to check for new unanswered reviews.
31
+ alert_threshold_stars:
32
+ default: 3
33
+ description: Star rating at or below which a review needs a more careful response (out of 5).
34
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
35
+ notes: Draft-only — review responses before posting, since they're public and permanent once submitted.
@@ -0,0 +1,33 @@
1
+ id: exit-interview-completion-check
2
+ version: 1
3
+ name: Exit Interview Completion Check
4
+ description: >
5
+ Flags departing employees whose exit interview hasn't happened yet as
6
+ their last day approaches. Use this if someone has ever left without an
7
+ exit interview simply because scheduling it got lost in the handoff
8
+ paperwork.
9
+ category: hr
10
+ tags: [hr, offboarding, exit-interview, compliance]
11
+ schedule: "0 9 * * *"
12
+ timezone: "UTC"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Check {{hris_system}} for employees with a last day within
16
+ {{lookahead_days}} days who don't have an exit interview scheduled or
17
+ completed.
18
+ 1. List each: name, last day, and manager.
19
+ 2. Flag anyone with a last day inside {{urgent_within_days}} days and no
20
+ exit interview on the calendar as urgent.
21
+ 3. Draft a short note to HR/the manager to get one scheduled.
22
+ variables:
23
+ hris_system:
24
+ default: "your HRIS/offboarding system"
25
+ description: Name of the system tracking departures and exit interview status.
26
+ lookahead_days:
27
+ default: 14
28
+ description: How far ahead to check for upcoming departures.
29
+ urgent_within_days:
30
+ default: 3
31
+ description: Days before last day at which a missing exit interview becomes urgent.
32
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
33
+ notes: Draft-only — actually scheduling the interview goes through whatever process HR already uses.