@wonsukchoi/crondex 0.5.0 → 0.7.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 (80) hide show
  1. package/README.md +9 -1
  2. package/bin/crondex.js +85 -0
  3. package/catalog.json +2397 -522
  4. package/jobs/construction/inspection-deadline-reminder.yaml +31 -0
  5. package/jobs/construction/permit-expiry-check.yaml +31 -0
  6. package/jobs/content/canonical-tag-check.yaml +25 -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/content/sitemap-freshness-check.yaml +31 -0
  11. package/jobs/content/stale-post-audit.yaml +28 -0
  12. package/jobs/creator/content-calendar-gap-check.yaml +31 -0
  13. package/jobs/creator/engagement-drop-watch.yaml +36 -0
  14. package/jobs/devops/cdn-cache-purge-reminder.yaml +27 -0
  15. package/jobs/devops/ci-build-time-regression-watch.yaml +35 -0
  16. package/jobs/devops/error-rate-spike-watch.yaml +43 -0
  17. package/jobs/devops/feature-flag-staleness-audit.yaml +30 -0
  18. package/jobs/devops/k8s-pod-restart-watch.yaml +26 -0
  19. package/jobs/devops/log-forwarding-health-check.yaml +32 -0
  20. package/jobs/devops/staging-prod-config-diff.yaml +32 -0
  21. package/jobs/devops/terraform-drift-check.yaml +24 -0
  22. package/jobs/education/assignment-grading-backlog-check.yaml +23 -0
  23. package/jobs/education/attendance-anomaly-check.yaml +33 -0
  24. package/jobs/events/rsvp-followup-reminder.yaml +30 -0
  25. package/jobs/events/vendor-payment-deadline-reminder.yaml +31 -0
  26. package/jobs/finance/budget-overspend-check.yaml +29 -0
  27. package/jobs/finance/fx-rate-watch.yaml +33 -0
  28. package/jobs/finance/payroll-run-reminder.yaml +27 -0
  29. package/jobs/finance/recurring-payment-failure-check.yaml +23 -0
  30. package/jobs/fleet/fuel-card-anomaly-check.yaml +37 -0
  31. package/jobs/fleet/vehicle-maintenance-due-check.yaml +36 -0
  32. package/jobs/growth/churn-risk-watch.yaml +33 -0
  33. package/jobs/growth/trial-expiring-nudge.yaml +33 -0
  34. package/jobs/hiring/candidate-followup-nudge.yaml +23 -0
  35. package/jobs/hiring/open-req-aging-check.yaml +31 -0
  36. package/jobs/home/car-maintenance-due-reminder.yaml +30 -0
  37. package/jobs/home/warranty-expiry-reminder.yaml +31 -0
  38. package/jobs/hospitality/food-safety-temp-log-check.yaml +36 -0
  39. package/jobs/hospitality/reservation-noshow-check.yaml +20 -0
  40. package/jobs/inventory/inventory-count-discrepancy-check.yaml +38 -0
  41. package/jobs/inventory/low-stock-alert.yaml +20 -0
  42. package/jobs/investing/crypto-price-alert.yaml +33 -0
  43. package/jobs/investing/portfolio-rebalance-check.yaml +32 -0
  44. package/jobs/learning/cert-renewal-reminder.yaml +30 -0
  45. package/jobs/learning/conference-cfp-deadline-reminder.yaml +42 -0
  46. package/jobs/legal/contract-renewal-reminder.yaml +31 -0
  47. package/jobs/legal/trademark-renewal-reminder.yaml +30 -0
  48. package/jobs/logistics/customs-clearance-check.yaml +34 -0
  49. package/jobs/logistics/shipment-delay-watch.yaml +38 -0
  50. package/jobs/manufacturing/production-line-downtime-watch.yaml +34 -0
  51. package/jobs/manufacturing/quality-defect-rate-check.yaml +20 -0
  52. package/jobs/marketing/ad-spend-pacing-check.yaml +37 -0
  53. package/jobs/marketing/email-deliverability-check.yaml +37 -0
  54. package/jobs/nonprofit/grant-deadline-reminder.yaml +44 -0
  55. package/jobs/nonprofit/lapsed-donor-check.yaml +26 -0
  56. package/jobs/personal/medication-refill-reminder.yaml +30 -0
  57. package/jobs/podcast/episode-publish-gap-check.yaml +29 -0
  58. package/jobs/podcast/sponsor-deliverable-tracker.yaml +31 -0
  59. package/jobs/productivity/calendar-double-booking-check.yaml +21 -0
  60. package/jobs/productivity/stale-todo-sweep.yaml +26 -0
  61. package/jobs/productivity/timezone-meeting-conflict-check.yaml +31 -0
  62. package/jobs/realestate/lease-expiry-reminder.yaml +30 -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/stale-deal-nudge.yaml +35 -0
  66. package/jobs/security/2fa-enrollment-audit.yaml +24 -0
  67. package/jobs/security/cve-watch.yaml +27 -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/iam-key-rotation-reminder.yaml +27 -0
  71. package/jobs/security/s3-public-bucket-check.yaml +20 -0
  72. package/jobs/security/tls-cipher-weak-check.yaml +31 -0
  73. package/jobs/security/waf-rule-change-watch.yaml +38 -0
  74. package/jobs/support/csat-score-watch.yaml +32 -0
  75. package/jobs/support/ticket-backlog-aging-check.yaml +30 -0
  76. package/jobs/team/oncall-handoff-reminder.yaml +26 -0
  77. package/jobs/team/team-anniversary-reminder.yaml +22 -0
  78. package/jobs/travel/frequent-flyer-miles-expiry.yaml +30 -0
  79. package/jobs/travel/travel-insurance-expiry-check.yaml +26 -0
  80. 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": 56,
4
+ "count": 132,
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,
@@ -124,44 +224,17 @@
124
224
  "path": "jobs/content/broken-link-check.yaml"
125
225
  },
126
226
  {
127
- "id": "cart-abandonment-followup",
128
- "version": 1,
129
- "name": "Cart Abandonment Follow-up",
130
- "description": "Finds abandoned shopping carts old enough to follow up on, and can draft the follow-up email for you. Use this if abandoned-cart recovery is something you know you should do but never get to.",
131
- "category": "growth",
132
- "tags": [
133
- "growth",
134
- "ecommerce",
135
- "cart-recovery"
136
- ],
137
- "schedule": "0 10 * * *",
138
- "timezone": "UTC",
139
- "runner": "hybrid",
140
- "modes": [
141
- "script",
142
- "agent-prompt"
143
- ],
144
- "compatible_agents": [
145
- "claude",
146
- "codex",
147
- "hermes",
148
- "openclaw",
149
- "generic"
150
- ],
151
- "path": "jobs/growth/cart-abandonment-followup.yaml"
152
- },
153
- {
154
- "id": "certificate-transparency-watch",
227
+ "id": "budget-overspend-check",
155
228
  "version": 1,
156
- "name": "Certificate Transparency Watch",
157
- "description": "Checks public Certificate Transparency logs for new TLS certs issued for your domain and flags any you didn't expect. Use this if you want an early warning for someone issuing a cert for your domain without your knowledge (a common precursor to phishing/MITM setups).",
158
- "category": "security",
229
+ "name": "Budget Overspend Check",
230
+ "description": "Compares this month's spend in a budget category against your limit and warns if you're over. Use this if you set budgets once and then never actually check them until the month's already blown.",
231
+ "category": "finance",
159
232
  "tags": [
160
- "security",
161
- "tls",
162
- "certificate-transparency"
233
+ "budget",
234
+ "spending",
235
+ "finance"
163
236
  ],
164
- "schedule": "0 */12 * * *",
237
+ "schedule": "0 9 * * *",
165
238
  "timezone": "UTC",
166
239
  "runner": "shell",
167
240
  "modes": [
@@ -172,24 +245,23 @@
172
245
  "claude",
173
246
  "codex"
174
247
  ],
175
- "path": "jobs/security/certificate-transparency-watch.yaml"
248
+ "path": "jobs/finance/budget-overspend-check.yaml"
176
249
  },
177
250
  {
178
- "id": "changelog-digest",
251
+ "id": "calendar-double-booking-check",
179
252
  "version": 1,
180
- "name": "Changelog Digest",
181
- "description": "Rolls up recent commits into a draft changelog entry your users could actually read. Use this if you ship regularly but always write the changelog as an afterthought (or skip it).",
182
- "category": "content",
253
+ "name": "Calendar Double-Booking Check",
254
+ "description": "Checks today's calendar for overlapping meetings and flags them. Use this if you've ever accepted two invites for the same slot and only noticed when both started ringing.",
255
+ "category": "productivity",
183
256
  "tags": [
184
- "changelog",
185
- "release",
186
- "docs"
257
+ "calendar",
258
+ "meetings",
259
+ "productivity"
187
260
  ],
188
- "schedule": "0 10 * * 5",
189
- "timezone": "UTC",
190
- "runner": "hybrid",
261
+ "schedule": "0 7 * * 1-5",
262
+ "timezone": "America/Los_Angeles",
263
+ "runner": "agent-prompt",
191
264
  "modes": [
192
- "script",
193
265
  "agent-prompt"
194
266
  ],
195
267
  "compatible_agents": [
@@ -199,48 +271,45 @@
199
271
  "openclaw",
200
272
  "generic"
201
273
  ],
202
- "path": "jobs/content/changelog-digest.yaml"
274
+ "path": "jobs/productivity/calendar-double-booking-check.yaml"
203
275
  },
204
276
  {
205
- "id": "cost-alert",
277
+ "id": "candidate-followup-nudge",
206
278
  "version": 1,
207
- "name": "Cloud/API Cost Alert",
208
- "description": "Checks your recent cloud or API spend against a budget and warns you if you're over or on pace to go over. Use this if you've ever been surprised by a bill.",
209
- "category": "devops",
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",
210
282
  "tags": [
211
- "cost",
212
- "billing",
213
- "budget"
283
+ "hiring",
284
+ "recruiting",
285
+ "candidates"
214
286
  ],
215
- "schedule": "0 7 * * *",
287
+ "schedule": "0 9 * * 1-5",
216
288
  "timezone": "UTC",
217
- "runner": "hybrid",
289
+ "runner": "shell",
218
290
  "modes": [
219
- "script",
220
- "agent-prompt"
291
+ "script"
221
292
  ],
222
293
  "compatible_agents": [
294
+ "generic",
223
295
  "claude",
224
- "codex",
225
- "hermes",
226
- "openclaw",
227
- "generic"
296
+ "codex"
228
297
  ],
229
- "path": "jobs/devops/cost-alert.yaml"
298
+ "path": "jobs/hiring/candidate-followup-nudge.yaml"
230
299
  },
231
300
  {
232
- "id": "course-progress-checkin",
301
+ "id": "canonical-tag-check",
233
302
  "version": 1,
234
- "name": "Course Progress Check-in",
235
- "description": "Compares your current chapter/lesson against a target date and tells you if you're on track or falling behind. Use this if you've ever signed up for a course and quietly stopped halfway through.",
236
- "category": "learning",
303
+ "name": "Canonical Tag Check",
304
+ "description": "Checks a list of pages for missing or self-conflicting canonical tags. Use this if a templating bug has ever pointed every page's canonical at the homepage (or nowhere at all) without anyone noticing.",
305
+ "category": "content",
237
306
  "tags": [
238
- "learning",
239
- "goals",
240
- "progress"
307
+ "seo",
308
+ "canonical",
309
+ "content"
241
310
  ],
242
- "schedule": "0 9 * * 1",
243
- "timezone": "America/Los_Angeles",
311
+ "schedule": "0 7 * * 1",
312
+ "timezone": "UTC",
244
313
  "runner": "shell",
245
314
  "modes": [
246
315
  "script"
@@ -250,20 +319,20 @@
250
319
  "claude",
251
320
  "codex"
252
321
  ],
253
- "path": "jobs/learning/course-progress-checkin.yaml"
322
+ "path": "jobs/content/canonical-tag-check.yaml"
254
323
  },
255
324
  {
256
- "id": "daily-flashcard-review",
325
+ "id": "car-maintenance-due-reminder",
257
326
  "version": 1,
258
- "name": "Daily Flashcard Review",
259
- "description": "Lists which flashcards are due for review today from a simple deck file. Use this if you're learning something with spaced repetition but don't want a whole separate app for it.",
260
- "category": "learning",
327
+ "name": "Car Maintenance Due Reminder",
328
+ "description": "Warns you when a car maintenance task (oil change, registration, etc.) is coming due by date. Use this if you've ever found out your registration expired because a sticker in the mail got ignored.",
329
+ "category": "home",
261
330
  "tags": [
262
- "learning",
263
- "flashcards",
264
- "spaced-repetition"
331
+ "home",
332
+ "car",
333
+ "maintenance"
265
334
  ],
266
- "schedule": "0 8 * * *",
335
+ "schedule": "0 9 * * 1",
267
336
  "timezone": "America/Los_Angeles",
268
337
  "runner": "shell",
269
338
  "modes": [
@@ -274,21 +343,21 @@
274
343
  "claude",
275
344
  "codex"
276
345
  ],
277
- "path": "jobs/learning/daily-flashcard-review.yaml"
346
+ "path": "jobs/home/car-maintenance-due-reminder.yaml"
278
347
  },
279
348
  {
280
- "id": "daily-standup-summary",
349
+ "id": "cart-abandonment-followup",
281
350
  "version": 1,
282
- "name": "Daily Standup Summary",
283
- "description": "Pulls together what you did yesterday (commits, closed tasks) plus today's calendar, and drafts a quick 3-line standup update. Use this if you're tired of writing the same \"yesterday / today / blockers\" recap every morning.",
284
- "category": "productivity",
351
+ "name": "Cart Abandonment Follow-up",
352
+ "description": "Finds abandoned shopping carts old enough to follow up on, and can draft the follow-up email for you. Use this if abandoned-cart recovery is something you know you should do but never get to.",
353
+ "category": "growth",
285
354
  "tags": [
286
- "standup",
287
- "reporting",
288
- "daily"
355
+ "growth",
356
+ "ecommerce",
357
+ "cart-recovery"
289
358
  ],
290
- "schedule": "0 8 * * 1-5",
291
- "timezone": "America/Los_Angeles",
359
+ "schedule": "0 10 * * *",
360
+ "timezone": "UTC",
292
361
  "runner": "hybrid",
293
362
  "modes": [
294
363
  "script",
@@ -301,20 +370,20 @@
301
370
  "openclaw",
302
371
  "generic"
303
372
  ],
304
- "path": "jobs/productivity/daily-standup-summary.yaml"
373
+ "path": "jobs/growth/cart-abandonment-followup.yaml"
305
374
  },
306
375
  {
307
- "id": "db-backup-verify",
376
+ "id": "cdn-cache-purge-reminder",
308
377
  "version": 1,
309
- "name": "Database Backup Restore Verification",
310
- "description": "Actually restores your latest database backup to a throwaway database and checks it's queryable. Use this if `backup-reminder` isn't enough a backup file existing doesn't mean it's actually restorable.",
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.",
311
380
  "category": "devops",
312
381
  "tags": [
313
- "database",
314
- "backup",
315
- "postgres"
382
+ "cdn",
383
+ "cache",
384
+ "deploy"
316
385
  ],
317
- "schedule": "0 5 * * *",
386
+ "schedule": "*/30 * * * *",
318
387
  "timezone": "UTC",
319
388
  "runner": "shell",
320
389
  "modes": [
@@ -325,47 +394,44 @@
325
394
  "claude",
326
395
  "codex"
327
396
  ],
328
- "path": "jobs/devops/db-backup-verify.yaml"
397
+ "path": "jobs/devops/cdn-cache-purge-reminder.yaml"
329
398
  },
