@wonsukchoi/crondex 0.6.0 → 0.8.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 (75) hide show
  1. package/README.md +52 -128
  2. package/bin/crondex.js +85 -0
  3. package/catalog.json +1891 -153
  4. package/jobs/construction/change-order-approval-reminder.yaml +31 -0
  5. package/jobs/construction/inspection-deadline-reminder.yaml +31 -0
  6. package/jobs/construction/permit-expiry-check.yaml +31 -0
  7. package/jobs/content/hreflang-audit.yaml +25 -0
  8. package/jobs/content/image-alt-text-audit.yaml +21 -0
  9. package/jobs/content/page-speed-regression-watch.yaml +26 -0
  10. package/jobs/creator/content-calendar-gap-check.yaml +31 -0
  11. package/jobs/creator/crosspost-lag-check.yaml +35 -0
  12. package/jobs/creator/engagement-drop-watch.yaml +36 -0
  13. package/jobs/devops/cdn-cache-purge-reminder.yaml +27 -0
  14. package/jobs/devops/ci-build-time-regression-watch.yaml +35 -0
  15. package/jobs/devops/k8s-pod-restart-watch.yaml +26 -0
  16. package/jobs/devops/log-forwarding-health-check.yaml +32 -0
  17. package/jobs/devops/staging-prod-config-diff.yaml +32 -0
  18. package/jobs/education/assignment-grading-backlog-check.yaml +23 -0
  19. package/jobs/education/attendance-anomaly-check.yaml +33 -0
  20. package/jobs/education/report-card-deadline-reminder.yaml +27 -0
  21. package/jobs/events/event-budget-overrun-check.yaml +31 -0
  22. package/jobs/events/rsvp-followup-reminder.yaml +30 -0
  23. package/jobs/events/vendor-payment-deadline-reminder.yaml +31 -0
  24. package/jobs/finance/payroll-run-reminder.yaml +27 -0
  25. package/jobs/finance/recurring-payment-failure-check.yaml +23 -0
  26. package/jobs/fleet/fuel-card-anomaly-check.yaml +37 -0
  27. package/jobs/fleet/vehicle-maintenance-due-check.yaml +36 -0
  28. package/jobs/fleet/vehicle-registration-expiry-check.yaml +31 -0
  29. package/jobs/hiring/candidate-followup-nudge.yaml +23 -0
  30. package/jobs/hiring/offer-expiry-reminder.yaml +31 -0
  31. package/jobs/hiring/open-req-aging-check.yaml +31 -0
  32. package/jobs/home/warranty-expiry-reminder.yaml +31 -0
  33. package/jobs/hospitality/food-safety-temp-log-check.yaml +36 -0
  34. package/jobs/hospitality/health-inspection-due-reminder.yaml +32 -0
  35. package/jobs/hospitality/reservation-noshow-check.yaml +20 -0
  36. package/jobs/inventory/expiring-perishable-stock-check.yaml +24 -0
  37. package/jobs/inventory/inventory-count-discrepancy-check.yaml +38 -0
  38. package/jobs/inventory/low-stock-alert.yaml +20 -0
  39. package/jobs/investing/crypto-price-alert.yaml +33 -0
  40. package/jobs/investing/dividend-payment-tracker.yaml +34 -0
  41. package/jobs/investing/portfolio-rebalance-check.yaml +32 -0
  42. package/jobs/legal/contract-renewal-reminder.yaml +31 -0
  43. package/jobs/legal/nda-expiry-check.yaml +31 -0
  44. package/jobs/legal/trademark-renewal-reminder.yaml +30 -0
  45. package/jobs/logistics/customs-clearance-check.yaml +34 -0
  46. package/jobs/logistics/freight-rate-spike-watch.yaml +38 -0
  47. package/jobs/logistics/shipment-delay-watch.yaml +38 -0
  48. package/jobs/manufacturing/preventive-maintenance-due-check.yaml +31 -0
  49. package/jobs/manufacturing/production-line-downtime-watch.yaml +34 -0
  50. package/jobs/manufacturing/quality-defect-rate-check.yaml +20 -0
  51. package/jobs/marketing/ad-spend-pacing-check.yaml +37 -0
  52. package/jobs/marketing/email-deliverability-check.yaml +37 -0
  53. package/jobs/marketing/seo-rank-drop-watch.yaml +38 -0
  54. package/jobs/nonprofit/grant-deadline-reminder.yaml +44 -0
  55. package/jobs/nonprofit/lapsed-donor-check.yaml +26 -0
  56. package/jobs/nonprofit/volunteer-hours-shortfall-check.yaml +30 -0
  57. package/jobs/podcast/episode-publish-gap-check.yaml +29 -0
  58. package/jobs/podcast/guest-followup-reminder.yaml +31 -0
  59. package/jobs/podcast/sponsor-deliverable-tracker.yaml +31 -0
  60. package/jobs/productivity/timezone-meeting-conflict-check.yaml +31 -0
  61. package/jobs/realestate/lease-expiry-reminder.yaml +30 -0
  62. package/jobs/realestate/rent-payment-late-check.yaml +23 -0
  63. package/jobs/realestate/rental-vacancy-check.yaml +30 -0
  64. package/jobs/sales/lead-response-time-check.yaml +23 -0
  65. package/jobs/sales/quota-attainment-check.yaml +33 -0
  66. package/jobs/sales/stale-deal-nudge.yaml +35 -0
  67. package/jobs/security/2fa-enrollment-audit.yaml +24 -0
  68. package/jobs/security/dependabot-alert-digest.yaml +30 -0
  69. package/jobs/security/expiring-api-key-rotation.yaml +31 -0
  70. package/jobs/security/tls-cipher-weak-check.yaml +31 -0
  71. package/jobs/security/waf-rule-change-watch.yaml +38 -0
  72. package/jobs/support/csat-score-watch.yaml +32 -0
  73. package/jobs/support/sla-breach-warning.yaml +31 -0
  74. package/jobs/support/ticket-backlog-aging-check.yaml +30 -0
  75. package/package.json +1 -1
package/catalog.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "generated_by": "scripts/build-catalog.js",
3
3
  "schema": "schema/job.schema.json",
4
- "count": 79,
4
+ "count": 150,
5
5
  "jobs": [
6
6
  {
7
7
  "id": "1on1-prep-reminder",
@@ -27,6 +27,56 @@
27
27
  ],
28
28
  "path": "jobs/team/1on1-prep-reminder.yaml"
29
29
  },
30
+ {
31
+ "id": "2fa-enrollment-audit",
32
+ "version": 1,
33
+ "name": "2FA Enrollment Audit",
34
+ "description": "Checks which team members in your identity provider or GitHub org don't have two-factor auth enabled. Use this if you've ever assumed everyone had 2FA on until an incident review proved otherwise.",
35
+ "category": "security",
36
+ "tags": [
37
+ "security",
38
+ "2fa",
39
+ "access"
40
+ ],
41
+ "schedule": "0 9 1 * *",
42
+ "timezone": "UTC",
43
+ "runner": "shell",
44
+ "modes": [
45
+ "script"
46
+ ],
47
+ "compatible_agents": [
48
+ "generic",
49
+ "claude",
50
+ "codex"
51
+ ],
52
+ "path": "jobs/security/2fa-enrollment-audit.yaml"
53
+ },
54
+ {
55
+ "id": "ad-spend-pacing-check",
56
+ "version": 1,
57
+ "name": "Ad Spend Pacing Check",
58
+ "description": "Checks a campaign's spend so far against where it should be by this point in the budget period, and flags over- or under-pacing. Use this if a campaign has ever blown through its monthly budget in the first two weeks because nobody was watching the burn rate.",
59
+ "category": "marketing",
60
+ "tags": [
61
+ "marketing",
62
+ "ads",
63
+ "budget"
64
+ ],
65
+ "schedule": "0 8 * * *",
66
+ "timezone": "UTC",
67
+ "runner": "agent-prompt",
68
+ "modes": [
69
+ "agent-prompt"
70
+ ],
71
+ "compatible_agents": [
72
+ "claude",
73
+ "codex",
74
+ "hermes",
75
+ "openclaw",
76
+ "generic"
77
+ ],
78
+ "path": "jobs/marketing/ad-spend-pacing-check.yaml"
79
+ },
30
80
  {
31
81
  "id": "api-rate-limit-check",
32
82
  "version": 1,
@@ -51,6 +101,56 @@
51
101
  ],
52
102
  "path": "jobs/devops/api-rate-limit-check.yaml"
53
103
  },
104
+ {
105
+ "id": "assignment-grading-backlog-check",
106
+ "version": 1,
107
+ "name": "Assignment Grading Backlog Check",
108
+ "description": "Checks how many submitted assignments are still ungraded and flags it if the backlog is growing. Use this if grading has ever piled up for weeks until students started asking where their grades were.",
109
+ "category": "education",
110
+ "tags": [
111
+ "education",
112
+ "grading",
113
+ "backlog"
114
+ ],
115
+ "schedule": "0 8 * * 1-5",
116
+ "timezone": "UTC",
117
+ "runner": "shell",
118
+ "modes": [
119
+ "script"
120
+ ],
121
+ "compatible_agents": [
122
+ "generic",
123
+ "claude",
124
+ "codex"
125
+ ],
126
+ "path": "jobs/education/assignment-grading-backlog-check.yaml"
127
+ },
128
+ {
129
+ "id": "attendance-anomaly-check",
130
+ "version": 1,
131
+ "name": "Attendance Anomaly Check",
132
+ "description": "Flags students whose attendance has dropped sharply, before it becomes a pattern nobody caught early. Use this if a student's attendance has ever quietly fallen off and only got noticed at report-card time.",
133
+ "category": "education",
134
+ "tags": [
135
+ "education",
136
+ "attendance",
137
+ "students"
138
+ ],
139
+ "schedule": "0 8 * * 1",
140
+ "timezone": "UTC",
141
+ "runner": "agent-prompt",
142
+ "modes": [
143
+ "agent-prompt"
144
+ ],
145
+ "compatible_agents": [
146
+ "claude",
147
+ "codex",
148
+ "hermes",
149
+ "openclaw",
150
+ "generic"
151
+ ],
152
+ "path": "jobs/education/attendance-anomaly-check.yaml"
153
+ },
54
154
  {
55
155
  "id": "backup-reminder",
56
156
  "version": 1,
@@ -173,6 +273,30 @@
173
273
  ],
174
274
  "path": "jobs/productivity/calendar-double-booking-check.yaml"
175
275
  },
276
+ {
277
+ "id": "candidate-followup-nudge",
278
+ "version": 1,
279
+ "name": "Candidate Follow-up Nudge",
280
+ "description": "Flags interviewed candidates who haven't heard back in a while. Use this if candidates have ever gone quiet after a final interview simply because nobody circled back with a decision.",
281
+ "category": "hiring",
282
+ "tags": [
283
+ "hiring",
284
+ "recruiting",
285
+ "candidates"
286
+ ],
287
+ "schedule": "0 9 * * 1-5",
288
+ "timezone": "UTC",
289
+ "runner": "shell",
290
+ "modes": [
291
+ "script"
292
+ ],
293
+ "compatible_agents": [
294
+ "generic",
295
+ "claude",
296
+ "codex"
297
+ ],
298
+ "path": "jobs/hiring/candidate-followup-nudge.yaml"
299
+ },
176
300
  {
177
301
  "id": "canonical-tag-check",
178
302
  "version": 1,
@@ -248,6 +372,30 @@
248
372
  ],
249
373
  "path": "jobs/growth/cart-abandonment-followup.yaml"
250
374
  },
375
+ {
376
+ "id": "cdn-cache-purge-reminder",
377
+ "version": 1,
378
+ "name": "CDN Cache Purge Reminder",
379
+ "description": "Reminds you to purge the CDN cache after a deploy, and can trigger it directly if you give it credentials. Use this if you've ever shipped a fix and then spent an hour confused why users still saw the old version.",
380
+ "category": "devops",
381
+ "tags": [
382
+ "cdn",
383
+ "cache",
384
+ "deploy"
385
+ ],
386
+ "schedule": "*/30 * * * *",
387
+ "timezone": "UTC",
388
+ "runner": "shell",
389
+ "modes": [
390
+ "script"
391
+ ],
392
+ "compatible_agents": [
393
+ "generic",
394
+ "claude",
395
+ "codex"
396
+ ],
397
+ "path": "jobs/devops/cdn-cache-purge-reminder.yaml"
398
+ },
251
399
  {
252
400
  "id": "cert-renewal-reminder",
253
401
  "version": 1,
@@ -296,6 +444,30 @@
296
444
  ],
297
445
  "path": "jobs/security/certificate-transparency-watch.yaml"
298
446
  },
