@wonsukchoi/crondex 0.7.0 → 0.9.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 (54) hide show
  1. package/README.md +58 -128
  2. package/bin/crondex.js +44 -0
  3. package/catalog.json +1298 -14
  4. package/jobs/agriculture/equipment-maintenance-due-reminder.yaml +36 -0
  5. package/jobs/agriculture/irrigation-schedule-check.yaml +41 -0
  6. package/jobs/agriculture/weather-frost-alert.yaml +41 -0
  7. package/jobs/construction/change-order-approval-reminder.yaml +31 -0
  8. package/jobs/creator/crosspost-lag-check.yaml +35 -0
  9. package/jobs/crypto/gas-price-alert.yaml +34 -0
  10. package/jobs/crypto/smart-contract-upgrade-watch.yaml +49 -0
  11. package/jobs/crypto/wallet-balance-watch.yaml +37 -0
  12. package/jobs/devops/github-issue-triage.yaml +38 -0
  13. package/jobs/ecommerce/abandoned-cart-recovery-check.yaml +38 -0
  14. package/jobs/ecommerce/low-stock-reorder-alert.yaml +33 -0
  15. package/jobs/ecommerce/return-refund-backlog-check.yaml +29 -0
  16. package/jobs/education/report-card-deadline-reminder.yaml +27 -0
  17. package/jobs/events/event-budget-overrun-check.yaml +31 -0
  18. package/jobs/finance/subscription-price-hike-watch.yaml +44 -0
  19. package/jobs/fleet/vehicle-registration-expiry-check.yaml +31 -0
  20. package/jobs/gaming/game-patch-notes-watch.yaml +39 -0
  21. package/jobs/gaming/stream-schedule-reminder.yaml +30 -0
  22. package/jobs/gaming/subscriber-churn-watch.yaml +39 -0
  23. package/jobs/healthcare/appointment-no-show-follow-up.yaml +32 -0
  24. package/jobs/healthcare/license-credential-expiry-check.yaml +35 -0
  25. package/jobs/healthcare/patient-recall-reminder.yaml +34 -0
  26. package/jobs/hiring/offer-expiry-reminder.yaml +31 -0
  27. package/jobs/hospitality/health-inspection-due-reminder.yaml +32 -0
  28. package/jobs/hr/benefits-enrollment-deadline-reminder.yaml +34 -0
  29. package/jobs/hr/new-hire-paperwork-check.yaml +35 -0
  30. package/jobs/hr/payroll-run-reminder.yaml +30 -0
  31. package/jobs/insurance/claim-status-check.yaml +30 -0
  32. package/jobs/insurance/coverage-gap-audit.yaml +37 -0
  33. package/jobs/insurance/policy-renewal-reminder.yaml +35 -0
  34. package/jobs/inventory/expiring-perishable-stock-check.yaml +24 -0
  35. package/jobs/investing/dividend-payment-tracker.yaml +34 -0
  36. package/jobs/legal/nda-expiry-check.yaml +31 -0
  37. package/jobs/logistics/freight-rate-spike-watch.yaml +38 -0
  38. package/jobs/manufacturing/preventive-maintenance-due-check.yaml +31 -0
  39. package/jobs/marketing/competitor-page-diff-watch.yaml +48 -0
  40. package/jobs/marketing/seo-rank-drop-watch.yaml +38 -0
  41. package/jobs/nonprofit/volunteer-hours-shortfall-check.yaml +30 -0
  42. package/jobs/personal/end-of-day-wrap-message.yaml +32 -0
  43. package/jobs/personal/new-restaurant-roundup.yaml +35 -0
  44. package/jobs/podcast/guest-followup-reminder.yaml +31 -0
  45. package/jobs/productivity/morning-briefing-digest.yaml +42 -0
  46. package/jobs/productivity/recurring-task-queue-reset.yaml +37 -0
  47. package/jobs/realestate/rent-payment-late-check.yaml +23 -0
  48. package/jobs/restaurant/health-inspection-prep-reminder.yaml +29 -0
  49. package/jobs/restaurant/inventory-waste-log-review.yaml +32 -0
  50. package/jobs/restaurant/reservation-noshow-deposit-check.yaml +32 -0
  51. package/jobs/sales/newly-funded-leads-scout.yaml +44 -0
  52. package/jobs/sales/quota-attainment-check.yaml +33 -0
  53. package/jobs/support/sla-breach-warning.yaml +31 -0
  54. package/package.json +1 -1