330
399
  {
331
- "id": "dependency-audit",
400
+ "id": "cert-renewal-reminder",
332
401
  "version": 1,
333
- "name": "Dependency Vulnerability Audit",
334
- "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.",
335
- "category": "devops",
402
+ "name": "Professional Certification Renewal Reminder",
403
+ "description": "Warns you before a professional certification expires or its renewal window opens. Use this if you've ever let a cert lapse and had to retake an exam that a renewal course would've avoided.",
404
+ "category": "learning",
336
405
  "tags": [
337
- "security",
338
- "dependencies",
339
- "maintenance"
406
+ "learning",
407
+ "certification",
408
+ "renewal"
340
409
  ],
341
- "schedule": "0 8 * * 1",
342
- "timezone": "UTC",
343
- "runner": "hybrid",
410
+ "schedule": "0 9 1 * *",
411
+ "timezone": "America/Los_Angeles",
412
+ "runner": "shell",
344
413
  "modes": [
345
- "script",
346
- "agent-prompt"
414
+ "script"
347
415
  ],
348
416
  "compatible_agents": [
417
+ "generic",
349
418
  "claude",
350
- "codex",
351
- "hermes",
352
- "openclaw",
353
- "generic"
419
+ "codex"
354
420
  ],
355
- "path": "jobs/devops/dependency-audit.yaml"
421
+ "path": "jobs/learning/cert-renewal-reminder.yaml"
356
422
  },
357
423
  {
358
- "id": "disk-space-check",
424
+ "id": "certificate-transparency-watch",
359
425
  "version": 1,
360
- "name": "Disk Space Check",
361
- "description": "Checks how full a disk/volume is and warns you before it fills up. Use this if you've ever had a server or laptop grind to a halt because disk usage crept up unnoticed.",
362
- "category": "devops",
426
+ "name": "Certificate Transparency Watch",
427
+ "description": "Checks public Certificate Transparency logs for new TLS certs issued for your domain and flags any you didn't expect. Use this if you want an early warning for someone issuing a cert for your domain without your knowledge (a common precursor to phishing/MITM setups).",
428
+ "category": "security",
363
429
  "tags": [
364
- "disk",
365
- "monitoring",
366
- "maintenance"
430
+ "security",
431
+ "tls",
432
+ "certificate-transparency"
367
433
  ],
368
- "schedule": "0 */6 * * *",
434
+ "schedule": "0 */12 * * *",
369
435
  "timezone": "UTC",
370
436
  "runner": "shell",
371
437
  "modes": [
@@ -376,20 +442,1702 @@
376
442
  "claude",
377
443
  "codex"
378
444
  ],
379
- "path": "jobs/devops/disk-space-check.yaml"
445
+ "path": "jobs/security/certificate-transparency-watch.yaml"
380
446
  },