447
+ {
448
+ "id": "change-order-approval-reminder",
449
+ "version": 1,
450
+ "name": "Change Order Approval Reminder",
451
+ "description": "Flags change orders that have been waiting on client sign-off too long. Use this if work has ever stalled, or gone ahead unapproved, because a change order sat in someone's inbox for weeks.",
452
+ "category": "construction",
453
+ "tags": [
454
+ "construction",
455
+ "change-orders",
456
+ "approvals"
457
+ ],
458
+ "schedule": "0 8 * * 1-5",
459
+ "timezone": "UTC",
460
+ "runner": "shell",
461
+ "modes": [
462
+ "script"
463
+ ],
464
+ "compatible_agents": [
465
+ "generic",
466
+ "claude",
467
+ "codex"
468
+ ],
469
+ "path": "jobs/construction/change-order-approval-reminder.yaml"
470
+ },
299
471
  {
300
472
  "id": "changelog-digest",
301
473
  "version": 1,
@@ -349,6 +521,32 @@
349
521
  ],
350
522
  "path": "jobs/growth/churn-risk-watch.yaml"
351
523
  },
524
+ {
525
+ "id": "ci-build-time-regression-watch",
526
+ "version": 1,
527
+ "name": "CI Build Time Regression Watch",
528
+ "description": "Compares recent CI build durations to a baseline and flags a real slowdown. Use this if build times have ever crept up gradually until a 30-second CI run became a 15-minute one.",
529
+ "category": "devops",
530
+ "tags": [
531
+ "ci",
532
+ "performance",
533
+ "build-time"
534
+ ],
535
+ "schedule": "0 9 * * 1-5",
536
+ "timezone": "UTC",
537
+ "runner": "agent-prompt",
538
+ "modes": [
539
+ "agent-prompt"
540
+ ],
541
+ "compatible_agents": [
542
+ "claude",
543
+ "codex",
544
+ "hermes",
545
+ "openclaw",
546
+ "generic"
547
+ ],
548
+ "path": "jobs/devops/ci-build-time-regression-watch.yaml"
549
+ },
352
550
  {
353
551
  "id": "conference-cfp-deadline-reminder",
354
552
  "version": 1,
@@ -377,6 +575,54 @@
377
575
  ],
378
576
  "path": "jobs/learning/conference-cfp-deadline-reminder.yaml"
379
577
  },
578
+ {
579
+ "id": "content-calendar-gap-check",
580
+ "version": 1,
581
+ "name": "Content Calendar Gap Check",
582
+ "description": "Checks that you have something scheduled to post in the next few days. Use this if your publishing cadence has ever quietly broken because nothing was queued and nobody noticed until the gap already showed.",
583
+ "category": "creator",
584
+ "tags": [
585
+ "content",
586
+ "calendar",
587
+ "publishing"
588
+ ],
589
+ "schedule": "0 9 * * 1,4",
590
+ "timezone": "UTC",
591
+ "runner": "shell",
592
+ "modes": [
593
+ "script"
594
+ ],
595
+ "compatible_agents": [
596
+ "generic",
597
+ "claude",
598
+ "codex"
599
+ ],
600
+ "path": "jobs/creator/content-calendar-gap-check.yaml"
601
+ },
602
+ {
603
+ "id": "contract-renewal-reminder",
604
+ "version": 1,
605
+ "name": "Contract Renewal Reminder",
606
+ "description": "Warns you before a vendor or customer contract auto-renews or expires. Use this if a contract has ever auto-renewed for another year because nobody flagged the cancellation window in time.",
607
+ "category": "legal",
608
+ "tags": [
609
+ "legal",
610
+ "contracts",
611
+ "renewal"
612
+ ],
613
+ "schedule": "0 9 * * 1",
614
+ "timezone": "UTC",
615
+ "runner": "shell",
616
+ "modes": [
617
+ "script"
618
+ ],
619
+ "compatible_agents": [
620
+ "generic",
621
+ "claude",
622
+ "codex"
623
+ ],
624
+ "path": "jobs/legal/contract-renewal-reminder.yaml"
625
+ },
380
626
  {
381
627
  "id": "cost-alert",
382
628
  "version": 1,
@@ -428,6 +674,108 @@
428
674
  ],
429
675
  "path": "jobs/learning/course-progress-checkin.yaml"
430
676
  },
677
+ {
678
+ "id": "crosspost-lag-check",
679
+ "version": 1,
680
+ "name": "Crosspost Lag Check",
681
+ "description": "Checks that content published on your primary platform actually got mirrored to your other channels. Use this if a video or post has ever gone up on YouTube and just never made it to the other platforms because crossposting was manual and someone forgot.",
682
+ "category": "creator",
683
+ "tags": [
684
+ "content",
685
+ "crosspost",
686
+ "publishing"
687
+ ],
688
+ "schedule": "0 10 * * *",
689
+ "timezone": "UTC",
690
+ "runner": "agent-prompt",
691
+ "modes": [
692
+ "agent-prompt"
693
+ ],
694
+ "compatible_agents": [
695
+ "claude",
696
+ "codex",
697
+ "hermes",
698
+ "openclaw",
699
+ "generic"
700
+ ],
701
+ "path": "jobs/creator/crosspost-lag-check.yaml"
702
+ },
703
+ {
704
+ "id": "crypto-price-alert",
705
+ "version": 1,
706
+ "name": "Crypto Price Alert",
707
+ "description": "Checks a crypto asset's price and alerts when it crosses a threshold you set. Use this if you're waiting for a price target and don't want to keep a tab open all day watching a chart.",
708
+ "category": "investing",
709
+ "tags": [
710
+ "crypto",
711
+ "price",
712
+ "alert"
713
+ ],
714
+ "schedule": "*/15 * * * *",
715
+ "timezone": "UTC",
716
+ "runner": "shell",
717
+ "modes": [
718
+ "script"
719
+ ],
720
+ "compatible_agents": [
721
+ "generic",
722
+ "claude",
723
+ "codex"
724
+ ],
725
+ "path": "jobs/investing/crypto-price-alert.yaml"
726
+ },
727
+ {
728
+ "id": "csat-score-watch",
729
+ "version": 1,
730
+ "name": "CSAT Score Watch",
731
+ "description": "Checks your recent customer satisfaction score and flags it if it drops below your target. Use this if CSAT only gets looked at once a quarter, by which point a bad week is old news.",
732
+ "category": "support",
733
+ "tags": [
734
+ "support",
735
+ "csat",
736
+ "customer-satisfaction"
737
+ ],
738
+ "schedule": "0 9 * * 1",
739
+ "timezone": "UTC",
740
+ "runner": "agent-prompt",
741
+ "modes": [
742
+ "agent-prompt"
743
+ ],
744
+ "compatible_agents": [
745
+ "claude",
746
+ "codex",
747
+ "hermes",
748
+ "openclaw",
749
+ "generic"
750
+ ],
751
+ "path": "jobs/support/csat-score-watch.yaml"
752
+ },
753
+ {
754
+ "id": "customs-clearance-check",
755
+ "version": 1,
756
+ "name": "Customs Clearance Check",
757
+ "description": "Flags a shipment that's been sitting in customs longer than expected. Use this if a shipment has ever been stuck at the border for weeks before anyone thought to follow up with the broker.",
758
+ "category": "logistics",
759
+ "tags": [
760
+ "logistics",
761
+ "customs",
762
+ "shipping"
763
+ ],
764
+ "schedule": "0 9 * * *",
765
+ "timezone": "UTC",
766
+ "runner": "agent-prompt",
767
+ "modes": [
768
+ "agent-prompt"
769
+ ],
770
+ "compatible_agents": [
771
+ "claude",
772
+ "codex",
773
+ "hermes",
774
+ "openclaw",
775
+ "generic"
776
+ ],
777
+ "path": "jobs/logistics/customs-clearance-check.yaml"
778
+ },
431
779
  {
432
780
  "id": "cve-watch",
433
781
  "version": 1,
@@ -530,22 +878,46 @@
530
878
  "path": "jobs/devops/db-backup-verify.yaml"
531
879
  },
532
880
  {
533
- "id": "dependency-audit",
881
+ "id": "dependabot-alert-digest",
534
882
  "version": 1,
535
- "name": "Dependency Vulnerability Audit",
536
- "description": "Checks your project's dependencies for known security vulnerabilities and packages that are way out of date, then summarizes what to fix first. Use this if you want a heads-up before something exploitable slips into production.",
537
- "category": "devops",
883
+ "name": "Dependabot Alert Digest",
884
+ "description": "Rolls up open Dependabot security alerts across a repo into one digest. Use this if Dependabot alerts have ever piled up in a tab nobody checks instead of getting triaged as they come in.",
885
+ "category": "security",
538
886
  "tags": [
539
887
  "security",
540
- "dependencies",
541
- "maintenance"
888
+ "dependabot",
889
+ "github"
542
890
  ],
543
891
  "schedule": "0 8 * * 1",
544
892
  "timezone": "UTC",
545
- "runner": "hybrid",
893
+ "runner": "shell",
546
894
  "modes": [
547
- "script",
548
- "agent-prompt"
895
+ "script"
896
+ ],
897
+ "compatible_agents": [
898
+ "generic",
899
+ "claude",
900
+ "codex"
901
+ ],
902
+ "path": "jobs/security/dependabot-alert-digest.yaml"
903
+ },
904
+ {
905
+ "id": "dependency-audit",
906
+ "version": 1,
907
+ "name": "Dependency Vulnerability Audit",
908
+ "description": "Checks your project's dependencies for known security vulnerabilities and packages that are way out of date, then summarizes what to fix first. Use this if you want a heads-up before something exploitable slips into production.",
909
+ "category": "devops",
910
+ "tags": [
911
+ "security",
912
+ "dependencies",
913
+ "maintenance"
914
+ ],
915
+ "schedule": "0 8 * * 1",
916
+ "timezone": "UTC",
917
+ "runner": "hybrid",
918
+ "modes": [
919
+ "script",
920
+ "agent-prompt"
549
921
  ],
550
922
  "compatible_agents": [
551
923
  "claude",
@@ -580,6 +952,30 @@
580
952
  ],
581
953
  "path": "jobs/devops/disk-space-check.yaml"
582
954
  },
955
+ {
956
+ "id": "dividend-payment-tracker",
957
+ "version": 1,
958
+ "name": "Dividend Payment Tracker",
959
+ "description": "Checks that an expected dividend payment actually landed by its scheduled pay date. Use this if a dividend has ever quietly not shown up and it took weeks to notice something was wrong with a holding or broker.",
960
+ "category": "investing",
961
+ "tags": [
962
+ "investing",
963
+ "dividends",
964
+ "income"
965
+ ],
966
+ "schedule": "0 9 * * *",
967
+ "timezone": "UTC",
968
+ "runner": "shell",
969
+ "modes": [
970
+ "script"
971
+ ],
972
+ "compatible_agents": [
973
+ "generic",
974
+ "claude",
975
+ "codex"
976
+ ],
977
+ "path": "jobs/investing/dividend-payment-tracker.yaml"
978
+ },
583
979
  {
584
980
  "id": "dns-record-check",
585
981
  "version": 1,
@@ -628,6 +1024,56 @@
628
1024
  ],
629
1025
  "path": "jobs/devops/docker-image-prune.yaml"
630
1026
  },
1027
+ {
1028
+ "id": "email-deliverability-check",
1029
+ "version": 1,
1030
+ "name": "Email Deliverability Check",
1031
+ "description": "Checks recent bounce and spam-complaint rates for your email sends and flags a spike. Use this if a deliverability problem has ever quietly tanked open rates for a week before anyone checked the actual bounce numbers.",
1032
+ "category": "marketing",
1033
+ "tags": [
1034
+ "marketing",
1035
+ "email",
1036
+ "deliverability"
1037
+ ],
1038
+ "schedule": "0 9 * * *",
1039
+ "timezone": "UTC",
1040
+ "runner": "shell",
1041
+ "modes": [
1042
+ "script"
1043
+ ],
1044
+ "compatible_agents": [
1045
+ "generic",
1046
+ "claude",
1047
+ "codex"
1048
+ ],
1049
+ "path": "jobs/marketing/email-deliverability-check.yaml"
1050
+ },
1051
+ {
1052
+ "id": "engagement-drop-watch",
1053
+ "version": 1,
1054
+ "name": "Engagement Drop Watch",
1055
+ "description": "Compares recent post engagement to your baseline and flags a real drop. Use this if you've ever kept posting into a falling algorithm curve for weeks before noticing the numbers were down.",
1056
+ "category": "creator",
1057
+ "tags": [
1058
+ "content",
1059
+ "engagement",
1060
+ "social"
1061
+ ],
1062
+ "schedule": "0 9 * * 1",
1063
+ "timezone": "UTC",
1064
+ "runner": "agent-prompt",
1065
+ "modes": [
1066
+ "agent-prompt"
1067
+ ],
1068
+ "compatible_agents": [
1069
+ "claude",
1070
+ "codex",
1071
+ "hermes",
1072
+ "openclaw",
1073
+ "generic"
1074
+ ],
1075
+ "path": "jobs/creator/engagement-drop-watch.yaml"
1076
+ },
631
1077
  {
632
1078
  "id": "env-drift-check",
633
1079
  "version": 1,
@@ -652,6 +1098,30 @@
652
1098
  ],
