@wonsukchoi/crondex 0.11.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -41
- package/bin/crondex.js +7 -1
- package/catalog.json +1790 -40
- package/jobs/agriculture/crop-price-market-watch.yaml +32 -0
- package/jobs/agriculture/livestock-feed-stock-check.yaml +35 -0
- package/jobs/automotive/loaner-vehicle-return-reminder.yaml +35 -0
- package/jobs/automotive/parts-backorder-check.yaml +33 -0
- package/jobs/automotive/repair-order-aging-check.yaml +35 -0
- package/jobs/childcare/immunization-record-compliance-check.yaml +33 -0
- package/jobs/childcare/staff-child-ratio-compliance-check.yaml +30 -0
- package/jobs/childcare/tuition-payment-late-check.yaml +35 -0
- package/jobs/construction/equipment-rental-return-reminder.yaml +35 -0
- package/jobs/construction/subcontractor-insurance-expiry-check.yaml +35 -0
- package/jobs/creator/sponsorship-deliverable-tracker.yaml +38 -0
- package/jobs/crypto/defi-liquidation-risk-watch.yaml +36 -0
- package/jobs/crypto/token-unlock-vesting-watch.yaml +34 -0
- package/jobs/ecommerce/checkout-conversion-drop-watch.yaml +39 -0
- package/jobs/ecommerce/negative-review-alert.yaml +35 -0
- package/jobs/education/at-risk-student-grade-watch.yaml +35 -0
- package/jobs/education/field-trip-permission-slip-check.yaml +36 -0
- package/jobs/events/attendee-checkin-rate-watch.yaml +37 -0
- package/jobs/events/event-staffing-shortfall-check.yaml +34 -0
- package/jobs/fitness/class-utilization-check.yaml +32 -0
- package/jobs/fitness/gym-equipment-maintenance-check.yaml +35 -0
- package/jobs/fitness/gym-membership-renewal-reminder.yaml +35 -0
- package/jobs/fleet/driver-license-cdl-expiry-check.yaml +35 -0
- package/jobs/fleet/vehicle-inspection-due-check.yaml +35 -0
- package/jobs/gaming/game-server-uptime-check.yaml +34 -0
- package/jobs/gaming/tournament-registration-deadline-check.yaml +34 -0
- package/jobs/government/constituent-casework-followup-check.yaml +33 -0
- package/jobs/government/foia-request-deadline-check.yaml +36 -0
- package/jobs/government/permit-application-backlog-check.yaml +37 -0
- package/jobs/healthcare/insurance-eligibility-verification-check.yaml +32 -0
- package/jobs/healthcare/lab-result-followup-check.yaml +34 -0
- package/jobs/hiring/background-check-status-check.yaml +35 -0
- package/jobs/hiring/interview-feedback-overdue-check.yaml +33 -0
- package/jobs/hospitality/guest-maintenance-request-backlog-check.yaml +35 -0
- package/jobs/hospitality/guest-review-response-check.yaml +35 -0
- package/jobs/hr/exit-interview-completion-check.yaml +33 -0
- package/jobs/hr/performance-review-cycle-reminder.yaml +34 -0
- package/jobs/insurance/certificate-of-insurance-request-check.yaml +38 -0
- package/jobs/insurance/premium-payment-due-reminder.yaml +35 -0
- package/jobs/inventory/inventory-shrinkage-watch.yaml +36 -0
- package/jobs/inventory/overstock-slow-mover-check.yaml +36 -0
- package/jobs/investing/earnings-calendar-watch.yaml +32 -0
- package/jobs/investing/tax-loss-harvesting-review.yaml +33 -0
- package/jobs/legal/compliance-filing-deadline-reminder.yaml +38 -0
- package/jobs/logistics/container-demurrage-fee-watch.yaml +35 -0
- package/jobs/logistics/last-mile-delivery-exception-check.yaml +36 -0
- package/jobs/manufacturing/raw-material-shortage-risk-check.yaml +31 -0
- package/jobs/manufacturing/supplier-otd-performance-watch.yaml +38 -0
- package/jobs/marketing/campaign-utm-tracking-check.yaml +41 -0
- package/jobs/nonprofit/board-action-item-followup-check.yaml +28 -0
- package/jobs/nonprofit/grant-reporting-deadline-check.yaml +38 -0
- package/jobs/podcast/podcast-download-drop-watch.yaml +42 -0
- package/jobs/podcast/podcast-rating-review-watch.yaml +37 -0
- package/jobs/realestate/property-tax-deadline-reminder.yaml +35 -0
- package/jobs/restaurant/food-cost-percentage-watch.yaml +35 -0
- package/jobs/restaurant/labor-cost-percentage-watch.yaml +36 -0
- package/jobs/retail/employee-shift-gap-check.yaml +35 -0
- package/jobs/retail/pos-till-reconciliation-check.yaml +33 -0
- package/jobs/retail/store-opening-checklist-reminder.yaml +30 -0
- package/jobs/support/agent-workload-balance-check.yaml +30 -0
- package/jobs/support/ticket-reopened-rate-watch.yaml +35 -0
- package/jobs/team/on-call-fatigue-check.yaml +39 -0
- package/jobs/veterinary/boarding-checkout-reminder.yaml +29 -0
- package/jobs/veterinary/controlled-substance-log-audit.yaml +33 -0
- package/jobs/veterinary/pet-vaccine-due-reminder.yaml +34 -0
- package/jobs/warehousing/climate-control-compliance-check.yaml +40 -0
- package/jobs/warehousing/dock-schedule-conflict-check.yaml +30 -0
- package/jobs/warehousing/pick-pack-error-rate-watch.yaml +35 -0
- package/lib/catalog-summary.js +47 -0
- package/lib/category-descriptions.js +50 -0
- package/lib/duplicates.js +29 -0
- package/lib/shellcheck-prep.js +20 -0
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
id: crop-price-market-watch
|
|
2
|
+
version: 1
|
|
3
|
+
name: Crop Price Market Watch
|
|
4
|
+
description: >
|
|
5
|
+
Checks a commodity crop's current market price against a target and
|
|
6
|
+
alerts when it crosses your threshold. Use this if you've ever missed a
|
|
7
|
+
good selling window because nobody was watching the market that week.
|
|
8
|
+
category: agriculture
|
|
9
|
+
tags: [agriculture, commodity, price, market]
|
|
10
|
+
schedule: "0 14 * * 1-5"
|
|
11
|
+
timezone: "America/Chicago"
|
|
12
|
+
runner: agent-prompt
|
|
13
|
+
prompt: |
|
|
14
|
+
Check the current market price for {{commodity}} (via a commodity market
|
|
15
|
+
data source such as a futures quote or ag market report).
|
|
16
|
+
1. Report today's price and how it compares to {{target_price}}.
|
|
17
|
+
2. If price is at or above target, flag it as a potential selling window.
|
|
18
|
+
3. If price has moved more than {{move_threshold_pct}}% in the last week,
|
|
19
|
+
note that regardless of the target.
|
|
20
|
+
4. Otherwise report the price with no action needed.
|
|
21
|
+
variables:
|
|
22
|
+
commodity:
|
|
23
|
+
default: "corn"
|
|
24
|
+
description: Commodity/crop to track (e.g. "corn", "soybeans", "wheat").
|
|
25
|
+
target_price:
|
|
26
|
+
default: "5.00 per bushel"
|
|
27
|
+
description: Price target that triggers a "consider selling" flag.
|
|
28
|
+
move_threshold_pct:
|
|
29
|
+
default: 5
|
|
30
|
+
description: Weekly price move percentage worth flagging even if the target isn't hit.
|
|
31
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
32
|
+
notes: Not trading advice — a price-threshold alert only. Confirm quotes against your actual buyer/co-op before acting on them.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: livestock-feed-stock-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Livestock Feed Stock Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks how many days of feed are left based on current stock and daily
|
|
6
|
+
consumption, and warns before you run out. Use this if feed has ever run
|
|
7
|
+
low over a weekend or holiday when the supplier wasn't reachable.
|
|
8
|
+
category: agriculture
|
|
9
|
+
tags: [agriculture, livestock, feed, inventory]
|
|
10
|
+
schedule: "0 6 * * *"
|
|
11
|
+
timezone: "UTC"
|
|
12
|
+
runner: shell
|
|
13
|
+
command: >
|
|
14
|
+
stock="{{feed_stock_lbs}}";
|
|
15
|
+
daily_use="{{daily_consumption_lbs}}";
|
|
16
|
+
warn_days="{{warn_days_before}}";
|
|
17
|
+
days_left=$(awk -v s="$stock" -v d="$daily_use" 'BEGIN{ if (d>0) printf "%.1f", s/d; else print "999" }');
|
|
18
|
+
if awk -v dl="$days_left" -v w="$warn_days" 'BEGIN{exit !(dl <= w)}'; then
|
|
19
|
+
echo "LOW FEED: $days_left days of feed left (stock ${stock}lb, using ${daily_use}lb/day)";
|
|
20
|
+
exit 1;
|
|
21
|
+
else
|
|
22
|
+
echo "OK: $days_left days of feed left";
|
|
23
|
+
fi
|
|
24
|
+
variables:
|
|
25
|
+
feed_stock_lbs:
|
|
26
|
+
default: 0
|
|
27
|
+
description: Current feed stock on hand, in pounds (update this manually or from a scale reading).
|
|
28
|
+
daily_consumption_lbs:
|
|
29
|
+
default: 100
|
|
30
|
+
description: Average daily feed consumption in pounds.
|
|
31
|
+
warn_days_before:
|
|
32
|
+
default: 7
|
|
33
|
+
description: Days of remaining supply that triggers a warning — set with supplier lead time in mind.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: Assumes you update `feed_stock_lbs` after each delivery/count — this is a simple burn-rate calculation, not an automatic inventory sensor integration.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: loaner-vehicle-return-reminder
|
|
2
|
+
version: 1
|
|
3
|
+
name: Loaner Vehicle Return Reminder
|
|
4
|
+
description: >
|
|
5
|
+
Warns you before a loaner vehicle is due back, and flags anything
|
|
6
|
+
already overdue. Use this if a loaner has ever gone weeks without
|
|
7
|
+
coming back because nobody was tracking who had which car out.
|
|
8
|
+
category: automotive
|
|
9
|
+
tags: [automotive, loaner, fleet, reminder]
|
|
10
|
+
schedule: "0 8 * * *"
|
|
11
|
+
timezone: "UTC"
|
|
12
|
+
runner: shell
|
|
13
|
+
command: >
|
|
14
|
+
today=$(date +%s);
|
|
15
|
+
awk -F',' -v days="{{warn_days_before}}" -v today="$today" '
|
|
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 due_epoch; close(cmd);
|
|
20
|
+
diff_days = (due_epoch - today) / 86400;
|
|
21
|
+
if (diff_days <= days) {
|
|
22
|
+
if (diff_days < 0) printf "OVERDUE: %s with %s — was due %s (%d days late)\n", $1, $2, $3, -diff_days;
|
|
23
|
+
else printf "DUE SOON: %s with %s — due %s (%d days)\n", $1, $2, $3, diff_days;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
' "{{loaners_csv_path}}"
|
|
27
|
+
variables:
|
|
28
|
+
loaners_csv_path:
|
|
29
|
+
default: "./loaner-vehicles.csv"
|
|
30
|
+
description: "Path to a CSV with columns: loaner_vehicle_id,customer_name,return_due_date (YYYY-MM-DD)."
|
|
31
|
+
warn_days_before:
|
|
32
|
+
default: 1
|
|
33
|
+
description: How many days before the return date to start warning.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: Distinct from `equipment-rental-return-reminder` in construction — this tracks vehicles the shop lends out, not equipment the shop rents in.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
id: parts-backorder-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Parts Backorder Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks ordered parts against their expected arrival date and flags
|
|
6
|
+
anything overdue from the supplier. Use this if a repair has ever
|
|
7
|
+
stalled for a week because a part was quietly backordered and nobody
|
|
8
|
+
followed up with the supplier until a customer asked why their car
|
|
9
|
+
wasn't ready.
|
|
10
|
+
category: automotive
|
|
11
|
+
tags: [automotive, parts, backorder, supplier]
|
|
12
|
+
schedule: "0 9 * * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
today=$(date +%s);
|
|
17
|
+
awk -F',' -v today="$today" '
|
|
18
|
+
NR==1 {next}
|
|
19
|
+
$4 == "pending" {
|
|
20
|
+
cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
|
|
21
|
+
cmd | getline expected_epoch; close(cmd);
|
|
22
|
+
if (today > expected_epoch) {
|
|
23
|
+
overdue_days = (today - expected_epoch) / 86400;
|
|
24
|
+
printf "OVERDUE: %s for RO %s — expected %s (%d days late)\n", $1, $2, $3, overdue_days;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
' "{{parts_orders_csv_path}}"
|
|
28
|
+
variables:
|
|
29
|
+
parts_orders_csv_path:
|
|
30
|
+
default: "./parts-orders.csv"
|
|
31
|
+
description: "Path to a CSV with columns: part_name,ro_number,expected_arrival_date (YYYY-MM-DD),status (pending/received)."
|
|
32
|
+
compatible_agents: [generic, claude, codex]
|
|
33
|
+
notes: Follow up directly with the supplier once a part is flagged overdue — this job only surfaces the gap, it doesn't contact anyone.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: repair-order-aging-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Repair Order Aging Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks open repair orders and flags any vehicle that's been sitting in
|
|
6
|
+
the shop past your target turnaround with no status update. Use this if
|
|
7
|
+
a car has ever sat on a lift for days with no visible progress because
|
|
8
|
+
it fell out of the technician's mental queue.
|
|
9
|
+
category: automotive
|
|
10
|
+
tags: [automotive, repair-shop, workflow, aging]
|
|
11
|
+
schedule: "0 9 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
awk -F',' -v days="{{target_turnaround_days}}" -v today="$today" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
$3 == "open" {
|
|
19
|
+
cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
|
|
20
|
+
cmd | getline checkin_epoch; close(cmd);
|
|
21
|
+
age_days = (today - checkin_epoch) / 86400;
|
|
22
|
+
if (age_days > days) {
|
|
23
|
+
printf "AGING: RO %s — checked in %s (%d days)\n", $1, $2, age_days;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
' "{{repair_orders_csv_path}}"
|
|
27
|
+
variables:
|
|
28
|
+
repair_orders_csv_path:
|
|
29
|
+
default: "./repair-orders.csv"
|
|
30
|
+
description: "Path to a CSV with columns: ro_number,checkin_date (YYYY-MM-DD),status (open/closed)."
|
|
31
|
+
target_turnaround_days:
|
|
32
|
+
default: 3
|
|
33
|
+
description: Target days to complete a typical repair before it counts as aging.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: A vehicle waiting on a backordered part is a different problem than one just sitting unassigned — check `parts-backorder-check` alongside this to tell the two apart.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
id: immunization-record-compliance-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Immunization Record Compliance Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks enrolled children's immunization records against your state's
|
|
6
|
+
required schedule and flags anyone missing required documentation. Use
|
|
7
|
+
this if a compliance gap has ever gone unnoticed until a state licensing
|
|
8
|
+
inspection found it first.
|
|
9
|
+
category: childcare
|
|
10
|
+
tags: [childcare, immunization, compliance, licensing]
|
|
11
|
+
schedule: "0 8 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Check enrolled children's immunization records in {{records_system}}
|
|
16
|
+
against the required schedule for {{jurisdiction}}.
|
|
17
|
+
1. List any child with missing or expired required immunization
|
|
18
|
+
documentation, or a filed exemption that needs renewal.
|
|
19
|
+
2. Flag anyone enrolled more than {{grace_period_days}} days ago with
|
|
20
|
+
still-incomplete records as past the grace period.
|
|
21
|
+
3. Draft a short reminder to the family for each incomplete record.
|
|
22
|
+
variables:
|
|
23
|
+
records_system:
|
|
24
|
+
default: "your childcare management system"
|
|
25
|
+
description: Where enrollment and immunization records are tracked.
|
|
26
|
+
jurisdiction:
|
|
27
|
+
default: "your state/locality"
|
|
28
|
+
description: Which jurisdiction's required immunization schedule applies.
|
|
29
|
+
grace_period_days:
|
|
30
|
+
default: 30
|
|
31
|
+
description: Days a new enrollment can be missing records before it's past grace period.
|
|
32
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
33
|
+
notes: Draft-only — confirm your jurisdiction's actual required schedule and exemption rules, which vary and change; don't rely on this job to know them for you.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
id: staff-child-ratio-compliance-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Staff-to-Child Ratio Compliance Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks each classroom/group's staff-to-child ratio for the day against
|
|
6
|
+
your licensing requirement and flags anything out of compliance. Use
|
|
7
|
+
this if a ratio has ever slipped out of compliance mid-shift because
|
|
8
|
+
someone called in sick and nobody recalculated the numbers.
|
|
9
|
+
category: childcare
|
|
10
|
+
tags: [childcare, ratio, compliance, staffing]
|
|
11
|
+
schedule: "0 7,12 * * 1-5"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
required_max = $4;
|
|
19
|
+
actual_ratio = $3 / $2;
|
|
20
|
+
if ($2 > required_max || actual_ratio > 1) {
|
|
21
|
+
printf "OUT OF RATIO: %s — %d staff for %d children (max %d children/staff)\n", $1, $2, $3, $4;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
' "{{classrooms_csv_path}}"
|
|
25
|
+
variables:
|
|
26
|
+
classrooms_csv_path:
|
|
27
|
+
default: "./classroom-ratios.csv"
|
|
28
|
+
description: "Path to a CSV with columns: classroom_name,staff_count,child_count,max_children_per_staff (your licensing requirement for that age group)."
|
|
29
|
+
compatible_agents: [generic, claude, codex]
|
|
30
|
+
notes: Recompute this whenever staffing or headcount changes during the day (e.g. a callout, a late pickup) — it's only as current as the last update to the CSV.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: tuition-payment-late-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Tuition Payment Late Check
|
|
4
|
+
description: >
|
|
5
|
+
Flags families whose tuition payment is overdue past the grace period.
|
|
6
|
+
Use this if a late payment has ever gone unnoticed for weeks because
|
|
7
|
+
nobody was cross-checking the payment ledger against who'd actually
|
|
8
|
+
paid.
|
|
9
|
+
category: childcare
|
|
10
|
+
tags: [childcare, tuition, payment, billing]
|
|
11
|
+
schedule: "0 8 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
awk -F',' -v grace="{{grace_period_days}}" -v today="$today" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
$3 == "unpaid" {
|
|
19
|
+
cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
|
|
20
|
+
cmd | getline due_epoch; close(cmd);
|
|
21
|
+
days_late = (today - due_epoch) / 86400;
|
|
22
|
+
if (days_late > grace) {
|
|
23
|
+
printf "LATE: %s — due %s (%d days overdue)\n", $1, $2, days_late;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
' "{{tuition_csv_path}}"
|
|
27
|
+
variables:
|
|
28
|
+
tuition_csv_path:
|
|
29
|
+
default: "./tuition-ledger.csv"
|
|
30
|
+
description: "Path to a CSV with columns: family_name,due_date (YYYY-MM-DD),status (paid/unpaid)."
|
|
31
|
+
grace_period_days:
|
|
32
|
+
default: 5
|
|
33
|
+
description: Days past the due date before a payment counts as late.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: Parallel structure to `rent-payment-late-check` in realestate — a plain grace-period check against a payment ledger.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: equipment-rental-return-reminder
|
|
2
|
+
version: 1
|
|
3
|
+
name: Equipment Rental Return Reminder
|
|
4
|
+
description: >
|
|
5
|
+
Warns you before a rented piece of equipment is due back, so it doesn't
|
|
6
|
+
rack up late fees or an unplanned extension charge. Use this if a rental
|
|
7
|
+
has ever run days past due because nobody was tracking the return date
|
|
8
|
+
against the job schedule.
|
|
9
|
+
category: construction
|
|
10
|
+
tags: [construction, equipment, rental, deadline]
|
|
11
|
+
schedule: "0 7 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v days="{{warn_days_before}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
|
|
19
|
+
cmd | getline due_epoch; close(cmd);
|
|
20
|
+
"date +%s" | getline now_epoch; close("date +%s");
|
|
21
|
+
diff_days = (due_epoch - now_epoch) / 86400;
|
|
22
|
+
if (diff_days <= days) {
|
|
23
|
+
printf "RETURN DUE: %s — due back %s (%d days)\n", $1, $2, diff_days;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
' "{{rentals_csv_path}}"
|
|
27
|
+
variables:
|
|
28
|
+
rentals_csv_path:
|
|
29
|
+
default: "./equipment-rentals.csv"
|
|
30
|
+
description: "Path to a CSV with columns: equipment_name,return_due_date (YYYY-MM-DD)."
|
|
31
|
+
warn_days_before:
|
|
32
|
+
default: 2
|
|
33
|
+
description: How many days before the return date to start warning.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: If a rental needs extending because the job's running long, that's a call to make with the rental company directly — this job only flags the deadline.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: subcontractor-insurance-expiry-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Subcontractor Insurance (COI) Expiry Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks tracked subcontractor certificates of insurance and warns before
|
|
6
|
+
any expire. Use this if a sub has ever kept working on site after their
|
|
7
|
+
COI lapsed, leaving the general contractor exposed if something went
|
|
8
|
+
wrong.
|
|
9
|
+
category: construction
|
|
10
|
+
tags: [construction, insurance, compliance, subcontractor]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v days="{{warn_days_before}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
|
|
19
|
+
cmd | getline expiry_epoch; close(cmd);
|
|
20
|
+
"date +%s" | getline now_epoch; close("date +%s");
|
|
21
|
+
diff_days = (expiry_epoch - now_epoch) / 86400;
|
|
22
|
+
if (diff_days <= days) {
|
|
23
|
+
printf "COI EXPIRING: %s — expires %s (%d days)\n", $1, $2, diff_days;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
' "{{subcontractors_csv_path}}"
|
|
27
|
+
variables:
|
|
28
|
+
subcontractors_csv_path:
|
|
29
|
+
default: "./subcontractor-coi.csv"
|
|
30
|
+
description: "Path to a CSV with columns: subcontractor_name,coi_expiry_date (YYYY-MM-DD)."
|
|
31
|
+
warn_days_before:
|
|
32
|
+
default: 30
|
|
33
|
+
description: How many days before COI expiry to start warning.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: Maintain the CSV from whatever COI-tracking process you already use (many insurers/brokers can export renewal dates); this is the "did anyone actually check" backstop.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
id: sponsorship-deliverable-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Sponsorship Deliverable Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Flags brand-deal deliverables (a video, post, story, or link placement)
|
|
6
|
+
coming due across whatever platforms you post on. Use this if a sponsor
|
|
7
|
+
has ever had to ask where their promised content was because the
|
|
8
|
+
deadline only lived in an email thread from weeks ago.
|
|
9
|
+
category: creator
|
|
10
|
+
tags: [creator, sponsorship, brand-deal, deliverable]
|
|
11
|
+
schedule: "0 9 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v days="{{warn_days_before}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
|
|
19
|
+
cmd | getline due_epoch; close(cmd);
|
|
20
|
+
"date +%s" | getline now_epoch; close("date +%s");
|
|
21
|
+
diff_days = (due_epoch - now_epoch) / 86400;
|
|
22
|
+
if (diff_days <= days) {
|
|
23
|
+
printf "DUE SOON: %s — %s due %s (%d days)\n", $1, $2, $3, diff_days;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
' "{{deliverables_csv_path}}"
|
|
27
|
+
variables:
|
|
28
|
+
deliverables_csv_path:
|
|
29
|
+
default: "./sponsorship-deliverables.csv"
|
|
30
|
+
description: "Path to a CSV with columns: brand_name,deliverable_type,due_date (YYYY-MM-DD)."
|
|
31
|
+
warn_days_before:
|
|
32
|
+
default: 3
|
|
33
|
+
description: How many days before a deliverable is due to start warning.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: >
|
|
36
|
+
Covers general brand-deal content (video, post, story, link) across any
|
|
37
|
+
platform. If you specifically need podcast ad-read tracking, see
|
|
38
|
+
`sponsor-deliverable-tracker` in the podcast category instead.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: defi-liquidation-risk-watch
|
|
2
|
+
version: 1
|
|
3
|
+
name: DeFi Liquidation Risk Watch
|
|
4
|
+
description: >
|
|
5
|
+
Checks a lending position's current collateral ratio and warns before it
|
|
6
|
+
gets close to the liquidation threshold. Use this if a position has ever
|
|
7
|
+
gotten liquidated during a price dip because nobody was watching the
|
|
8
|
+
health factor in real time.
|
|
9
|
+
category: crypto
|
|
10
|
+
tags: [crypto, defi, lending, liquidation]
|
|
11
|
+
schedule: "*/15 * * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Check the current health factor / collateral ratio for the lending
|
|
16
|
+
position at {{position_address_or_id}} on {{protocol_name}} (via the
|
|
17
|
+
protocol's app, subgraph, or a position-tracking site).
|
|
18
|
+
1. Report the current health factor / collateral ratio.
|
|
19
|
+
2. Compare against the liquidation threshold — flag as urgent if within
|
|
20
|
+
{{danger_margin_pct}}% of triggering liquidation.
|
|
21
|
+
3. If urgent, suggest the immediate options: add collateral, repay part
|
|
22
|
+
of the loan, or reduce exposure — don't take any action, just lay out
|
|
23
|
+
the choices.
|
|
24
|
+
4. If healthy, report the current buffer in one line.
|
|
25
|
+
variables:
|
|
26
|
+
protocol_name:
|
|
27
|
+
default: "Aave"
|
|
28
|
+
description: Name of the lending protocol (e.g. "Aave", "Compound", "MakerDAO").
|
|
29
|
+
position_address_or_id:
|
|
30
|
+
default: "your wallet address or position ID"
|
|
31
|
+
description: The wallet address or position identifier to check.
|
|
32
|
+
danger_margin_pct:
|
|
33
|
+
default: 15
|
|
34
|
+
description: How close to the liquidation threshold (in percent) counts as urgent.
|
|
35
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
36
|
+
notes: Informational only — does not execute any transaction. Given how fast collateral ratios can move in volatile markets, treat the check interval as a floor, not a guarantee you'll always catch it in time.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
id: token-unlock-vesting-watch
|
|
2
|
+
version: 1
|
|
3
|
+
name: Token Unlock/Vesting Watch
|
|
4
|
+
description: >
|
|
5
|
+
Checks for upcoming token unlock or vesting cliff dates for a project
|
|
6
|
+
you're tracking and warns before a large unlock hits. Use this if a
|
|
7
|
+
token has ever dropped sharply right after an unlock you didn't see
|
|
8
|
+
coming.
|
|
9
|
+
category: crypto
|
|
10
|
+
tags: [crypto, tokenomics, vesting, unlock]
|
|
11
|
+
schedule: "0 9 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Check {{token_name}}'s vesting/unlock schedule (via the project's
|
|
16
|
+
tokenomics docs, a vesting tracker site, or on-chain vesting contract
|
|
17
|
+
data) for unlocks in the next {{lookahead_days}} days.
|
|
18
|
+
1. List any upcoming unlock: date, amount, and percentage of circulating
|
|
19
|
+
supply it represents.
|
|
20
|
+
2. Flag any unlock over {{large_unlock_pct}}% of circulating supply as
|
|
21
|
+
worth watching closely for price impact.
|
|
22
|
+
3. If nothing is scheduled in the window, say so in one line.
|
|
23
|
+
variables:
|
|
24
|
+
token_name:
|
|
25
|
+
default: "the token you're tracking"
|
|
26
|
+
description: Token/project name to check.
|
|
27
|
+
lookahead_days:
|
|
28
|
+
default: 14
|
|
29
|
+
description: How far ahead to check for scheduled unlocks.
|
|
30
|
+
large_unlock_pct:
|
|
31
|
+
default: 2
|
|
32
|
+
description: Percentage of circulating supply that counts as a "large" unlock worth flagging.
|
|
33
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
34
|
+
notes: Not trading advice — an informational heads-up only. Vesting schedule accuracy depends entirely on the source; cross-check against the project's own docs before acting on it.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
id: checkout-conversion-drop-watch
|
|
2
|
+
version: 1
|
|
3
|
+
name: Checkout Conversion Drop Watch
|
|
4
|
+
description: >
|
|
5
|
+
Compares today's checkout completion rate against your recent baseline
|
|
6
|
+
and flags a real drop. Use this if a checkout bug has ever silently cut
|
|
7
|
+
conversion for a day or two before anyone noticed sales looked soft.
|
|
8
|
+
category: ecommerce
|
|
9
|
+
tags: [ecommerce, checkout, conversion, analytics]
|
|
10
|
+
schedule: "0 */6 * * *"
|
|
11
|
+
timezone: "UTC"
|
|
12
|
+
runner: agent-prompt
|
|
13
|
+
prompt: |
|
|
14
|
+
Check checkout funnel data in {{analytics_source}} for the last
|
|
15
|
+
{{lookback_hours}} hours.
|
|
16
|
+
1. Calculate checkout-started-to-completed conversion rate for the
|
|
17
|
+
window.
|
|
18
|
+
2. Compare against the trailing {{baseline_days}}-day average for the
|
|
19
|
+
same time-of-day/day-of-week (checkout rates often vary by both).
|
|
20
|
+
3. Flag a drop of {{drop_threshold_pct}}% or more below baseline.
|
|
21
|
+
4. If flagged, note which step of the funnel shows the biggest relative
|
|
22
|
+
drop-off compared to baseline — that's usually where to look first
|
|
23
|
+
(payment step failing vs. shipping step confusing people are very
|
|
24
|
+
different problems).
|
|
25
|
+
variables:
|
|
26
|
+
analytics_source:
|
|
27
|
+
default: "your storefront analytics (e.g. Shopify Analytics, GA4, a custom funnel dashboard)"
|
|
28
|
+
description: Where checkout funnel data is tracked.
|
|
29
|
+
lookback_hours:
|
|
30
|
+
default: 6
|
|
31
|
+
description: Window of recent checkout activity to evaluate.
|
|
32
|
+
baseline_days:
|
|
33
|
+
default: 14
|
|
34
|
+
description: Days of history used to establish the normal conversion rate.
|
|
35
|
+
drop_threshold_pct:
|
|
36
|
+
default: 15
|
|
37
|
+
description: Percentage drop below baseline that counts as worth flagging.
|
|
38
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
39
|
+
notes: Time-of-day/day-of-week-aware baseline matters — comparing a Tuesday afternoon rate to a Black-Friday-morning baseline will false-positive constantly.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: negative-review-alert
|
|
2
|
+
version: 1
|
|
3
|
+
name: Negative Review Alert
|
|
4
|
+
description: >
|
|
5
|
+
Checks for new low-star product reviews and flags them same-day instead
|
|
6
|
+
of letting them sit in a dashboard nobody checks. Use this if a bad
|
|
7
|
+
review has ever sat live for a week before anyone on the team noticed
|
|
8
|
+
and responded.
|
|
9
|
+
category: ecommerce
|
|
10
|
+
tags: [ecommerce, reviews, reputation, customer-service]
|
|
11
|
+
schedule: "0 9 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Check {{store_platform}} for reviews posted in the last
|
|
16
|
+
{{lookback_hours}} hours rated at or below {{alert_threshold_stars}}
|
|
17
|
+
stars.
|
|
18
|
+
1. List each: product, rating, and a one-line summary of the complaint.
|
|
19
|
+
2. Draft a short, non-defensive response for each, acknowledging the
|
|
20
|
+
issue and offering a concrete next step (replacement, refund,
|
|
21
|
+
follow-up contact) — not a generic "sorry to hear that."
|
|
22
|
+
3. Flag any review mentioning a safety issue or a pattern matching a
|
|
23
|
+
recent product-quality complaint separately as higher priority.
|
|
24
|
+
variables:
|
|
25
|
+
store_platform:
|
|
26
|
+
default: "your storefront/reviews platform"
|
|
27
|
+
description: Platform to check (e.g. "Shopify product reviews", "Amazon Seller Central", "Trustpilot").
|
|
28
|
+
lookback_hours:
|
|
29
|
+
default: 24
|
|
30
|
+
description: How far back to check for new reviews.
|
|
31
|
+
alert_threshold_stars:
|
|
32
|
+
default: 2
|
|
33
|
+
description: Star rating at or below which a review triggers this alert (out of 5).
|
|
34
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
35
|
+
notes: Draft-only — review responses before posting publicly, since a bad public reply can do more damage than the original review.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: at-risk-student-grade-watch
|
|
2
|
+
version: 1
|
|
3
|
+
name: At-Risk Student Grade Watch
|
|
4
|
+
description: >
|
|
5
|
+
Flags students whose current grade has dropped below a passing threshold
|
|
6
|
+
partway through the term, instead of everyone finding out at report-card
|
|
7
|
+
time. Use this if a student has ever gone from passing to failing
|
|
8
|
+
without anyone reaching out until it was too late to recover.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, grades, at-risk, students]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Check current grades in {{gradebook_system}} for {{course_or_class}}.
|
|
16
|
+
1. List any student currently below {{passing_threshold}}.
|
|
17
|
+
2. For each, note which specific assignments are dragging the grade down
|
|
18
|
+
(missing work vs. low scores on completed work — the intervention is
|
|
19
|
+
different for each).
|
|
20
|
+
3. Flag anyone who was passing at the last check but has now dropped
|
|
21
|
+
below threshold, as a new/urgent case worth an earlier outreach.
|
|
22
|
+
4. Draft a short note for a teacher or counselor to send home, if that's
|
|
23
|
+
the practice at this school.
|
|
24
|
+
variables:
|
|
25
|
+
gradebook_system:
|
|
26
|
+
default: "your gradebook/LMS (e.g. PowerSchool, Google Classroom, Canvas)"
|
|
27
|
+
description: Where grades are recorded.
|
|
28
|
+
course_or_class:
|
|
29
|
+
default: "the class/section to check"
|
|
30
|
+
description: Which course or section this job covers.
|
|
31
|
+
passing_threshold:
|
|
32
|
+
default: 65
|
|
33
|
+
description: Grade percentage below which a student counts as at-risk.
|
|
34
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
35
|
+
notes: Draft-only — outreach to students/families should go through whatever channel and approval process your school already uses.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: field-trip-permission-slip-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Field Trip Permission Slip Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks which students still haven't returned a signed permission slip as
|
|
6
|
+
a field trip approaches. Use this if a student has ever been left behind
|
|
7
|
+
on a school trip because their slip got lost in a backpack and nobody
|
|
8
|
+
followed up in time.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, field-trip, permission-slip, students]
|
|
11
|
+
schedule: "0 8 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
trip_date_epoch=$(date -d "{{trip_date}}" +%s 2>/dev/null || date -jf "%Y-%m-%d" "{{trip_date}}" +%s);
|
|
16
|
+
now_epoch=$(date +%s);
|
|
17
|
+
days_left=$(( (trip_date_epoch - now_epoch) / 86400 ));
|
|
18
|
+
if [ "$days_left" -lt 0 ]; then echo "trip date has passed"; exit 0; fi;
|
|
19
|
+
missing=$(awk -F',' '$2 != "returned" {print $1}' "{{slips_csv_path}}");
|
|
20
|
+
count=$(echo "$missing" | grep -c . || true);
|
|
21
|
+
if [ "$count" -gt 0 ]; then
|
|
22
|
+
echo "MISSING SLIPS ($days_left days until trip):";
|
|
23
|
+
echo "$missing";
|
|
24
|
+
exit 1;
|
|
25
|
+
else
|
|
26
|
+
echo "OK: all permission slips returned, $days_left days until trip";
|
|
27
|
+
fi
|
|
28
|
+
variables:
|
|
29
|
+
trip_date:
|
|
30
|
+
default: "YYYY-MM-DD"
|
|
31
|
+
description: Date of the field trip.
|
|
32
|
+
slips_csv_path:
|
|
33
|
+
default: "./field-trip-slips.csv"
|
|
34
|
+
description: "Path to a CSV with columns: student_name,status (returned or pending)."
|
|
35
|
+
compatible_agents: [generic, claude, codex]
|
|
36
|
+
notes: Keep the CSV updated as slips come in — this just cross-checks the current list against the trip date, it doesn't collect slips itself.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: attendee-checkin-rate-watch
|
|
2
|
+
version: 1
|
|
3
|
+
name: Attendee Check-In Rate Watch
|
|
4
|
+
description: >
|
|
5
|
+
Checks the day-of check-in rate against registered headcount and flags
|
|
6
|
+
it if turnout is running well below expectations while there's still
|
|
7
|
+
time to adjust (catering, seating, staffing). Use this if you've ever
|
|
8
|
+
found out an event was under-attended only after it ended, instead of
|
|
9
|
+
two hours into it.
|
|
10
|
+
category: events
|
|
11
|
+
tags: [events, checkin, attendance, day-of]
|
|
12
|
+
schedule: "*/30 * * * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
checked_in=$(wc -l < "{{checkins_csv_path}}");
|
|
17
|
+
checked_in=$((checked_in - 1));
|
|
18
|
+
registered="{{registered_count}}";
|
|
19
|
+
pct=$(awk -v c="$checked_in" -v r="$registered" 'BEGIN{ if (r>0) printf "%.0f", (c/r)*100; else print "0" }');
|
|
20
|
+
target="{{expected_checkin_pct}}";
|
|
21
|
+
if [ "$pct" -lt "$target" ]; then
|
|
22
|
+
echo "LOW TURNOUT: $checked_in of $registered checked in ($pct%, expected ~$target%)";
|
|
23
|
+
else
|
|
24
|
+
echo "OK: $checked_in of $registered checked in ($pct%)";
|
|
25
|
+
fi
|
|
26
|
+
variables:
|
|
27
|
+
checkins_csv_path:
|
|
28
|
+
default: "./event-checkins.csv"
|
|
29
|
+
description: Path to a CSV of check-ins so far (one header row plus one row per checked-in attendee).
|
|
30
|
+
registered_count:
|
|
31
|
+
default: 100
|
|
32
|
+
description: Total number of registered attendees expected.
|
|
33
|
+
expected_checkin_pct:
|
|
34
|
+
default: 70
|
|
35
|
+
description: Typical check-in rate (percent of registrants) for this kind of event, used as the comparison baseline.
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: Only useful once check-ins start (e.g. run it during the event's arrival window) — it's a live day-of signal, not a pre-event forecast.
|