381
447
  {
382
- "id": "dns-record-check",
448
+ "id": "changelog-digest",
383
449
  "version": 1,
384
- "name": "DNS Record Drift Check",
385
- "description": "Checks that a DNS record still resolves to the value you expect, and flags drift. Use this if you've ever had DNS quietly change (an expired record, a misconfigured provider) and only found out when something broke.",
386
- "category": "devops",
450
+ "name": "Changelog Digest",
451
+ "description": "Rolls up recent commits into a draft changelog entry your users could actually read. Use this if you ship regularly but always write the changelog as an afterthought (or skip it).",
452
+ "category": "content",
387
453
  "tags": [
388
- "dns",
454
+ "changelog",
455
+ "release",
456
+ "docs"
457
+ ],
458
+ "schedule": "0 10 * * 5",
459
+ "timezone": "UTC",
460
+ "runner": "hybrid",
461
+ "modes": [
462
+ "script",
463
+ "agent-prompt"
464
+ ],
465
+ "compatible_agents": [
466
+ "claude",
467
+ "codex",
468
+ "hermes",
469
+ "openclaw",
470
+ "generic"
471
+ ],
472
+ "path": "jobs/content/changelog-digest.yaml"
473
+ },
474
+ {
475
+ "id": "churn-risk-watch",
476
+ "version": 1,
477
+ "name": "Churn Risk Watch",
478
+ "description": "Flags accounts whose usage has dropped off sharply, before they actually cancel. Use this if you only ever find out someone churned after the cancellation email arrives.",
479
+ "category": "growth",
480
+ "tags": [
481
+ "growth",
482
+ "churn",
483
+ "retention"
484
+ ],
485
+ "schedule": "0 9 * * 1",
486
+ "timezone": "UTC",
487
+ "runner": "agent-prompt",
488
+ "modes": [
489
+ "agent-prompt"
490
+ ],
491
+ "compatible_agents": [
492
+ "claude",
493
+ "codex",
494
+ "hermes",
495
+ "openclaw",
496
+ "generic"
497
+ ],
498
+ "path": "jobs/growth/churn-risk-watch.yaml"
499
+ },
500
+ {
501
+ "id": "ci-build-time-regression-watch",
502
+ "version": 1,
503
+ "name": "CI Build Time Regression Watch",
504
+ "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.",
505
+ "category": "devops",
506
+ "tags": [
507
+ "ci",
508
+ "performance",
509
+ "build-time"
510
+ ],
511
+ "schedule": "0 9 * * 1-5",
512
+ "timezone": "UTC",
513
+ "runner": "agent-prompt",
514
+ "modes": [
515
+ "agent-prompt"
516
+ ],
517
+ "compatible_agents": [
518
+ "claude",
519
+ "codex",
520
+ "hermes",
521
+ "openclaw",
522
+ "generic"
523
+ ],
524
+ "path": "jobs/devops/ci-build-time-regression-watch.yaml"
525
+ },
526
+ {
527
+ "id": "conference-cfp-deadline-reminder",
528
+ "version": 1,
529
+ "name": "Conference CFP Deadline Reminder",
530
+ "description": "Warns you before a conference's call-for-papers deadline, and can help draft your talk proposal. Use this if you've ever meant to submit a talk and missed the CFP because you found out a week too late.",
531
+ "category": "learning",
532
+ "tags": [
533
+ "learning",
534
+ "conference",
535
+ "cfp",
536
+ "career"
537
+ ],
538
+ "schedule": "0 9 * * 1",
539
+ "timezone": "UTC",
540
+ "runner": "hybrid",
541
+ "modes": [
542
+ "script",
543
+ "agent-prompt"
544
+ ],
545
+ "compatible_agents": [
546
+ "claude",
547
+ "codex",
548
+ "hermes",
549
+ "openclaw",
550
+ "generic"
551
+ ],
552
+ "path": "jobs/learning/conference-cfp-deadline-reminder.yaml"
553
+ },
554
+ {
555
+ "id": "content-calendar-gap-check",
556
+ "version": 1,
557
+ "name": "Content Calendar Gap Check",
558
+ "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.",
559
+ "category": "creator",
560
+ "tags": [
561
+ "content",
562
+ "calendar",
563
+ "publishing"
564
+ ],
565
+ "schedule": "0 9 * * 1,4",
566
+ "timezone": "UTC",
567
+ "runner": "shell",
568
+ "modes": [
569
+ "script"
570
+ ],
571
+ "compatible_agents": [
572
+ "generic",
573
+ "claude",
574
+ "codex"
575
+ ],
576
+ "path": "jobs/creator/content-calendar-gap-check.yaml"
577
+ },
578
+ {
579
+ "id": "contract-renewal-reminder",
580
+ "version": 1,
581
+ "name": "Contract Renewal Reminder",
582
+ "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.",
583
+ "category": "legal",
584
+ "tags": [
585
+ "legal",
586
+ "contracts",
587
+ "renewal"
588
+ ],
589
+ "schedule": "0 9 * * 1",
590
+ "timezone": "UTC",
591
+ "runner": "shell",
592
+ "modes": [
593
+ "script"
594
+ ],
595
+ "compatible_agents": [
596
+ "generic",
597
+ "claude",
598
+ "codex"
599
+ ],
600
+ "path": "jobs/legal/contract-renewal-reminder.yaml"
601
+ },
602
+ {
603
+ "id": "cost-alert",
604
+ "version": 1,
605
+ "name": "Cloud/API Cost Alert",
606
+ "description": "Checks your recent cloud or API spend against a budget and warns you if you're over or on pace to go over. Use this if you've ever been surprised by a bill.",
607
+ "category": "devops",
608
+ "tags": [
609
+ "cost",
610
+ "billing",
611
+ "budget"
612
+ ],
613
+ "schedule": "0 7 * * *",
614
+ "timezone": "UTC",
615
+ "runner": "hybrid",
616
+ "modes": [
617
+ "script",
618
+ "agent-prompt"
619
+ ],
620
+ "compatible_agents": [
621
+ "claude",
622
+ "codex",
623
+ "hermes",
624
+ "openclaw",
625
+ "generic"
626
+ ],
627
+ "path": "jobs/devops/cost-alert.yaml"
628
+ },
629
+ {
630
+ "id": "course-progress-checkin",
631
+ "version": 1,
632
+ "name": "Course Progress Check-in",
633
+ "description": "Compares your current chapter/lesson against a target date and tells you if you're on track or falling behind. Use this if you've ever signed up for a course and quietly stopped halfway through.",
634
+ "category": "learning",
635
+ "tags": [
636
+ "learning",
637
+ "goals",
638
+ "progress"
639
+ ],
640
+ "schedule": "0 9 * * 1",
641
+ "timezone": "America/Los_Angeles",
642
+ "runner": "shell",
643
+ "modes": [
644
+ "script"
645
+ ],
646
+ "compatible_agents": [
647
+ "generic",
648
+ "claude",
649
+ "codex"
650
+ ],
651
+ "path": "jobs/learning/course-progress-checkin.yaml"
652
+ },
653
+ {
654
+ "id": "crypto-price-alert",
655
+ "version": 1,
656
+ "name": "Crypto Price Alert",
657
+ "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.",
658
+ "category": "investing",
659
+ "tags": [
660
+ "crypto",
661
+ "price",
662
+ "alert"
663
+ ],
664
+ "schedule": "*/15 * * * *",
665
+ "timezone": "UTC",
666
+ "runner": "shell",
667
+ "modes": [
668
+ "script"
669
+ ],
670
+ "compatible_agents": [
671
+ "generic",
672
+ "claude",
673
+ "codex"
674
+ ],
675
+ "path": "jobs/investing/crypto-price-alert.yaml"
676
+ },
677
+ {
678
+ "id": "csat-score-watch",
679
+ "version": 1,
680
+ "name": "CSAT Score Watch",
681
+ "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.",
682
+ "category": "support",
683
+ "tags": [
684
+ "support",
685
+ "csat",
686
+ "customer-satisfaction"
687
+ ],
688
+ "schedule": "0 9 * * 1",
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/support/csat-score-watch.yaml"
702
+ },
703
+ {
704
+ "id": "customs-clearance-check",
705
+ "version": 1,
706
+ "name": "Customs Clearance Check",
707
+ "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.",
708
+ "category": "logistics",
709
+ "tags": [
710
+ "logistics",
711
+ "customs",
712
+ "shipping"
713
+ ],
714
+ "schedule": "0 9 * * *",
715
+ "timezone": "UTC",
716
+ "runner": "agent-prompt",
717
+ "modes": [
718
+ "agent-prompt"
719
+ ],
720
+ "compatible_agents": [
721
+ "claude",
722
+ "codex",
723
+ "hermes",
724
+ "openclaw",
725
+ "generic"
726
+ ],
727
+ "path": "jobs/logistics/customs-clearance-check.yaml"
728
+ },
729
+ {
730
+ "id": "cve-watch",
731
+ "version": 1,
732
+ "name": "CVE Watch",
733
+ "description": "Checks for newly published CVEs affecting packages in your stack. Use this if you want a heads-up on a critical vulnerability before it shows up in a routine dependency audit days later.",
734
+ "category": "security",
735
+ "tags": [
736
+ "security",
737
+ "cve",
738
+ "vulnerabilities"
739
+ ],
740
+ "schedule": "0 8 * * *",
741
+ "timezone": "UTC",
742
+ "runner": "agent-prompt",
743
+ "modes": [
744
+ "agent-prompt"
745
+ ],
746
+ "compatible_agents": [
747
+ "claude",
748
+ "codex",
749
+ "hermes",
750
+ "openclaw",
751
+ "generic"
752
+ ],
753
+ "path": "jobs/security/cve-watch.yaml"
754
+ },
755
+ {
756
+ "id": "daily-flashcard-review",
757
+ "version": 1,
758
+ "name": "Daily Flashcard Review",
759
+ "description": "Lists which flashcards are due for review today from a simple deck file. Use this if you're learning something with spaced repetition but don't want a whole separate app for it.",
760
+ "category": "learning",
761
+ "tags": [
762
+ "learning",
763
+ "flashcards",
764
+ "spaced-repetition"
765
+ ],
766
+ "schedule": "0 8 * * *",
767
+ "timezone": "America/Los_Angeles",
768
+ "runner": "shell",
769
+ "modes": [
770
+ "script"
771
+ ],
772
+ "compatible_agents": [
773
+ "generic",
774
+ "claude",
775
+ "codex"
776
+ ],
777
+ "path": "jobs/learning/daily-flashcard-review.yaml"
778
+ },
779
+ {
780
+ "id": "daily-standup-summary",
781
+ "version": 1,
782
+ "name": "Daily Standup Summary",
783
+ "description": "Pulls together what you did yesterday (commits, closed tasks) plus today's calendar, and drafts a quick 3-line standup update. Use this if you're tired of writing the same \"yesterday / today / blockers\" recap every morning.",
784
+ "category": "productivity",
785
+ "tags": [
786
+ "standup",
787
+ "reporting",
788
+ "daily"
789
+ ],
790
+ "schedule": "0 8 * * 1-5",
791
+ "timezone": "America/Los_Angeles",
792
+ "runner": "hybrid",
793
+ "modes": [
794
+ "script",
795
+ "agent-prompt"
796
+ ],
797
+ "compatible_agents": [
798
+ "claude",
799
+ "codex",
800
+ "hermes",
801
+ "openclaw",
802
+ "generic"
803
+ ],
804
+ "path": "jobs/productivity/daily-standup-summary.yaml"
805
+ },
806
+ {
807
+ "id": "db-backup-verify",
808
+ "version": 1,
809
+ "name": "Database Backup Restore Verification",
810
+ "description": "Actually restores your latest database backup to a throwaway database and checks it's queryable. Use this if `backup-reminder` isn't enough — a backup file existing doesn't mean it's actually restorable.",
811
+ "category": "devops",
812
+ "tags": [
813
+ "database",
814
+ "backup",
815
+ "postgres"
816
+ ],
817
+ "schedule": "0 5 * * *",
818
+ "timezone": "UTC",
819
+ "runner": "shell",
820
+ "modes": [
821
+ "script"
822
+ ],
823
+ "compatible_agents": [
824
+ "generic",
825
+ "claude",
826
+ "codex"
827
+ ],
828
+ "path": "jobs/devops/db-backup-verify.yaml"
829
+ },
830
+ {
831
+ "id": "dependabot-alert-digest",
832
+ "version": 1,
833
+ "name": "Dependabot Alert Digest",
834
+ "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.",
835
+ "category": "security",
836
+ "tags": [
837
+ "security",
838
+ "dependabot",
839
+ "github"
840
+ ],
841
+ "schedule": "0 8 * * 1",
842
+ "timezone": "UTC",
843
+ "runner": "shell",
844
+ "modes": [
845
+ "script"
846
+ ],
847
+ "compatible_agents": [
848
+ "generic",
849
+ "claude",
850
+ "codex"
851
+ ],
852
+ "path": "jobs/security/dependabot-alert-digest.yaml"
853
+ },
854
+ {
855
+ "id": "dependency-audit",
856
+ "version": 1,
857
+ "name": "Dependency Vulnerability Audit",
858
+ "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.",
859
+ "category": "devops",
860
+ "tags": [
861
+ "security",
862
+ "dependencies",
863
+ "maintenance"
864
+ ],
865
+ "schedule": "0 8 * * 1",
866
+ "timezone": "UTC",
867
+ "runner": "hybrid",
868
+ "modes": [
869
+ "script",
870
+ "agent-prompt"
871
+ ],
872
+ "compatible_agents": [
873
+ "claude",
874
+ "codex",
875
+ "hermes",
876
+ "openclaw",
877
+ "generic"
878
+ ],
879
+ "path": "jobs/devops/dependency-audit.yaml"
880
+ },
881
+ {
882
+ "id": "disk-space-check",
883
+ "version": 1,
884
+ "name": "Disk Space Check",
885
+ "description": "Checks how full a disk/volume is and warns you before it fills up. Use this if you've ever had a server or laptop grind to a halt because disk usage crept up unnoticed.",
886
+ "category": "devops",
887
+ "tags": [
888
+ "disk",
889
+ "monitoring",
890
+ "maintenance"
891
+ ],
892
+ "schedule": "0 */6 * * *",
893
+ "timezone": "UTC",
894
+ "runner": "shell",
895
+ "modes": [
896
+ "script"
897
+ ],
898
+ "compatible_agents": [
899
+ "generic",
900
+ "claude",
901
+ "codex"
902
+ ],
903
+ "path": "jobs/devops/disk-space-check.yaml"
904
+ },
905
+ {
906
+ "id": "dns-record-check",
907
+ "version": 1,
908
+ "name": "DNS Record Drift Check",
909
+ "description": "Checks that a DNS record still resolves to the value you expect, and flags drift. Use this if you've ever had DNS quietly change (an expired record, a misconfigured provider) and only found out when something broke.",
910
+ "category": "devops",
911
+ "tags": [
912
+ "dns",
913
+ "monitoring",
914
+ "drift"
915
+ ],
916
+ "schedule": "0 */6 * * *",
917
+ "timezone": "UTC",
918
+ "runner": "shell",
919
+ "modes": [
920
+ "script"
921
+ ],
922
+ "compatible_agents": [
923
+ "generic",
924
+ "claude",
925
+ "codex"
926
+ ],
927
+ "path": "jobs/devops/dns-record-check.yaml"
928
+ },
929
+ {
930
+ "id": "docker-image-prune",
931
+ "version": 1,
932
+ "name": "Docker Image & Container Prune",
933
+ "description": "Cleans up stopped containers and dangling Docker images so they don't quietly eat your disk. Use this if you run Docker locally or on a server and never remember to clean up after yourself.",
934
+ "category": "devops",
935
+ "tags": [
936
+ "docker",
937
+ "cleanup",
938
+ "disk-space"
939
+ ],
940
+ "schedule": "0 4 * * *",
941
+ "timezone": "UTC",
942
+ "runner": "shell",
943
+ "modes": [
944
+ "script"
945
+ ],
946
+ "compatible_agents": [
947
+ "generic",
948
+ "claude",
949
+ "codex"
950
+ ],
951
+ "path": "jobs/devops/docker-image-prune.yaml"
952
+ },
953
+ {
954
+ "id": "email-deliverability-check",
955
+ "version": 1,
956
+ "name": "Email Deliverability Check",
957
+ "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.",
958
+ "category": "marketing",
959
+ "tags": [
960
+ "marketing",
961
+ "email",
962
+ "deliverability"
963
+ ],
964
+ "schedule": "0 9 * * *",
965
+ "timezone": "UTC",
966
+ "runner": "shell",
967
+ "modes": [
968
+ "script"
969
+ ],
970
+ "compatible_agents": [
971
+ "generic",
972
+ "claude",
973
+ "codex"
974
+ ],
975
+ "path": "jobs/marketing/email-deliverability-check.yaml"
976
+ },
977
+ {
978
+ "id": "engagement-drop-watch",
979
+ "version": 1,
980
+ "name": "Engagement Drop Watch",
981
+ "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.",
982
+ "category": "creator",
983
+ "tags": [
984
+ "content",
985
+ "engagement",
986
+ "social"
987
+ ],
988
+ "schedule": "0 9 * * 1",
989
+ "timezone": "UTC",
990
+ "runner": "agent-prompt",
991
+ "modes": [
992
+ "agent-prompt"
993
+ ],
994
+ "compatible_agents": [
995
+ "claude",
996
+ "codex",
997
+ "hermes",
998
+ "openclaw",
999
+ "generic"
1000
+ ],
1001
+ "path": "jobs/creator/engagement-drop-watch.yaml"
1002
+ },
1003
+ {
1004
+ "id": "env-drift-check",
1005
+ "version": 1,
1006
+ "name": "Env File Drift Check",
1007
+ "description": "Compares your .env against .env.example and flags keys that are missing or extra. Use this if you've ever deployed and hit a crash because a new required env var never got set.",
1008
+ "category": "devops",
1009
+ "tags": [
1010
+ "config",
1011
+ "env",
1012
+ "drift"
1013
+ ],
1014
+ "schedule": "0 8 * * *",
1015
+ "timezone": "UTC",
1016
+ "runner": "shell",
1017
+ "modes": [
1018
+ "script"
1019
+ ],
1020
+ "compatible_agents": [
1021
+ "generic",
1022
+ "claude",
1023
+ "codex"
1024
+ ],
1025
+ "path": "jobs/devops/env-drift-check.yaml"
1026
+ },
1027
+ {
1028
+ "id": "episode-publish-gap-check",
1029
+ "version": 1,
1030
+ "name": "Podcast Episode Publish Gap Check",
1031
+ "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.",
1032
+ "category": "podcast",
1033
+ "tags": [
1034
+ "podcast",
1035
+ "publishing",
1036
+ "cadence"
1037
+ ],
1038
+ "schedule": "0 9 * * 1",
1039
+ "timezone": "UTC",
1040
+ "runner": "shell",
1041
+ "modes": [
1042
+ "script"
1043
+ ],
1044
+ "compatible_agents": [
1045
+ "generic",
1046
+ "claude",
1047
+ "codex"
1048
+ ],
1049
+ "path": "jobs/podcast/episode-publish-gap-check.yaml"
1050
+ },
1051
+ {
1052
+ "id": "error-rate-spike-watch",
1053
+ "version": 1,
1054
+ "name": "Error Rate Spike Watch",
1055
+ "description": "Checks your error tracker's recent error count against a threshold and flags a spike. Use this if a bad deploy has ever quietly spiked errors for hours before anyone noticed.",
1056
+ "category": "devops",
1057
+ "tags": [
1058
+ "errors",
1059
+ "monitoring",
1060
+ "alerting"
1061
+ ],
1062
+ "schedule": "*/15 * * * *",
1063
+ "timezone": "UTC",
1064
+ "runner": "hybrid",
1065
+ "modes": [
1066
+ "script",
1067
+ "agent-prompt"
1068
+ ],
1069
+ "compatible_agents": [
1070
+ "claude",
1071
+ "codex",
1072
+ "hermes",
1073
+ "openclaw",
1074
+ "generic"
1075
+ ],
1076
+ "path": "jobs/devops/error-rate-spike-watch.yaml"
1077
+ },
1078
+ {
1079
+ "id": "expiring-api-key-rotation",
1080
+ "version": 1,
1081
+ "name": "Expiring API Key Rotation Reminder",
1082
+ "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.",
1083
+ "category": "security",
1084
+ "tags": [
1085
+ "security",
1086
+ "api-keys",
1087
+ "rotation"
1088
+ ],
1089
+ "schedule": "0 8 * * *",
1090
+ "timezone": "UTC",
1091
+ "runner": "shell",
1092
+ "modes": [
1093
+ "script"
1094
+ ],
1095
+ "compatible_agents": [
1096
+ "generic",
1097
+ "claude",
1098
+ "codex"
1099
+ ],
1100
+ "path": "jobs/security/expiring-api-key-rotation.yaml"
1101
+ },
1102
+ {
1103
+ "id": "failed-login-watch",
1104
+ "version": 1,
1105
+ "name": "Failed Login Watch",
1106
+ "description": "Watches an auth log for a burst of failed login attempts and alerts if it crosses a threshold. Use this if you run a server exposed to SSH and want an early warning for brute-force attempts.",
1107
+ "category": "security",
1108
+ "tags": [
1109
+ "security",
1110
+ "auth",
1111
+ "monitoring"
1112
+ ],
1113
+ "schedule": "*/15 * * * *",
1114
+ "timezone": "UTC",
1115
+ "runner": "shell",
1116
+ "modes": [
1117
+ "script"
1118
+ ],
1119
+ "compatible_agents": [
1120
+ "generic",
1121
+ "claude",
1122
+ "codex"
1123
+ ],
1124
+ "path": "jobs/security/failed-login-watch.yaml"
1125
+ },
1126
+ {
1127
+ "id": "feature-flag-staleness-audit",
1128
+ "version": 1,
1129
+ "name": "Feature Flag Staleness Audit",
1130
+ "description": "Flags feature flags that have been at 100% (or 0%) rollout for a long time and never cleaned up. Use this if your flag list has become a graveyard of decisions nobody removed the scaffolding for.",
1131
+ "category": "devops",
1132
+ "tags": [
1133
+ "feature-flags",
1134
+ "cleanup",
1135
+ "tech-debt"
1136
+ ],
1137
+ "schedule": "0 9 * * 1",
1138
+ "timezone": "UTC",
1139
+ "runner": "agent-prompt",
1140
+ "modes": [
1141
+ "agent-prompt"
1142
+ ],
1143
+ "compatible_agents": [
1144
+ "claude",
1145
+ "codex",
1146
+ "hermes",
1147
+ "openclaw",
1148
+ "generic"
1149
+ ],
1150
+ "path": "jobs/devops/feature-flag-staleness-audit.yaml"
1151
+ },
1152
+ {
1153
+ "id": "firewall-rule-diff",
1154
+ "version": 1,
1155
+ "name": "Firewall Rule Diff",
1156
+ "description": "Diffs your current firewall rules against a saved baseline and flags any drift. Use this if a firewall rule has ever changed without anyone remembering who did it or why.",
1157
+ "category": "security",
1158
+ "tags": [
1159
+ "security",
1160
+ "firewall",
1161
+ "drift"
1162
+ ],
1163
+ "schedule": "0 6 * * *",
1164
+ "timezone": "UTC",
1165
+ "runner": "shell",
1166
+ "modes": [
1167
+ "script"
1168
+ ],
1169
+ "compatible_agents": [
1170
+ "generic",
1171
+ "claude",
1172
+ "codex"
1173
+ ],
1174
+ "path": "jobs/security/firewall-rule-diff.yaml"
1175
+ },
1176
+ {
1177
+ "id": "flight-checkin-reminder",
1178
+ "version": 1,
1179
+ "name": "Flight Check-in Reminder",
1180
+ "description": "Reminds you when online check-in opens for an upcoming flight. Use this if you've ever missed the good seats because check-in opened while you were asleep.",
1181
+ "category": "travel",
1182
+ "tags": [
1183
+ "travel",
1184
+ "flight",
1185
+ "reminder"
1186
+ ],
1187
+ "schedule": "0 * * * *",
1188
+ "timezone": "UTC",
1189
+ "runner": "shell",
1190
+ "modes": [
1191
+ "script"
1192
+ ],
1193
+ "compatible_agents": [
1194
+ "generic",
1195
+ "claude",
1196
+ "codex"
1197
+ ],
1198
+ "path": "jobs/travel/flight-checkin-reminder.yaml"
1199
+ },
1200
+ {
1201
+ "id": "focus-block-reminder",
1202
+ "version": 1,
1203
+ "name": "Focus Block Reminder",
1204
+ "description": "Nudges you to start a deep-work block at set times. Use this if your day fills up with reactive work and real focus time only happens by accident.",
1205
+ "category": "productivity",
1206
+ "tags": [
1207
+ "focus",
1208
+ "productivity",
1209
+ "deep-work"
1210
+ ],
1211
+ "schedule": "0 9,14 * * 1-5",
1212
+ "timezone": "America/Los_Angeles",
1213
+ "runner": "shell",
1214
+ "modes": [
1215
+ "script"
1216
+ ],
1217
+ "compatible_agents": [
1218
+ "generic",
1219
+ "claude",
1220
+ "codex"
1221
+ ],
1222
+ "path": "jobs/productivity/focus-block-reminder.yaml"
1223
+ },
1224
+ {
1225
+ "id": "food-safety-temp-log-check",
1226
+ "version": 1,
1227
+ "name": "Food Safety Temperature Log Check",
1228
+ "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.",
1229
+ "category": "hospitality",
1230
+ "tags": [
1231
+ "hospitality",
1232
+ "food-safety",
1233
+ "compliance"
1234
+ ],
1235
+ "schedule": "0 */4 * * *",
1236
+ "timezone": "UTC",
1237
+ "runner": "shell",
1238
+ "modes": [
1239
+ "script"
1240
+ ],
1241
+ "compatible_agents": [
1242
+ "generic",
1243
+ "claude",
1244
+ "codex"
1245
+ ],
1246
+ "path": "jobs/hospitality/food-safety-temp-log-check.yaml"
1247
+ },
1248
+ {
1249
+ "id": "frequent-flyer-miles-expiry",
1250
+ "version": 1,
1251
+ "name": "Frequent Flyer Miles Expiry Check",
1252
+ "description": "Warns you before frequent flyer miles or points expire from inactivity. Use this if you've ever lost a stash of miles just because you didn't fly or transact on the account in time.",
1253
+ "category": "travel",
1254
+ "tags": [
1255
+ "travel",
1256
+ "miles",
1257
+ "points",
1258
+ "loyalty"
1259
+ ],
1260
+ "schedule": "0 9 1 * *",
1261
+ "timezone": "UTC",
1262
+ "runner": "shell",
1263
+ "modes": [
1264
+ "script"
1265
+ ],
1266
+ "compatible_agents": [
1267
+ "generic",
1268
+ "claude",
1269
+ "codex"
1270
+ ],
1271
+ "path": "jobs/travel/frequent-flyer-miles-expiry.yaml"
1272
+ },
1273
+ {
1274
+ "id": "fuel-card-anomaly-check",
1275
+ "version": 1,
1276
+ "name": "Fuel Card Anomaly Check",
1277
+ "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.",
1278
+ "category": "fleet",
1279
+ "tags": [
1280
+ "fleet",
1281
+ "fuel-card",
1282
+ "fraud"
1283
+ ],
1284
+ "schedule": "0 7 * * *",
1285
+ "timezone": "UTC",
1286
+ "runner": "agent-prompt",
1287
+ "modes": [
1288
+ "agent-prompt"
1289
+ ],
1290
+ "compatible_agents": [
1291
+ "claude",
1292
+ "codex",
1293
+ "hermes",
1294
+ "openclaw",
1295
+ "generic"
1296
+ ],
1297
+ "path": "jobs/fleet/fuel-card-anomaly-check.yaml"
1298
+ },
1299
+ {
1300
+ "id": "fx-rate-watch",
1301
+ "version": 1,
1302
+ "name": "FX Rate Watch",
1303
+ "description": "Checks a currency pair's exchange rate and alerts when it crosses a threshold you set. Use this if you're timing a transfer, payment, or purchase around a favorable rate and don't want to check manually every day.",
1304
+ "category": "finance",
1305
+ "tags": [
1306
+ "finance",
1307
+ "currency",
1308
+ "fx"
1309
+ ],
1310
+ "schedule": "0 8 * * *",
1311
+ "timezone": "UTC",
1312
+ "runner": "shell",
1313
+ "modes": [
1314
+ "script"
1315
+ ],
1316
+ "compatible_agents": [
1317
+ "generic",
1318
+ "claude",
1319
+ "codex"
1320
+ ],
1321
+ "path": "jobs/finance/fx-rate-watch.yaml"
1322
+ },
1323
+ {
1324
+ "id": "grant-deadline-reminder",
1325
+ "version": 1,
1326
+ "name": "Grant Deadline Reminder",
1327
+ "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.",
1328
+ "category": "nonprofit",
1329
+ "tags": [
1330
+ "nonprofit",
1331
+ "grants",
1332
+ "fundraising"
1333
+ ],
1334
+ "schedule": "0 9 * * 1",
1335
+ "timezone": "UTC",
1336
+ "runner": "hybrid",
1337
+ "modes": [
1338
+ "script",
1339
+ "agent-prompt"
1340
+ ],
1341
+ "compatible_agents": [
1342
+ "claude",
1343
+ "codex",
1344
+ "hermes",
1345
+ "openclaw",
1346
+ "generic"
1347
+ ],
1348
+ "path": "jobs/nonprofit/grant-deadline-reminder.yaml"
1349
+ },
1350
+ {
1351
+ "id": "habit-checkin",
1352
+ "version": 1,
1353
+ "name": "Daily Habit Check-in",
1354
+ "description": "Reminds you to log a habit each day and reports your current streak. Use this if you're trying to build a habit and want a daily nudge plus a running streak count without a separate app.",
1355
+ "category": "personal",
1356
+ "tags": [
1357
+ "habit",
1358
+ "streak",
1359
+ "reminder"
1360
+ ],
1361
+ "schedule": "0 20 * * *",
1362
+ "timezone": "America/Los_Angeles",
1363
+ "runner": "shell",
1364
+ "modes": [
1365
+ "script"
1366
+ ],
1367
+ "compatible_agents": [
1368
+ "generic",
1369
+ "claude",
1370
+ "codex"
1371
+ ],
1372
+ "path": "jobs/personal/habit-checkin.yaml"
1373
+ },
1374
+ {
1375
+ "id": "hreflang-audit",
1376
+ "version": 1,
1377
+ "name": "Hreflang Audit",
1378
+ "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.",
1379
+ "category": "content",
1380
+ "tags": [
1381
+ "seo",
1382
+ "hreflang",
1383
+ "international"
1384
+ ],
1385
+ "schedule": "0 7 * * 1",
1386
+ "timezone": "UTC",
1387
+ "runner": "shell",
1388
+ "modes": [
1389
+ "script"
1390
+ ],
1391
+ "compatible_agents": [
1392
+ "generic",
1393
+ "claude",
1394
+ "codex"
1395
+ ],
1396
+ "path": "jobs/content/hreflang-audit.yaml"
1397
+ },
1398
+ {
1399
+ "id": "hvac-filter-reminder",
1400
+ "version": 1,
1401
+ "name": "HVAC Filter Change Reminder",
1402
+ "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.",
1403
+ "category": "home",
1404
+ "tags": [
1405
+ "home",
1406
+ "hvac",
1407
+ "maintenance"
1408
+ ],
1409
+ "schedule": "0 9 1 * *",
1410
+ "timezone": "America/Los_Angeles",
1411
+ "runner": "shell",
1412
+ "modes": [
1413
+ "script"
1414
+ ],
1415
+ "compatible_agents": [
1416
+ "generic",
1417
+ "claude",
1418
+ "codex"
1419
+ ],
1420
+ "path": "jobs/home/hvac-filter-reminder.yaml"
1421
+ },
1422
+ {
1423
+ "id": "iam-key-rotation-reminder",
1424
+ "version": 1,
1425
+ "name": "IAM Key Rotation Reminder",
1426
+ "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.",
1427
+ "category": "security",
1428
+ "tags": [
1429
+ "security",
1430
+ "iam",
1431
+ "aws",
1432
+ "rotation"
1433
+ ],
1434
+ "schedule": "0 8 1 * *",
1435
+ "timezone": "UTC",
1436
+ "runner": "shell",
1437
+ "modes": [
1438
+ "script"
1439
+ ],
1440
+ "compatible_agents": [
1441
+ "generic",
1442
+ "claude",
1443
+ "codex"
1444
+ ],
1445
+ "path": "jobs/security/iam-key-rotation-reminder.yaml"
1446
+ },
1447
+ {
1448
+ "id": "image-alt-text-audit",
1449
+ "version": 1,
1450
+ "name": "Image Alt Text Audit",
1451
+ "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.",
1452
+ "category": "content",
1453
+ "tags": [
1454
+ "seo",
1455
+ "accessibility",
1456
+ "images"
1457
+ ],
1458
+ "schedule": "0 7 * * 1",
1459
+ "timezone": "UTC",
1460
+ "runner": "shell",
1461
+ "modes": [
1462
+ "script"
1463
+ ],
1464
+ "compatible_agents": [
1465
+ "generic",
1466
+ "claude",
1467
+ "codex"
1468
+ ],
1469
+ "path": "jobs/content/image-alt-text-audit.yaml"
1470
+ },
1471
+ {
1472
+ "id": "inbox-triage",
1473
+ "version": 1,
1474
+ "name": "Inbox Triage",
1475
+ "description": "Sorts your unread messages into \"needs a reply today\" vs. \"just FYI\" vs. \"spam,\" and drafts quick replies for the easy ones — it never sends anything without you approving it first. Use this if your inbox piles up and you want a head start each morning.",
1476
+ "category": "productivity",
1477
+ "tags": [
1478
+ "email",
1479
+ "triage",
1480
+ "daily"
1481
+ ],
1482
+ "schedule": "0 7,13 * * 1-5",
1483
+ "timezone": "America/Los_Angeles",
1484
+ "runner": "agent-prompt",
1485
+ "modes": [
1486
+ "agent-prompt"
1487
+ ],
1488
+ "compatible_agents": [
1489
+ "claude",
1490
+ "codex",
1491
+ "hermes",
1492
+ "openclaw",
1493
+ "generic"
1494
+ ],
1495
+ "path": "jobs/productivity/inbox-triage.yaml"
1496
+ },
1497
+ {
1498
+ "id": "inspection-deadline-reminder",
1499
+ "version": 1,
1500
+ "name": "Inspection Deadline Reminder",
1501
+ "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.",
1502
+ "category": "construction",
1503
+ "tags": [
1504
+ "construction",
1505
+ "inspection",
1506
+ "scheduling"
1507
+ ],
1508
+ "schedule": "0 7 * * *",
1509
+ "timezone": "UTC",
1510
+ "runner": "shell",
1511
+ "modes": [
1512
+ "script"
1513
+ ],
1514
+ "compatible_agents": [
1515
+ "generic",
1516
+ "claude",
1517
+ "codex"
1518
+ ],
1519
+ "path": "jobs/construction/inspection-deadline-reminder.yaml"
1520
+ },
1521
+ {
1522
+ "id": "inventory-count-discrepancy-check",
1523
+ "version": 1,
1524
+ "name": "Inventory Count Discrepancy Check",
1525
+ "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.",
1526
+ "category": "inventory",
1527
+ "tags": [
1528
+ "inventory",
1529
+ "audit",
1530
+ "discrepancy"
1531
+ ],
1532
+ "schedule": "0 9 1 * *",
1533
+ "timezone": "UTC",
1534
+ "runner": "agent-prompt",
1535
+ "modes": [
1536
+ "agent-prompt"
1537
+ ],
1538
+ "compatible_agents": [
1539
+ "claude",
1540
+ "codex",
1541
+ "hermes",
1542
+ "openclaw",
1543
+ "generic"
1544
+ ],
1545
+ "path": "jobs/inventory/inventory-count-discrepancy-check.yaml"
1546
+ },
1547
+ {
1548
+ "id": "invoice-overdue-check",
1549
+ "version": 1,
1550
+ "name": "Invoice Overdue Check",
1551
+ "description": "Flags invoices that are past due and still unpaid. Use this if you freelance or run a small business and invoices have ever slipped through the cracks.",
1552
+ "category": "finance",
1553
+ "tags": [
1554
+ "invoices",
1555
+ "accounts-receivable",
1556
+ "finance"
1557
+ ],
1558
+ "schedule": "0 9 * * *",
1559
+ "timezone": "UTC",
1560
+ "runner": "shell",
1561
+ "modes": [
1562
+ "script"
1563
+ ],
1564
+ "compatible_agents": [
1565
+ "generic",
1566
+ "claude",
1567
+ "codex"
1568
+ ],
1569
+ "path": "jobs/finance/invoice-overdue-check.yaml"
1570
+ },
1571
+ {
1572
+ "id": "k8s-pod-restart-watch",
1573
+ "version": 1,
1574
+ "name": "Kubernetes Pod Restart Watch",
1575
+ "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.",
1576
+ "category": "devops",
1577
+ "tags": [
1578
+ "kubernetes",
1579
+ "pods",
1580
+ "monitoring"
1581
+ ],
1582
+ "schedule": "*/15 * * * *",
1583
+ "timezone": "UTC",
1584
+ "runner": "shell",
1585
+ "modes": [
1586
+ "script"
1587
+ ],
1588
+ "compatible_agents": [
1589
+ "generic",
1590
+ "claude",
1591
+ "codex"
1592
+ ],
1593
+ "path": "jobs/devops/k8s-pod-restart-watch.yaml"
1594
+ },
1595
+ {
1596
+ "id": "lapsed-donor-check",
1597
+ "version": 1,
1598
+ "name": "Lapsed Donor Check",
1599
+ "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.",
1600
+ "category": "nonprofit",
1601
+ "tags": [
1602
+ "nonprofit",
1603
+ "donors",
1604
+ "fundraising"
1605
+ ],
1606
+ "schedule": "0 9 1 * *",
1607
+ "timezone": "UTC",
1608
+ "runner": "shell",
1609
+ "modes": [
1610
+ "script"
1611
+ ],
1612
+ "compatible_agents": [
1613
+ "generic",
1614
+ "claude",
1615
+ "codex"
1616
+ ],
1617
+ "path": "jobs/nonprofit/lapsed-donor-check.yaml"
1618
+ },
1619
+ {
1620
+ "id": "lead-response-time-check",
1621
+ "version": 1,
1622
+ "name": "Lead Response Time Check",
1623
+ "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.",
1624
+ "category": "sales",
1625
+ "tags": [
1626
+ "sales",
1627
+ "leads",
1628
+ "response-time"
1629
+ ],
1630
+ "schedule": "*/30 * * * *",
1631
+ "timezone": "UTC",
1632
+ "runner": "shell",
1633
+ "modes": [
1634
+ "script"
1635
+ ],
1636
+ "compatible_agents": [
1637
+ "generic",
1638
+ "claude",
1639
+ "codex"
1640
+ ],
1641
+ "path": "jobs/sales/lead-response-time-check.yaml"
1642
+ },
1643
+ {
1644
+ "id": "lease-expiry-reminder",
1645
+ "version": 1,
1646
+ "name": "Lease Expiry Reminder",
1647
+ "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.",
1648
+ "category": "realestate",
1649
+ "tags": [
1650
+ "realestate",
1651
+ "lease",
1652
+ "reminder"
1653
+ ],
1654
+ "schedule": "0 9 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/realestate/lease-expiry-reminder.yaml"
1666
+ },
1667
+ {
1668
+ "id": "license-compliance-check",
1669
+ "version": 1,
1670
+ "name": "Dependency License Compliance Check",
1671
+ "description": "Scans your dependencies for licenses you've flagged as risky (like GPL or AGPL). Use this if you've ever shipped something and only later found out a dependency's license doesn't play well with your product.",
1672
+ "category": "devops",
1673
+ "tags": [
1674
+ "license",
1675
+ "compliance",
1676
+ "dependencies"
1677
+ ],
1678
+ "schedule": "0 8 * * 1",
1679
+ "timezone": "UTC",
1680
+ "runner": "shell",
1681
+ "modes": [
1682
+ "script"
1683
+ ],
1684
+ "compatible_agents": [
1685
+ "generic",
1686
+ "claude",
1687
+ "codex"
1688
+ ],
1689
+ "path": "jobs/devops/license-compliance-check.yaml"
1690
+ },
1691
+ {
1692
+ "id": "log-cleanup",
1693
+ "version": 1,
1694
+ "name": "Old Log File Cleanup",
1695
+ "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.",
1696
+ "category": "devops",
1697
+ "tags": [
1698
+ "housekeeping",
1699
+ "disk-space"
1700
+ ],
1701
+ "schedule": "30 3 * * *",
1702
+ "timezone": "UTC",
1703
+ "runner": "shell",
1704
+ "modes": [
1705
+ "script"
1706
+ ],
1707
+ "compatible_agents": [
1708
+ "generic",
1709
+ "claude",
1710
+ "codex"
1711
+ ],
1712
+ "path": "jobs/devops/log-cleanup.yaml"
1713
+ },
1714
+ {
1715
+ "id": "log-forwarding-health-check",
1716
+ "version": 1,
1717
+ "name": "Log Forwarding Health Check",
1718
+ "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.",
1719
+ "category": "devops",
1720
+ "tags": [
1721
+ "logging",
389
1722
  "monitoring",
390
- "drift"
1723
+ "observability"
1724
+ ],
1725
+ "schedule": "*/30 * * * *",
1726
+ "timezone": "UTC",
1727
+ "runner": "shell",
1728
+ "modes": [
1729
+ "script"
1730
+ ],
1731
+ "compatible_agents": [
1732
+ "generic",
1733
+ "claude",
1734
+ "codex"
1735
+ ],
1736
+ "path": "jobs/devops/log-forwarding-health-check.yaml"
1737
+ },
1738
+ {
1739
+ "id": "low-stock-alert",
1740
+ "version": 1,
1741
+ "name": "Low Stock Alert",
1742
+ "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.",
1743
+ "category": "inventory",
1744
+ "tags": [
1745
+ "inventory",
1746
+ "stock",
1747
+ "ecommerce"
1748
+ ],
1749
+ "schedule": "0 7 * * *",
1750
+ "timezone": "UTC",
1751
+ "runner": "shell",
1752
+ "modes": [
1753
+ "script"
1754
+ ],
1755
+ "compatible_agents": [
1756
+ "generic",
1757
+ "claude",
1758
+ "codex"
1759
+ ],
1760
+ "path": "jobs/inventory/low-stock-alert.yaml"
1761
+ },
1762
+ {
1763
+ "id": "meal-plan-reminder",
1764
+ "version": 1,
1765
+ "name": "Weekly Meal Plan Reminder",
1766
+ "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.",
1767
+ "category": "personal",
1768
+ "tags": [
1769
+ "meals",
1770
+ "planning",
1771
+ "household"
1772
+ ],
1773
+ "schedule": "0 9 * * 0",
1774
+ "timezone": "America/Los_Angeles",
1775
+ "runner": "hybrid",
1776
+ "modes": [
1777
+ "script",
1778
+ "agent-prompt"
1779
+ ],
1780
+ "compatible_agents": [
1781
+ "claude",
1782
+ "codex",
1783
+ "hermes",
1784
+ "openclaw",
1785
+ "generic"
1786
+ ],
1787
+ "path": "jobs/personal/meal-plan-reminder.yaml"
1788
+ },
1789
+ {
1790
+ "id": "medication-refill-reminder",
1791
+ "version": 1,
1792
+ "name": "Medication Refill Reminder",
1793
+ "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.",
1794
+ "category": "personal",
1795
+ "tags": [
1796
+ "health",
1797
+ "medication",
1798
+ "reminder"
1799
+ ],
1800
+ "schedule": "0 9 * * *",
1801
+ "timezone": "America/Los_Angeles",
1802
+ "runner": "shell",
1803
+ "modes": [
1804
+ "script"
1805
+ ],
1806
+ "compatible_agents": [
1807
+ "generic",
1808
+ "claude",
1809
+ "codex"
1810
+ ],
1811
+ "path": "jobs/personal/medication-refill-reminder.yaml"
1812
+ },
1813
+ {
1814
+ "id": "net-worth-snapshot",
1815
+ "version": 1,
1816
+ "name": "Net Worth Snapshot Reminder",
1817
+ "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.",
1818
+ "category": "finance",
1819
+ "tags": [
1820
+ "finance",
1821
+ "net-worth",
1822
+ "tracking"
1823
+ ],
1824
+ "schedule": "0 9 1 * *",
1825
+ "timezone": "UTC",
1826
+ "runner": "shell",
1827
+ "modes": [
1828
+ "script"
1829
+ ],
1830
+ "compatible_agents": [
1831
+ "generic",
1832
+ "claude",
1833
+ "codex"
1834
+ ],
1835
+ "path": "jobs/finance/net-worth-snapshot.yaml"
1836
+ },
1837
+ {
1838
+ "id": "oncall-handoff-reminder",
1839
+ "version": 1,
1840
+ "name": "On-call Handoff Reminder",
1841
+ "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.",
1842
+ "category": "team",
1843
+ "tags": [
1844
+ "oncall",
1845
+ "handoff",
1846
+ "team"
1847
+ ],
1848
+ "schedule": "0 9 * * 1",
1849
+ "timezone": "America/Los_Angeles",
1850
+ "runner": "shell",
1851
+ "modes": [
1852
+ "script"
1853
+ ],
1854
+ "compatible_agents": [
1855
+ "generic",
1856
+ "claude",
1857
+ "codex"
1858
+ ],
1859
+ "path": "jobs/team/oncall-handoff-reminder.yaml"
1860
+ },
1861
+ {
1862
+ "id": "open-port-check",
1863
+ "version": 1,
1864
+ "name": "Expected Open Ports Check",
1865
+ "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.",
1866
+ "category": "security",
1867
+ "tags": [
1868
+ "security",
1869
+ "network",
1870
+ "ports"
1871
+ ],
1872
+ "schedule": "0 */4 * * *",
1873
+ "timezone": "UTC",
1874
+ "runner": "shell",
1875
+ "modes": [
1876
+ "script"
1877
+ ],
1878
+ "compatible_agents": [
1879
+ "generic",
1880
+ "claude",
1881
+ "codex"
1882
+ ],
1883
+ "path": "jobs/security/open-port-check.yaml"
1884
+ },
1885
+ {
1886
+ "id": "open-req-aging-check",
1887
+ "version": 1,
1888
+ "name": "Open Req Aging Check",
1889
+ "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.",
1890
+ "category": "hiring",
1891
+ "tags": [
1892
+ "hiring",
1893
+ "recruiting",
1894
+ "requisitions"
1895
+ ],
1896
+ "schedule": "0 9 * * 1",
1897
+ "timezone": "UTC",
1898
+ "runner": "agent-prompt",
1899
+ "modes": [
1900
+ "agent-prompt"
1901
+ ],
1902
+ "compatible_agents": [
1903
+ "claude",
1904
+ "codex",
1905
+ "hermes",
1906
+ "openclaw",
1907
+ "generic"
1908
+ ],
1909
+ "path": "jobs/hiring/open-req-aging-check.yaml"
1910
+ },
1911
+ {
1912
+ "id": "orphaned-branch-cleanup",
1913
+ "version": 1,
1914
+ "name": "Orphaned Branch Cleanup",
1915
+ "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.",
1916
+ "category": "devops",
1917
+ "tags": [
1918
+ "git",
1919
+ "cleanup",
1920
+ "branches"
1921
+ ],
1922
+ "schedule": "0 9 * * 1",
1923
+ "timezone": "UTC",
1924
+ "runner": "shell",
1925
+ "modes": [
1926
+ "script"
1927
+ ],
1928
+ "compatible_agents": [
1929
+ "generic",
1930
+ "claude",
1931
+ "codex"
1932
+ ],
1933
+ "path": "jobs/devops/orphaned-branch-cleanup.yaml"
1934
+ },
1935
+ {
1936
+ "id": "page-speed-regression-watch",
1937
+ "version": 1,
1938
+ "name": "Page Speed Regression Watch",
1939
+ "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.",
1940
+ "category": "content",
1941
+ "tags": [
1942
+ "performance",
1943
+ "seo",
1944
+ "monitoring"
1945
+ ],
1946
+ "schedule": "0 6 * * *",
1947
+ "timezone": "UTC",
1948
+ "runner": "shell",
1949
+ "modes": [
1950
+ "script"
1951
+ ],
1952
+ "compatible_agents": [
1953
+ "generic",
1954
+ "claude",
1955
+ "codex"
1956
+ ],
1957
+ "path": "jobs/content/page-speed-regression-watch.yaml"
1958
+ },
1959
+ {
1960
+ "id": "passport-expiry-check",
1961
+ "version": 1,
1962
+ "name": "Passport Expiry Check",
1963
+ "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.",
1964
+ "category": "travel",
1965
+ "tags": [
1966
+ "travel",
1967
+ "passport",
1968
+ "documents"
1969
+ ],
1970
+ "schedule": "0 9 1 * *",
1971
+ "timezone": "UTC",
1972
+ "runner": "shell",
1973
+ "modes": [
1974
+ "script"
1975
+ ],
1976
+ "compatible_agents": [
1977
+ "generic",
1978
+ "claude",
1979
+ "codex"
1980
+ ],
1981
+ "path": "jobs/travel/passport-expiry-check.yaml"
1982
+ },
1983
+ {
1984
+ "id": "payroll-run-reminder",
1985
+ "version": 1,
1986
+ "name": "Payroll Run Reminder",
1987
+ "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.",
1988
+ "category": "finance",
1989
+ "tags": [
1990
+ "finance",
1991
+ "payroll",
1992
+ "deadlines"
1993
+ ],
1994
+ "schedule": "0 9 * * *",
1995
+ "timezone": "UTC",
1996
+ "runner": "shell",
1997
+ "modes": [
1998
+ "script"
1999
+ ],
2000
+ "compatible_agents": [
2001
+ "generic",
2002
+ "claude",
2003
+ "codex"
2004
+ ],
2005
+ "path": "jobs/finance/payroll-run-reminder.yaml"
2006
+ },
2007
+ {
2008
+ "id": "permit-expiry-check",
2009
+ "version": 1,
2010
+ "name": "Building Permit Expiry Check",
2011
+ "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.",
2012
+ "category": "construction",
2013
+ "tags": [
2014
+ "construction",
2015
+ "permits",
2016
+ "compliance"
2017
+ ],
2018
+ "schedule": "0 8 * * 1",
2019
+ "timezone": "UTC",
2020
+ "runner": "shell",
2021
+ "modes": [
2022
+ "script"
2023
+ ],
2024
+ "compatible_agents": [
2025
+ "generic",
2026
+ "claude",
2027
+ "codex"
2028
+ ],
2029
+ "path": "jobs/construction/permit-expiry-check.yaml"
2030
+ },
2031
+ {
2032
+ "id": "plant-watering-reminder",
2033
+ "version": 1,
2034
+ "name": "Plant Watering Reminder",
2035
+ "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.\"",
2036
+ "category": "home",
2037
+ "tags": [
2038
+ "home",
2039
+ "plants",
2040
+ "reminder"
2041
+ ],
2042
+ "schedule": "0 9 * * *",
2043
+ "timezone": "America/Los_Angeles",
2044
+ "runner": "shell",
2045
+ "modes": [
2046
+ "script"
2047
+ ],
2048
+ "compatible_agents": [
2049
+ "generic",
2050
+ "claude",
2051
+ "codex"
2052
+ ],
2053
+ "path": "jobs/home/plant-watering-reminder.yaml"
2054
+ },
2055
+ {
2056
+ "id": "portfolio-rebalance-check",
2057
+ "version": 1,
2058
+ "name": "Portfolio Rebalance Check",
2059
+ "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.",
2060
+ "category": "investing",
2061
+ "tags": [
2062
+ "investing",
2063
+ "portfolio",
2064
+ "rebalancing"
2065
+ ],
2066
+ "schedule": "0 9 1 * *",
2067
+ "timezone": "UTC",
2068
+ "runner": "agent-prompt",
2069
+ "modes": [
2070
+ "agent-prompt"
2071
+ ],
2072
+ "compatible_agents": [
2073
+ "claude",
2074
+ "codex",
2075
+ "hermes",
2076
+ "openclaw",
2077
+ "generic"
2078
+ ],
2079
+ "path": "jobs/investing/portfolio-rebalance-check.yaml"
2080
+ },
2081
+ {
2082
+ "id": "production-line-downtime-watch",
2083
+ "version": 1,
2084
+ "name": "Production Line Downtime Watch",
2085
+ "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.",
2086
+ "category": "manufacturing",
2087
+ "tags": [
2088
+ "manufacturing",
2089
+ "downtime",
2090
+ "production"
2091
+ ],
2092
+ "schedule": "*/15 * * * *",
2093
+ "timezone": "UTC",
2094
+ "runner": "shell",
2095
+ "modes": [
2096
+ "script"
2097
+ ],
2098
+ "compatible_agents": [
2099
+ "generic",
2100
+ "claude",
2101
+ "codex"
2102
+ ],
2103
+ "path": "jobs/manufacturing/production-line-downtime-watch.yaml"
2104
+ },
2105
+ {
2106
+ "id": "pto-balance-check",
2107
+ "version": 1,
2108
+ "name": "PTO Balance Check",
2109
+ "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.",
2110
+ "category": "team",
2111
+ "tags": [
2112
+ "pto",
2113
+ "vacation",
2114
+ "team"
391
2115
  ],
392
- "schedule": "0 */6 * * *",
2116
+ "schedule": "0 9 1 * *",
2117
+ "timezone": "America/Los_Angeles",
2118
+ "runner": "shell",
2119
+ "modes": [
2120
+ "script"
2121
+ ],
2122
+ "compatible_agents": [
2123
+ "generic",
2124
+ "claude",
2125
+ "codex"
2126
+ ],
2127
+ "path": "jobs/team/pto-balance-check.yaml"
2128
+ },
2129
+ {
2130
+ "id": "quality-defect-rate-check",
2131
+ "version": 1,
2132
+ "name": "Quality Defect Rate Check",
2133
+ "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.",
2134
+ "category": "manufacturing",
2135
+ "tags": [
2136
+ "manufacturing",
2137
+ "quality",
2138
+ "defects"
2139
+ ],
2140
+ "schedule": "0 */4 * * *",
393
2141
  "timezone": "UTC",
394
2142
  "runner": "shell",
395
2143
  "modes": [
@@ -400,20 +2148,20 @@
400
2148
  "claude",
401
2149
  "codex"
402
2150
  ],
403
- "path": "jobs/devops/dns-record-check.yaml"
2151
+ "path": "jobs/manufacturing/quality-defect-rate-check.yaml"
404
2152
  },