653
1099
  "path": "jobs/devops/env-drift-check.yaml"
654
1100
  },
1101
+ {
1102
+ "id": "episode-publish-gap-check",
1103
+ "version": 1,
1104
+ "name": "Podcast Episode Publish Gap Check",
1105
+ "description": "Checks that a new episode has gone out recently and flags it if your publish cadence has slipped. Use this if listeners have ever noticed a gap in your feed before you did.",
1106
+ "category": "podcast",
1107
+ "tags": [
1108
+ "podcast",
1109
+ "publishing",
1110
+ "cadence"
1111
+ ],
1112
+ "schedule": "0 9 * * 1",
1113
+ "timezone": "UTC",
1114
+ "runner": "shell",
1115
+ "modes": [
1116
+ "script"
1117
+ ],
1118
+ "compatible_agents": [
1119
+ "generic",
1120
+ "claude",
1121
+ "codex"
1122
+ ],
1123
+ "path": "jobs/podcast/episode-publish-gap-check.yaml"
1124
+ },
655
1125
  {
656
1126
  "id": "error-rate-spike-watch",
657
1127
  "version": 1,
@@ -679,6 +1149,78 @@
679
1149
  ],
680
1150
  "path": "jobs/devops/error-rate-spike-watch.yaml"
681
1151
  },
1152
+ {
1153
+ "id": "event-budget-overrun-check",
1154
+ "version": 1,
1155
+ "name": "Event Budget Overrun Check",
1156
+ "description": "Compares committed spend so far against the event budget and flags overrun risk. Use this if an event has ever come in over budget because nobody totaled up the vendor contracts until after the fact.",
1157
+ "category": "events",
1158
+ "tags": [
1159
+ "events",
1160
+ "budget",
1161
+ "planning"
1162
+ ],
1163
+ "schedule": "0 9 * * 1",
1164
+ "timezone": "UTC",
1165
+ "runner": "shell",
1166
+ "modes": [
1167
+ "script"
1168
+ ],
1169
+ "compatible_agents": [
1170
+ "generic",
1171
+ "claude",
1172
+ "codex"
1173
+ ],
1174
+ "path": "jobs/events/event-budget-overrun-check.yaml"
1175
+ },
1176
+ {
1177
+ "id": "expiring-api-key-rotation",
1178
+ "version": 1,
1179
+ "name": "Expiring API Key Rotation Reminder",
1180
+ "description": "Warns you before a third-party API key or token you're tracking expires. Use this if an integration has ever gone down in production because a key expired and nobody rotated it in time.",
1181
+ "category": "security",
1182
+ "tags": [
1183
+ "security",
1184
+ "api-keys",
1185
+ "rotation"
1186
+ ],
1187
+ "schedule": "0 8 * * *",
1188
+ "timezone": "UTC",
1189
+ "runner": "shell",
1190
+ "modes": [
1191
+ "script"
1192
+ ],
1193
+ "compatible_agents": [
1194
+ "generic",
1195
+ "claude",
1196
+ "codex"
1197
+ ],
1198
+ "path": "jobs/security/expiring-api-key-rotation.yaml"
1199
+ },
1200
+ {
1201
+ "id": "expiring-perishable-stock-check",
1202
+ "version": 1,
1203
+ "name": "Expiring Perishable Stock Check",
1204
+ "description": "Flags perishable inventory nearing its expiry date so it can be sold, discounted, or used before it's wasted. Use this if stock has ever expired on the shelf because nobody was tracking dates until it was too late.",
1205
+ "category": "inventory",
1206
+ "tags": [
1207
+ "inventory",
1208
+ "perishables",
1209
+ "waste"
1210
+ ],
1211
+ "schedule": "0 6 * * *",
1212
+ "timezone": "UTC",
1213
+ "runner": "shell",
1214
+ "modes": [
1215
+ "script"
1216
+ ],
1217
+ "compatible_agents": [
1218
+ "generic",
1219
+ "claude",
1220
+ "codex"
1221
+ ],
1222
+ "path": "jobs/inventory/expiring-perishable-stock-check.yaml"
1223
+ },
682
1224
  {
683
1225
  "id": "failed-login-watch",
684
1226
  "version": 1,
@@ -801,6 +1343,56 @@
801
1343
  ],
802
1344
  "path": "jobs/productivity/focus-block-reminder.yaml"
803
1345
  },
1346
+ {
1347
+ "id": "food-safety-temp-log-check",
1348
+ "version": 1,
1349
+ "name": "Food Safety Temperature Log Check",
1350
+ "description": "Checks that fridge/freezer temperature logs were actually recorded today and flags any reading outside the safe range. Use this if a temperature log has ever gone unfilled for a shift, or a unit drifted out of range without anyone noticing until the food was already at risk.",
1351
+ "category": "hospitality",
1352
+ "tags": [
1353
+ "hospitality",
1354
+ "food-safety",
1355
+ "compliance"
1356
+ ],
1357
+ "schedule": "0 */4 * * *",
1358
+ "timezone": "UTC",
1359
+ "runner": "shell",
1360
+ "modes": [
1361
+ "script"
1362
+ ],
1363
+ "compatible_agents": [
1364
+ "generic",
1365
+ "claude",
1366
+ "codex"
1367
+ ],
1368
+ "path": "jobs/hospitality/food-safety-temp-log-check.yaml"
1369
+ },
1370
+ {
1371
+ "id": "freight-rate-spike-watch",
1372
+ "version": 1,
1373
+ "name": "Freight Rate Spike Watch",
1374
+ "description": "Checks a freight lane's current quoted rate against your baseline and flags a spike. Use this if a shipping rate has ever quietly doubled and only got noticed when the invoice came in.",
1375
+ "category": "logistics",
1376
+ "tags": [
1377
+ "logistics",
1378
+ "freight",
1379
+ "rates"
1380
+ ],
1381
+ "schedule": "0 7 * * 1",
1382
+ "timezone": "UTC",
1383
+ "runner": "agent-prompt",
1384
+ "modes": [
1385
+ "agent-prompt"
1386
+ ],
1387
+ "compatible_agents": [
1388
+ "claude",
1389
+ "codex",
1390
+ "hermes",
1391
+ "openclaw",
1392
+ "generic"
1393
+ ],
1394
+ "path": "jobs/logistics/freight-rate-spike-watch.yaml"
1395
+ },
804
1396
  {
805
1397
  "id": "frequent-flyer-miles-expiry",
806
1398
  "version": 1,
@@ -826,6 +1418,32 @@
826
1418
  ],
827
1419
  "path": "jobs/travel/frequent-flyer-miles-expiry.yaml"
828
1420
  },
1421
+ {
1422
+ "id": "fuel-card-anomaly-check",
1423
+ "version": 1,
1424
+ "name": "Fuel Card Anomaly Check",
1425
+ "description": "Flags fuel card transactions that look unusual (too large, too frequent, or outside normal hours/locations). Use this if fuel card misuse has ever gone unnoticed until the monthly statement showed up.",
1426
+ "category": "fleet",
1427
+ "tags": [
1428
+ "fleet",
1429
+ "fuel-card",
1430
+ "fraud"
1431
+ ],
1432
+ "schedule": "0 7 * * *",
1433
+ "timezone": "UTC",
1434
+ "runner": "agent-prompt",
1435
+ "modes": [
1436
+ "agent-prompt"
1437
+ ],
1438
+ "compatible_agents": [
1439
+ "claude",
1440
+ "codex",
1441
+ "hermes",
1442
+ "openclaw",
1443
+ "generic"
1444
+ ],
1445
+ "path": "jobs/fleet/fuel-card-anomaly-check.yaml"
1446
+ },
829
1447
  {
830
1448
  "id": "fx-rate-watch",
831
1449
  "version": 1,
@@ -850,6 +1468,57 @@
850
1468
  ],
851
1469
  "path": "jobs/finance/fx-rate-watch.yaml"
852
1470
  },
1471
+ {
1472
+ "id": "grant-deadline-reminder",
1473
+ "version": 1,
1474
+ "name": "Grant Deadline Reminder",
1475
+ "description": "Warns you before a grant application deadline, and can help draft the application. Use this if a funding opportunity has ever been missed simply because the deadline crept up during a busy week.",
1476
+ "category": "nonprofit",
1477
+ "tags": [
1478
+ "nonprofit",
1479
+ "grants",
1480
+ "fundraising"
1481
+ ],
1482
+ "schedule": "0 9 * * 1",
1483
+ "timezone": "UTC",
1484
+ "runner": "hybrid",
1485
+ "modes": [
1486
+ "script",
1487
+ "agent-prompt"
1488
+ ],
1489
+ "compatible_agents": [
1490
+ "claude",
1491
+ "codex",
1492
+ "hermes",
1493
+ "openclaw",
1494
+ "generic"
1495
+ ],
1496
+ "path": "jobs/nonprofit/grant-deadline-reminder.yaml"
1497
+ },
1498
+ {
1499
+ "id": "guest-followup-reminder",
1500
+ "version": 1,
1501
+ "name": "Podcast Guest Follow-up Reminder",
1502
+ "description": "Flags recorded guest episodes that haven't been published or thanked yet. Use this if a guest has ever had to awkwardly ask when their episode was coming out because nobody followed up after recording.",
1503
+ "category": "podcast",
1504
+ "tags": [
1505
+ "podcast",
1506
+ "guests",
1507
+ "followup"
1508
+ ],
1509
+ "schedule": "0 9 * * 1",
1510
+ "timezone": "UTC",
1511
+ "runner": "shell",
1512
+ "modes": [
1513
+ "script"
1514
+ ],
1515
+ "compatible_agents": [
1516
+ "generic",
1517
+ "claude",
1518
+ "codex"
1519
+ ],
1520
+ "path": "jobs/podcast/guest-followup-reminder.yaml"
1521
+ },
853
1522
  {
854
1523
  "id": "habit-checkin",
855
1524
  "version": 1,
@@ -875,18 +1544,18 @@
875
1544
  "path": "jobs/personal/habit-checkin.yaml"
876
1545
  },
877
1546
  {
878
- "id": "hvac-filter-reminder",
1547
+ "id": "health-inspection-due-reminder",
879
1548
  "version": 1,
880
- "name": "HVAC Filter Change Reminder",
881
- "description": "Reminds you to change your HVAC filter based on how long it's been. Use this if you've ever found a filter so clogged you forgot it was ever white.",
882
- "category": "home",
1549
+ "name": "Health Inspection Due Reminder",
1550
+ "description": "Warns you before a health department inspection is expected, based on your jurisdiction's typical interval. Use this if an inspector has ever shown up to a kitchen that wasn't ready because nobody was tracking when the last one happened.",
1551
+ "category": "hospitality",
883
1552
  "tags": [
884
- "home",
885
- "hvac",
886
- "maintenance"
1553
+ "hospitality",
1554
+ "health-inspection",
1555
+ "compliance"
887
1556
  ],
888
- "schedule": "0 9 1 * *",
889
- "timezone": "America/Los_Angeles",
1557
+ "schedule": "0 8 1 * *",
1558
+ "timezone": "UTC",
890
1559
  "runner": "shell",
891
1560
  "modes": [
892
1561
  "script"
@@ -896,21 +1565,20 @@
896
1565
  "claude",
897
1566
  "codex"
898
1567
  ],
899
- "path": "jobs/home/hvac-filter-reminder.yaml"
1568
+ "path": "jobs/hospitality/health-inspection-due-reminder.yaml"
900
1569
  },