@@ -0,0 +1,39 @@
1
+ id: subscriber-churn-watch
2
+ version: 1
3
+ name: Subscriber/Follower Churn Watch
4
+ description: >
5
+ Checks your channel's subscriber or follower count trend and flags a
6
+ meaningful drop so you can investigate before it becomes a pattern. Use
7
+ this if you've ever noticed a slow bleed of subscribers only after
8
+ checking your dashboard months later.
9
+ category: gaming
10
+ tags: [streaming, subscribers, churn, analytics]
11
+ schedule: "0 9 * * 1"
12
+ timezone: "America/Los_Angeles"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Check subscriber/follower counts for {{channel_name}} on
16
+ {{platform_name}} for the last {{lookback_weeks}} weeks (via any
17
+ analytics dashboard or API available).
18
+ 1. Report week-over-week change in subscriber/follower count.
19
+ 2. Flag if this week's net change is negative or more than
20
+ {{drop_threshold_pct}}% below the recent average.
21
+ 3. If there's a drop, note anything that coincided with it (missed
22
+ stream days, controversial clip, platform-wide event) if that
23
+ information is available.
24
+ 4. If growth is healthy, just report the trend in one line.
25
+ variables:
26
+ channel_name:
27
+ default: "your channel"
28
+ description: Channel/handle to check.
29
+ platform_name:
30
+ default: "Twitch"
31
+ description: Platform to check (e.g. "Twitch", "YouTube", "Kick").
32
+ lookback_weeks:
33
+ default: 8
34
+ description: Weeks of history to establish a baseline trend.
35
+ drop_threshold_pct:
36
+ default: 15
37
+ description: Percentage drop below the recent average that counts as worth flagging.
38
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
39
+ notes: Depends on what the platform's API/dashboard exposes — some platforms require OAuth to pull subscriber history.
@@ -0,0 +1,32 @@
1
+ id: appointment-no-show-follow-up
2
+ version: 1
3
+ name: Appointment No-Show Follow-Up
4
+ description: >
5
+ Reviews yesterday's no-show appointments and drafts a follow-up message
6
+ offering to rebook. Use this if you've ever let a missed appointment go
7
+ quiet and lost the patient/client entirely instead of just rebooking them.
8
+ category: healthcare
9
+ tags: [appointments, no-show, patients, scheduling]
10
+ schedule: "0 9 * * *"
11
+ timezone: "America/New_York"
12
+ runner: agent-prompt
13
+ prompt: |
14
+ Pull yesterday's appointments from {{scheduling_system}} and find any marked
15
+ no-show or cancelled-late.
16
+ 1. For each, note the patient/client name, appointment type, and provider.
17
+ 2. Draft a short, warm follow-up message (SMS or email length) offering to
18
+ rebook, without shaming them for missing it.
19
+ 3. Flag anyone with 2+ no-shows in the last {{lookback_days}} days
20
+ separately — practices often want a different (firmer) policy for
21
+ repeat no-shows.
22
+ 4. Output as a list ready for staff to review and send — do not send
23
+ anything automatically.
24
+ variables:
25
+ scheduling_system:
26
+ default: "your scheduling/EHR system"
27
+ description: Name of the scheduling or EHR system to check (e.g. "Epic", "Calendly", "SimplePractice").
28
+ lookback_days:
29
+ default: 90
30
+ description: Window to check for repeat no-show patterns.
31
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
32
+ notes: Draft-only — never send messages automatically. Confirm HIPAA/compliance rules for your practice before wiring this to an agent with system access.
@@ -0,0 +1,35 @@
1
+ id: license-credential-expiry-check
2
+ version: 1
3
+ name: Staff License/Credential Expiry Check
4
+ description: >
5
+ Checks a tracked list of staff licenses, certifications, or credentials
6
+ (e.g. nursing license, CPR cert, DEA registration) and warns before any
7
+ expire. Use this if you've ever had a provider accidentally see patients
8
+ on a lapsed license or certification.
9
+ category: healthcare
10
+ tags: [compliance, licensing, credentials, staff]
11
+ schedule: "0 8 * * 1"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v days="{{warn_days_before}}" '
16
+ NR==1 {next}
17
+ {
18
+ cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
19
+ cmd | getline expiry_epoch; close(cmd);
20
+ "date +%s" | getline now_epoch; close("date +%s");
21
+ diff_days = (expiry_epoch - now_epoch) / 86400;
22
+ if (diff_days <= days) {
23
+ printf "EXPIRING: %s — %s expires %s (%d days)\n", $1, $2, $3, diff_days;
24
+ }
25
+ }
26
+ ' "{{credential_csv_path}}"
27
+ variables:
28
+ credential_csv_path:
29
+ default: "./staff-credentials.csv"
30
+ description: "Path to a CSV of staff credentials with columns: staff_name,credential_type,expiry_date (YYYY-MM-DD)."
31
+ warn_days_before:
32
+ default: 45
33
+ description: How many days before expiry to start warning.
34
+ compatible_agents: [generic, claude, codex]
35
+ notes: Assumes a maintained CSV export from your credentialing/HR system — point it at whatever that system can export on a schedule.
@@ -0,0 +1,34 @@
1
+ id: patient-recall-reminder
2
+ version: 1
3
+ name: Patient Recall Reminder
4
+ description: >
5
+ Finds patients due (or overdue) for a routine checkup, cleaning, or
6
+ screening and lists them for outreach. Use this if recall/recare lists
7
+ pile up and patients quietly fall off the schedule for a year or more.
8
+ category: healthcare
9
+ tags: [patients, recall, checkup, outreach]
10
+ schedule: "0 8 1 * *"
11
+ timezone: "America/New_York"
12
+ runner: agent-prompt
13
+ prompt: |
14
+ Check {{scheduling_system}} for patients whose last visit for
15
+ "{{recall_type}}" was more than {{recall_interval_months}} months ago and
16
+ who have no future appointment booked.
17
+ 1. List each patient, their last visit date, and how overdue they are.
18
+ 2. Sort by most overdue first.
19
+ 3. Draft a short recall message per patient (or a template if the list is
20
+ long) inviting them to book.
21
+ 4. Call out anyone more than double the recall interval overdue — these
22
+ are the ones most at risk of having left the practice entirely.
23
+ variables:
24
+ scheduling_system:
25
+ default: "your scheduling/EHR system"
26
+ description: Name of the scheduling or EHR system to check.
27
+ recall_type:
28
+ default: "annual checkup"
29
+ description: What kind of visit this recall tracks (e.g. "dental cleaning", "annual physical", "eye exam").
30
+ recall_interval_months:
31
+ default: 12
32
+ description: How many months between visits before someone counts as due.
33
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
34
+ notes: Draft-only — outreach messages should be reviewed by staff before sending, and must follow your practice's patient communication/compliance policy.
@@ -0,0 +1,31 @@
1
+ id: offer-expiry-reminder
2
+ version: 1
3
+ name: Offer Expiry Reminder
4
+ description: >
5
+ Flags extended offers that are close to their response deadline with no
6
+ answer yet. Use this if an offer has ever quietly expired because
7
+ nobody followed up before the deadline passed.
8
+ category: hiring
9
+ tags: [hiring, offers, recruiting]
10
+ schedule: "0 9 * * 1-5"
11
+ timezone: "UTC"
12
+ runner: shell
13
+ command: >
14
+ today=$(date +%s);
15
+ awk -F, -v today="$today" -v warn={{warn_days}} '
16
+ NR>1 && $3 == "pending" {
17
+ cmd="date -d \"" $2 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $2 "\" +%s";
18
+ cmd | getline exp_ts; close(cmd);
19
+ days_left = int((exp_ts - today) / 86400);
20
+ if (days_left <= warn && days_left >= 0) print "WARNING: offer to " $1 " expires in " days_left " days (" $2 "), no response yet";
21
+ }
22
+ ' {{offers_csv}}
23
+ variables:
24
+ offers_csv:
25
+ default: "offers.csv"
26
+ description: "CSV with header row, columns: candidate_name,expiry_date(YYYY-MM-DD),status(pending/accepted/declined)."
27
+ warn_days:
28
+ default: 2
29
+ description: Days before offer expiry to start warning.
30
+ compatible_agents: [generic, claude, codex]
31
+ notes: Keep offers.csv updated as offers go out and candidates respond — one row per open offer.
@@ -0,0 +1,32 @@
1
+ id: health-inspection-due-reminder
2
+ version: 1
3
+ name: Health Inspection Due Reminder
4
+ description: >
5
+ Warns you before a health department inspection is expected, based on
6
+ your jurisdiction's typical interval. Use this if an inspector has ever
7
+ shown up to a kitchen that wasn't ready because nobody was tracking when
8
+ the last one happened.
9
+ category: hospitality
10
+ tags: [hospitality, health-inspection, compliance]
11
+ schedule: "0 8 1 * *"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ today=$(date +%s);
16
+ last_ts=$(date -d "{{last_inspection_date}}" +%s 2>/dev/null || date -jf "%Y-%m-%d" "{{last_inspection_date}}" +%s);
17
+ days_since=$(( (today - last_ts) / 86400 ));
18
+ days_left=$(( {{typical_interval_days}} - days_since ));
19
+ if [ "$days_left" -le "{{warn_days}}" ]; then echo "WARNING: next health inspection likely due within $days_left days (last was {{last_inspection_date}})"; exit 1;
20
+ else echo "OK: next inspection likely due in about $days_left days"; fi
21
+ variables:
22
+ last_inspection_date:
23
+ default: "2026-01-01"
24
+ description: Date of the last health inspection (YYYY-MM-DD).
25
+ typical_interval_days:
26
+ default: 180
27
+ description: Typical number of days between inspections in your jurisdiction.
28
+ warn_days:
29
+ default: 14
30
+ description: Days before the estimated next inspection to start warning.
31
+ compatible_agents: [generic, claude, codex]
32
+ notes: This is an estimate based on your jurisdiction's typical cadence, not an actual scheduled date — most health departments don't publish inspection dates in advance.
@@ -0,0 +1,34 @@
1
+ id: benefits-enrollment-deadline-reminder
2
+ version: 1
3
+ name: Benefits Open Enrollment Deadline Reminder
4
+ description: >
5
+ Counts down to the open-enrollment deadline and flags employees who
6
+ haven't submitted elections yet. Use this if open enrollment has ever
7
+ closed with people accidentally defaulting to no coverage or last
8
+ year's plan.
9
+ category: hr
10
+ tags: [hr, benefits, enrollment, deadline]
11
+ schedule: "0 9 * * *"
12
+ timezone: "UTC"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Open enrollment closes on {{enrollment_deadline}}. Check
16
+ {{benefits_system}} for who has and hasn't submitted elections yet.
17
+ 1. Report days remaining until the deadline.
18
+ 2. List employees with no submitted election.
19
+ 3. If within {{final_warn_days}} days of the deadline, draft an urgent
20
+ reminder message to the non-responders and, separately, a summary
21
+ for HR of who still needs a nudge.
22
+ 4. If the deadline has passed, report final completion rate instead.
23
+ variables:
24
+ enrollment_deadline:
25
+ default: "YYYY-MM-DD"
26
+ description: Date open enrollment closes.
27
+ benefits_system:
28
+ default: "your benefits administration platform"
29
+ description: Name of the benefits/HRIS system to check.
30
+ final_warn_days:
31
+ default: 5
32
+ description: Days before deadline to switch from routine reminders to urgent ones.
33
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
34
+ notes: Draft-only — review reminder messages before sending, especially anything framed as "urgent" to employees.
@@ -0,0 +1,35 @@
1
+ id: new-hire-paperwork-check
2
+ version: 1
3
+ name: New Hire Paperwork Completion Check
4
+ description: >
5
+ Checks which recently started employees still have incomplete
6
+ onboarding paperwork (I-9, tax forms, benefits enrollment, signed
7
+ handbook) and flags them before they become a compliance problem. Use
8
+ this if onboarding paperwork has ever slipped through the cracks past
9
+ the legal deadline.
10
+ category: hr
11
+ tags: [hr, onboarding, compliance, paperwork]
12
+ schedule: "0 9 * * 1"
13
+ timezone: "UTC"
14
+ runner: agent-prompt
15
+ prompt: |
16
+ Check onboarding status in {{hris_system}} for anyone who started in the
17
+ last {{lookback_days}} days.
18
+ 1. For each new hire, list which required documents are still
19
+ incomplete: {{required_documents}}.
20
+ 2. Flag anyone approaching or past a legal deadline (e.g. I-9 must be
21
+ completed within 3 business days of start in the US) as urgent.
22
+ 3. Draft a reminder message to the employee and/or their manager for
23
+ each incomplete item.
24
+ variables:
25
+ hris_system:
26
+ default: "your HRIS/onboarding system"
27
+ description: Name of the HR system to check (e.g. "BambooHR", "Rippling", "Gusto").
28
+ lookback_days:
29
+ default: 30
30
+ description: How far back to check for recent hires.
31
+ required_documents:
32
+ default: "I-9, W-4, direct deposit form, benefits enrollment, signed handbook acknowledgment"
33
+ description: Comma-separated list of documents your onboarding requires.
34
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
35
+ notes: Legal deadlines for onboarding paperwork vary by country/jurisdiction — confirm the specifics for yours rather than relying on the example given.
@@ -0,0 +1,30 @@
1
+ id: payroll-run-reminder
2
+ version: 1
3
+ name: Payroll Run Cutoff Reminder
4
+ description: >
5
+ Reminds you before the payroll submission cutoff so timesheets and
6
+ changes get in on time. Use this if payroll has ever run late because a
7
+ timesheet or new-hire update missed the cutoff by a day.
8
+ category: hr
9
+ tags: [payroll, hr, reminder, deadline]
10
+ schedule: "0 9 * * *"
11
+ timezone: "America/New_York"
12
+ runner: shell
13
+ command: >
14
+ today=$(date +%d);
15
+ cutoff="{{cutoff_day_of_month}}";
16
+ if [ "$today" -ge $((cutoff - {{warn_days_before}})) ] && [ "$today" -le "$cutoff" ]; then
17
+ echo "PAYROLL CUTOFF APPROACHING: due on day $cutoff of this month, today is day $today.";
18
+ echo "Checklist: timesheets submitted, new hires entered, terminations processed, PTO adjustments logged.";
19
+ else
20
+ echo "No payroll cutoff in the warning window today.";
21
+ fi
22
+ variables:
23
+ cutoff_day_of_month:
24
+ default: 25
25
+ description: Day of the month payroll submissions are due.
26
+ warn_days_before:
27
+ default: 3
28
+ description: How many days before the cutoff to start reminding.
29
+ compatible_agents: [generic, claude, codex]
30
+ notes: Assumes a fixed monthly cutoff day — adjust the command or add a variable if your payroll provider uses a different schedule (biweekly, semi-monthly).
@@ -0,0 +1,30 @@
1
+ id: claim-status-check
2
+ version: 1
3
+ name: Open Claim Status Check
4
+ description: >
5
+ Checks the status of any open insurance claims and flags ones that
6
+ haven't moved in a while. Use this if a claim has ever gone quiet for
7
+ weeks because nobody was following up with the adjuster.
8
+ category: insurance
9
+ tags: [insurance, claims, follow-up]
10
+ schedule: "0 9 * * 1"
11
+ timezone: "UTC"
12
+ runner: agent-prompt
13
+ prompt: |
14
+ Check the status of each open claim listed: {{open_claims}} (via the
15
+ insurer's portal, email correspondence, or whatever access is
16
+ available).
17
+ 1. Report current status and last update date for each.
18
+ 2. Flag any claim with no status change in more than
19
+ {{stale_after_days}} days as needing follow-up.
20
+ 3. Draft a short follow-up message to the adjuster for each stale claim,
21
+ referencing the claim number and asking for a status update.
22
+ variables:
23
+ open_claims:
24
+ default: "list your open claim numbers here"
25
+ description: Comma-separated list of open claim numbers/references to track.
26
+ stale_after_days:
27
+ default: 14
28
+ description: Days without a status update before a claim counts as stale.
29
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
30
+ notes: Draft-only — review before sending anything to an adjuster or insurer.
@@ -0,0 +1,37 @@
1
+ id: coverage-gap-audit
2
+ version: 1
3
+ name: Coverage Gap Audit
4
+ description: >
5
+ Compares your current insurance policies against a standard coverage
6
+ checklist for your situation and flags anything missing or underinsured.
7
+ Use this if you've ever added a policy for one specific thing and never
8
+ circled back to check the overall picture still made sense.
9
+ category: insurance
10
+ tags: [insurance, coverage, audit, risk]
11
+ schedule: "0 9 1 1,7 *"
12
+ timezone: "UTC"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Review the current policies listed: {{current_policies}}, for a
16
+ {{profile_type}} profile.
17
+ 1. Compare against a standard coverage checklist for that profile type
18
+ (e.g. for a homeowner: dwelling, liability, flood/earthquake if
19
+ applicable, umbrella; for a small business: general liability,
20
+ property, cyber, workers' comp as relevant).
21
+ 2. Flag anything commonly recommended that's missing entirely.
22
+ 3. Flag any policy whose coverage limit looks low relative to
23
+ {{asset_value_estimate}} in assets/exposure, with a one-line reason.
24
+ 4. This is a gap-finding pass, not financial/legal advice — say so, and
25
+ recommend confirming any changes with a licensed agent.
26
+ variables:
27
+ current_policies:
28
+ default: "list your current policies and coverage limits here"
29
+ description: Summary of currently held policies and their limits.
30
+ profile_type:
31
+ default: "homeowner"
32
+ description: Who this audit is for (e.g. "homeowner", "renter", "small business", "landlord").
33
+ asset_value_estimate:
34
+ default: "not specified"
35
+ description: Rough total value of assets/exposure to size coverage against.
36
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
37
+ notes: General-knowledge gap-finding only — not a substitute for advice from a licensed insurance professional.
@@ -0,0 +1,35 @@
1
+ id: policy-renewal-reminder
2
+ version: 1
3
+ name: Policy Renewal Reminder
4
+ description: >
5
+ Warns you before an insurance policy's renewal date so you have time to
6
+ shop around or review coverage, instead of auto-renewing on autopilot.
7
+ Use this if you've ever realized a policy renewed months ago at a higher
8
+ rate without you noticing.
9
+ category: insurance
10
+ tags: [insurance, renewal, policy, reminder]
11
+ schedule: "0 8 * * *"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v days="{{warn_days_before}}" '
16
+ NR==1 {next}
17
+ {
18
+ cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
19
+ cmd | getline expiry_epoch; close(cmd);
20
+ "date +%s" | getline now_epoch; close("date +%s");
21
+ diff_days = (expiry_epoch - now_epoch) / 86400;
22
+ if (diff_days <= days && diff_days >= 0) {
23
+ printf "RENEWAL DUE: %s renews %s (%d days)\n", $1, $2, diff_days;
24
+ }
25
+ }
26
+ ' "{{policies_csv_path}}"
27
+ variables:
28
+ policies_csv_path:
29
+ default: "./insurance-policies.csv"
30
+ description: "Path to a CSV with columns: policy_name,renewal_date (YYYY-MM-DD)."
31
+ warn_days_before:
32
+ default: 30
33
+ description: How many days before renewal to start warning.
34
+ compatible_agents: [generic, claude, codex]
35
+ notes: Maintain the CSV manually or export it from whatever policy-management tool/broker portal you use.
@@ -0,0 +1,24 @@
1
+ id: expiring-perishable-stock-check
2
+ version: 1
3
+ name: Expiring Perishable Stock Check
4
+ description: >
5
+ Flags perishable inventory nearing its expiry date so it can be sold,
6
+ discounted, or used before it's wasted. Use this if stock has ever
7
+ expired on the shelf because nobody was tracking dates until it was too
8
+ late.
9
+ category: inventory
10
+ tags: [inventory, perishables, waste]
11
+ schedule: "0 6 * * *"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ psql "{{database_url}}" -t -c "select sku, quantity, expiry_date from inventory where expiry_date is not null and expiry_date <= current_date + interval '{{warn_days}} days' order by expiry_date;"
16
+ variables:
17
+ database_url:
18
+ default: "postgres://user:pass@host:5432/db"
19
+ description: Connection string for the inventory database.
20
+ warn_days:
21
+ default: 5
22
+ description: Days before expiry_date to start flagging stock.
23
+ compatible_agents: [generic, claude, codex]
24
+ notes: Assumes an `inventory` table with a nullable `expiry_date` column — adjust the query to your schema.
@@ -0,0 +1,34 @@
1
+ id: dividend-payment-tracker
2
+ version: 1
3
+ name: Dividend Payment Tracker
4
+ description: >
5
+ Checks that an expected dividend payment actually landed by its
6
+ scheduled pay date. Use this if a dividend has ever quietly not shown up
7
+ and it took weeks to notice something was wrong with a holding or
8
+ broker.
9
+ category: investing
10
+ tags: [investing, dividends, income]
11
+ schedule: "0 9 * * *"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ today=$(date +%s);
16
+ awk -F, -v today="$today" '
17
+ NR>1 && $3 == "pending" {
18
+ cmd="date -d \"" $2 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $2 "\" +%s";
19
+ cmd | getline pay_ts; close(cmd);
20
+ if (pay_ts < today) print "WARNING: " $1 " dividend was due " $2 " and is still marked pending";
21
+ }
22
+ ' {{dividends_csv}}
23
+ variables:
24
+ dividends_csv:
25
+ default: "dividends.csv"
26
+ description: "CSV with header row, columns: ticker,pay_date(YYYY-MM-DD),status(pending/received)."
27
+ warn_days:
28
+ default: 0
29
+ description: Unused placeholder kept for consistency with other date-check jobs; flags immediately once the pay date has passed.
30
+ compatible_agents: [generic, claude, codex]
31
+ notes: >
32
+ Update dividends.csv to "received" once a payment lands (check your
33
+ brokerage statement) — this job only flags entries still marked
34
+ "pending" past their pay date.
@@ -0,0 +1,31 @@
1
+ id: nda-expiry-check
2
+ version: 1
3
+ name: NDA Expiry Check
4
+ description: >
5
+ Warns you before a signed NDA reaches its expiration or renewal date.
6
+ Use this if an NDA has ever lapsed mid-relationship and nobody noticed
7
+ the confidentiality coverage had run out.
8
+ category: legal
9
+ tags: [legal, nda, contracts]
10
+ schedule: "0 9 1 * *"
11
+ timezone: "UTC"
12
+ runner: shell
13
+ command: >
14
+ today=$(date +%s);
15
+ awk -F, -v today="$today" -v warn={{warn_days}} '
16
+ NR>1 {
17
+ cmd="date -d \"" $2 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $2 "\" +%s";
18
+ cmd | getline exp_ts; close(cmd);
19
+ days_left = int((exp_ts - today) / 86400);
20
+ if (days_left <= warn) print "WARNING: NDA with \"" $1 "\" expires in " days_left " days (" $2 ")";
21
+ }
22
+ ' {{ndas_csv}}
23
+ variables:
24
+ ndas_csv:
25
+ default: "ndas.csv"
26
+ description: "CSV with header row, columns: counterparty,expiry_date(YYYY-MM-DD)."
27
+ warn_days:
28
+ default: 30
29
+ description: Days before expiry to start warning.
30
+ compatible_agents: [generic, claude, codex]
31
+ notes: Keep ndas.csv updated whenever an NDA is signed — one row per counterparty/agreement.
@@ -0,0 +1,38 @@
1
+ id: freight-rate-spike-watch
2
+ version: 1
3
+ name: Freight Rate Spike Watch
4
+ description: >
5
+ Checks a freight lane's current quoted rate against your baseline and
6
+ flags a spike. Use this if a shipping rate has ever quietly doubled and
7
+ only got noticed when the invoice came in.
8
+ category: logistics
9
+ tags: [logistics, freight, rates]
10
+ schedule: "0 7 * * 1"
11
+ timezone: "UTC"
12
+ runner: agent-prompt
13
+ prompt: |
14
+ Check the current freight rate for the lane {{lane_description}} via
15
+ {{rate_source_hint}}.
16
+ 1. Compare the current quote to the baseline rate of {{baseline_rate}}
17
+ per {{rate_unit}}.
18
+ 2. Flag if it's {{spike_threshold_pct}}% or more above baseline.
19
+ 3. Report the current rate, the delta, and if visible, the likely driver
20
+ (fuel surcharge, capacity crunch, seasonal demand).
21
+ variables:
22
+ lane_description:
23
+ default: "Los Angeles, CA to Chicago, IL"
24
+ description: Origin/destination lane to check.
25
+ rate_source_hint:
26
+ default: "your freight broker or a rate index (DAT, Freightos)"
27
+ description: Where to check current freight rates.
28
+ baseline_rate:
29
+ default: 2.50
30
+ description: Baseline rate per unit to compare against.
31
+ rate_unit:
32
+ default: "mile"
33
+ description: Unit the rate is quoted in.
34
+ spike_threshold_pct:
35
+ default: 20
36
+ description: Percent above baseline that counts as a spike.
37
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
38
+ notes: No generic script mode — freight rate sources vary (broker quotes, load boards, rate indices) and most don't expose a simple public API.
@@ -0,0 +1,31 @@
1
+ id: preventive-maintenance-due-check
2
+ version: 1
3
+ name: Preventive Maintenance Due Check
4
+ description: >
5
+ Flags equipment coming due for scheduled preventive maintenance. Use
6
+ this if a machine has ever failed unexpectedly that would've been
7
+ caught by a PM visit nobody scheduled in time.
8
+ category: manufacturing
9
+ tags: [manufacturing, maintenance, equipment]
10
+ schedule: "0 7 * * 1"
11
+ timezone: "UTC"
12
+ runner: shell
13
+ command: >
14
+ today=$(date +%s);
15
+ awk -F, -v today="$today" -v warn={{warn_days}} '
16
+ NR>1 {
17
+ cmd="date -d \"" $2 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $2 "\" +%s";
18
+ cmd | getline due_ts; close(cmd);
19
+ days_left = int((due_ts - today) / 86400);
20
+ if (days_left <= warn) print "WARNING: equipment \"" $1 "\" PM due in " days_left " days (" $2 ")";
21
+ }
22
+ ' {{pm_schedule_csv}}
23
+ variables:
24
+ pm_schedule_csv:
25
+ default: "pm-schedule.csv"
26
+ description: "CSV with header row, columns: equipment_id,next_pm_date(YYYY-MM-DD)."
27
+ warn_days:
28
+ default: 7
29
+ description: Days before the scheduled PM date to start warning.
30
+ compatible_agents: [generic, claude, codex]
31
+ notes: Keep pm-schedule.csv updated from your CMMS export or maintenance log before each run.
@@ -0,0 +1,48 @@
1
+ id: competitor-page-diff-watch
2
+ version: 1
3
+ name: Competitor Page Diff Watch
4
+ description: >
5
+ Snapshots a competitor's pricing or landing page and diffs it against the
6
+ last snapshot, turning any real change into a short action memo instead
7
+ of a wall of markup diff. Use this if a competitor has ever changed
8
+ pricing or repositioned a page and you found out from a customer instead
9
+ of noticing it yourself.
10
+ category: marketing
11
+ tags: [competitor, monitoring, pricing, marketing]
12
+ schedule: "0 9 * * 1"
13
+ timezone: "UTC"
14
+ runner: hybrid
15
+ command: >
16
+ snapshot_dir="{{snapshot_dir}}";
17
+ mkdir -p "$snapshot_dir";
18
+ today_file="$snapshot_dir/$(date +%Y-%m-%d).html";
19
+ curl -s -A "Mozilla/5.0" "{{competitor_url}}" -o "$today_file";
20
+ prev_file=$(ls -1 "$snapshot_dir" | grep -v "$(basename "$today_file")" | sort | tail -1);
21
+ if [ -n "$prev_file" ]; then
22
+ diff "$snapshot_dir/$prev_file" "$today_file" | head -100;
23
+ else
24
+ echo "first snapshot taken, nothing to diff against yet.";
25
+ fi
26
+ prompt: |
27
+ Compare today's snapshot of {{competitor_url}} against the previous one
28
+ (raw HTML diff provided by the script, or fetch and compare yourself).
29
+ 1. Ignore markup/whitespace/tracking-param noise.
30
+ 2. Summarize any real content change: pricing, plan names, feature
31
+ claims, or messaging changes.
32
+ 3. If nothing meaningful changed, say so in one line.
33
+ 4. If something did change, draft a short internal action memo: what
34
+ changed, why it might matter, and one suggested response (match
35
+ pricing, update our comparison page, no action needed).
36
+ script_note: >
37
+ `command` only saves a raw HTML diff — full of markup and whitespace
38
+ noise, no interpretation of what actually changed or whether it matters.
39
+ `prompt` filters the noise and produces an actionable summary.
40
+ variables:
41
+ competitor_url:
42
+ default: "https://example.com/pricing"
43
+ description: Competitor page URL to monitor (pricing/landing pages work best).
44
+ snapshot_dir:
45
+ default: "./competitor-snapshots"
46
+ description: Local directory to store daily HTML snapshots for diffing.
47
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
48
+ notes: Respect the target site's robots.txt/terms before scraping; some sites render pricing via JS and won't diff meaningfully from raw HTML alone.