405
2153
  {
406
- "id": "docker-image-prune",
2154
+ "id": "queue-depth-check",
407
2155
  "version": 1,
408
- "name": "Docker Image & Container Prune",
409
- "description": "Cleans up stopped containers and dangling Docker images so they don't quietly eat your disk. Use this if you run Docker locally or on a server and never remember to clean up after yourself.",
2156
+ "name": "Queue Depth Check",
2157
+ "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.",
410
2158
  "category": "devops",
411
2159
  "tags": [
412
- "docker",
413
- "cleanup",
414
- "disk-space"
2160
+ "queue",
2161
+ "redis",
2162
+ "monitoring"
415
2163
  ],
416
- "schedule": "0 4 * * *",
2164
+ "schedule": "*/10 * * * *",
417
2165
  "timezone": "UTC",
418
2166
  "runner": "shell",
419
2167
  "modes": [
@@ -424,18 +2172,117 @@
424
2172
  "claude",
425
2173
  "codex"
426
2174
  ],
427
- "path": "jobs/devops/docker-image-prune.yaml"
2175
+ "path": "jobs/devops/queue-depth-check.yaml"
428
2176
  },
429
2177
  {
430
- "id": "env-drift-check",
2178
+ "id": "reading-list-nudge",
431
2179
  "version": 1,
432
- "name": "Env File Drift Check",
433
- "description": "Compares your .env against .env.example and flags keys that are missing or extra. Use this if you've ever deployed and hit a crash because a new required env var never got set.",
2180
+ "name": "Reading List Nudge",
2181
+ "description": "Reminds you what's next on your reading list. Use this if you save articles/books to \"read later\" and later never comes.",
2182
+ "category": "learning",
2183
+ "tags": [
2184
+ "learning",
2185
+ "reading",
2186
+ "reminder"
2187
+ ],
2188
+ "schedule": "0 9 * * 6",
2189
+ "timezone": "America/Los_Angeles",
2190
+ "runner": "shell",
2191
+ "modes": [
2192
+ "script"
2193
+ ],
2194
+ "compatible_agents": [
2195
+ "generic",
2196
+ "claude",
2197
+ "codex"
2198
+ ],
2199
+ "path": "jobs/learning/reading-list-nudge.yaml"
2200
+ },
2201
+ {
2202
+ "id": "recurring-payment-failure-check",
2203
+ "version": 1,
2204
+ "name": "Recurring Payment Failure Check",
2205
+ "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.",
2206
+ "category": "finance",
2207
+ "tags": [
2208
+ "finance",
2209
+ "billing",
2210
+ "payments"
2211
+ ],
2212
+ "schedule": "0 */6 * * *",
2213
+ "timezone": "UTC",
2214
+ "runner": "shell",
2215
+ "modes": [
2216
+ "script"
2217
+ ],
2218
+ "compatible_agents": [
2219
+ "generic",
2220
+ "claude",
2221
+ "codex"
2222
+ ],
2223
+ "path": "jobs/finance/recurring-payment-failure-check.yaml"
2224
+ },
2225
+ {
2226
+ "id": "rental-vacancy-check",
2227
+ "version": 1,
2228
+ "name": "Rental Vacancy Check",
2229
+ "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.",
2230
+ "category": "realestate",
2231
+ "tags": [
2232
+ "realestate",
2233
+ "vacancy",
2234
+ "listings"
2235
+ ],
2236
+ "schedule": "0 9 * * 1",
2237
+ "timezone": "UTC",
2238
+ "runner": "shell",
2239
+ "modes": [
2240
+ "script"
2241
+ ],
2242
+ "compatible_agents": [
2243
+ "generic",
2244
+ "claude",
2245
+ "codex"
2246
+ ],
2247
+ "path": "jobs/realestate/rental-vacancy-check.yaml"
2248
+ },
2249
+ {
2250
+ "id": "repo-health-check",
2251
+ "version": 1,
2252
+ "name": "Git Repo Health Check",
2253
+ "description": "Checks a git repo for branches nobody's touched in a while, uncommitted changes sitting around, and pull requests waiting on review, then reports a short digest. Use this if you want a daily nudge on repo hygiene without checking everything by hand.",
434
2254
  "category": "devops",
435
2255
  "tags": [
436
- "config",
437
- "env",
438
- "drift"
2256
+ "git",
2257
+ "ci",
2258
+ "maintenance"
2259
+ ],
2260
+ "schedule": "0 9 * * 1-5",
2261
+ "timezone": "UTC",
2262
+ "runner": "hybrid",
2263
+ "modes": [
2264
+ "script",
2265
+ "agent-prompt"
2266
+ ],
2267
+ "compatible_agents": [
2268
+ "claude",
2269
+ "codex",
2270
+ "hermes",
2271
+ "openclaw",
2272
+ "generic"
2273
+ ],
2274
+ "path": "jobs/devops/repo-health-check.yaml"
2275
+ },
2276
+ {
2277
+ "id": "reservation-noshow-check",
2278
+ "version": 1,
2279
+ "name": "Reservation No-show Check",
2280
+ "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.",
2281
+ "category": "hospitality",
2282
+ "tags": [
2283
+ "hospitality",
2284
+ "reservations",
2285
+ "noshow"
439
2286
  ],
440
2287
  "schedule": "0 8 * * *",
441
2288
  "timezone": "UTC",
@@ -448,20 +2295,20 @@
448
2295
  "claude",
449
2296
  "codex"
450
2297
  ],