901
1570
  {
902
- "id": "iam-key-rotation-reminder",
1571
+ "id": "hreflang-audit",
903
1572
  "version": 1,
904
- "name": "IAM Key Rotation Reminder",
905
- "description": "Checks how old your IAM access keys are and flags any past your rotation age. Use this if you've ever found a years-old access key still active because nobody was tracking key age.",
906
- "category": "security",
1573
+ "name": "Hreflang Audit",
1574
+ "description": "Checks a page's hreflang tags for missing reciprocal links or obviously wrong language/region codes. Use this if a hreflang mistake has ever quietly sent the wrong country's visitors to the wrong language version.",
1575
+ "category": "content",
907
1576
  "tags": [
908
- "security",
909
- "iam",
910
- "aws",
911
- "rotation"
1577
+ "seo",
1578
+ "hreflang",
1579
+ "international"
912
1580
  ],
913
- "schedule": "0 8 1 * *",
1581
+ "schedule": "0 7 * * 1",
914
1582
  "timezone": "UTC",
915
1583
  "runner": "shell",
916
1584
  "modes": [
@@ -921,7 +1589,80 @@
921
1589
  "claude",
922
1590
  "codex"
923
1591
  ],
924
- "path": "jobs/security/iam-key-rotation-reminder.yaml"
1592
+ "path": "jobs/content/hreflang-audit.yaml"
1593
+ },
1594
+ {
1595
+ "id": "hvac-filter-reminder",
1596
+ "version": 1,
1597
+ "name": "HVAC Filter Change Reminder",
1598
+ "description": "Reminds you to change your HVAC filter based on how long it's been. Use this if you've ever found a filter so clogged you forgot it was ever white.",
1599
+ "category": "home",
1600
+ "tags": [
1601
+ "home",
1602
+ "hvac",
1603
+ "maintenance"
1604
+ ],
1605
+ "schedule": "0 9 1 * *",
1606
+ "timezone": "America/Los_Angeles",
1607
+ "runner": "shell",
1608
+ "modes": [
1609
+ "script"
1610
+ ],
1611
+ "compatible_agents": [
1612
+ "generic",
1613
+ "claude",
1614
+ "codex"
1615
+ ],
1616
+ "path": "jobs/home/hvac-filter-reminder.yaml"
1617
+ },
1618
+ {
1619
+ "id": "iam-key-rotation-reminder",
1620
+ "version": 1,
1621
+ "name": "IAM Key Rotation Reminder",
1622
+ "description": "Checks how old your IAM access keys are and flags any past your rotation age. Use this if you've ever found a years-old access key still active because nobody was tracking key age.",
1623
+ "category": "security",
1624
+ "tags": [
1625
+ "security",
1626
+ "iam",
1627
+ "aws",
1628
+ "rotation"
1629
+ ],
1630
+ "schedule": "0 8 1 * *",
1631
+ "timezone": "UTC",
1632
+ "runner": "shell",
1633
+ "modes": [
1634
+ "script"
1635
+ ],
1636
+ "compatible_agents": [
1637
+ "generic",
1638
+ "claude",
1639
+ "codex"
1640
+ ],
1641
+ "path": "jobs/security/iam-key-rotation-reminder.yaml"
1642
+ },
1643
+ {
1644
+ "id": "image-alt-text-audit",
1645
+ "version": 1,
1646
+ "name": "Image Alt Text Audit",
1647
+ "description": "Checks a page for images missing alt text. Use this if images have ever shipped without alt text because nobody double-checked before merging.",
1648
+ "category": "content",
1649
+ "tags": [
1650
+ "seo",
1651
+ "accessibility",
1652
+ "images"
1653
+ ],
1654
+ "schedule": "0 7 * * 1",
1655
+ "timezone": "UTC",
1656
+ "runner": "shell",
1657
+ "modes": [
1658
+ "script"
1659
+ ],
1660
+ "compatible_agents": [
1661
+ "generic",
1662
+ "claude",
1663
+ "codex"
1664
+ ],
1665
+ "path": "jobs/content/image-alt-text-audit.yaml"
925
1666
  },
926
1667
  {
927
1668
  "id": "inbox-triage",
@@ -949,6 +1690,56 @@
949
1690
  ],
950
1691
  "path": "jobs/productivity/inbox-triage.yaml"
951
1692
  },
1693
+ {
1694
+ "id": "inspection-deadline-reminder",
1695
+ "version": 1,
1696
+ "name": "Inspection Deadline Reminder",
1697
+ "description": "Warns you before a scheduled inspection date, so the site is actually ready. Use this if an inspector has ever shown up to a site that wasn't prepped because the date snuck up on the crew.",
1698
+ "category": "construction",
1699
+ "tags": [
1700
+ "construction",
1701
+ "inspection",
1702
+ "scheduling"
1703
+ ],
1704
+ "schedule": "0 7 * * *",
1705
+ "timezone": "UTC",
1706
+ "runner": "shell",
1707
+ "modes": [
1708
+ "script"
1709
+ ],
1710
+ "compatible_agents": [
1711
+ "generic",
1712
+ "claude",
1713
+ "codex"
1714
+ ],
1715
+ "path": "jobs/construction/inspection-deadline-reminder.yaml"
1716
+ },
1717
+ {
1718
+ "id": "inventory-count-discrepancy-check",
1719
+ "version": 1,
1720
+ "name": "Inventory Count Discrepancy Check",
1721
+ "description": "Compares a physical inventory count against system records and flags mismatches worth investigating. Use this if shrinkage or data entry errors have ever gone unnoticed until a full audit months later.",
1722
+ "category": "inventory",
1723
+ "tags": [
1724
+ "inventory",
1725
+ "audit",
1726
+ "discrepancy"
1727
+ ],
1728
+ "schedule": "0 9 1 * *",
1729
+ "timezone": "UTC",
1730
+ "runner": "agent-prompt",
1731
+ "modes": [
1732
+ "agent-prompt"
1733
+ ],
1734
+ "compatible_agents": [
1735
+ "claude",
1736
+ "codex",
1737
+ "hermes",
1738
+ "openclaw",
1739
+ "generic"
1740
+ ],
1741
+ "path": "jobs/inventory/inventory-count-discrepancy-check.yaml"
1742
+ },
952
1743
  {
953
1744
  "id": "invoice-overdue-check",
954
1745
  "version": 1,
@@ -973,6 +1764,102 @@
973
1764
  ],
974
1765
  "path": "jobs/finance/invoice-overdue-check.yaml"
975
1766
  },
