@wonsukchoi/crondex 0.22.0 → 0.23.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 +16 -15
- package/catalog.json +4839 -118
- package/jobs/automotive/ase-certification-expiry-check.yaml +36 -0
- package/jobs/automotive/csi-score-monitor.yaml +33 -0
- package/jobs/automotive/customer-pay-warranty-pay-mix-tracker.yaml +47 -0
- package/jobs/automotive/fi-product-attachment-rate-tracker.yaml +39 -0
- package/jobs/automotive/loaner-fleet-availability-check.yaml +40 -0
- package/jobs/automotive/manufacturer-recall-notice-check.yaml +39 -0
- package/jobs/automotive/parts-reorder-point-check.yaml +36 -0
- package/jobs/automotive/repair-cycle-time-trend-monitor.yaml +42 -0
- package/jobs/automotive/service-appointment-no-show-tracker.yaml +38 -0
- package/jobs/automotive/service-bay-utilization-check.yaml +38 -0
- package/jobs/automotive/shop-supply-reorder-check.yaml +31 -0
- package/jobs/automotive/trade-in-appraisal-variance-check.yaml +39 -0
- package/jobs/automotive/used-vehicle-inventory-aging-check.yaml +35 -0
- package/jobs/construction/critical-path-material-lead-time-review.yaml +43 -0
- package/jobs/construction/daily-jobsite-log-compliance-check.yaml +34 -0
- package/jobs/construction/equipment-utilization-cost-check.yaml +35 -0
- package/jobs/construction/heavy-equipment-inspection-compliance-check.yaml +34 -0
- package/jobs/construction/jobsite-safety-incident-near-miss-tracker.yaml +35 -0
- package/jobs/construction/lien-waiver-collection-tracker.yaml +27 -0
- package/jobs/construction/permit-application-approval-backlog-check.yaml +33 -0
- package/jobs/construction/project-budget-variance-check.yaml +34 -0
- package/jobs/construction/punch-list-completion-tracker.yaml +36 -0
- package/jobs/construction/retainage-holdback-release-tracker.yaml +33 -0
- package/jobs/construction/rfi-response-time-tracker.yaml +33 -0
- package/jobs/construction/subcontractor-pay-application-approval-tracker.yaml +35 -0
- package/jobs/construction/submittal-shop-drawing-review-check.yaml +45 -0
- package/jobs/construction/weather-delay-impact-log.yaml +44 -0
- package/jobs/education/chronic-absenteeism-tracker.yaml +34 -0
- package/jobs/education/department-budget-variance-check.yaml +37 -0
- package/jobs/education/enrollment-withdrawal-trend-tracker.yaml +39 -0
- package/jobs/education/facility-work-order-backlog-check.yaml +34 -0
- package/jobs/education/free-reduced-lunch-eligibility-renewal-check.yaml +36 -0
- package/jobs/education/iep-504-review-deadline-tracker.yaml +35 -0
- package/jobs/education/parent-teacher-conference-noshow-tracker.yaml +29 -0
- package/jobs/education/school-bus-route-ontime-check.yaml +40 -0
- package/jobs/education/standardized-test-registration-deadline-check.yaml +35 -0
- package/jobs/education/substitute-teacher-fill-rate-tracker.yaml +35 -0
- package/jobs/education/teacher-certification-expiry-tracker.yaml +35 -0
- package/jobs/education/textbook-inventory-shortage-check.yaml +32 -0
- package/jobs/fleet/accident-incident-report-tracker.yaml +34 -0
- package/jobs/fleet/driver-mvr-review-tracker.yaml +34 -0
- package/jobs/fleet/driver-safety-score-monitor.yaml +39 -0
- package/jobs/fleet/ev-battery-health-check.yaml +36 -0
- package/jobs/fleet/fuel-efficiency-trend-monitor.yaml +33 -0
- package/jobs/fleet/geofence-violation-check.yaml +37 -0
- package/jobs/fleet/lease-return-condition-check.yaml +33 -0
- package/jobs/fleet/tire-wear-replacement-check.yaml +30 -0
- package/jobs/fleet/toll-violation-tracker.yaml +34 -0
- package/jobs/fleet/vehicle-pool-scheduling-conflict-check.yaml +37 -0
- package/jobs/fleet/vehicle-tco-tracker.yaml +41 -0
- package/jobs/fleet/vehicle-utilization-rate-check.yaml +37 -0
- package/jobs/growth/cohort-retention-curve-monitor.yaml +39 -0
- package/jobs/growth/customer-health-score-monitor.yaml +37 -0
- package/jobs/growth/dau-mau-engagement-ratio-check.yaml +39 -0
- package/jobs/growth/dormant-account-reactivation-check.yaml +39 -0
- package/jobs/growth/expansion-revenue-opportunity-tracker.yaml +44 -0
- package/jobs/growth/feature-adoption-rate-tracker.yaml +44 -0
- package/jobs/growth/nps-trend-tracker.yaml +40 -0
- package/jobs/growth/onboarding-funnel-dropoff-check.yaml +39 -0
- package/jobs/growth/paywall-upgrade-prompt-conversion-check.yaml +40 -0
- package/jobs/growth/product-qualified-lead-tracker.yaml +42 -0
- package/jobs/growth/referral-program-performance-tracker.yaml +35 -0
- package/jobs/growth/trial-to-paid-conversion-rate-tracker.yaml +48 -0
- package/jobs/growth/winback-reactivation-campaign-tracker.yaml +46 -0
- package/jobs/hospitality/adr-revpar-tracker.yaml +43 -0
- package/jobs/hospitality/cancellation-rate-spike-check.yaml +21 -0
- package/jobs/hospitality/group-booking-space-utilization-check.yaml +40 -0
- package/jobs/hospitality/guest-complaint-sla-tracker.yaml +34 -0
- package/jobs/hospitality/guest-satisfaction-score-monitor.yaml +41 -0
- package/jobs/hospitality/linen-inventory-turnover-check.yaml +35 -0
- package/jobs/hospitality/loyalty-points-reconciliation-check.yaml +33 -0
- package/jobs/hospitality/minibar-charge-reconciliation-check.yaml +38 -0
- package/jobs/hospitality/occupancy-forecast-variance-check.yaml +33 -0
- package/jobs/hospitality/ota-rate-parity-check.yaml +36 -0
- package/jobs/hospitality/overbooking-risk-alert.yaml +38 -0
- package/jobs/hospitality/room-maintenance-work-order-tracker.yaml +31 -0
- package/jobs/hospitality/upsell-upgrade-conversion-tracker.yaml +37 -0
- package/jobs/insurance/adjuster-caseload-balance-check.yaml +45 -0
- package/jobs/insurance/agent-broker-license-expiry-tracker.yaml +40 -0
- package/jobs/insurance/cat-event-exposure-monitor.yaml +37 -0
- package/jobs/insurance/claims-aging-backlog-tracker.yaml +48 -0
- package/jobs/insurance/doi-filing-deadline-tracker.yaml +42 -0
- package/jobs/insurance/loss-ratio-by-line-monitor.yaml +43 -0
- package/jobs/insurance/policy-lapse-rate-monitor.yaml +41 -0
- package/jobs/insurance/premium-payment-delinquency-tracker.yaml +42 -0
- package/jobs/insurance/quote-to-bind-conversion-tracker.yaml +41 -0
- package/jobs/insurance/reinsurance-treaty-renewal-tracker.yaml +38 -0
- package/jobs/insurance/siu-fraud-referral-tracker.yaml +36 -0
- package/jobs/insurance/subrogation-recovery-tracker.yaml +41 -0
- package/jobs/insurance/underwriting-queue-sla-monitor.yaml +45 -0
- package/jobs/logistics/3pl-performance-scorecard.yaml +45 -0
- package/jobs/logistics/bol-freight-class-accuracy-audit.yaml +33 -0
- package/jobs/logistics/cargo-insurance-claim-status-check.yaml +39 -0
- package/jobs/logistics/carrier-load-tender-acceptance-check.yaml +34 -0
- package/jobs/logistics/carrier-otd-performance-scorecard.yaml +41 -0
- package/jobs/logistics/carrier-rate-contract-renewal-check.yaml +35 -0
- package/jobs/logistics/cross-dock-dwell-time-watch.yaml +43 -0
- package/jobs/logistics/freight-invoice-rate-audit.yaml +38 -0
- package/jobs/logistics/fuel-surcharge-rate-monitor.yaml +40 -0
- package/jobs/logistics/international-shipment-documentation-check.yaml +36 -0
- package/jobs/logistics/linehaul-transit-time-variance-check.yaml +43 -0
- package/jobs/logistics/proof-of-delivery-reconciliation-check.yaml +38 -0
- package/jobs/logistics/route-load-optimization-check.yaml +32 -0
- package/jobs/manufacturing/changeover-time-tracker.yaml +29 -0
- package/jobs/manufacturing/critical-spare-parts-stock-check.yaml +29 -0
- package/jobs/manufacturing/first-pass-yield-report.yaml +37 -0
- package/jobs/manufacturing/lot-traceability-audit.yaml +37 -0
- package/jobs/manufacturing/non-conformance-report-backlog-check.yaml +34 -0
- package/jobs/manufacturing/oee-efficiency-check.yaml +37 -0
- package/jobs/manufacturing/osha-recordable-incident-audit.yaml +37 -0
- package/jobs/manufacturing/production-schedule-adherence-check.yaml +35 -0
- package/jobs/manufacturing/safety-certification-expiry-check.yaml +37 -0
- package/jobs/manufacturing/scrap-waste-rate-watch.yaml +33 -0
- package/jobs/manufacturing/shift-handoff-report.yaml +37 -0
- package/jobs/manufacturing/supplier-quality-ppm-watch.yaml +38 -0
- package/jobs/manufacturing/tooling-die-wear-check.yaml +31 -0
- package/jobs/manufacturing/work-order-backlog-check.yaml +37 -0
- package/jobs/marketing/ad-creative-fatigue-check.yaml +44 -0
- package/jobs/marketing/affiliate-partner-performance-check.yaml +38 -0
- package/jobs/marketing/attribution-discrepancy-check.yaml +42 -0
- package/jobs/marketing/brand-share-of-voice-check.yaml +43 -0
- package/jobs/marketing/campaign-roas-cpa-anomaly-check.yaml +41 -0
- package/jobs/marketing/competitor-ad-creative-watch.yaml +40 -0
- package/jobs/marketing/email-list-growth-rate-check.yaml +43 -0
- package/jobs/marketing/landing-page-conversion-drop-check.yaml +44 -0
- package/jobs/marketing/mql-to-sql-handoff-sla-check.yaml +29 -0
- package/jobs/marketing/mql-volume-pace-check.yaml +34 -0
- package/jobs/marketing/paid-search-negative-keyword-waste-check.yaml +37 -0
- package/jobs/marketing/press-release-pickup-tracking.yaml +32 -0
- package/jobs/marketing/webinar-registration-attendance-check.yaml +38 -0
- package/jobs/restaurant/comp-void-anomaly-tracker.yaml +39 -0
- package/jobs/restaurant/daily-sales-flash-report.yaml +36 -0
- package/jobs/restaurant/delivery-platform-commission-reconciliation.yaml +33 -0
- package/jobs/restaurant/delivery-receiving-discrepancy-check.yaml +33 -0
- package/jobs/restaurant/food-handler-permit-expiry-tracker.yaml +33 -0
- package/jobs/restaurant/gift-card-liability-check.yaml +45 -0
- package/jobs/restaurant/kitchen-ticket-time-watch.yaml +38 -0
- package/jobs/restaurant/liquor-pour-cost-variance-check.yaml +34 -0
- package/jobs/restaurant/menu-86-frequency-tracker.yaml +39 -0
- package/jobs/restaurant/menu-item-profitability-check.yaml +33 -0
- package/jobs/restaurant/pos-end-of-day-reconciliation-check.yaml +31 -0
- package/jobs/restaurant/table-turnover-rate-tracker.yaml +36 -0
- package/jobs/restaurant/waitlist-conversion-check.yaml +37 -0
- package/jobs/retail/cash-office-deposit-variance-check.yaml +34 -0
- package/jobs/retail/competitor-price-monitoring-check.yaml +42 -0
- package/jobs/retail/damaged-merchandise-writeoff-tracker.yaml +41 -0
- package/jobs/retail/employee-discount-abuse-check.yaml +39 -0
- package/jobs/retail/layaway-special-order-pickup-tracker.yaml +33 -0
- package/jobs/retail/loyalty-enrollment-redemption-rate-tracker.yaml +37 -0
- package/jobs/retail/markdown-execution-audit-check.yaml +29 -0
- package/jobs/retail/planogram-compliance-audit-check.yaml +36 -0
- package/jobs/retail/pos-void-refund-anomaly-tracker.yaml +42 -0
- package/jobs/retail/price-tag-audit-accuracy-check.yaml +37 -0
- package/jobs/retail/sales-per-square-foot-tracker.yaml +36 -0
- package/jobs/retail/seasonal-staffing-coverage-check.yaml +35 -0
- package/jobs/retail/store-closing-checklist-compliance-check.yaml +32 -0
- package/jobs/retail/visual-merchandising-compliance-check.yaml +40 -0
- package/jobs/veterinary/appointment-no-show-rate-tracker.yaml +49 -0
- package/jobs/veterinary/boarding-kennel-capacity-utilization-check.yaml +39 -0
- package/jobs/veterinary/client-payment-plan-delinquency-check.yaml +36 -0
- package/jobs/veterinary/dvm-license-dea-registration-expiry-check.yaml +41 -0
- package/jobs/veterinary/microchip-registration-verification-check.yaml +40 -0
- package/jobs/veterinary/patient-record-completeness-audit.yaml +41 -0
- package/jobs/veterinary/pet-medication-refill-backlog-check.yaml +36 -0
- package/jobs/veterinary/puppy-kitten-vaccine-series-compliance-check.yaml +39 -0
- package/jobs/veterinary/senior-pet-wellness-recall-tracker.yaml +43 -0
- package/jobs/veterinary/spay-neuter-followup-compliance-check.yaml +35 -0
- package/jobs/veterinary/specialist-referral-followup-check.yaml +38 -0
- package/jobs/veterinary/surgical-schedule-utilization-check.yaml +36 -0
- package/jobs/veterinary/vet-staff-ce-credit-tracking.yaml +36 -0
- package/jobs/warehousing/conveyor-sortation-downtime-watch.yaml +48 -0
- package/jobs/warehousing/labor-productivity-rate-check.yaml +33 -0
- package/jobs/warehousing/mhe-preventive-maintenance-check.yaml +38 -0
- package/jobs/warehousing/order-fulfillment-sla-watch.yaml +42 -0
- package/jobs/warehousing/shift-headcount-coverage-check.yaml +33 -0
- package/jobs/warehousing/slotting-velocity-review-check.yaml +44 -0
- package/jobs/warehousing/warehouse-damage-writeoff-review.yaml +41 -0
- package/jobs/warehousing/warehouse-near-miss-incident-rate-watch.yaml +47 -0
- package/jobs/warehousing/warehouse-space-utilization-check.yaml +39 -0
- package/jobs/warehousing/wave-pick-batch-efficiency-check.yaml +33 -0
- package/jobs/warehousing/wms-integration-error-check.yaml +36 -0
- package/jobs/warehousing/yard-trailer-detention-watch.yaml +41 -0
- package/lib/category-descriptions.js +12 -12
- package/lib/duplicates-allowlist.js +10 -0
- package/package.json +2 -2
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: jobsite-safety-incident-near-miss-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Jobsite Safety Incident & Near-Miss Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Reviews recently logged safety incidents and near-misses across active
|
|
6
|
+
sites for repeat causes, escalating severity, or a site racking up more
|
|
7
|
+
reports than its peers. Use this if a serious incident has ever happened
|
|
8
|
+
after a string of smaller near-misses that, in hindsight, pointed right
|
|
9
|
+
at it.
|
|
10
|
+
category: construction
|
|
11
|
+
tags: [construction, safety, incidents, near-miss]
|
|
12
|
+
schedule: "0 8 * * 1"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: agent-prompt
|
|
15
|
+
prompt: |
|
|
16
|
+
Review the safety incident and near-miss log ({{incident_log_path}}) for
|
|
17
|
+
entries from the last {{lookback_days}} days.
|
|
18
|
+
1. Group entries by jobsite and by root cause category (falls, struck-by,
|
|
19
|
+
equipment, electrical, other).
|
|
20
|
+
2. Flag any site with more reports than its trailing average, and any
|
|
21
|
+
cause category that's recurring across 2+ separate incidents.
|
|
22
|
+
3. Call out any near-miss whose description suggests it could plausibly
|
|
23
|
+
have been a serious injury or fatality if circumstances were slightly
|
|
24
|
+
different.
|
|
25
|
+
4. Produce a short list of sites/causes that warrant a toolbox talk or
|
|
26
|
+
stand-down this week, in priority order.
|
|
27
|
+
variables:
|
|
28
|
+
incident_log_path:
|
|
29
|
+
default: "./safety-incident-log.csv"
|
|
30
|
+
description: "Path to the incident/near-miss log — expects columns like date, site, description, severity, cause_category."
|
|
31
|
+
lookback_days:
|
|
32
|
+
default: 30
|
|
33
|
+
description: How many days of incident history to review each run.
|
|
34
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
35
|
+
notes: Distinct from crew-safety-cert-expiry-check — that job tracks individual worker certification dates, not incident/near-miss event patterns across sites.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
id: lien-waiver-collection-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Lien Waiver Collection Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Checks that a signed lien waiver was collected from each subcontractor
|
|
6
|
+
before their next payment goes out, so payments never run ahead of the
|
|
7
|
+
paperwork that protects against a mechanic's lien. Use this if a
|
|
8
|
+
subcontractor has ever been paid without a waiver on file, leaving the
|
|
9
|
+
project exposed to a lien claim on money that was already paid out.
|
|
10
|
+
category: construction
|
|
11
|
+
tags: [construction, lien-waiver, payments, compliance, subcontractor]
|
|
12
|
+
schedule: "0 7 * * 1-5"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
awk -F',' '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
$4 == "scheduled" && $3 != "received" {
|
|
19
|
+
printf "MISSING WAIVER: %s — payment of $%s scheduled for %s, waiver status: %s\n", $1, $2, $5, $3;
|
|
20
|
+
}
|
|
21
|
+
' "{{payments_waivers_csv}}"
|
|
22
|
+
variables:
|
|
23
|
+
payments_waivers_csv:
|
|
24
|
+
default: "./payments-lien-waivers.csv"
|
|
25
|
+
description: "Path to a CSV with columns: subcontractor_name,payment_amount,waiver_status (received/pending/none),payment_status (scheduled/held/paid),payment_date."
|
|
26
|
+
compatible_agents: [generic, claude, codex]
|
|
27
|
+
notes: Distinct from subcontractor-insurance-expiry-check — that job tracks COI expiry dates, not per-payment lien waiver paperwork.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
id: permit-application-approval-backlog-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Permit Application Approval Backlog Check
|
|
4
|
+
description: >
|
|
5
|
+
Flags submitted permit applications that are still awaiting municipal
|
|
6
|
+
approval past a reasonable turnaround window. Use this if a project has
|
|
7
|
+
ever sat idle at the "waiting on the city" stage far longer than expected
|
|
8
|
+
because nobody was tracking submission-to-approval time.
|
|
9
|
+
category: construction
|
|
10
|
+
tags: [construction, permits, approvals, backlog]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
awk -F',' -v today="$today" -v warn="{{stale_days}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
$4 == "submitted" {
|
|
19
|
+
cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
|
|
20
|
+
cmd | getline sub_ts; close(cmd);
|
|
21
|
+
days_waiting = int((today - sub_ts) / 86400);
|
|
22
|
+
if (days_waiting >= warn) printf "STILL PENDING: %s permit for %s — submitted %s (%d days awaiting approval)\n", $2, $1, $3, days_waiting;
|
|
23
|
+
}
|
|
24
|
+
' "{{permit_applications_csv}}"
|
|
25
|
+
variables:
|
|
26
|
+
permit_applications_csv:
|
|
27
|
+
default: "./permit-applications.csv"
|
|
28
|
+
description: "Path to a CSV with columns: project_name,permit_type,submitted_date (YYYY-MM-DD),status (submitted/approved/rejected)."
|
|
29
|
+
stale_days:
|
|
30
|
+
default: 21
|
|
31
|
+
description: Days a submission can sit before it's flagged for a follow-up call to the jurisdiction.
|
|
32
|
+
compatible_agents: [generic, claude, codex]
|
|
33
|
+
notes: Distinct from permit-expiry-check — that job watches active, already-issued permits nearing expiry; this one watches new applications stuck before issuance.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
id: project-budget-variance-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Project Budget vs. Actual Cost Variance Check
|
|
4
|
+
description: >
|
|
5
|
+
Compares actual spend against budget by cost code for each active
|
|
6
|
+
project and flags codes running over threshold. Use this if a project
|
|
7
|
+
has ever "felt fine" right up until closeout, when the actual cost
|
|
8
|
+
report showed a cost code had been bleeding over budget for months
|
|
9
|
+
unnoticed.
|
|
10
|
+
category: construction
|
|
11
|
+
tags: [construction, budget, cost-control, project-accounting]
|
|
12
|
+
schedule: "0 7 * * 1"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
awk -F',' -v warn="{{overrun_threshold_pct}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
{
|
|
19
|
+
project=$1; cost_code=$2; budget=$3; actual=$4;
|
|
20
|
+
if (budget + 0 > 0) {
|
|
21
|
+
variance_pct = ((actual - budget) / budget) * 100;
|
|
22
|
+
if (variance_pct >= warn) printf "OVER BUDGET: %s / %s — budget $%.2f, actual $%.2f (%.1f%% over)\n", project, cost_code, budget, actual, variance_pct;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
' "{{cost_codes_csv}}"
|
|
26
|
+
variables:
|
|
27
|
+
cost_codes_csv:
|
|
28
|
+
default: "./project-cost-codes.csv"
|
|
29
|
+
description: "Path to a CSV with columns: project_name,cost_code,budget_amount,actual_amount."
|
|
30
|
+
overrun_threshold_pct:
|
|
31
|
+
default: 10
|
|
32
|
+
description: Percentage over budget on a cost code before it's flagged.
|
|
33
|
+
compatible_agents: [generic, claude, codex]
|
|
34
|
+
notes: Export budget/actual figures from your project accounting or job-costing system; this is a per-cost-code variance scan, not a full WIP report.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: punch-list-completion-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Punch List Completion Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Tracks open punch list items against the project's target closeout date
|
|
6
|
+
and flags projects falling behind on completion rate. Use this if a
|
|
7
|
+
closeout has ever dragged on for months because punch items trickled in
|
|
8
|
+
one at a time with nobody watching the overall burn-down.
|
|
9
|
+
category: construction
|
|
10
|
+
tags: [construction, punch-list, closeout, completion]
|
|
11
|
+
schedule: "0 7 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v min_pct="{{min_completion_pct}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
project=$1; total[project]+=1;
|
|
19
|
+
if ($3 == "closed") closed[project]+=1;
|
|
20
|
+
}
|
|
21
|
+
END {
|
|
22
|
+
for (p in total) {
|
|
23
|
+
pct = (total[p] > 0) ? (closed[p] / total[p] * 100) : 0;
|
|
24
|
+
if (pct < min_pct) printf "BEHIND: %s — %d of %d punch items closed (%.0f%%)\n", p, closed[p], total[p], pct;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
' "{{punch_list_csv}}"
|
|
28
|
+
variables:
|
|
29
|
+
punch_list_csv:
|
|
30
|
+
default: "./punch-list.csv"
|
|
31
|
+
description: "Path to a CSV with columns: project_name,item_description,status (open/closed)."
|
|
32
|
+
min_completion_pct:
|
|
33
|
+
default: 90
|
|
34
|
+
description: Minimum percentage of punch items that should be closed before closeout is considered on track.
|
|
35
|
+
compatible_agents: [generic, claude, codex]
|
|
36
|
+
notes: Aggregate burn-down view, not item-by-item detail — pair with the punch list document itself when a project shows up here.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
id: retainage-holdback-release-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Retainage / Holdback Release Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Flags subcontractor retainage (holdback) that's eligible for release
|
|
6
|
+
based on project completion percentage or elapsed lien period, so it
|
|
7
|
+
doesn't sit uncollected for months after it was earned. Use this if a
|
|
8
|
+
sub has ever had to chase a general contractor for retainage that was
|
|
9
|
+
technically releasable but nobody flagged it.
|
|
10
|
+
category: construction
|
|
11
|
+
tags: [construction, retainage, payments, subcontractor]
|
|
12
|
+
schedule: "0 8 1 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
awk -F',' -v min_pct="{{release_threshold_pct}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
$5 != "released" {
|
|
19
|
+
completion_pct=$3; retainage_amt=$4;
|
|
20
|
+
if (completion_pct + 0 >= min_pct + 0) {
|
|
21
|
+
printf "RELEASE ELIGIBLE: %s (%s) — %s%% complete, $%.2f retainage held, status: %s\n", $1, $2, completion_pct, retainage_amt, $5;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
' "{{retainage_ledger_csv}}"
|
|
25
|
+
variables:
|
|
26
|
+
retainage_ledger_csv:
|
|
27
|
+
default: "./retainage-ledger.csv"
|
|
28
|
+
description: "Path to a CSV with columns: subcontractor_name,contract_number,completion_pct,retainage_amount,status (held/pending/released)."
|
|
29
|
+
release_threshold_pct:
|
|
30
|
+
default: 95
|
|
31
|
+
description: Completion percentage at or above which held retainage should be reviewed for release.
|
|
32
|
+
compatible_agents: [generic, claude, codex]
|
|
33
|
+
notes: Confirm local lien-period and contract terms before actually releasing funds — this job only surfaces eligibility, it doesn't authorize payment.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
id: rfi-response-time-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: RFI Response Time Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Flags open Requests for Information (RFIs) that have gone unanswered
|
|
6
|
+
longer than the agreed response window. Use this if a crew has ever
|
|
7
|
+
stalled on a detail because an RFI sent to the architect or engineer sat
|
|
8
|
+
unanswered for weeks with nobody chasing it.
|
|
9
|
+
category: construction
|
|
10
|
+
tags: [construction, rfi, design-coordination, deadline]
|
|
11
|
+
schedule: "0 8 * * 1-5"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
awk -F',' -v today="$today" -v warn="{{overdue_days}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
$4 == "open" {
|
|
19
|
+
cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
|
|
20
|
+
cmd | getline sent_ts; close(cmd);
|
|
21
|
+
days_open = int((today - sent_ts) / 86400);
|
|
22
|
+
if (days_open >= warn) printf "RFI OVERDUE: #%s — %s — sent to %s on %s (%d days open)\n", $1, $2, $5, $3, days_open;
|
|
23
|
+
}
|
|
24
|
+
' "{{rfi_log_csv}}"
|
|
25
|
+
variables:
|
|
26
|
+
rfi_log_csv:
|
|
27
|
+
default: "./rfi-log.csv"
|
|
28
|
+
description: "Path to a CSV with columns: rfi_number,subject,sent_date (YYYY-MM-DD),status (open/answered/closed),sent_to."
|
|
29
|
+
overdue_days:
|
|
30
|
+
default: 7
|
|
31
|
+
description: Days an RFI can stay open before it's flagged for escalation.
|
|
32
|
+
compatible_agents: [generic, claude, codex]
|
|
33
|
+
notes: Design-coordination requests, not client-facing scope changes — see change-order-approval-reminder for the cost/scope side of the conversation.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: subcontractor-pay-application-approval-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Subcontractor Pay Application Approval Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Flags subcontractor pay applications (AIA G702/G703-style draw
|
|
6
|
+
requests) that are still waiting on GC or owner approval past the
|
|
7
|
+
normal turnaround, separate from the retainage that eventually gets
|
|
8
|
+
held back on approved amounts. Use this if a sub has ever gone weeks
|
|
9
|
+
without payment because their draw request just sat unreviewed in
|
|
10
|
+
someone's queue.
|
|
11
|
+
category: construction
|
|
12
|
+
tags: [construction, pay-application, payments, subcontractor, approvals]
|
|
13
|
+
schedule: "0 8 * * 1-5"
|
|
14
|
+
timezone: "UTC"
|
|
15
|
+
runner: shell
|
|
16
|
+
command: >
|
|
17
|
+
today=$(date +%s);
|
|
18
|
+
awk -F',' -v today="$today" -v warn="{{overdue_days}}" '
|
|
19
|
+
NR==1 {next}
|
|
20
|
+
$4 == "submitted" {
|
|
21
|
+
cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
|
|
22
|
+
cmd | getline sub_ts; close(cmd);
|
|
23
|
+
days_pending = int((today - sub_ts) / 86400);
|
|
24
|
+
if (days_pending >= warn) printf "PAY APP PENDING: %s — draw #%s for $%s submitted %s (%d days pending review)\n", $1, $2, $5, $3, days_pending;
|
|
25
|
+
}
|
|
26
|
+
' "{{pay_apps_csv}}"
|
|
27
|
+
variables:
|
|
28
|
+
pay_apps_csv:
|
|
29
|
+
default: "./subcontractor-pay-applications.csv"
|
|
30
|
+
description: "Path to a CSV with columns: subcontractor_name,draw_number,submitted_date (YYYY-MM-DD),status (submitted/approved/rejected),amount_requested."
|
|
31
|
+
overdue_days:
|
|
32
|
+
default: 10
|
|
33
|
+
description: Days a pay application can sit unreviewed before it's flagged for follow-up.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: Distinct from retainage-holdback-release-tracker — that job watches already-approved retainage becoming eligible for release; this one watches the underlying draw request getting approved in the first place.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
id: submittal-shop-drawing-review-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Submittal / Shop Drawing Review Check
|
|
4
|
+
description: >
|
|
5
|
+
Reviews the submittal log for shop drawings, product data, and samples
|
|
6
|
+
sitting past their review due date, and spot-checks whether returned
|
|
7
|
+
reviews actually addressed the spec section they were submitted
|
|
8
|
+
against. Use this if a submittal has ever come back "approved" from a
|
|
9
|
+
quick rubber stamp that missed a spec conflict, only to surface as a
|
|
10
|
+
costly field problem later.
|
|
11
|
+
category: construction
|
|
12
|
+
tags: [construction, submittals, shop-drawings, design-coordination]
|
|
13
|
+
schedule: "0 8 * * 1"
|
|
14
|
+
timezone: "UTC"
|
|
15
|
+
runner: agent-prompt
|
|
16
|
+
prompt: |
|
|
17
|
+
Review the submittal log ({{submittal_log_path}}) for project
|
|
18
|
+
{{project_name}}.
|
|
19
|
+
1. Flag any submittal past its {{review_due_days}}-day review window
|
|
20
|
+
with no status update (still "under review" or "not submitted").
|
|
21
|
+
2. For submittals marked "approved" or "approved as noted" in the last
|
|
22
|
+
{{lookback_days}} days, spot-check a sample against the referenced
|
|
23
|
+
spec section ({{spec_index_path}}) for obvious conflicts (wrong
|
|
24
|
+
material grade, missing required data, mismatched dimensions).
|
|
25
|
+
3. Report overdue submittals separately from spot-check findings.
|
|
26
|
+
4. Summarize: submittals overdue for review, and any approved
|
|
27
|
+
submittals that look like they may need a second look.
|
|
28
|
+
variables:
|
|
29
|
+
submittal_log_path:
|
|
30
|
+
default: "./submittal-log.csv"
|
|
31
|
+
description: "Path to the submittal log — expects columns like item, spec_section, submitted_date, status, review_due_date."
|
|
32
|
+
spec_index_path:
|
|
33
|
+
default: "./project-specifications/"
|
|
34
|
+
description: Folder or index of the project specification sections to check submittals against.
|
|
35
|
+
project_name:
|
|
36
|
+
default: "the project"
|
|
37
|
+
description: Name of the project being reviewed.
|
|
38
|
+
review_due_days:
|
|
39
|
+
default: 10
|
|
40
|
+
description: Standard review turnaround window in days before a submittal is considered overdue.
|
|
41
|
+
lookback_days:
|
|
42
|
+
default: 14
|
|
43
|
+
description: How many days of recently-approved submittals to spot-check.
|
|
44
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
45
|
+
notes: Distinct from rfi-response-time-tracker — RFIs resolve open questions about the documents; submittals are the contractor's proposed materials/shop drawings going back for approval against those documents.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
id: weather-delay-impact-log
|
|
2
|
+
version: 1
|
|
3
|
+
name: Weather Delay Impact Log
|
|
4
|
+
description: >
|
|
5
|
+
Reviews logged weather delay days against the project's schedule float
|
|
6
|
+
and flags when accumulated weather delays threaten a milestone, plus
|
|
7
|
+
checks whether the delay documentation is complete enough to support a
|
|
8
|
+
time-extension claim later. Use this if a weather delay claim has ever
|
|
9
|
+
been rejected because the daily documentation didn't clearly tie the
|
|
10
|
+
weather to lost work.
|
|
11
|
+
category: construction
|
|
12
|
+
tags: [construction, weather, delay, schedule, claims]
|
|
13
|
+
schedule: "0 8 * * 1"
|
|
14
|
+
timezone: "UTC"
|
|
15
|
+
runner: agent-prompt
|
|
16
|
+
prompt: |
|
|
17
|
+
Review the weather delay log ({{weather_delay_log_path}}) for project
|
|
18
|
+
{{project_name}} against the current schedule float
|
|
19
|
+
({{schedule_float_days}} days).
|
|
20
|
+
1. Sum total weather delay days logged this month and compare against
|
|
21
|
+
remaining schedule float.
|
|
22
|
+
2. Flag if accumulated weather delays now exceed or come within
|
|
23
|
+
{{warn_margin_days}} days of consuming the available float.
|
|
24
|
+
3. For each logged weather delay entry, check it documents: date,
|
|
25
|
+
condition (rain/wind/extreme heat/etc.), specific work made
|
|
26
|
+
impossible, and crew affected. Flag entries missing this detail as
|
|
27
|
+
insufficient for a future claim.
|
|
28
|
+
4. Summarize: total delay days, days of float remaining, and any
|
|
29
|
+
entries needing better documentation before the record is relied on.
|
|
30
|
+
variables:
|
|
31
|
+
weather_delay_log_path:
|
|
32
|
+
default: "./weather-delay-log.csv"
|
|
33
|
+
description: Path to the logged weather delay entries for the project.
|
|
34
|
+
project_name:
|
|
35
|
+
default: "the project"
|
|
36
|
+
description: Name of the project being reviewed.
|
|
37
|
+
schedule_float_days:
|
|
38
|
+
default: 10
|
|
39
|
+
description: Current schedule float/contingency in days, per the latest schedule update.
|
|
40
|
+
warn_margin_days:
|
|
41
|
+
default: 3
|
|
42
|
+
description: How close accumulated delays can get to consuming the float before flagging it.
|
|
43
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
44
|
+
notes: Documentation-quality judgment doesn't fit a fixed script — pair with your contract's notice-of-delay requirements for actual claims.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
id: chronic-absenteeism-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Chronic Absenteeism Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Calculates each student's missed-day percentage for the term and flags
|
|
6
|
+
anyone crossing the chronic-absenteeism threshold. Use this if a student
|
|
7
|
+
has ever quietly racked up enough missed days to count as chronically
|
|
8
|
+
absent before anyone outside the attendance office noticed.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, attendance, chronic-absenteeism, students]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v threshold="{{chronic_threshold_pct}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
enrolled = $2; absent = $3;
|
|
19
|
+
if (enrolled <= 0) next;
|
|
20
|
+
pct = (absent / enrolled) * 100;
|
|
21
|
+
if (pct >= threshold) {
|
|
22
|
+
printf "CHRONIC: %s — %d/%d days missed (%.1f%%)\n", $1, absent, enrolled, pct;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
' "{{attendance_csv_path}}"
|
|
26
|
+
variables:
|
|
27
|
+
attendance_csv_path:
|
|
28
|
+
default: "./term-attendance.csv"
|
|
29
|
+
description: "Path to a CSV with columns: student_name,enrolled_days,absent_days."
|
|
30
|
+
chronic_threshold_pct:
|
|
31
|
+
default: 10
|
|
32
|
+
description: Percentage of enrolled days missed that counts as chronically absent (10% is the common federal benchmark).
|
|
33
|
+
compatible_agents: [generic, claude, codex]
|
|
34
|
+
notes: This looks at the whole term to date, unlike attendance-anomaly-check which flags a short-term drop — the two catch different problems.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: department-budget-variance-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Department Budget Variance Check
|
|
4
|
+
description: >
|
|
5
|
+
Compares each department's or program's actual spending against its
|
|
6
|
+
budget and flags meaningful overages or underspend. Use this if a
|
|
7
|
+
department has ever blown through its annual budget months early
|
|
8
|
+
because nobody was checking actual-vs-budget until year-end
|
|
9
|
+
reconciliation.
|
|
10
|
+
category: education
|
|
11
|
+
tags: [education, budget, finance, departments]
|
|
12
|
+
schedule: "0 8 1 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: agent-prompt
|
|
15
|
+
prompt: |
|
|
16
|
+
Review department/program budget vs. actual spending from
|
|
17
|
+
{{finance_system_hint}} for the current fiscal year to date.
|
|
18
|
+
1. For each department or program, compute spend as a percentage of its
|
|
19
|
+
annual budget and compare that to the expected percentage of the
|
|
20
|
+
fiscal year elapsed.
|
|
21
|
+
2. Flag departments running more than {{variance_threshold_pct}}
|
|
22
|
+
percentage points ahead of pace (overspend risk) or behind pace
|
|
23
|
+
(possible underspend, use-it-or-lose-it risk, or a stalled
|
|
24
|
+
initiative).
|
|
25
|
+
3. Note any single large transactions that materially explain a
|
|
26
|
+
variance, if visible in the data.
|
|
27
|
+
4. Summarize so budget owners can adjust spending or reforecast before
|
|
28
|
+
the next reporting cycle.
|
|
29
|
+
variables:
|
|
30
|
+
finance_system_hint:
|
|
31
|
+
default: "your district finance/ERP system"
|
|
32
|
+
description: Where budget and actuals data lives.
|
|
33
|
+
variance_threshold_pct:
|
|
34
|
+
default: 15
|
|
35
|
+
description: Percentage-point gap between spend pace and time-elapsed pace that counts as worth flagging.
|
|
36
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
37
|
+
notes: This tracks department/program-level spending, not headcount or payroll cost, which HR budget jobs already cover separately.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
id: enrollment-withdrawal-trend-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Enrollment/Withdrawal Trend Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Reviews new enrollments and withdrawals over time and flags a school or
|
|
6
|
+
grade level that's losing students faster than usual. Use this if
|
|
7
|
+
enrollment decline has ever gone unnoticed for a semester because
|
|
8
|
+
individual withdrawals looked routine one at a time.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, enrollment, students, trends]
|
|
11
|
+
schedule: "0 8 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Review enrollment and withdrawal records from {{sis_hint}} for the last
|
|
16
|
+
{{lookback_months}} months.
|
|
17
|
+
1. Calculate net enrollment change by school and by grade level over the
|
|
18
|
+
window.
|
|
19
|
+
2. Flag any school or grade with a withdrawal rate above
|
|
20
|
+
{{withdrawal_rate_threshold_pct}}%, or a net enrollment decline that's
|
|
21
|
+
unusual compared to the same period in prior years if that data is
|
|
22
|
+
available.
|
|
23
|
+
3. Where withdrawal reasons are recorded, summarize the most common ones
|
|
24
|
+
(moved out of district, transferred to another school, homeschooling,
|
|
25
|
+
etc.) to help spot a pattern worth addressing versus normal mobility.
|
|
26
|
+
4. Summarize findings for administration, since sustained enrollment
|
|
27
|
+
decline affects staffing and funding decisions.
|
|
28
|
+
variables:
|
|
29
|
+
sis_hint:
|
|
30
|
+
default: "your student information system"
|
|
31
|
+
description: Where enrollment and withdrawal records live.
|
|
32
|
+
lookback_months:
|
|
33
|
+
default: 6
|
|
34
|
+
description: How many months of enrollment history to review.
|
|
35
|
+
withdrawal_rate_threshold_pct:
|
|
36
|
+
default: 8
|
|
37
|
+
description: Withdrawal rate percentage that counts as worth flagging.
|
|
38
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
39
|
+
notes: No generic script mode — SIS platforms and how they record withdrawal reasons vary too widely to assume a common export format.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
id: facility-work-order-backlog-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Facility Work Order Backlog Check
|
|
4
|
+
description: >
|
|
5
|
+
Reviews open facility maintenance work orders and flags the ones that
|
|
6
|
+
have been sitting too long, especially safety-related requests. Use
|
|
7
|
+
this if a maintenance ticket has ever gone stale for weeks until it
|
|
8
|
+
turned into a bigger, more expensive problem.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, facilities, maintenance, work-orders]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Review open facility work orders from {{facilities_system_hint}}.
|
|
16
|
+
1. List every work order still open after {{stale_days}} days, with its
|
|
17
|
+
school/building, description, and age.
|
|
18
|
+
2. Call out anything that reads as a safety or code issue (electrical,
|
|
19
|
+
HVAC failure in occupied spaces, structural, fire/life-safety,
|
|
20
|
+
accessibility) separately from routine cosmetic or convenience
|
|
21
|
+
requests — those need different urgency.
|
|
22
|
+
3. Group the remaining backlog by building so facilities staff can see
|
|
23
|
+
where the workload is concentrated.
|
|
24
|
+
4. Summarize counts and the oldest few tickets so leadership can decide
|
|
25
|
+
where to add capacity or reprioritize.
|
|
26
|
+
variables:
|
|
27
|
+
facilities_system_hint:
|
|
28
|
+
default: "your facilities/maintenance ticketing system"
|
|
29
|
+
description: Where work orders are tracked.
|
|
30
|
+
stale_days:
|
|
31
|
+
default: 14
|
|
32
|
+
description: Days a work order can stay open before it's counted as backlog.
|
|
33
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
34
|
+
notes: No generic script mode — facilities/maintenance ticketing systems vary too widely for a single export format.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: free-reduced-lunch-eligibility-renewal-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Free/Reduced Lunch Eligibility Renewal Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks free/reduced meal eligibility records for approvals that are
|
|
6
|
+
about to expire and flags families who need to renew. Use this if a
|
|
7
|
+
student has ever lost meal benefits mid-year because their eligibility
|
|
8
|
+
lapsed and nobody sent a renewal reminder in time.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, meals, eligibility, compliance]
|
|
11
|
+
schedule: "0 8 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v warnDays="{{warn_days}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
$3 == "no" {next}
|
|
18
|
+
{
|
|
19
|
+
cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
|
|
20
|
+
cmd | getline exp_epoch; close(cmd);
|
|
21
|
+
"date +%s" | getline now_epoch; close("date +%s");
|
|
22
|
+
days_left = (exp_epoch - now_epoch) / 86400;
|
|
23
|
+
if (days_left <= warnDays) {
|
|
24
|
+
printf "%s: %s eligibility expires %s (%d days)\n", (days_left < 0 ? "EXPIRED" : "RENEW SOON"), $1, $2, days_left;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
' "{{eligibility_csv_path}}"
|
|
28
|
+
variables:
|
|
29
|
+
eligibility_csv_path:
|
|
30
|
+
default: "./meal-eligibility.csv"
|
|
31
|
+
description: "Path to a CSV with columns: student_name,expiration_date (YYYY-MM-DD),active (yes/no)."
|
|
32
|
+
warn_days:
|
|
33
|
+
default: 21
|
|
34
|
+
description: Days before expiration to start warning, giving families time to resubmit paperwork.
|
|
35
|
+
compatible_agents: [generic, claude, codex]
|
|
36
|
+
notes: Route renewal notices through whatever family-communication channel the district already uses for meal program paperwork.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: iep-504-review-deadline-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: IEP/504 Review Deadline Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Checks upcoming IEP and 504 plan review deadlines and flags any that are
|
|
6
|
+
close or already past due. Use this if a required review has ever slipped
|
|
7
|
+
past its compliance deadline because it wasn't on anyone's calendar until
|
|
8
|
+
a parent or auditor asked about it.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, iep, 504-plan, compliance, deadlines]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v warnDays="{{warn_days}}" '
|
|
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
|
+
days_left = (due_epoch - now_epoch) / 86400;
|
|
22
|
+
if (days_left <= warnDays) {
|
|
23
|
+
printf "%s: %s review due %s (%d days)\n", (days_left < 0 ? "OVERDUE" : "DUE SOON"), $1, $2, days_left;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
' "{{plans_csv_path}}"
|
|
27
|
+
variables:
|
|
28
|
+
plans_csv_path:
|
|
29
|
+
default: "./iep-504-plans.csv"
|
|
30
|
+
description: "Path to a CSV with columns: student_name,next_review_due (YYYY-MM-DD)."
|
|
31
|
+
warn_days:
|
|
32
|
+
default: 14
|
|
33
|
+
description: Days before the review deadline to start warning.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: These deadlines are legally mandated in most jurisdictions — treat overdue results as urgent, not routine.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
id: parent-teacher-conference-noshow-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Parent-Teacher Conference No-Show Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Checks scheduled parent-teacher conferences against attendance and flags
|
|
6
|
+
no-shows for follow-up. Use this if a family has ever missed a
|
|
7
|
+
conference slot and nobody rescheduled it, especially for a student
|
|
8
|
+
where that conversation actually mattered.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, parent-engagement, conferences]
|
|
11
|
+
schedule: "0 17 * * 1-5"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
noshows=$(awk -F',' 'NR>1 && $4=="no-show" {print $1" (with "$2", "$3")"}' "{{conferences_csv_path}}");
|
|
16
|
+
count=$(echo "$noshows" | grep -c . || true);
|
|
17
|
+
if [ "$count" -gt 0 ]; then
|
|
18
|
+
echo "NO-SHOWS TO FOLLOW UP:";
|
|
19
|
+
echo "$noshows";
|
|
20
|
+
exit 1;
|
|
21
|
+
else
|
|
22
|
+
echo "OK: no unaddressed conference no-shows";
|
|
23
|
+
fi
|
|
24
|
+
variables:
|
|
25
|
+
conferences_csv_path:
|
|
26
|
+
default: "./conference-schedule.csv"
|
|
27
|
+
description: "Path to a CSV with columns: student_name,parent_name,teacher_name,status (attended, no-show, rescheduled)."
|
|
28
|
+
compatible_agents: [generic, claude, codex]
|
|
29
|
+
notes: Mark a no-show as rescheduled once a follow-up slot is booked, or it will keep showing up here.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
id: school-bus-route-ontime-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: School Bus Route On-Time Check
|
|
4
|
+
description: >
|
|
5
|
+
Reviews bus route arrival data and flags routes that are consistently
|
|
6
|
+
running late. Use this if a route has ever drifted later and later over
|
|
7
|
+
weeks with only individual parent complaints, never a pattern anyone
|
|
8
|
+
actually looked at.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, transportation, bus-routes]
|
|
11
|
+
schedule: "0 16 * * 1-5"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Review bus arrival/departure data from {{transportation_system_hint}} for
|
|
16
|
+
the last {{lookback_days}} days.
|
|
17
|
+
1. For each route, compare actual arrival times against the scheduled
|
|
18
|
+
times at each stop.
|
|
19
|
+
2. Flag any route that was late by more than {{late_threshold_min}}
|
|
20
|
+
minutes on {{repeat_occurrences}} or more days in the window —
|
|
21
|
+
one bad day is noise, a pattern is a scheduling or staffing problem.
|
|
22
|
+
3. For flagged routes, note whether the lateness looks tied to a specific
|
|
23
|
+
stop, time of day, or driver, since that changes what the fix is.
|
|
24
|
+
4. Summarize findings so transportation staff can adjust schedules or
|
|
25
|
+
staffing before it becomes a parent-complaint pattern.
|
|
26
|
+
variables:
|
|
27
|
+
transportation_system_hint:
|
|
28
|
+
default: "your bus/transportation tracking system"
|
|
29
|
+
description: Where route timing data lives (GPS tracker, dispatch software, etc.).
|
|
30
|
+
lookback_days:
|
|
31
|
+
default: 10
|
|
32
|
+
description: How many school days of route data to review.
|
|
33
|
+
late_threshold_min:
|
|
34
|
+
default: 10
|
|
35
|
+
description: Minutes past scheduled time that counts as late.
|
|
36
|
+
repeat_occurrences:
|
|
37
|
+
default: 3
|
|
38
|
+
description: Number of late days within the window that counts as a pattern worth flagging.
|
|
39
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
40
|
+
notes: No generic script mode — bus tracking/GPS systems vary too widely to assume a common export format.
|