451
- "path": "jobs/devops/env-drift-check.yaml"
2298
+ "path": "jobs/hospitality/reservation-noshow-check.yaml"
452
2299
  },
453
2300
  {
454
- "id": "failed-login-watch",
2301
+ "id": "review-request-nudge",
455
2302
  "version": 1,
456
- "name": "Failed Login Watch",
457
- "description": "Watches an auth log for a burst of failed login attempts and alerts if it crosses a threshold. Use this if you run a server exposed to SSH and want an early warning for brute-force attempts.",
458
- "category": "security",
2303
+ "name": "Review Request Nudge",
2304
+ "description": "Flags customers who bought a while ago and haven't been asked for a review yet. Use this if review requests only happen when someone remembers to send them.",
2305
+ "category": "growth",
459
2306
  "tags": [
460
- "security",
461
- "auth",
462
- "monitoring"
2307
+ "growth",
2308
+ "reviews",
2309
+ "ecommerce"
463
2310
  ],
464
- "schedule": "*/15 * * * *",
2311
+ "schedule": "0 9 * * *",
465
2312
  "timezone": "UTC",
466
2313
  "runner": "shell",
467
2314
  "modes": [
@@ -472,20 +2319,20 @@
472
2319
  "claude",
473
2320
  "codex"
474
2321
  ],
475
- "path": "jobs/security/failed-login-watch.yaml"
2322
+ "path": "jobs/growth/review-request-nudge.yaml"
476
2323
  },