1767
+ {
1768
+ "id": "k8s-pod-restart-watch",
1769
+ "version": 1,
1770
+ "name": "Kubernetes Pod Restart Watch",
1771
+ "description": "Checks for pods with a high restart count and flags them. Use this if a crash-looping pod has ever burned through hours before anyone noticed it wasn't actually staying up.",
1772
+ "category": "devops",
1773
+ "tags": [
1774
+ "kubernetes",
1775
+ "pods",
1776
+ "monitoring"
1777
+ ],
1778
+ "schedule": "*/15 * * * *",
1779
+ "timezone": "UTC",
1780
+ "runner": "shell",
1781
+ "modes": [
1782
+ "script"
1783
+ ],
1784
+ "compatible_agents": [
1785
+ "generic",
1786
+ "claude",
1787
+ "codex"
1788
+ ],
1789
+ "path": "jobs/devops/k8s-pod-restart-watch.yaml"
1790
+ },
1791
+ {
1792
+ "id": "lapsed-donor-check",
1793
+ "version": 1,
1794
+ "name": "Lapsed Donor Check",
1795
+ "description": "Flags donors who gave before but haven't in a while, before they're fully lost. Use this if lapsed-donor outreach only happens during the annual campaign instead of catching people while it's still recoverable.",
1796
+ "category": "nonprofit",
1797
+ "tags": [
1798
+ "nonprofit",
1799
+ "donors",
1800
+ "fundraising"
1801
+ ],
1802
+ "schedule": "0 9 1 * *",
1803
+ "timezone": "UTC",
1804
+ "runner": "shell",
1805
+ "modes": [
1806
+ "script"
1807
+ ],
1808
+ "compatible_agents": [
1809
+ "generic",
1810
+ "claude",
1811
+ "codex"
1812
+ ],
1813
+ "path": "jobs/nonprofit/lapsed-donor-check.yaml"
1814
+ },
1815
+ {
1816
+ "id": "lead-response-time-check",
1817
+ "version": 1,
1818
+ "name": "Lead Response Time Check",
1819
+ "description": "Flags new inbound leads that haven't gotten a first response within your target window. Use this if you've ever lost a hot lead simply because nobody replied fast enough.",
1820
+ "category": "sales",
1821
+ "tags": [
1822
+ "sales",
1823
+ "leads",
1824
+ "response-time"
1825
+ ],
1826
+ "schedule": "*/30 * * * *",
1827
+ "timezone": "UTC",
1828
+ "runner": "shell",
1829
+ "modes": [
1830
+ "script"
1831
+ ],
1832
+ "compatible_agents": [
1833
+ "generic",
1834
+ "claude",
1835
+ "codex"
1836
+ ],
1837
+ "path": "jobs/sales/lead-response-time-check.yaml"
1838
+ },
1839
+ {
1840
+ "id": "lease-expiry-reminder",
1841
+ "version": 1,
1842
+ "name": "Lease Expiry Reminder",
1843
+ "description": "Warns you before a lease ends so there's time to renew, renegotiate, or start looking. Use this if a lease has ever gone month-to-month, or ended, without anyone noticing the date was coming.",
1844
+ "category": "realestate",
1845
+ "tags": [
1846
+ "realestate",
1847
+ "lease",
1848
+ "reminder"
1849
+ ],
1850
+ "schedule": "0 9 1 * *",
1851
+ "timezone": "UTC",
1852
+ "runner": "shell",
1853
+ "modes": [
1854
+ "script"
1855
+ ],
1856
+ "compatible_agents": [
1857
+ "generic",
1858
+ "claude",
1859
+ "codex"
1860
+ ],
1861
+ "path": "jobs/realestate/lease-expiry-reminder.yaml"
1862
+ },
976
1863
  {
977
1864
  "id": "license-compliance-check",
978
1865
  "version": 1,
@@ -1004,11 +1891,400 @@
1004
1891
  "description": "Deletes old log files so they don't quietly fill up your disk. Use this if your app or server writes logs to a folder and nobody's manually clearing them out.",
1005
1892
  "category": "devops",
1006
1893
  "tags": [
1007
- "housekeeping",
1008
- "disk-space"
1894
+ "housekeeping",
1895
+ "disk-space"
1896
+ ],
1897
+ "schedule": "30 3 * * *",
1898
+ "timezone": "UTC",
1899
+ "runner": "shell",
1900
+ "modes": [
1901
+ "script"
1902
+ ],
1903
+ "compatible_agents": [
1904
+ "generic",
1905
+ "claude",
1906
+ "codex"
1907
+ ],
1908
+ "path": "jobs/devops/log-cleanup.yaml"
1909
+ },
1910
+ {
1911
+ "id": "log-forwarding-health-check",
1912
+ "version": 1,
1913
+ "name": "Log Forwarding Health Check",
1914
+ "description": "Checks that logs are still actually arriving at your log aggregator. Use this if a log shipper has ever silently died and nobody found out until they needed logs that were never collected.",
1915
+ "category": "devops",
1916
+ "tags": [
1917
+ "logging",
1918
+ "monitoring",
1919
+ "observability"
1920
+ ],
1921
+ "schedule": "*/30 * * * *",
1922
+ "timezone": "UTC",
1923
+ "runner": "shell",
1924
+ "modes": [
1925
+ "script"
1926
+ ],
1927
+ "compatible_agents": [
1928
+ "generic",
1929
+ "claude",
1930
+ "codex"
1931
+ ],
1932
+ "path": "jobs/devops/log-forwarding-health-check.yaml"
1933
+ },
1934
+ {
1935
+ "id": "low-stock-alert",
1936
+ "version": 1,
1937
+ "name": "Low Stock Alert",
1938
+ "description": "Checks inventory levels against a reorder point and flags SKUs running low. Use this if you've ever gone out of stock on a bestseller because nobody was watching the count.",
1939
+ "category": "inventory",
1940
+ "tags": [
1941
+ "inventory",
1942
+ "stock",
1943
+ "ecommerce"
1944
+ ],
1945
+ "schedule": "0 7 * * *",
1946
+ "timezone": "UTC",
1947
+ "runner": "shell",
1948
+ "modes": [
1949
+ "script"
1950
+ ],
1951
+ "compatible_agents": [
1952
+ "generic",
1953
+ "claude",
1954
+ "codex"
1955
+ ],
1956
+ "path": "jobs/inventory/low-stock-alert.yaml"
1957
+ },
1958
+ {
1959
+ "id": "meal-plan-reminder",
1960
+ "version": 1,
1961
+ "name": "Weekly Meal Plan Reminder",
1962
+ "description": "Nudges you to plan the week's meals, and can draft a simple 7-day plan plus grocery list for you. Use this if you dread the \"what's for dinner\" question every night and want to decide once a week instead.",
1963
+ "category": "personal",
1964
+ "tags": [
1965
+ "meals",
1966
+ "planning",
1967
+ "household"
1968
+ ],
1969
+ "schedule": "0 9 * * 0",
1970
+ "timezone": "America/Los_Angeles",
1971
+ "runner": "hybrid",
1972
+ "modes": [
1973
+ "script",
1974
+ "agent-prompt"
1975
+ ],
1976
+ "compatible_agents": [
1977
+ "claude",
1978
+ "codex",
1979
+ "hermes",
1980
+ "openclaw",
1981
+ "generic"
1982
+ ],
1983
+ "path": "jobs/personal/meal-plan-reminder.yaml"
1984
+ },
1985
+ {
1986
+ "id": "medication-refill-reminder",
1987
+ "version": 1,
1988
+ "name": "Medication Refill Reminder",
1989
+ "description": "Reminds you to refill a medication before you run out, based on how many days of supply you have left. Use this if you've ever run out of a prescription over a weekend when the pharmacy's closed.",
1990
+ "category": "personal",
1991
+ "tags": [
1992
+ "health",
1993
+ "medication",
1994
+ "reminder"
1995
+ ],
1996
+ "schedule": "0 9 * * *",
1997
+ "timezone": "America/Los_Angeles",
1998
+ "runner": "shell",
1999
+ "modes": [
2000
+ "script"
2001
+ ],
2002
+ "compatible_agents": [
2003
+ "generic",
2004
+ "claude",
2005
+ "codex"
2006
+ ],
2007
+ "path": "jobs/personal/medication-refill-reminder.yaml"
2008
+ },
2009
+ {
2010
+ "id": "nda-expiry-check",
2011
+ "version": 1,
2012
+ "name": "NDA Expiry Check",
2013
+ "description": "Warns you before a signed NDA reaches its expiration or renewal date. Use this if an NDA has ever lapsed mid-relationship and nobody noticed the confidentiality coverage had run out.",
2014
+ "category": "legal",
2015
+ "tags": [
2016
+ "legal",
2017
+ "nda",
2018
+ "contracts"
2019
+ ],
2020
+ "schedule": "0 9 1 * *",
2021
+ "timezone": "UTC",
2022
+ "runner": "shell",
2023
+ "modes": [
2024
+ "script"
2025
+ ],
2026
+ "compatible_agents": [
2027
+ "generic",
2028
+ "claude",
2029
+ "codex"
2030
+ ],
2031
+ "path": "jobs/legal/nda-expiry-check.yaml"
2032
+ },
2033
+ {
2034
+ "id": "net-worth-snapshot",
2035
+ "version": 1,
2036
+ "name": "Net Worth Snapshot Reminder",
2037
+ "description": "Reminds you to log your net worth each month and shows the trend from your last two entries. Use this if you want to track your finances over time but keep forgetting to actually sit down and do it.",
2038
+ "category": "finance",
2039
+ "tags": [
2040
+ "finance",
2041
+ "net-worth",
2042
+ "tracking"
2043
+ ],
2044
+ "schedule": "0 9 1 * *",
2045
+ "timezone": "UTC",
2046
+ "runner": "shell",
2047
+ "modes": [
2048
+ "script"
2049
+ ],
2050
+ "compatible_agents": [
2051
+ "generic",
2052
+ "claude",
2053
+ "codex"
2054
+ ],
2055
+ "path": "jobs/finance/net-worth-snapshot.yaml"
2056
+ },
2057
+ {
2058
+ "id": "offer-expiry-reminder",
2059
+ "version": 1,
2060
+ "name": "Offer Expiry Reminder",
2061
+ "description": "Flags extended offers that are close to their response deadline with no answer yet. Use this if an offer has ever quietly expired because nobody followed up before the deadline passed.",
2062
+ "category": "hiring",
2063
+ "tags": [
2064
+ "hiring",
2065
+ "offers",
2066
+ "recruiting"
2067
+ ],
2068
+ "schedule": "0 9 * * 1-5",
2069
+ "timezone": "UTC",
2070
+ "runner": "shell",
2071
+ "modes": [
2072
+ "script"
2073
+ ],
2074
+ "compatible_agents": [
2075
+ "generic",
2076
+ "claude",
2077
+ "codex"
2078
+ ],
2079
+ "path": "jobs/hiring/offer-expiry-reminder.yaml"
2080
+ },
2081
+ {
2082
+ "id": "oncall-handoff-reminder",
2083
+ "version": 1,
2084
+ "name": "On-call Handoff Reminder",
2085
+ "description": "Nudges outgoing and incoming on-call to sync before the shift changes. Use this if a handoff has ever happened silently and the new on-call found out about an open incident from a page instead of a briefing.",
2086
+ "category": "team",
2087
+ "tags": [
2088
+ "oncall",
2089
+ "handoff",
2090
+ "team"
2091
+ ],
2092
+ "schedule": "0 9 * * 1",
2093
+ "timezone": "America/Los_Angeles",
2094
+ "runner": "shell",
2095
+ "modes": [
2096
+ "script"
2097
+ ],
2098
+ "compatible_agents": [
2099
+ "generic",
2100
+ "claude",
2101
+ "codex"
2102
+ ],
2103
+ "path": "jobs/team/oncall-handoff-reminder.yaml"
2104
+ },
2105
+ {
2106
+ "id": "open-port-check",
2107
+ "version": 1,
2108
+ "name": "Expected Open Ports Check",
2109
+ "description": "Checks that the ports you expect to be open on a host actually are, and flags any that aren't. Use this if a service has ever silently stopped listening and you found out from a user instead of a monitor.",
2110
+ "category": "security",
2111
+ "tags": [
2112
+ "security",
2113
+ "network",
2114
+ "ports"
2115
+ ],
2116
+ "schedule": "0 */4 * * *",
2117
+ "timezone": "UTC",
2118
+ "runner": "shell",
2119
+ "modes": [
2120
+ "script"
2121
+ ],
2122
+ "compatible_agents": [
2123
+ "generic",
2124
+ "claude",
2125
+ "codex"
2126
+ ],
2127
+ "path": "jobs/security/open-port-check.yaml"
2128
+ },
2129
+ {
2130
+ "id": "open-req-aging-check",
2131
+ "version": 1,
2132
+ "name": "Open Req Aging Check",
2133
+ "description": "Flags job requisitions that have been open too long without enough candidates in the pipeline. Use this if a req has ever sat open for months before anyone asked why it wasn't moving.",
2134
+ "category": "hiring",
2135
+ "tags": [
2136
+ "hiring",
2137
+ "recruiting",
2138
+ "requisitions"
2139
+ ],
2140
+ "schedule": "0 9 * * 1",
2141
+ "timezone": "UTC",
2142
+ "runner": "agent-prompt",
2143
+ "modes": [
2144
+ "agent-prompt"
2145
+ ],
2146
+ "compatible_agents": [
2147
+ "claude",
2148
+ "codex",
2149
+ "hermes",
2150
+ "openclaw",
2151
+ "generic"
2152
+ ],
2153
+ "path": "jobs/hiring/open-req-aging-check.yaml"
2154
+ },
2155
+ {
2156
+ "id": "orphaned-branch-cleanup",
2157
+ "version": 1,
2158
+ "name": "Orphaned Branch Cleanup",
2159
+ "description": "Lists remote branches already merged into main that nobody's deleted yet. Use this if your branch list has become a graveyard nobody wants to clean up.",
2160
+ "category": "devops",
2161
+ "tags": [
2162
+ "git",
2163
+ "cleanup",
2164
+ "branches"
2165
+ ],
2166
+ "schedule": "0 9 * * 1",
2167
+ "timezone": "UTC",
2168
+ "runner": "shell",
2169
+ "modes": [
2170
+ "script"
2171
+ ],
2172
+ "compatible_agents": [
2173
+ "generic",
2174
+ "claude",
2175
+ "codex"
2176
+ ],
2177
+ "path": "jobs/devops/orphaned-branch-cleanup.yaml"
2178
+ },
2179
+ {
2180
+ "id": "page-speed-regression-watch",
2181
+ "version": 1,
2182
+ "name": "Page Speed Regression Watch",
2183
+ "description": "Checks a page's load time against a baseline and flags a real regression. Use this if a page has ever gotten slowly, silently slower release after release until it was a real problem.",
2184
+ "category": "content",
2185
+ "tags": [
2186
+ "performance",
2187
+ "seo",
2188
+ "monitoring"
2189
+ ],
2190
+ "schedule": "0 6 * * *",
2191
+ "timezone": "UTC",
2192
+ "runner": "shell",
2193
+ "modes": [
2194
+ "script"
2195
+ ],
2196
+ "compatible_agents": [
2197
+ "generic",
2198
+ "claude",
2199
+ "codex"
2200
+ ],
2201
+ "path": "jobs/content/page-speed-regression-watch.yaml"
2202
+ },
2203
+ {
2204
+ "id": "passport-expiry-check",
2205
+ "version": 1,
2206
+ "name": "Passport Expiry Check",
2207
+ "description": "Warns you before your passport expires — including the \"6 months validity required\" rule many countries enforce at the border. Use this if you've ever booked a trip and only checked your passport date after buying the ticket.",
2208
+ "category": "travel",
2209
+ "tags": [
2210
+ "travel",
2211
+ "passport",
2212
+ "documents"
2213
+ ],
2214
+ "schedule": "0 9 1 * *",
2215
+ "timezone": "UTC",
2216
+ "runner": "shell",
2217
+ "modes": [
2218
+ "script"
2219
+ ],
2220
+ "compatible_agents": [
2221
+ "generic",
2222
+ "claude",
2223
+ "codex"
2224
+ ],
2225
+ "path": "jobs/travel/passport-expiry-check.yaml"
2226
+ },
2227
+ {
2228
+ "id": "payroll-run-reminder",
2229
+ "version": 1,
2230
+ "name": "Payroll Run Reminder",
2231
+ "description": "Warns you before the payroll submission deadline so employees actually get paid on time. Use this if payroll has ever run late because the submission cutoff snuck up during a busy week.",
2232
+ "category": "finance",
2233
+ "tags": [
2234
+ "finance",
2235
+ "payroll",
2236
+ "deadlines"
2237
+ ],
2238
+ "schedule": "0 9 * * *",
2239
+ "timezone": "UTC",
2240
+ "runner": "shell",
2241
+ "modes": [
2242
+ "script"
2243
+ ],
2244
+ "compatible_agents": [
2245
+ "generic",
2246
+ "claude",
2247
+ "codex"
2248
+ ],
2249
+ "path": "jobs/finance/payroll-run-reminder.yaml"
2250
+ },
2251
+ {
2252
+ "id": "permit-expiry-check",
2253
+ "version": 1,
2254
+ "name": "Building Permit Expiry Check",
2255
+ "description": "Warns you before a building permit expires so work doesn't get caught without valid coverage. Use this if a permit has ever lapsed mid-project and forced a costly re-inspection or re-application.",
2256
+ "category": "construction",
2257
+ "tags": [
2258
+ "construction",
2259
+ "permits",
2260
+ "compliance"
2261
+ ],
2262
+ "schedule": "0 8 * * 1",
2263
+ "timezone": "UTC",
2264
+ "runner": "shell",
2265
+ "modes": [
2266
+ "script"
2267
+ ],
2268
+ "compatible_agents": [
2269
+ "generic",
2270
+ "claude",
2271
+ "codex"
2272
+ ],
2273
+ "path": "jobs/construction/permit-expiry-check.yaml"
2274
+ },
2275
+ {
2276
+ "id": "plant-watering-reminder",
2277
+ "version": 1,
2278
+ "name": "Plant Watering Reminder",
2279
+ "description": "Reminds you to water a specific plant once it's due. Use this if you've ever lost a plant to \"I'll water it tomorrow.\"",
2280
+ "category": "home",
2281
+ "tags": [
2282
+ "home",
2283
+ "plants",
2284
+ "reminder"
1009
2285
  ],
1010
- "schedule": "30 3 * * *",
1011
- "timezone": "UTC",
2286
+ "schedule": "0 9 * * *",
2287
+ "timezone": "America/Los_Angeles",
1012
2288
  "runner": "shell",
1013
2289
  "modes": [
1014
2290
  "script"
@@ -1018,24 +2294,23 @@
1018
2294
  "claude",
1019
2295
  "codex"
1020
2296
  ],
1021
- "path": "jobs/devops/log-cleanup.yaml"
2297
+ "path": "jobs/home/plant-watering-reminder.yaml"
1022
2298
  },