477
2324
  {
478
- "id": "firewall-rule-diff",
2325
+ "id": "robots-txt-check",
479
2326
  "version": 1,
480
- "name": "Firewall Rule Diff",
481
- "description": "Diffs your current firewall rules against a saved baseline and flags any drift. Use this if a firewall rule has ever changed without anyone remembering who did it or why.",
482
- "category": "security",
2327
+ "name": "Robots.txt Blanket-Block Check",
2328
+ "description": "Checks that your robots.txt hasn't accidentally blocked every crawler from your entire site. Use this if a robots.txt edit has ever accidentally tanked your search traffic.",
2329
+ "category": "content",
483
2330
  "tags": [
484
- "security",
485
- "firewall",
486
- "drift"
2331
+ "seo",
2332
+ "robots",
2333
+ "crawlability"
487
2334
  ],
488
- "schedule": "0 6 * * *",
2335
+ "schedule": "0 8 * * *",
489
2336
  "timezone": "UTC",
490
2337
  "runner": "shell",
491
2338
  "modes": [
@@ -496,20 +2343,20 @@
496
2343
  "claude",
497
2344
  "codex"
498
2345
  ],
499
- "path": "jobs/security/firewall-rule-diff.yaml"
2346
+ "path": "jobs/content/robots-txt-check.yaml"
500
2347
  },
501
2348
  {
502
- "id": "flight-checkin-reminder",
2349
+ "id": "rss-feed-validate",
503
2350
  "version": 1,
504
- "name": "Flight Check-in Reminder",
505
- "description": "Reminds you when online check-in opens for an upcoming flight. Use this if you've ever missed the good seats because check-in opened while you were asleep.",
506
- "category": "travel",
2351
+ "name": "RSS Feed Validation",
2352
+ "description": "Checks your RSS/Atom feed is valid XML and shows the most recent item's publish date. Use this if you've ever shipped a broken feed and only found out when a reader's app stopped updating.",
2353
+ "category": "content",
507
2354
  "tags": [
508
- "travel",
509
- "flight",
510
- "reminder"
2355
+ "rss",
2356
+ "feed",
2357
+ "content"
511
2358
  ],
512
- "schedule": "0 * * * *",
2359
+ "schedule": "0 8 * * *",
513
2360
  "timezone": "UTC",
514
2361
  "runner": "shell",
515
2362
  "modes": [
@@ -520,21 +2367,21 @@
520
2367
  "claude",
521
2368
  "codex"
522
2369
  ],
523
- "path": "jobs/travel/flight-checkin-reminder.yaml"
2370
+ "path": "jobs/content/rss-feed-validate.yaml"
524
2371
  },
525
2372
  {
526
- "id": "focus-block-reminder",
2373
+ "id": "rsvp-followup-reminder",
527
2374
  "version": 1,
528
- "name": "Focus Block Reminder",
529
- "description": "Nudges you to start a deep-work block at set times. Use this if your day fills up with reactive work and real focus time only happens by accident.",
530
- "category": "productivity",
2375
+ "name": "RSVP Follow-up Reminder",
2376
+ "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.",
2377
+ "category": "events",
531
2378
  "tags": [
532
- "focus",
533
- "productivity",
534
- "deep-work"
2379
+ "events",
2380
+ "rsvp",
2381
+ "planning"
535
2382
  ],
536
- "schedule": "0 9,14 * * 1-5",
537
- "timezone": "America/Los_Angeles",
2383
+ "schedule": "0 9 * * 1",
2384
+ "timezone": "UTC",
538
2385
  "runner": "shell",
539
2386
  "modes": [
540
2387
  "script"
@@ -544,45 +2391,97 @@
544
2391
  "claude",
545
2392
  "codex"
546
2393
  ],
547
- "path": "jobs/productivity/focus-block-reminder.yaml"
2394
+ "path": "jobs/events/rsvp-followup-reminder.yaml"
548
2395
  },
549
2396
  {
550
- "id": "habit-checkin",
2397
+ "id": "s3-public-bucket-check",
551
2398
  "version": 1,
552
- "name": "Daily Habit Check-in",
553
- "description": "Reminds you to log a habit each day and reports your current streak. Use this if you're trying to build a habit and want a daily nudge plus a running streak count without a separate app.",
2399
+ "name": "S3 Public Bucket Check",
2400
+ "description": "Checks your S3 buckets for public access and flags any that are exposed. Use this if a misconfigured bucket policy has ever quietly made private data public.",
2401
+ "category": "security",
2402
+ "tags": [
2403
+ "security",
2404
+ "s3",
2405
+ "aws",
2406
+ "exposure"
2407
+ ],
2408
+ "schedule": "0 6 * * *",
2409
+ "timezone": "UTC",
2410
+ "runner": "shell",
2411
+ "modes": [
2412
+ "script"
2413
+ ],
2414
+ "compatible_agents": [
2415
+ "generic",
2416
+ "claude",
2417
+ "codex"
2418
+ ],
2419
+ "path": "jobs/security/s3-public-bucket-check.yaml"
2420
+ },
2421
+ {
2422
+ "id": "saas-seat-audit",
2423
+ "version": 1,
2424
+ "name": "Team SaaS Seat Audit",
2425
+ "description": "Flags team SaaS seats (Slack, Notion, GitHub, etc.) nobody's actually used in a while. Use this if you suspect you're paying for seats of people who left or tools nobody opens anymore.",
2426
+ "category": "finance",
2427
+ "tags": [
2428
+ "saas",
2429
+ "seats",
2430
+ "team",
2431
+ "budget"
2432
+ ],
2433
+ "schedule": "0 9 1 * *",
2434
+ "timezone": "UTC",
2435
+ "runner": "shell",
2436
+ "modes": [
2437
+ "script"
2438
+ ],
2439
+ "compatible_agents": [
2440
+ "generic",
2441
+ "claude",
2442
+ "codex"
2443
+ ],
2444
+ "path": "jobs/finance/saas-seat-audit.yaml"
2445
+ },
2446
+ {
2447
+ "id": "screen-time-check",
2448
+ "version": 1,
2449
+ "name": "Screen Time Check",
2450
+ "description": "Checks today's screen time against a goal and tells you if you're over. Use this if you're trying to cut down on screen time but never actually look at the stats your phone/laptop already collects.",
554
2451
  "category": "personal",
555
2452
  "tags": [
556
- "habit",
557
- "streak",
558
- "reminder"
2453
+ "health",
2454
+ "screen-time",
2455
+ "wellbeing"
559
2456
  ],
560
2457
  "schedule": "0 20 * * *",
561
2458
  "timezone": "America/Los_Angeles",
562
- "runner": "shell",
2459
+ "runner": "agent-prompt",
563
2460
  "modes": [
564
- "script"
2461
+ "agent-prompt"
565
2462
  ],
566
2463
  "compatible_agents": [
567
- "generic",
568
2464
  "claude",
569
- "codex"
2465
+ "codex",
2466
+ "hermes",
2467
+ "openclaw",
2468
+ "generic"
570
2469
  ],
571
- "path": "jobs/personal/habit-checkin.yaml"
2470
+ "path": "jobs/personal/screen-time-check.yaml"
572
2471
  },
573
2472
  {
574
- "id": "hvac-filter-reminder",
2473
+ "id": "secrets-scan",
575
2474
  "version": 1,
576
- "name": "HVAC Filter Change Reminder",
577
- "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.",
578
- "category": "home",
2475
+ "name": "Committed Secrets Scan",
2476
+ "description": "Scans a repo for accidentally committed API keys, tokens, and private keys. Use this if you want a safety net for the \"oops, committed a key\" mistake everyone makes eventually.",
2477
+ "category": "security",
579
2478
  "tags": [
580
- "home",
581
- "hvac",
582
- "maintenance"
2479
+ "security",
2480
+ "secrets",
2481
+ "scanning"
583
2482
  ],
584
- "schedule": "0 9 1 * *",
585
- "timezone": "America/Los_Angeles",
2483
+ "schedule": "0 3 * * *",
2484
+ "timezone": "UTC",
586
2485
  "runner": "shell",
587
2486
  "modes": [
588
2487
  "script"
@@ -592,46 +2491,44 @@
592
2491
  "claude",
593
2492
  "codex"
594
2493
  ],
595
- "path": "jobs/home/hvac-filter-reminder.yaml"
2494
+ "path": "jobs/security/secrets-scan.yaml"
596
2495
  },
597
2496
  {
598
- "id": "inbox-triage",
2497
+ "id": "seo-meta-check",
599
2498
  "version": 1,
600
- "name": "Inbox Triage",
601
- "description": "Sorts your unread messages into \"needs a reply today\" vs. \"just FYI\" vs. \"spam,\" and drafts quick replies for the easy ones it never sends anything without you approving it first. Use this if your inbox piles up and you want a head start each morning.",
602
- "category": "productivity",
2499
+ "name": "SEO Meta Tag Check",
2500
+ "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.",
2501
+ "category": "content",
603
2502
  "tags": [
604
- "email",
605
- "triage",
606
- "daily"
2503
+ "seo",
2504
+ "content",
2505
+ "meta-tags"
607
2506
  ],
608
- "schedule": "0 7,13 * * 1-5",
609
- "timezone": "America/Los_Angeles",
610
- "runner": "agent-prompt",
2507
+ "schedule": "0 7 * * 1",
2508
+ "timezone": "UTC",
2509
+ "runner": "shell",
611
2510
  "modes": [
612
- "agent-prompt"
2511
+ "script"
613
2512
  ],
614
2513
  "compatible_agents": [
2514
+ "generic",
615
2515
  "claude",
616
- "codex",
617
- "hermes",
618
- "openclaw",
619
- "generic"
2516
+ "codex"
620
2517
  ],
621
- "path": "jobs/productivity/inbox-triage.yaml"
2518
+ "path": "jobs/content/seo-meta-check.yaml"
622
2519
  },
623
2520
  {
624
- "id": "invoice-overdue-check",
2521
+ "id": "shipment-delay-watch",
625
2522
  "version": 1,
626
- "name": "Invoice Overdue Check",
627
- "description": "Flags invoices that are past due and still unpaid. Use this if you freelance or run a small business and invoices have ever slipped through the cracks.",
628
- "category": "finance",
2523
+ "name": "Shipment Delay Watch",
2524
+ "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.",
2525
+ "category": "logistics",
629
2526
  "tags": [
630
- "invoices",
631
- "accounts-receivable",
632
- "finance"
2527
+ "logistics",
2528
+ "shipping",
2529
+ "tracking"
633
2530
  ],
634
- "schedule": "0 9 * * *",
2531
+ "schedule": "0 */6 * * *",
635
2532
  "timezone": "UTC",
636
2533
  "runner": "shell",
637
2534
  "modes": [
@@ -642,20 +2539,20 @@
642
2539
  "claude",
643
2540
  "codex"
644
2541
  ],
645
- "path": "jobs/finance/invoice-overdue-check.yaml"
2542
+ "path": "jobs/logistics/shipment-delay-watch.yaml"
646
2543
  },
647
2544
  {
648
- "id": "license-compliance-check",
2545
+ "id": "sitemap-freshness-check",
649
2546
  "version": 1,
650
- "name": "Dependency License Compliance Check",
651
- "description": "Scans your dependencies for licenses you've flagged as risky (like GPL or AGPL). Use this if you've ever shipped something and only later found out a dependency's license doesn't play well with your product.",
652
- "category": "devops",
2547
+ "name": "Sitemap Freshness Check",
2548
+ "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.",
2549
+ "category": "content",
653
2550
  "tags": [
654
- "license",
655
- "compliance",
656
- "dependencies"
2551
+ "seo",
2552
+ "sitemap",
2553
+ "freshness"
657
2554
  ],
658
- "schedule": "0 8 * * 1",
2555
+ "schedule": "0 7 * * *",
659
2556
  "timezone": "UTC",
660
2557
  "runner": "shell",
661
2558
  "modes": [
@@ -666,20 +2563,21 @@
666
2563
  "claude",
667
2564
  "codex"
668
2565
  ],
669
- "path": "jobs/devops/license-compliance-check.yaml"
2566
+ "path": "jobs/content/sitemap-freshness-check.yaml"
670
2567
  },
671
2568
  {
672
- "id": "log-cleanup",
2569
+ "id": "smoke-detector-battery-check",
673
2570
  "version": 1,
674
- "name": "Old Log File Cleanup",
675
- "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.",
676
- "category": "devops",
2571
+ "name": "Smoke Detector Battery Check Reminder",
2572
+ "description": "Reminds you to test/replace smoke detector batteries on a schedule. Use this if the only time you think about smoke detectors is when one starts chirping at 3am.",
2573
+ "category": "home",
677
2574
  "tags": [
678
- "housekeeping",
679
- "disk-space"
2575
+ "home",
2576
+ "safety",
2577
+ "maintenance"
680
2578
  ],
681
- "schedule": "30 3 * * *",
682
- "timezone": "UTC",
2579
+ "schedule": "0 9 1 * *",
2580
+ "timezone": "America/Los_Angeles",
683
2581
  "runner": "shell",
684
2582
  "modes": [
685
2583
  "script"
@@ -689,24 +2587,23 @@
689
2587
  "claude",
690
2588
  "codex"
691
2589
  ],
692
- "path": "jobs/devops/log-cleanup.yaml"
2590
+ "path": "jobs/home/smoke-detector-battery-check.yaml"
693
2591
  },
694
2592
  {
695
- "id": "meal-plan-reminder",
2593
+ "id": "social-mentions-watch",
696
2594
  "version": 1,
697
- "name": "Weekly Meal Plan Reminder",
698
- "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.",
699
- "category": "personal",
2595
+ "name": "Social Mentions Watch",
2596
+ "description": "Scans for recent mentions of your brand, product, or repo and summarizes them. Use this if you want to catch a complaint or bug report on social media before it turns into a bigger problem.",
2597
+ "category": "content",
700
2598
  "tags": [
701
- "meals",
702
- "planning",
703
- "household"
2599
+ "social",
2600
+ "mentions",
2601
+ "monitoring"
704
2602
  ],
705
- "schedule": "0 9 * * 0",
706
- "timezone": "America/Los_Angeles",
707
- "runner": "hybrid",
2603
+ "schedule": "0 9 * * *",
2604
+ "timezone": "UTC",
2605
+ "runner": "agent-prompt",
708
2606
  "modes": [
709
- "script",
710
2607
  "agent-prompt"
711
2608
  ],
712
2609
  "compatible_agents": [
@@ -716,20 +2613,20 @@
716
2613
  "openclaw",
717
2614
  "generic"
718
2615
  ],
719
- "path": "jobs/personal/meal-plan-reminder.yaml"
2616
+ "path": "jobs/content/social-mentions-watch.yaml"
720
2617
  },