1023
2299
  {
1024
- "id": "meal-plan-reminder",
2300
+ "id": "portfolio-rebalance-check",
1025
2301
  "version": 1,
1026
- "name": "Weekly Meal Plan Reminder",
1027
- "description": "Nudges you to plan the week's meals, and can draft a simple 7-day plan plus grocery list for you. Use this if you dread the \"what's for dinner\" question every night and want to decide once a week instead.",
1028
- "category": "personal",
2302
+ "name": "Portfolio Rebalance Check",
2303
+ "description": "Compares your current asset allocation to your target and flags drift worth rebalancing. Use this if your portfolio only gets rebalanced whenever you happen to remember to look.",
2304
+ "category": "investing",
1029
2305
  "tags": [
1030
- "meals",
1031
- "planning",
1032
- "household"
2306
+ "investing",
2307
+ "portfolio",
2308
+ "rebalancing"
1033
2309
  ],
1034
- "schedule": "0 9 * * 0",
1035
- "timezone": "America/Los_Angeles",
1036
- "runner": "hybrid",
2310
+ "schedule": "0 9 1 * *",
2311
+ "timezone": "UTC",
2312
+ "runner": "agent-prompt",
1037
2313
  "modes": [
1038
- "script",
1039
2314
  "agent-prompt"
1040
2315
  ],
1041
2316
  "compatible_agents": [
@@ -1045,21 +2320,21 @@
1045
2320
  "openclaw",
1046
2321
  "generic"
1047
2322
  ],
1048
- "path": "jobs/personal/meal-plan-reminder.yaml"
2323
+ "path": "jobs/investing/portfolio-rebalance-check.yaml"
1049
2324
  },
1050
2325
  {
1051
- "id": "medication-refill-reminder",
2326
+ "id": "preventive-maintenance-due-check",
1052
2327
  "version": 1,
1053
- "name": "Medication Refill Reminder",
1054
- "description": "Reminds you to refill a medication before you run out, based on how many days of supply you have left. Use this if you've ever run out of a prescription over a weekend when the pharmacy's closed.",
1055
- "category": "personal",
2328
+ "name": "Preventive Maintenance Due Check",
2329
+ "description": "Flags equipment coming due for scheduled preventive maintenance. Use this if a machine has ever failed unexpectedly that would've been caught by a PM visit nobody scheduled in time.",
2330
+ "category": "manufacturing",
1056
2331
  "tags": [
1057
- "health",
1058
- "medication",
1059
- "reminder"
2332
+ "manufacturing",
2333
+ "maintenance",
2334
+ "equipment"
1060
2335
  ],
1061
- "schedule": "0 9 * * *",
1062
- "timezone": "America/Los_Angeles",
2336
+ "schedule": "0 7 * * 1",
2337
+ "timezone": "UTC",
1063
2338
  "runner": "shell",
1064
2339
  "modes": [
1065
2340
  "script"
@@ -1069,20 +2344,20 @@
1069
2344
  "claude",
1070
2345
  "codex"
1071
2346
  ],
1072
- "path": "jobs/personal/medication-refill-reminder.yaml"
2347
+ "path": "jobs/manufacturing/preventive-maintenance-due-check.yaml"
1073
2348
  },
1074
2349
  {
1075
- "id": "net-worth-snapshot",
2350
+ "id": "production-line-downtime-watch",
1076
2351
  "version": 1,
1077
- "name": "Net Worth Snapshot Reminder",
1078
- "description": "Reminds you to log your net worth each month and shows the trend from your last two entries. Use this if you want to track your finances over time but keep forgetting to actually sit down and do it.",
1079
- "category": "finance",
2352
+ "name": "Production Line Downtime Watch",
2353
+ "description": "Checks how long a production line has been stopped and flags it once it crosses a threshold. Use this if a line has ever sat down far longer than anyone realized because the stoppage alert never made it to the right person.",
2354
+ "category": "manufacturing",
1080
2355
  "tags": [
1081
- "finance",
1082
- "net-worth",
1083
- "tracking"
2356
+ "manufacturing",
2357
+ "downtime",
2358
+ "production"
1084
2359
  ],
1085
- "schedule": "0 9 1 * *",
2360
+ "schedule": "*/15 * * * *",
1086
2361
  "timezone": "UTC",
1087
2362
  "runner": "shell",
1088
2363
  "modes": [
@@ -1093,20 +2368,20 @@
1093
2368
  "claude",
1094
2369
  "codex"
1095
2370
  ],
1096
- "path": "jobs/finance/net-worth-snapshot.yaml"
2371
+ "path": "jobs/manufacturing/production-line-downtime-watch.yaml"
1097
2372
  },
1098
2373
  {
1099
- "id": "oncall-handoff-reminder",
2374
+ "id": "pto-balance-check",
1100
2375
  "version": 1,
1101
- "name": "On-call Handoff Reminder",
1102
- "description": "Nudges outgoing and incoming on-call to sync before the shift changes. Use this if a handoff has ever happened silently and the new on-call found out about an open incident from a page instead of a briefing.",
2376
+ "name": "PTO Balance Check",
2377
+ "description": "Warns you before unused PTO expires or resets. Use this if you've ever lost vacation days because you forgot they don't roll over.",
1103
2378
  "category": "team",
1104
2379
  "tags": [
1105
- "oncall",
1106
- "handoff",
2380
+ "pto",
2381
+ "vacation",
1107
2382
  "team"
1108
2383
  ],
1109
- "schedule": "0 9 * * 1",
2384
+ "schedule": "0 9 1 * *",
1110
2385
  "timezone": "America/Los_Angeles",
1111
2386
  "runner": "shell",
1112
2387
  "modes": [
@@ -1117,18 +2392,18 @@
1117
2392
  "claude",
1118
2393
  "codex"
1119
2394
  ],
1120
- "path": "jobs/team/oncall-handoff-reminder.yaml"
2395
+ "path": "jobs/team/pto-balance-check.yaml"
1121
2396
  },
1122
2397
  {
1123
- "id": "open-port-check",
2398
+ "id": "quality-defect-rate-check",
1124
2399
  "version": 1,
1125
- "name": "Expected Open Ports Check",
1126
- "description": "Checks that the ports you expect to be open on a host actually are, and flags any that aren't. Use this if a service has ever silently stopped listening and you found out from a user instead of a monitor.",
1127
- "category": "security",
2400
+ "name": "Quality Defect Rate Check",
2401
+ "description": "Checks today's defect rate against a target and flags it if it's running high. Use this if a quality problem has ever run for a full shift before anyone pulled the numbers and noticed.",
2402
+ "category": "manufacturing",
1128
2403
  "tags": [
1129
- "security",
1130
- "network",
1131
- "ports"
2404
+ "manufacturing",
2405
+ "quality",
2406
+ "defects"
1132
2407
  ],
1133
2408
  "schedule": "0 */4 * * *",
1134
2409
  "timezone": "UTC",
@@ -1141,20 +2416,20 @@
1141
2416
  "claude",
1142
2417
  "codex"
1143
2418
  ],
1144
- "path": "jobs/security/open-port-check.yaml"
2419
+ "path": "jobs/manufacturing/quality-defect-rate-check.yaml"
1145
2420
  },
1146
2421
  {
1147
- "id": "orphaned-branch-cleanup",
2422
+ "id": "queue-depth-check",
1148
2423
  "version": 1,
1149
- "name": "Orphaned Branch Cleanup",
1150
- "description": "Lists remote branches already merged into main that nobody's deleted yet. Use this if your branch list has become a graveyard nobody wants to clean up.",
2424
+ "name": "Queue Depth Check",
2425
+ "description": "Checks how backed up a job queue is and warns if it crosses a threshold. Use this if a stuck worker has ever let a queue silently balloon until someone noticed customers weren't getting emails.",
1151
2426
  "category": "devops",
1152
2427
  "tags": [
1153
- "git",
1154
- "cleanup",
1155
- "branches"
2428
+ "queue",
2429
+ "redis",
2430
+ "monitoring"
1156
2431
  ],
1157
- "schedule": "0 9 * * 1",
2432
+ "schedule": "*/10 * * * *",
1158
2433
  "timezone": "UTC",
1159
2434
  "runner": "shell",
1160
2435
  "modes": [
@@ -1165,20 +2440,20 @@
1165
2440
  "claude",
1166
2441
  "codex"
1167
2442
  ],
1168
- "path": "jobs/devops/orphaned-branch-cleanup.yaml"
2443
+ "path": "jobs/devops/queue-depth-check.yaml"
1169
2444
  },
1170
2445
  {
1171
- "id": "passport-expiry-check",
2446
+ "id": "quota-attainment-check",
1172
2447
  "version": 1,
1173
- "name": "Passport Expiry Check",
1174
- "description": "Warns you before your passport expires including the \"6 months validity required\" rule many countries enforce at the border. Use this if you've ever booked a trip and only checked your passport date after buying the ticket.",
1175
- "category": "travel",
2448
+ "name": "Quota Attainment Check",
2449
+ "description": "Compares a rep's closed-won revenue this period against their quota pace and flags whether they're on track. Use this if a rep has ever found out they missed quota only at the end of the quarter, instead of with enough runway left to fix it.",
2450
+ "category": "sales",
1176
2451
  "tags": [
1177
- "travel",
1178
- "passport",
1179
- "documents"
2452
+ "sales",
2453
+ "quota",
2454
+ "pipeline"
1180
2455
  ],
1181
- "schedule": "0 9 1 * *",
2456
+ "schedule": "0 8 * * 1",
1182
2457
  "timezone": "UTC",
1183
2458
  "runner": "shell",
1184
2459
  "modes": [
@@ -1189,20 +2464,20 @@
1189
2464
  "claude",
1190
2465
  "codex"
1191
2466
  ],
1192
- "path": "jobs/travel/passport-expiry-check.yaml"
2467
+ "path": "jobs/sales/quota-attainment-check.yaml"
1193
2468
  },
1194
2469
  {
1195
- "id": "plant-watering-reminder",
2470
+ "id": "reading-list-nudge",
1196
2471
  "version": 1,
1197
- "name": "Plant Watering Reminder",
1198
- "description": "Reminds you to water a specific plant once it's due. Use this if you've ever lost a plant to \"I'll water it tomorrow.\"",
1199
- "category": "home",
2472
+ "name": "Reading List Nudge",
2473
+ "description": "Reminds you what's next on your reading list. Use this if you save articles/books to \"read later\" and later never comes.",
2474
+ "category": "learning",
1200
2475
  "tags": [
1201
- "home",
1202
- "plants",
2476
+ "learning",
2477
+ "reading",
1203
2478
  "reminder"
1204
2479
  ],
1205
- "schedule": "0 9 * * *",
2480
+ "schedule": "0 9 * * 6",
1206
2481
  "timezone": "America/Los_Angeles",
1207
2482
  "runner": "shell",
1208
2483
  "modes": [
@@ -1213,21 +2488,21 @@
1213
2488
  "claude",
1214
2489
  "codex"
1215
2490
  ],
1216
- "path": "jobs/home/plant-watering-reminder.yaml"
2491
+ "path": "jobs/learning/reading-list-nudge.yaml"
1217
2492
  },
1218
2493
  {
1219
- "id": "pto-balance-check",
2494
+ "id": "recurring-payment-failure-check",
1220
2495
  "version": 1,
1221
- "name": "PTO Balance Check",
1222
- "description": "Warns you before unused PTO expires or resets. Use this if you've ever lost vacation days because you forgot they don't roll over.",
1223
- "category": "team",
2496
+ "name": "Recurring Payment Failure Check",
2497
+ "description": "Flags subscription charges that failed and haven't successfully retried yet. Use this if a failed card has ever silently churned a customer because nobody noticed the retry never succeeded.",
2498
+ "category": "finance",
1224
2499
  "tags": [
1225
- "pto",
1226
- "vacation",
1227
- "team"
2500
+ "finance",
2501
+ "billing",
2502
+ "payments"
1228
2503
  ],
1229
- "schedule": "0 9 1 * *",
1230
- "timezone": "America/Los_Angeles",
2504
+ "schedule": "0 */6 * * *",
2505
+ "timezone": "UTC",
1231
2506
  "runner": "shell",
1232
2507
  "modes": [
1233
2508
  "script"
@@ -1237,20 +2512,20 @@
1237
2512
  "claude",
1238
2513
  "codex"
1239
2514
  ],
1240
- "path": "jobs/team/pto-balance-check.yaml"
2515
+ "path": "jobs/finance/recurring-payment-failure-check.yaml"
1241
2516
  },
1242
2517
  {
1243
- "id": "queue-depth-check",
2518
+ "id": "rent-payment-late-check",
1244
2519
  "version": 1,
1245
- "name": "Queue Depth Check",
1246
- "description": "Checks how backed up a job queue is and warns if it crosses a threshold. Use this if a stuck worker has ever let a queue silently balloon until someone noticed customers weren't getting emails.",
1247
- "category": "devops",
2520
+ "name": "Rent Payment Late Check",
2521
+ "description": "Flags tenants whose rent is overdue past the grace period. Use this if a late payment has ever gone unnoticed for weeks because nobody was cross-checking the rent roll against the bank deposits.",
2522
+ "category": "realestate",
1248
2523
  "tags": [
1249
- "queue",
1250
- "redis",
1251
- "monitoring"
2524
+ "realestate",
2525
+ "rent",
2526
+ "payments"
1252
2527
  ],
1253
- "schedule": "*/10 * * * *",
2528
+ "schedule": "0 9 * * *",
1254
2529
  "timezone": "UTC",
1255
2530
  "runner": "shell",
1256
2531
  "modes": [
@@ -1261,21 +2536,21 @@
1261
2536
  "claude",
1262
2537
  "codex"
1263
2538
  ],
1264
- "path": "jobs/devops/queue-depth-check.yaml"
2539
+ "path": "jobs/realestate/rent-payment-late-check.yaml"
1265
2540
  },
1266
2541
  {
1267
- "id": "reading-list-nudge",
2542
+ "id": "rental-vacancy-check",
1268
2543
  "version": 1,
1269
- "name": "Reading List Nudge",
1270
- "description": "Reminds you what's next on your reading list. Use this if you save articles/books to \"read later\" and later never comes.",
1271
- "category": "learning",
2544
+ "name": "Rental Vacancy Check",
2545
+ "description": "Flags a rental listing that's been vacant longer than expected. Use this if a unit has ever sat empty for months while everyone assumed someone else was handling the listing.",
2546
+ "category": "realestate",
1272
2547
  "tags": [
1273
- "learning",
1274
- "reading",
1275
- "reminder"
2548
+ "realestate",
2549
+ "vacancy",
2550
+ "listings"
1276
2551
  ],
1277
- "schedule": "0 9 * * 6",
1278
- "timezone": "America/Los_Angeles",
2552
+ "schedule": "0 9 * * 1",
2553
+ "timezone": "UTC",
1279
2554
  "runner": "shell",
1280
2555
  "modes": [
1281
2556
  "script"
@@ -1285,7 +2560,7 @@
1285
2560
  "claude",
1286
2561
  "codex"
1287
2562
  ],
1288
- "path": "jobs/learning/reading-list-nudge.yaml"
2563
+ "path": "jobs/realestate/rental-vacancy-check.yaml"
1289
2564
  },
1290
2565
  {
1291
2566
  "id": "repo-health-check",
@@ -1314,6 +2589,54 @@
1314
2589
  ],
1315
2590
  "path": "jobs/devops/repo-health-check.yaml"
1316
2591
  },
2592
+ {
2593
+ "id": "report-card-deadline-reminder",
2594
+ "version": 1,
2595
+ "name": "Report Card Deadline Reminder",
2596
+ "description": "Warns you before the grade submission deadline for report cards. Use this if grades have ever gone in late because the cutoff snuck up during the last busy week of the term.",
2597
+ "category": "education",
2598
+ "tags": [
2599
+ "education",
2600
+ "grading",
2601
+ "deadlines"
2602
+ ],
2603
+ "schedule": "0 8 * * *",
2604
+ "timezone": "UTC",
2605
+ "runner": "shell",
2606
+ "modes": [
2607
+ "script"
2608
+ ],
2609
+ "compatible_agents": [
2610
+ "generic",
2611
+ "claude",
2612
+ "codex"
2613
+ ],
2614
+ "path": "jobs/education/report-card-deadline-reminder.yaml"
2615
+ },
2616
+ {
2617
+ "id": "reservation-noshow-check",
2618
+ "version": 1,
2619
+ "name": "Reservation No-show Check",
2620
+ "description": "Checks yesterday's no-show rate against your normal baseline and flags a spike. Use this if a run of no-shows has ever quietly hurt revenue for days before anyone connected the pattern.",
2621
+ "category": "hospitality",
2622
+ "tags": [
2623
+ "hospitality",
2624
+ "reservations",
2625
+ "noshow"
2626
+ ],
2627
+ "schedule": "0 8 * * *",
2628
+ "timezone": "UTC",
2629
+ "runner": "shell",
2630
+ "modes": [
2631
+ "script"
2632
+ ],
2633
+ "compatible_agents": [
2634
+ "generic",
2635
+ "claude",
2636
+ "codex"
2637
+ ],
2638
+ "path": "jobs/hospitality/reservation-noshow-check.yaml"
2639
+ },
1317
2640
  {
1318
2641
  "id": "review-request-nudge",
1319
2642
  "version": 1,
@@ -1386,6 +2709,30 @@
1386
2709
  ],
1387
2710
  "path": "jobs/content/rss-feed-validate.yaml"
1388
2711
  },
2712
+ {
2713
+ "id": "rsvp-followup-reminder",
2714
+ "version": 1,
2715
+ "name": "RSVP Follow-up Reminder",
2716
+ "description": "Flags invitees who haven't RSVP'd as the event date gets close. Use this if you've ever had to guess headcount because half the guest list never replied and nobody chased them.",
2717
+ "category": "events",
2718
+ "tags": [
2719
+ "events",
2720
+ "rsvp",
2721
+ "planning"
2722
+ ],
2723
+ "schedule": "0 9 * * 1",
2724
+ "timezone": "UTC",
2725
+ "runner": "shell",
2726
+ "modes": [
2727
+ "script"
2728
+ ],
2729
+ "compatible_agents": [
2730
+ "generic",
2731
+ "claude",
2732
+ "codex"
2733
+ ],
2734
+ "path": "jobs/events/rsvp-followup-reminder.yaml"
2735
+ },
1389
2736
  {
1390
2737
  "id": "s3-public-bucket-check",
1391
2738
  "version": 1,
@@ -1473,7 +2820,81 @@
1473
2820
  "secrets",
1474
2821
  "scanning"
1475
2822
  ],
1476
- "schedule": "0 3 * * *",
2823
+ "schedule": "0 3 * * *",
2824
+ "timezone": "UTC",
2825
+ "runner": "shell",
2826
+ "modes": [
2827
+ "script"
2828
+ ],
2829
+ "compatible_agents": [
2830
+ "generic",
2831
+ "claude",
2832
+ "codex"
2833
+ ],
2834
+ "path": "jobs/security/secrets-scan.yaml"
2835
+ },
2836
+ {
2837
+ "id": "seo-meta-check",
2838
+ "version": 1,
2839
+ "name": "SEO Meta Tag Check",
2840
+ "description": "Checks a list of pages for missing title, meta description, and Open Graph tags. Use this if pages have ever shipped without basic SEO/social-preview tags because nobody double-checked.",
2841
+ "category": "content",
2842
+ "tags": [
2843
+ "seo",
2844
+ "content",
2845
+ "meta-tags"
2846
+ ],
2847
+ "schedule": "0 7 * * 1",
2848
+ "timezone": "UTC",
2849
+ "runner": "shell",
2850
+ "modes": [
2851
+ "script"
2852
+ ],
2853
+ "compatible_agents": [
2854
+ "generic",
2855
+ "claude",
2856
+ "codex"
2857
+ ],
2858
+ "path": "jobs/content/seo-meta-check.yaml"
2859
+ },
2860
+ {
2861
+ "id": "seo-rank-drop-watch",
2862
+ "version": 1,
2863
+ "name": "SEO Keyword Rank Drop Watch",
2864
+ "description": "Checks a tracked keyword's search ranking and flags a real drop. Use this if a page has ever slipped off page one and nobody noticed until organic traffic was already down for weeks.",
2865
+ "category": "marketing",
2866
+ "tags": [
2867
+ "seo",
2868
+ "rankings",
2869
+ "marketing"
2870
+ ],
2871
+ "schedule": "0 8 * * 1",
2872
+ "timezone": "UTC",
2873
+ "runner": "agent-prompt",
2874
+ "modes": [
2875
+ "agent-prompt"
2876
+ ],
2877
+ "compatible_agents": [
2878
+ "claude",
2879
+ "codex",
2880
+ "hermes",
2881
+ "openclaw",
2882
+ "generic"
2883
+ ],
2884
+ "path": "jobs/marketing/seo-rank-drop-watch.yaml"
2885
+ },
2886
+ {
2887
+ "id": "shipment-delay-watch",
2888
+ "version": 1,
2889
+ "name": "Shipment Delay Watch",
2890
+ "description": "Checks a shipment's tracking status and flags it if it hasn't moved in a while. Use this if a stuck shipment has ever gone unnoticed until a customer asked where their order was.",
2891
+ "category": "logistics",
2892
+ "tags": [
2893
+ "logistics",
2894
+ "shipping",
2895
+ "tracking"
2896
+ ],
2897
+ "schedule": "0 */6 * * *",
1477
2898
  "timezone": "UTC",
1478
2899
  "runner": "shell",
1479
2900
  "modes": [
@@ -1484,20 +2905,20 @@
1484
2905
  "claude",
1485
2906
  "codex"
1486
2907
  ],
1487
- "path": "jobs/security/secrets-scan.yaml"
2908
+ "path": "jobs/logistics/shipment-delay-watch.yaml"
1488
2909
  },
1489
2910
  {
1490
- "id": "seo-meta-check",
2911
+ "id": "sitemap-freshness-check",
1491
2912
  "version": 1,
1492
- "name": "SEO Meta Tag Check",
1493
- "description": "Checks a list of pages for missing title, meta description, and Open Graph tags. Use this if pages have ever shipped without basic SEO/social-preview tags because nobody double-checked.",
2913
+ "name": "Sitemap Freshness Check",
2914
+ "description": "Checks that your sitemap.xml was actually regenerated recently and isn't quietly stuck on an old snapshot. Use this if your sitemap is generated by a build step that's ever silently failed or skipped.",
1494
2915
  "category": "content",
1495
2916
  "tags": [
1496
2917
  "seo",
1497
- "content",
1498
- "meta-tags"
2918
+ "sitemap",
2919
+ "freshness"
1499
2920
  ],
1500
- "schedule": "0 7 * * 1",
2921
+ "schedule": "0 7 * * *",
1501
2922
  "timezone": "UTC",
1502
2923
  "runner": "shell",
1503
2924
  "modes": [
@@ -1508,20 +2929,20 @@
1508
2929
  "claude",
1509
2930
  "codex"
1510
2931
  ],
1511
- "path": "jobs/content/seo-meta-check.yaml"
2932
+ "path": "jobs/content/sitemap-freshness-check.yaml"
1512
2933
  },
1513
2934
  {
1514
- "id": "sitemap-freshness-check",
2935
+ "id": "sla-breach-warning",
1515
2936
  "version": 1,
1516
- "name": "Sitemap Freshness Check",
1517
- "description": "Checks that your sitemap.xml was actually regenerated recently and isn't quietly stuck on an old snapshot. Use this if your sitemap is generated by a build step that's ever silently failed or skipped.",
1518
- "category": "content",
2937
+ "name": "SLA Breach Warning",
2938
+ "description": "Flags open tickets that are about to breach their SLA, before they actually do. Use this if a ticket has ever blown past its SLA with zero warning because the only check was after the fact.",
2939
+ "category": "support",
1519
2940
  "tags": [
1520
- "seo",
1521
- "sitemap",
1522
- "freshness"
2941
+ "support",
2942
+ "sla",
2943
+ "tickets"
1523
2944
  ],
1524
- "schedule": "0 7 * * *",
2945
+ "schedule": "*/15 * * * *",
1525
2946
  "timezone": "UTC",
1526
2947
  "runner": "shell",
1527
2948
  "modes": [
@@ -1532,7 +2953,7 @@
1532
2953
  "claude",
1533
2954
  "codex"
1534
2955
  ],
1535
- "path": "jobs/content/sitemap-freshness-check.yaml"
2956
+ "path": "jobs/support/sla-breach-warning.yaml"
1536
2957
  },
1537
2958
  {
1538
2959
  "id": "smoke-detector-battery-check",
@@ -1584,6 +3005,30 @@
1584
3005
  ],
1585
3006
  "path": "jobs/content/social-mentions-watch.yaml"
1586
3007
  },
3008
+ {
3009
+ "id": "sponsor-deliverable-tracker",
3010
+ "version": 1,
3011
+ "name": "Podcast Sponsor Deliverable Tracker",
3012
+ "description": "Flags sponsor deliverables (read, mention, social post) coming due. Use this if you've ever had a sponsor follow up asking where their promised mention was.",
3013
+ "category": "podcast",
3014
+ "tags": [
3015
+ "podcast",
3016
+ "sponsorship",
3017
+ "deliverables"
3018
+ ],
3019
+ "schedule": "0 9 * * 1",
3020
+ "timezone": "UTC",
3021
+ "runner": "shell",
3022
+ "modes": [
3023
+ "script"
3024
+ ],
3025
+ "compatible_agents": [
3026
+ "generic",
3027
+ "claude",
3028
+ "codex"
3029
+ ],
3030
+ "path": "jobs/podcast/sponsor-deliverable-tracker.yaml"
3031
+ },
1587
3032
  {
1588
3033
  "id": "ssl-cert-expiry-check",
1589
3034
  "version": 1,
@@ -1609,6 +3054,57 @@
1609
3054
  ],