721
2618
  {
722
- "id": "net-worth-snapshot",
2619
+ "id": "sponsor-deliverable-tracker",
723
2620
  "version": 1,
724
- "name": "Net Worth Snapshot Reminder",
725
- "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.",
726
- "category": "finance",
2621
+ "name": "Podcast Sponsor Deliverable Tracker",
2622
+ "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.",
2623
+ "category": "podcast",
727
2624
  "tags": [
728
- "finance",
729
- "net-worth",
730
- "tracking"
2625
+ "podcast",
2626
+ "sponsorship",
2627
+ "deliverables"
731
2628
  ],
732
- "schedule": "0 9 1 * *",
2629
+ "schedule": "0 9 * * 1",
733
2630
  "timezone": "UTC",
734
2631
  "runner": "shell",
735
2632
  "modes": [
@@ -740,20 +2637,21 @@
740
2637
  "claude",
741
2638
  "codex"
742
2639
  ],
743
- "path": "jobs/finance/net-worth-snapshot.yaml"
2640
+ "path": "jobs/podcast/sponsor-deliverable-tracker.yaml"
744
2641
  },
745
2642
  {
746
- "id": "open-port-check",
2643
+ "id": "ssl-cert-expiry-check",
747
2644
  "version": 1,
748
- "name": "Expected Open Ports Check",
749
- "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.",
750
- "category": "security",
2645
+ "name": "SSL Certificate Expiry Check",
2646
+ "description": "Checks how many days are left before a website's SSL certificate expires. Use this if you run a site and want a warning before the padlock breaks and visitors start seeing browser security errors.",
2647
+ "category": "devops",
751
2648
  "tags": [
2649
+ "ssl",
2650
+ "tls",
752
2651
  "security",
753
- "network",
754
- "ports"
2652
+ "uptime"
755
2653
  ],
756
- "schedule": "0 */4 * * *",
2654
+ "schedule": "0 6 * * *",
757
2655
  "timezone": "UTC",
758
2656
  "runner": "shell",
759
2657
  "modes": [
@@ -764,20 +2662,20 @@
764
2662
  "claude",
765
2663
  "codex"
766
2664
  ],
767
- "path": "jobs/security/open-port-check.yaml"
2665
+ "path": "jobs/devops/ssl-cert-expiry-check.yaml"
768
2666
  },
769
2667
  {
770
- "id": "orphaned-branch-cleanup",
2668
+ "id": "staging-prod-config-diff",
771
2669
  "version": 1,
772
- "name": "Orphaned Branch Cleanup",
773
- "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.",
2670
+ "name": "Staging vs Production Config Diff",
2671
+ "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.",
774
2672
  "category": "devops",
775
2673
  "tags": [
776
- "git",
777
- "cleanup",
778
- "branches"
2674
+ "config",
2675
+ "environments",
2676
+ "drift"
779
2677
  ],
780
- "schedule": "0 9 * * 1",
2678
+ "schedule": "0 8 * * 1",
781
2679
  "timezone": "UTC",
782
2680
  "runner": "shell",
783
2681
  "modes": [
@@ -788,45 +2686,48 @@
788
2686
  "claude",
789
2687
  "codex"
790
2688
  ],
791
- "path": "jobs/devops/orphaned-branch-cleanup.yaml"
2689
+ "path": "jobs/devops/staging-prod-config-diff.yaml"
792
2690
  },
793
2691
  {
794
- "id": "passport-expiry-check",
2692
+ "id": "stale-deal-nudge",
795
2693
  "version": 1,
796
- "name": "Passport Expiry Check",
797
- "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.",
798
- "category": "travel",
2694
+ "name": "Stale Deal Nudge",
2695
+ "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.",
2696
+ "category": "sales",
799
2697
  "tags": [
800
- "travel",
801
- "passport",
802
- "documents"
2698
+ "sales",
2699
+ "pipeline",
2700
+ "crm"
803
2701
  ],
804
- "schedule": "0 9 1 * *",
2702
+ "schedule": "0 8 * * 1-5",
805
2703
  "timezone": "UTC",
806
- "runner": "shell",
2704
+ "runner": "hybrid",
807
2705
  "modes": [
808
- "script"
2706
+ "script",
2707
+ "agent-prompt"
809
2708
  ],
810
2709
  "compatible_agents": [
811
- "generic",
812
2710
  "claude",
813
- "codex"
2711
+ "codex",
2712
+ "hermes",
2713
+ "openclaw",
2714
+ "generic"
814
2715
  ],
815
- "path": "jobs/travel/passport-expiry-check.yaml"
2716
+ "path": "jobs/sales/stale-deal-nudge.yaml"
816
2717
  },
817
2718
  {
818
- "id": "plant-watering-reminder",
2719
+ "id": "stale-dependency-pr-nudge",
819
2720
  "version": 1,
820
- "name": "Plant Watering Reminder",
821
- "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.\"",
822
- "category": "home",
2721
+ "name": "Stale Dependency PR Nudge",
2722
+ "description": "Lists open dependency-bump pull requests (from Dependabot/Renovate) that have been sitting for a while. Use this if automated PRs pile up and quietly go stale instead of getting merged or closed.",
2723
+ "category": "devops",
823
2724
  "tags": [
824
- "home",
825
- "plants",
826
- "reminder"
2725
+ "github",
2726
+ "dependencies",
2727
+ "pr"
827
2728
  ],
828
- "schedule": "0 9 * * *",
829
- "timezone": "America/Los_Angeles",
2729
+ "schedule": "0 9 * * 1-5",
2730
+ "timezone": "UTC",
830
2731
  "runner": "shell",
831
2732
  "modes": [
832
2733
  "script"
@@ -836,44 +2737,46 @@
836
2737
  "claude",
837
2738
  "codex"
838
2739
  ],
839
- "path": "jobs/home/plant-watering-reminder.yaml"
2740
+ "path": "jobs/devops/stale-dependency-pr-nudge.yaml"
840
2741
  },
841
2742
  {
842
- "id": "pto-balance-check",
2743
+ "id": "stale-post-audit",
843
2744
  "version": 1,
844
- "name": "PTO Balance Check",
845
- "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.",
846
- "category": "team",
2745
+ "name": "Stale Post Audit",
2746
+ "description": "Flags published posts that haven't been touched in a long time, as candidates for a refresh. Use this if old content quietly rots (dead screenshots, outdated advice) while still ranking and getting traffic.",
2747
+ "category": "content",
847
2748
  "tags": [
848
- "pto",
849
- "vacation",
850
- "team"
2749
+ "content",
2750
+ "seo",
2751
+ "maintenance"
851
2752
  ],
852
- "schedule": "0 9 1 * *",
853
- "timezone": "America/Los_Angeles",
854
- "runner": "shell",
2753
+ "schedule": "0 8 1 * *",
2754
+ "timezone": "UTC",
2755
+ "runner": "agent-prompt",
855
2756
  "modes": [
856
- "script"
2757
+ "agent-prompt"
857
2758
  ],
858
2759
  "compatible_agents": [
859
- "generic",
860
2760
  "claude",
861
- "codex"
2761
+ "codex",
2762
+ "hermes",
2763
+ "openclaw",
2764
+ "generic"
862
2765
  ],
863
- "path": "jobs/team/pto-balance-check.yaml"
2766
+ "path": "jobs/content/stale-post-audit.yaml"
864
2767
  },
865
2768
  {
866
- "id": "queue-depth-check",
2769
+ "id": "stale-todo-sweep",
867
2770
  "version": 1,
868
- "name": "Queue Depth Check",
869
- "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.",
870
- "category": "devops",
2771
+ "name": "Stale Todo Sweep",
2772
+ "description": "Finds TODO/FIXME comments in your codebase that have sat untouched for a long time, so you can decide whether to fix, ticket, or delete them. Use this if TODO comments in this repo have basically become permanent decor.",
2773
+ "category": "productivity",
871
2774
  "tags": [
872
- "queue",
873
- "redis",
874
- "monitoring"
2775
+ "todos",
2776
+ "cleanup",
2777
+ "code-hygiene"
875
2778
  ],
876
- "schedule": "*/10 * * * *",
2779
+ "schedule": "0 9 * * 1",
877
2780
  "timezone": "UTC",
878
2781
  "runner": "shell",
879
2782
  "modes": [
@@ -884,21 +2787,21 @@
884
2787
  "claude",
885
2788
  "codex"
886
2789
  ],
887
- "path": "jobs/devops/queue-depth-check.yaml"
2790
+ "path": "jobs/productivity/stale-todo-sweep.yaml"
888
2791
  },
889
2792
  {
890
- "id": "reading-list-nudge",
2793
+ "id": "subscription-audit",
891
2794
  "version": 1,
892
- "name": "Reading List Nudge",
893
- "description": "Reminds you what's next on your reading list. Use this if you save articles/books to \"read later\" and later never comes.",
894
- "category": "learning",
895
- "tags": [
896
- "learning",
897
- "reading",
898
- "reminder"
2795
+ "name": "Subscription Audit",
2796
+ "description": "Flags recurring subscriptions you haven't actually used in a while. Use this if you suspect you're paying for things you forgot to cancel.",
2797
+ "category": "finance",
2798
+ "tags": [
2799
+ "subscriptions",
2800
+ "budget",
2801
+ "finance"
899
2802
  ],
900
- "schedule": "0 9 * * 6",
901
- "timezone": "America/Los_Angeles",
2803
+ "schedule": "0 9 1 * *",
2804
+ "timezone": "UTC",
902
2805
  "runner": "shell",
903
2806
  "modes": [
904
2807
  "script"
@@ -908,45 +2811,42 @@
908
2811
  "claude",
909
2812
  "codex"
910
2813
  ],
911
- "path": "jobs/learning/reading-list-nudge.yaml"
2814
+ "path": "jobs/finance/subscription-audit.yaml"
912
2815
  },
913
2816
  {
914
- "id": "repo-health-check",
2817
+ "id": "sudo-usage-audit",
915
2818
  "version": 1,
916
- "name": "Git Repo Health Check",
917
- "description": "Checks a git repo for branches nobody's touched in a while, uncommitted changes sitting around, and pull requests waiting on review, then reports a short digest. Use this if you want a daily nudge on repo hygiene without checking everything by hand.",
918
- "category": "devops",
2819
+ "name": "Sudo Usage Audit",
2820
+ "description": "Reports new sudo commands run since the last check. Use this if you want to notice unexpected privilege escalation on a shared or internet-facing server.",
2821
+ "category": "security",
919
2822
  "tags": [
920
- "git",
921
- "ci",
922
- "maintenance"
2823
+ "security",
2824
+ "sudo",
2825
+ "audit"
923
2826
  ],
924
- "schedule": "0 9 * * 1-5",
2827
+ "schedule": "0 * * * *",
925
2828
  "timezone": "UTC",
926
- "runner": "hybrid",
2829
+ "runner": "shell",
927
2830
  "modes": [
928
- "script",
929
- "agent-prompt"
2831
+ "script"
930
2832
  ],
931
2833
  "compatible_agents": [
2834
+ "generic",
932
2835
  "claude",
933
- "codex",
934
- "hermes",
935
- "openclaw",
936
- "generic"
2836
+ "codex"
937
2837
  ],
938
- "path": "jobs/devops/repo-health-check.yaml"
2838
+ "path": "jobs/security/sudo-usage-audit.yaml"
939
2839
  },
940
2840
  {
941
- "id": "review-request-nudge",
2841
+ "id": "tax-deadline-reminder",
942
2842
  "version": 1,
943
- "name": "Review Request Nudge",
944
- "description": "Flags customers who bought a while ago and haven't been asked for a review yet. Use this if review requests only happen when someone remembers to send them.",
945
- "category": "growth",
2843
+ "name": "Tax Deadline Reminder",
2844
+ "description": "Warns you ahead of upcoming tax deadlines you've listed. Use this if quarterly estimated payments or annual filing dates have ever snuck up on you.",
2845
+ "category": "finance",
946
2846
  "tags": [
947
- "growth",
948
- "reviews",
949
- "ecommerce"
2847
+ "tax",
2848
+ "deadlines",
2849
+ "finance"
950
2850
  ],
951
2851
  "schedule": "0 9 * * *",
952
2852
  "timezone": "UTC",
@@ -959,21 +2859,21 @@
959
2859
  "claude",
960
2860
  "codex"
961
2861
  ],
962
- "path": "jobs/growth/review-request-nudge.yaml"
2862
+ "path": "jobs/finance/tax-deadline-reminder.yaml"
963
2863
  },
964
2864
  {
965
- "id": "robots-txt-check",
2865
+ "id": "team-anniversary-reminder",
966
2866
  "version": 1,
967
- "name": "Robots.txt Blanket-Block Check",
968
- "description": "Checks that your robots.txt hasn't accidentally blocked every crawler from your entire site. Use this if a robots.txt edit has ever accidentally tanked your search traffic.",
969
- "category": "content",
2867
+ "name": "Team Anniversary Reminder",
2868
+ "description": "Reminds you about teammates' birthdays and work anniversaries coming up this week. Use this if you've ever felt bad realizing a work anniversary passed with zero acknowledgment.",
2869
+ "category": "team",
970
2870
  "tags": [
971
- "seo",
972
- "robots",
973
- "crawlability"
2871
+ "team",
2872
+ "birthdays",
2873
+ "anniversaries"
974
2874
  ],
975
- "schedule": "0 8 * * *",
976
- "timezone": "UTC",
2875
+ "schedule": "0 9 * * 1",
2876
+ "timezone": "America/Los_Angeles",
977
2877
  "runner": "shell",
978
2878
  "modes": [
979
2879
  "script"
@@ -983,20 +2883,20 @@
983
2883
  "claude",
984
2884
  "codex"
985
2885
  ],
986
- "path": "jobs/content/robots-txt-check.yaml"
2886
+ "path": "jobs/team/team-anniversary-reminder.yaml"
987
2887
  },
988
2888
  {
989
- "id": "rss-feed-validate",
2889
+ "id": "terraform-drift-check",
990
2890
  "version": 1,
991
- "name": "RSS Feed Validation",
992
- "description": "Checks your RSS/Atom feed is valid XML and shows the most recent item's publish date. Use this if you've ever shipped a broken feed and only found out when a reader's app stopped updating.",
993
- "category": "content",
2891
+ "name": "Terraform Drift Check",
2892
+ "description": "Runs a Terraform plan and flags it if there's drift between your state and actual infrastructure. Use this if you've ever had someone click around in a cloud console and quietly break parity with your IaC.",
2893
+ "category": "devops",
994
2894
  "tags": [
995
- "rss",
996
- "feed",
997
- "content"
2895
+ "terraform",
2896
+ "infrastructure",
2897
+ "drift"
998
2898
  ],
999
- "schedule": "0 8 * * *",
2899
+ "schedule": "0 7 * * 1-5",
1000
2900
  "timezone": "UTC",
1001
2901
  "runner": "shell",
1002
2902
  "modes": [
@@ -1007,21 +2907,20 @@
1007
2907
  "claude",
1008
2908
  "codex"
1009
2909
  ],
1010
- "path": "jobs/content/rss-feed-validate.yaml"
2910
+ "path": "jobs/devops/terraform-drift-check.yaml"
1011
2911
  },