1610
3055
  "path": "jobs/devops/ssl-cert-expiry-check.yaml"
1611
3056
  },
3057
+ {
3058
+ "id": "staging-prod-config-diff",
3059
+ "version": 1,
3060
+ "name": "Staging vs Production Config Diff",
3061
+ "description": "Diffs environment variable keys between staging and production and flags mismatches. Use this if staging and prod have ever quietly drifted apart until a deploy broke only in one of them.",
3062
+ "category": "devops",
3063
+ "tags": [
3064
+ "config",
3065
+ "environments",
3066
+ "drift"
3067
+ ],
3068
+ "schedule": "0 8 * * 1",
3069
+ "timezone": "UTC",
3070
+ "runner": "shell",
3071
+ "modes": [
3072
+ "script"
3073
+ ],
3074
+ "compatible_agents": [
3075
+ "generic",
3076
+ "claude",
3077
+ "codex"
3078
+ ],
3079
+ "path": "jobs/devops/staging-prod-config-diff.yaml"
3080
+ },
3081
+ {
3082
+ "id": "stale-deal-nudge",
3083
+ "version": 1,
3084
+ "name": "Stale Deal Nudge",
3085
+ "description": "Finds open pipeline deals nobody's touched in a while. Use this if deals have ever quietly died in \"in progress\" because follow-up only happens when someone remembers.",
3086
+ "category": "sales",
3087
+ "tags": [
3088
+ "sales",
3089
+ "pipeline",
3090
+ "crm"
3091
+ ],
3092
+ "schedule": "0 8 * * 1-5",
3093
+ "timezone": "UTC",
3094
+ "runner": "hybrid",
3095
+ "modes": [
3096
+ "script",
3097
+ "agent-prompt"
3098
+ ],
3099
+ "compatible_agents": [
3100
+ "claude",
3101
+ "codex",
3102
+ "hermes",
3103
+ "openclaw",
3104
+ "generic"
3105
+ ],
3106
+ "path": "jobs/sales/stale-deal-nudge.yaml"
3107
+ },
1612
3108
  {
1613
3109
  "id": "stale-dependency-pr-nudge",
1614
3110
  "version": 1,
@@ -1803,6 +3299,104 @@
1803
3299
  ],
1804
3300
  "path": "jobs/devops/terraform-drift-check.yaml"
1805
3301
  },
3302
+ {
3303
+ "id": "ticket-backlog-aging-check",
3304
+ "version": 1,
3305
+ "name": "Support Ticket Backlog Aging Check",
3306
+ "description": "Checks how many open support tickets have sat unanswered past your SLA window. Use this if tickets have ever quietly aged past their SLA because the backlog view wasn't checked that day.",
3307
+ "category": "support",
3308
+ "tags": [
3309
+ "support",
3310
+ "sla",
3311
+ "tickets"
3312
+ ],
3313
+ "schedule": "0 */4 * * *",
3314
+ "timezone": "UTC",
3315
+ "runner": "shell",
3316
+ "modes": [
3317
+ "script"
3318
+ ],
3319
+ "compatible_agents": [
3320
+ "generic",
3321
+ "claude",
3322
+ "codex"
3323
+ ],
3324
+ "path": "jobs/support/ticket-backlog-aging-check.yaml"
3325
+ },
3326
+ {
3327
+ "id": "timezone-meeting-conflict-check",
3328
+ "version": 1,
3329
+ "name": "Timezone Meeting Conflict Check",
3330
+ "description": "Checks tomorrow's meetings against a remote teammate's working hours and flags any that fall outside them. Use this if a meeting has ever gotten scheduled at 11pm for someone across the world without anyone realizing.",
3331
+ "category": "productivity",
3332
+ "tags": [
3333
+ "calendar",
3334
+ "timezone",
3335
+ "meetings"
3336
+ ],
3337
+ "schedule": "0 16 * * *",
3338
+ "timezone": "America/Los_Angeles",
3339
+ "runner": "agent-prompt",
3340
+ "modes": [
3341
+ "agent-prompt"
3342
+ ],
3343
+ "compatible_agents": [
3344
+ "claude",
3345
+ "codex",
3346
+ "hermes",
3347
+ "openclaw",
3348
+ "generic"
3349
+ ],
3350
+ "path": "jobs/productivity/timezone-meeting-conflict-check.yaml"
3351
+ },
3352
+ {
3353
+ "id": "tls-cipher-weak-check",
3354
+ "version": 1,
3355
+ "name": "Weak TLS Cipher/Protocol Check",
3356
+ "description": "Checks a host for weak TLS protocol versions or ciphers still enabled. Use this if a legacy protocol has ever stayed enabled for \"just in case\" long after every client that needed it was gone.",
3357
+ "category": "security",
3358
+ "tags": [
3359
+ "security",
3360
+ "tls",
3361
+ "ciphers"
3362
+ ],
3363
+ "schedule": "0 6 * * 1",
3364
+ "timezone": "UTC",
3365
+ "runner": "shell",
3366
+ "modes": [
3367
+ "script"
3368
+ ],
3369
+ "compatible_agents": [
3370
+ "generic",
3371
+ "claude",
3372
+ "codex"
3373
+ ],
3374
+ "path": "jobs/security/tls-cipher-weak-check.yaml"
3375
+ },
3376
+ {
3377
+ "id": "trademark-renewal-reminder",
3378
+ "version": 1,
3379
+ "name": "Trademark Renewal Reminder",
3380
+ "description": "Warns you before a trademark registration's renewal deadline. Use this if you've ever let a trademark lapse simply because the renewal date wasn't on anyone's calendar.",
3381
+ "category": "legal",
3382
+ "tags": [
3383
+ "legal",
3384
+ "trademark",
3385
+ "ip"
3386
+ ],
3387
+ "schedule": "0 9 1 * *",
3388
+ "timezone": "UTC",
3389
+ "runner": "shell",
3390
+ "modes": [
3391
+ "script"
3392
+ ],
3393
+ "compatible_agents": [
3394
+ "generic",
3395
+ "claude",
3396
+ "codex"
3397
+ ],
3398
+ "path": "jobs/legal/trademark-renewal-reminder.yaml"
3399
+ },
1806
3400
  {
1807
3401
  "id": "travel-insurance-expiry-check",
1808
3402
  "version": 1,
@@ -1878,6 +3472,78 @@
1878
3472
  ],
1879
3473
  "path": "jobs/devops/uptime-ping-check.yaml"
1880
3474
  },
3475
+ {
3476
+ "id": "vehicle-maintenance-due-check",
3477
+ "version": 1,
3478
+ "name": "Fleet Vehicle Maintenance Due Check",
3479
+ "description": "Flags fleet vehicles due for scheduled maintenance by date or mileage. Use this if a fleet vehicle has ever broken down on a job because its service interval quietly passed.",
3480
+ "category": "fleet",
3481
+ "tags": [
3482
+ "fleet",
3483
+ "vehicles",
3484
+ "maintenance"
3485
+ ],
3486
+ "schedule": "0 7 * * 1",
3487
+ "timezone": "UTC",
3488
+ "runner": "shell",
3489
+ "modes": [
3490
+ "script"
3491
+ ],
3492
+ "compatible_agents": [
3493
+ "generic",
3494
+ "claude",
3495
+ "codex"
3496
+ ],
3497
+ "path": "jobs/fleet/vehicle-maintenance-due-check.yaml"
3498
+ },
3499
+ {
3500
+ "id": "vehicle-registration-expiry-check",
3501
+ "version": 1,
3502
+ "name": "Fleet Vehicle Registration Expiry Check",
3503
+ "description": "Warns you before a fleet vehicle's registration expires. Use this if a vehicle has ever gotten pulled over, or failed a job site check-in, because its registration quietly lapsed.",
3504
+ "category": "fleet",
3505
+ "tags": [
3506
+ "fleet",
3507
+ "registration",
3508
+ "compliance"
3509
+ ],
3510
+ "schedule": "0 8 1 * *",
3511
+ "timezone": "UTC",
3512
+ "runner": "shell",
3513
+ "modes": [
3514
+ "script"
3515
+ ],
3516
+ "compatible_agents": [
3517
+ "generic",
3518
+ "claude",
3519
+ "codex"
3520
+ ],
3521
+ "path": "jobs/fleet/vehicle-registration-expiry-check.yaml"
3522
+ },
3523
+ {
3524
+ "id": "vendor-payment-deadline-reminder",
3525
+ "version": 1,
3526
+ "name": "Event Vendor Payment Deadline Reminder",
3527
+ "description": "Warns you before a vendor deposit or balance payment for an event is due. Use this if a vendor has ever threatened to cancel because a payment deadline slipped past unnoticed.",
3528
+ "category": "events",
3529
+ "tags": [
3530
+ "events",
3531
+ "vendors",
3532
+ "payments"
3533
+ ],
3534
+ "schedule": "0 9 * * *",
3535
+ "timezone": "UTC",
3536
+ "runner": "shell",
3537
+ "modes": [
3538
+ "script"
3539
+ ],
3540
+ "compatible_agents": [
3541
+ "generic",
3542
+ "claude",
3543
+ "codex"
3544
+ ],
3545
+ "path": "jobs/events/vendor-payment-deadline-reminder.yaml"
3546
+ },
1881
3547
  {
1882
3548
  "id": "visa-expiry-check",
1883
3549
  "version": 1,
@@ -1902,6 +3568,78 @@
1902
3568
  ],
1903
3569
  "path": "jobs/travel/visa-expiry-check.yaml"
1904
3570
  },
3571
+ {
3572
+ "id": "volunteer-hours-shortfall-check",
3573
+ "version": 1,
3574
+ "name": "Volunteer Hours Shortfall Check",
3575
+ "description": "Compares logged volunteer hours against a program's target and flags a shortfall. Use this if a program has ever fallen behind on a grant's volunteer-hour commitment without anyone noticing until the report was due.",
3576
+ "category": "nonprofit",
3577
+ "tags": [
3578
+ "nonprofit",
3579
+ "volunteers",
3580
+ "programs"
3581
+ ],
3582
+ "schedule": "0 9 1 * *",
3583
+ "timezone": "UTC",
3584
+ "runner": "shell",
3585
+ "modes": [
3586
+ "script"
3587
+ ],
3588
+ "compatible_agents": [
3589
+ "generic",
3590
+ "claude",
3591
+ "codex"
3592
+ ],
3593
+ "path": "jobs/nonprofit/volunteer-hours-shortfall-check.yaml"
3594
+ },
3595
+ {
3596
+ "id": "waf-rule-change-watch",
3597
+ "version": 1,
3598
+ "name": "WAF Rule Change Watch",
3599
+ "description": "Diffs your current WAF rules against a saved baseline and flags drift. Use this if a WAF rule has ever been loosened \"just for testing\" and never put back.",
3600
+ "category": "security",
3601
+ "tags": [
3602
+ "security",
3603
+ "waf",
3604
+ "drift"
3605
+ ],
3606
+ "schedule": "0 6 * * *",
3607
+ "timezone": "UTC",
3608
+ "runner": "shell",
3609
+ "modes": [
3610
+ "script"
3611
+ ],
3612
+ "compatible_agents": [
3613
+ "generic",
3614
+ "claude",
3615
+ "codex"
3616
+ ],
3617
+ "path": "jobs/security/waf-rule-change-watch.yaml"
3618
+ },
3619
+ {
3620
+ "id": "warranty-expiry-reminder",
3621
+ "version": 1,
3622
+ "name": "Warranty Expiry Reminder",
3623
+ "description": "Warns you before an appliance or product warranty expires. Use this if you've ever discovered a warranty lapsed the week before whatever it covered broke.",
3624
+ "category": "home",
3625
+ "tags": [
3626
+ "home",
3627
+ "warranty",
3628
+ "reminder"
3629
+ ],
3630
+ "schedule": "0 9 1 * *",
3631
+ "timezone": "America/Los_Angeles",
3632
+ "runner": "shell",
3633
+ "modes": [
3634
+ "script"
3635
+ ],
3636
+ "compatible_agents": [
3637
+ "generic",
3638
+ "claude",
3639
+ "codex"
3640
+ ],
3641
+ "path": "jobs/home/warranty-expiry-reminder.yaml"
3642
+ },
1905
3643
  {
1906
3644
  "id": "water-intake-reminder",
1907
3645
  "version": 1,