1012
2912
  {
1013
- "id": "saas-seat-audit",
2913
+ "id": "ticket-backlog-aging-check",
1014
2914
  "version": 1,
1015
- "name": "Team SaaS Seat Audit",
1016
- "description": "Flags team SaaS seats (Slack, Notion, GitHub, etc.) nobody's actually used in a while. Use this if you suspect you're paying for seats of people who left or tools nobody opens anymore.",
1017
- "category": "finance",
2915
+ "name": "Support Ticket Backlog Aging Check",
2916
+ "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.",
2917
+ "category": "support",
1018
2918
  "tags": [
1019
- "saas",
1020
- "seats",
1021
- "team",
1022
- "budget"
2919
+ "support",
2920
+ "sla",
2921
+ "tickets"
1023
2922
  ],
1024
- "schedule": "0 9 1 * *",
2923
+ "schedule": "0 */4 * * *",
1025
2924
  "timezone": "UTC",
1026
2925
  "runner": "shell",
1027
2926
  "modes": [
@@ -1032,20 +2931,20 @@
1032
2931
  "claude",
1033
2932
  "codex"
1034
2933
  ],
1035
- "path": "jobs/finance/saas-seat-audit.yaml"
2934
+ "path": "jobs/support/ticket-backlog-aging-check.yaml"
1036
2935
  },
1037
2936
  {
1038
- "id": "screen-time-check",
2937
+ "id": "timezone-meeting-conflict-check",
1039
2938
  "version": 1,
1040
- "name": "Screen Time Check",
1041
- "description": "Checks today's screen time against a goal and tells you if you're over. Use this if you're trying to cut down on screen time but never actually look at the stats your phone/laptop already collects.",
1042
- "category": "personal",
2939
+ "name": "Timezone Meeting Conflict Check",
2940
+ "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.",
2941
+ "category": "productivity",
1043
2942
  "tags": [
1044
- "health",
1045
- "screen-time",
1046
- "wellbeing"
2943
+ "calendar",
2944
+ "timezone",
2945
+ "meetings"
1047
2946
  ],
1048
- "schedule": "0 20 * * *",
2947
+ "schedule": "0 16 * * *",
1049
2948
  "timezone": "America/Los_Angeles",
1050
2949
  "runner": "agent-prompt",
1051
2950
  "modes": [
@@ -1058,20 +2957,20 @@
1058
2957
  "openclaw",
1059
2958
  "generic"
1060
2959
  ],
1061
- "path": "jobs/personal/screen-time-check.yaml"
2960
+ "path": "jobs/productivity/timezone-meeting-conflict-check.yaml"
1062
2961
  },
1063
2962
  {
1064
- "id": "secrets-scan",
2963
+ "id": "tls-cipher-weak-check",
1065
2964
  "version": 1,
1066
- "name": "Committed Secrets Scan",
1067
- "description": "Scans a repo for accidentally committed API keys, tokens, and private keys. Use this if you want a safety net for the \"oops, committed a key\" mistake everyone makes eventually.",
2965
+ "name": "Weak TLS Cipher/Protocol Check",
2966
+ "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.",
1068
2967
  "category": "security",
1069
2968
  "tags": [
1070
2969
  "security",
1071
- "secrets",
1072
- "scanning"
2970
+ "tls",
2971
+ "ciphers"
1073
2972
  ],
1074
- "schedule": "0 3 * * *",
2973
+ "schedule": "0 6 * * 1",
1075
2974
  "timezone": "UTC",
1076
2975
  "runner": "shell",
1077
2976
  "modes": [
@@ -1082,20 +2981,20 @@
1082
2981
  "claude",
1083
2982
  "codex"
1084
2983
  ],
1085
- "path": "jobs/security/secrets-scan.yaml"
2984
+ "path": "jobs/security/tls-cipher-weak-check.yaml"
1086
2985
  },
1087
2986
  {
1088
- "id": "seo-meta-check",
2987
+ "id": "trademark-renewal-reminder",
1089
2988
  "version": 1,
1090
- "name": "SEO Meta Tag Check",
1091
- "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.",
1092
- "category": "content",
2989
+ "name": "Trademark Renewal Reminder",
2990
+ "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.",
2991
+ "category": "legal",
1093
2992
  "tags": [
1094
- "seo",
1095
- "content",
1096
- "meta-tags"
2993
+ "legal",
2994
+ "trademark",
2995
+ "ip"
1097
2996
  ],
1098
- "schedule": "0 7 * * 1",
2997
+ "schedule": "0 9 1 * *",
1099
2998
  "timezone": "UTC",
1100
2999
  "runner": "shell",
1101
3000
  "modes": [
@@ -1106,21 +3005,21 @@
1106
3005
  "claude",
1107
3006
  "codex"
1108
3007
  ],
1109
- "path": "jobs/content/seo-meta-check.yaml"
3008
+ "path": "jobs/legal/trademark-renewal-reminder.yaml"
1110
3009
  },
1111
3010
  {
1112
- "id": "smoke-detector-battery-check",
3011
+ "id": "travel-insurance-expiry-check",
1113
3012
  "version": 1,
1114
- "name": "Smoke Detector Battery Check Reminder",
1115
- "description": "Reminds you to test/replace smoke detector batteries on a schedule. Use this if the only time you think about smoke detectors is when one starts chirping at 3am.",
1116
- "category": "home",
3013
+ "name": "Travel Insurance Expiry Check",
3014
+ "description": "Warns you if you have an upcoming trip with no travel insurance policy covering it, or a policy expiring before the trip ends. Use this if you've ever booked a trip and only thought about insurance the night before.",
3015
+ "category": "travel",
1117
3016
  "tags": [
1118
- "home",
1119
- "safety",
1120
- "maintenance"
3017
+ "travel",
3018
+ "insurance",
3019
+ "documents"
1121
3020
  ],
1122
- "schedule": "0 9 1 * *",
1123
- "timezone": "America/Los_Angeles",
3021
+ "schedule": "0 9 * * 1",
3022
+ "timezone": "UTC",
1124
3023
  "runner": "shell",
1125
3024
  "modes": [
1126
3025
  "script"
@@ -1130,23 +3029,24 @@
1130
3029
  "claude",
1131
3030
  "codex"
1132
3031
  ],
1133
- "path": "jobs/home/smoke-detector-battery-check.yaml"
3032
+ "path": "jobs/travel/travel-insurance-expiry-check.yaml"
1134
3033
  },
1135
3034
  {
1136
- "id": "social-mentions-watch",
3035
+ "id": "trial-expiring-nudge",
1137
3036
  "version": 1,
1138
- "name": "Social Mentions Watch",
1139
- "description": "Scans for recent mentions of your brand, product, or repo and summarizes them. Use this if you want to catch a complaint or bug report on social media before it turns into a bigger problem.",
1140
- "category": "content",
3037
+ "name": "Trial Expiring Nudge",
3038
+ "description": "Finds trial users about to expire who haven't upgraded yet, and can draft the nudge email. Use this if trial-to-paid conversion nudges only happen when someone remembers to send them.",
3039
+ "category": "growth",
1141
3040
  "tags": [
1142
- "social",
1143
- "mentions",
1144
- "monitoring"
3041
+ "growth",
3042
+ "trials",
3043
+ "conversion"
1145
3044
  ],
1146
- "schedule": "0 9 * * *",
3045
+ "schedule": "0 10 * * *",
1147
3046
  "timezone": "UTC",
1148
- "runner": "agent-prompt",
3047
+ "runner": "hybrid",
1149
3048
  "modes": [
3049
+ "script",
1150
3050
  "agent-prompt"
1151
3051
  ],
1152
3052
  "compatible_agents": [
@@ -1156,45 +3056,20 @@
1156
3056
  "openclaw",
1157
3057
  "generic"
1158
3058
  ],
1159
- "path": "jobs/content/social-mentions-watch.yaml"
1160
- },
1161
- {
1162
- "id": "ssl-cert-expiry-check",
1163
- "version": 1,
1164
- "name": "SSL Certificate Expiry Check",
1165
- "description": "Checks how many days are left before a website's SSL certificate expires. Use this if you run a site and want a warning before the padlock breaks and visitors start seeing browser security errors.",
1166
- "category": "devops",
1167
- "tags": [
1168
- "ssl",
1169
- "tls",
1170
- "security",
1171
- "uptime"
1172
- ],
1173
- "schedule": "0 6 * * *",
1174
- "timezone": "UTC",
1175
- "runner": "shell",
1176
- "modes": [
1177
- "script"
1178
- ],
1179
- "compatible_agents": [
1180
- "generic",
1181
- "claude",
1182
- "codex"
1183
- ],
1184
- "path": "jobs/devops/ssl-cert-expiry-check.yaml"
3059
+ "path": "jobs/growth/trial-expiring-nudge.yaml"
1185
3060
  },
1186
3061
  {
1187
- "id": "stale-dependency-pr-nudge",
3062
+ "id": "uptime-ping-check",
1188
3063
  "version": 1,
1189
- "name": "Stale Dependency PR Nudge",
1190
- "description": "Lists open dependency-bump pull requests (from Dependabot/Renovate) that have been sitting for a while. Use this if automated PRs pile up and quietly go stale instead of getting merged or closed.",
3064
+ "name": "Uptime Ping Check",
3065
+ "description": "Pings a URL on a schedule and flags it if it stops responding. Use this if you want a basic \"is my site down\" alert without paying for a monitoring service.",
1191
3066
  "category": "devops",
1192
3067
  "tags": [
1193
- "github",
1194
- "dependencies",
1195
- "pr"
3068
+ "uptime",
3069
+ "monitoring",
3070
+ "reliability"
1196
3071
  ],
1197
- "schedule": "0 9 * * 1-5",
3072
+ "schedule": "*/15 * * * *",
1198
3073
  "timezone": "UTC",
1199
3074
  "runner": "shell",
1200
3075
  "modes": [
@@ -1205,20 +3080,20 @@
1205
3080
  "claude",
1206
3081
  "codex"
1207
3082
  ],
1208
- "path": "jobs/devops/stale-dependency-pr-nudge.yaml"
3083
+ "path": "jobs/devops/uptime-ping-check.yaml"
1209
3084
  },
1210
3085
  {
1211
- "id": "subscription-audit",
3086
+ "id": "vehicle-maintenance-due-check",
1212
3087
  "version": 1,
1213
- "name": "Subscription Audit",
1214
- "description": "Flags recurring subscriptions you haven't actually used in a while. Use this if you suspect you're paying for things you forgot to cancel.",
1215
- "category": "finance",
3088
+ "name": "Fleet Vehicle Maintenance Due Check",
3089
+ "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.",
3090
+ "category": "fleet",
1216
3091
  "tags": [
1217
- "subscriptions",
1218
- "budget",
1219
- "finance"
3092
+ "fleet",
3093
+ "vehicles",
3094
+ "maintenance"
1220
3095
  ],
1221
- "schedule": "0 9 1 * *",
3096
+ "schedule": "0 7 * * 1",
1222
3097
  "timezone": "UTC",
1223
3098
  "runner": "shell",
1224
3099
  "modes": [
@@ -1229,20 +3104,20 @@
1229
3104
  "claude",
1230
3105
  "codex"
1231
3106
  ],
1232
- "path": "jobs/finance/subscription-audit.yaml"
3107
+ "path": "jobs/fleet/vehicle-maintenance-due-check.yaml"
1233
3108
  },
1234
3109
  {
1235
- "id": "sudo-usage-audit",
3110
+ "id": "vendor-payment-deadline-reminder",
1236
3111
  "version": 1,
1237
- "name": "Sudo Usage Audit",
1238
- "description": "Reports new sudo commands run since the last check. Use this if you want to notice unexpected privilege escalation on a shared or internet-facing server.",
1239
- "category": "security",
3112
+ "name": "Event Vendor Payment Deadline Reminder",
3113
+ "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.",
3114
+ "category": "events",
1240
3115
  "tags": [
1241
- "security",
1242
- "sudo",
1243
- "audit"
3116
+ "events",
3117
+ "vendors",
3118
+ "payments"
1244
3119
  ],
1245
- "schedule": "0 * * * *",
3120
+ "schedule": "0 9 * * *",
1246
3121
  "timezone": "UTC",
1247
3122
  "runner": "shell",
1248
3123
  "modes": [
@@ -1253,20 +3128,20 @@
1253
3128
  "claude",
1254
3129
  "codex"
1255
3130
  ],
1256
- "path": "jobs/security/sudo-usage-audit.yaml"
3131
+ "path": "jobs/events/vendor-payment-deadline-reminder.yaml"
1257
3132
  },
1258
3133
  {
1259
- "id": "tax-deadline-reminder",
3134
+ "id": "visa-expiry-check",
1260
3135
  "version": 1,
1261
- "name": "Tax Deadline Reminder",
1262
- "description": "Warns you ahead of upcoming tax deadlines you've listed. Use this if quarterly estimated payments or annual filing dates have ever snuck up on you.",
1263
- "category": "finance",
3136
+ "name": "Visa/Residency Document Expiry Check",
3137
+ "description": "Warns you before a visa, residency permit, or similar document expires. Use this if you're living or working abroad and a document deadline has ever crept up on you.",
3138
+ "category": "travel",
1264
3139
  "tags": [
1265
- "tax",
1266
- "deadlines",
1267
- "finance"
3140
+ "travel",
3141
+ "visa",
3142
+ "documents"
1268
3143
  ],
1269
- "schedule": "0 9 * * *",
3144
+ "schedule": "0 9 1 * *",
1270
3145
  "timezone": "UTC",
1271
3146
  "runner": "shell",
1272
3147
  "modes": [
@@ -1277,20 +3152,20 @@
1277
3152
  "claude",
1278
3153
  "codex"
1279
3154
  ],
1280
- "path": "jobs/finance/tax-deadline-reminder.yaml"
3155
+ "path": "jobs/travel/visa-expiry-check.yaml"
1281
3156
  },
1282
3157
  {
1283
- "id": "uptime-ping-check",
3158
+ "id": "waf-rule-change-watch",
1284
3159
  "version": 1,
1285
- "name": "Uptime Ping Check",
1286
- "description": "Pings a URL on a schedule and flags it if it stops responding. Use this if you want a basic \"is my site down\" alert without paying for a monitoring service.",
1287
- "category": "devops",
3160
+ "name": "WAF Rule Change Watch",
3161
+ "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.",
3162
+ "category": "security",
1288
3163
  "tags": [
1289
- "uptime",
1290
- "monitoring",
1291
- "reliability"
3164
+ "security",
3165
+ "waf",
3166
+ "drift"
1292
3167
  ],
1293
- "schedule": "*/15 * * * *",
3168
+ "schedule": "0 6 * * *",
1294
3169
  "timezone": "UTC",
1295
3170
  "runner": "shell",
1296
3171
  "modes": [
@@ -1301,21 +3176,21 @@
1301
3176
  "claude",
1302
3177
  "codex"
1303
3178
  ],
1304
- "path": "jobs/devops/uptime-ping-check.yaml"
3179
+ "path": "jobs/security/waf-rule-change-watch.yaml"
1305
3180
  },
1306
3181
  {
1307
- "id": "visa-expiry-check",
3182
+ "id": "warranty-expiry-reminder",
1308
3183
  "version": 1,
1309
- "name": "Visa/Residency Document Expiry Check",
1310
- "description": "Warns you before a visa, residency permit, or similar document expires. Use this if you're living or working abroad and a document deadline has ever crept up on you.",
1311
- "category": "travel",
3184
+ "name": "Warranty Expiry Reminder",
3185
+ "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.",
3186
+ "category": "home",
1312
3187
  "tags": [
1313
- "travel",
1314
- "visa",
1315
- "documents"
3188
+ "home",
3189
+ "warranty",
3190
+ "reminder"
1316
3191
  ],
1317
3192
  "schedule": "0 9 1 * *",
1318
- "timezone": "UTC",
3193
+ "timezone": "America/Los_Angeles",
1319
3194
  "runner": "shell",
1320
3195
  "modes": [
1321
3196
  "script"
@@ -1325,7 +3200,7 @@
1325
3200
  "claude",
1326
3201
  "codex"
1327
3202
  ],
1328
- "path": "jobs/travel/visa-expiry-check.yaml"
3203
+ "path": "jobs/home/warranty-expiry-reminder.yaml"
1329
3204
  },
1330
3205
  {
1331
3206
  "id": "water-intake-reminder",