@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,38 @@
|
|
|
1
|
+
id: proof-of-delivery-reconciliation-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Proof-of-Delivery Reconciliation Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks shipments marked delivered against whether a signed proof-of-
|
|
6
|
+
delivery has actually been received and filed. Use this if a delivery
|
|
7
|
+
dispute has ever dragged on for weeks because nobody could produce the
|
|
8
|
+
POD to settle it.
|
|
9
|
+
category: logistics
|
|
10
|
+
tags: [logistics, delivery, pod, reconciliation]
|
|
11
|
+
schedule: "0 8 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v days="{{missing_pod_warn_days}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
shipment=$1; delivered_date=$2; pod_received=$3;
|
|
19
|
+
if (pod_received == "no" || pod_received == "") {
|
|
20
|
+
cmd = "date -d \"" delivered_date "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" delivered_date "\" +%s 2>/dev/null";
|
|
21
|
+
cmd | getline delivered_epoch; close(cmd);
|
|
22
|
+
"date +%s" | getline now_epoch; close("date +%s");
|
|
23
|
+
age_days = (now_epoch - delivered_epoch) / 86400;
|
|
24
|
+
if (age_days >= days) {
|
|
25
|
+
printf "MISSING POD: shipment %s delivered %s (%d days ago), no proof-of-delivery on file\n", shipment, delivered_date, age_days;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
' "{{delivered_shipments_csv}}"
|
|
30
|
+
variables:
|
|
31
|
+
delivered_shipments_csv:
|
|
32
|
+
default: "./delivered-shipments.csv"
|
|
33
|
+
description: "Path to a CSV with columns: shipment_id,delivered_date,pod_received (yes/no) — export from your TMS or carrier POD feed."
|
|
34
|
+
missing_pod_warn_days:
|
|
35
|
+
default: 3
|
|
36
|
+
description: Days after delivery a POD can be missing before it's flagged.
|
|
37
|
+
compatible_agents: [generic, claude, codex]
|
|
38
|
+
notes: Assumes delivered status and POD receipt are both tracked in your TMS/carrier feed — this is the reconciliation backstop, not a POD capture system itself.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
id: route-load-optimization-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Route Load Optimization Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks planned truckload trailer fill rates and flags loads shipping
|
|
6
|
+
significantly under capacity. Use this if a half-empty trailer has
|
|
7
|
+
ever gone out the door because nobody checked fill rate before
|
|
8
|
+
dispatch, paying full linehaul cost for a fraction of the freight.
|
|
9
|
+
category: logistics
|
|
10
|
+
tags: [logistics, routing, load-planning, optimization]
|
|
11
|
+
schedule: "0 6 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v threshold="{{min_fill_pct}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
load=$1; fill_pct=$2;
|
|
19
|
+
if (fill_pct < threshold) {
|
|
20
|
+
printf "UNDERFILLED: load %s — %.1f%% trailer fill, below %d%% target\n", load, fill_pct, threshold;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
' "{{planned_loads_csv_path}}"
|
|
24
|
+
variables:
|
|
25
|
+
planned_loads_csv_path:
|
|
26
|
+
default: "./planned-loads.csv"
|
|
27
|
+
description: "Path to a CSV with columns: load_id,fill_pct — one row per load planned for today's dispatch, exported from your routing/load planning system."
|
|
28
|
+
min_fill_pct:
|
|
29
|
+
default: 80
|
|
30
|
+
description: Minimum acceptable trailer fill percentage before a load is flagged as underfilled.
|
|
31
|
+
compatible_agents: [generic, claude, codex]
|
|
32
|
+
notes: Assumes your routing/load-building system can export planned fill rate per load before dispatch — this is the pre-dispatch check, not a route optimization engine itself.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
id: changeover-time-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Changeover Time Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Compares logged changeover/setup durations against a target and flags
|
|
6
|
+
the ones that ran long. Use this if a slow product changeover has ever
|
|
7
|
+
eaten into a shift's output without anyone tracing the lost hours back
|
|
8
|
+
to the setup itself.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, changeover, setup, efficiency]
|
|
11
|
+
schedule: "0 6 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v target={{changeover_target_minutes}} '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
if ($3 > target) printf "LONG CHANGEOVER: line %s, %s -> %s, took %d min (target %d min)\n", $1, $2, $4, $3, target;
|
|
19
|
+
}
|
|
20
|
+
' "{{changeover_log_csv}}"
|
|
21
|
+
variables:
|
|
22
|
+
changeover_log_csv:
|
|
23
|
+
default: "./changeover-log.csv"
|
|
24
|
+
description: "CSV with header row, columns: line_id,from_product,duration_minutes,to_product — one row per changeover event."
|
|
25
|
+
changeover_target_minutes:
|
|
26
|
+
default: 45
|
|
27
|
+
description: Maximum acceptable changeover duration in minutes before it's flagged.
|
|
28
|
+
compatible_agents: [generic, claude, codex]
|
|
29
|
+
notes: Log each changeover's start/end from the line's MES event stream or a shift supervisor's log — this job only compares durations against target, it doesn't time the changeover itself.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
id: critical-spare-parts-stock-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Critical Spare Parts Stock Check
|
|
4
|
+
description: >
|
|
5
|
+
Compares on-hand stock of critical maintenance spare parts against a
|
|
6
|
+
set minimum and flags anything running low. Use this if a machine has
|
|
7
|
+
ever sat down for days waiting on a spare part that a stock check
|
|
8
|
+
would have caught weeks earlier.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, maintenance, spare-parts, inventory]
|
|
11
|
+
schedule: "0 6 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{ if ($2 < $3) printf "LOW STOCK: critical spare \"%s\" — %d on hand, minimum %d\n", $1, $2, $3; }
|
|
18
|
+
' "{{spare_parts_csv}}"
|
|
19
|
+
variables:
|
|
20
|
+
spare_parts_csv:
|
|
21
|
+
default: "./critical-spare-parts.csv"
|
|
22
|
+
description: "CSV with header row, columns: part_name,qty_on_hand,min_qty — limited to parts flagged critical for equipment uptime, not general MRO stock."
|
|
23
|
+
compatible_agents: [generic, claude, codex]
|
|
24
|
+
notes: >
|
|
25
|
+
Scoped to critical maintenance spares tied to specific equipment
|
|
26
|
+
(bearings, belts, sensors for machines on the floor), not general
|
|
27
|
+
warehouse/retail inventory — see inventory category's low-stock-alert
|
|
28
|
+
for that. Export critical-spare-parts.csv from your CMMS spare parts
|
|
29
|
+
module.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: first-pass-yield-report
|
|
2
|
+
version: 1
|
|
3
|
+
name: First-Pass Yield Report
|
|
4
|
+
description: >
|
|
5
|
+
Calculates yesterday's first-pass yield (units that passed inspection
|
|
6
|
+
without rework) per production line and flags any line below target.
|
|
7
|
+
Use this if rework has ever been quietly absorbed as "normal" until
|
|
8
|
+
someone finally rolled up the numbers and saw how much it was costing.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, quality, yield, production]
|
|
11
|
+
schedule: "0 7 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v target={{fpy_target_pct}} '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
total[$1] += $2;
|
|
19
|
+
passed[$1] += $3;
|
|
20
|
+
}
|
|
21
|
+
END {
|
|
22
|
+
for (line in total) {
|
|
23
|
+
fpy = (passed[line] / total[line]) * 100;
|
|
24
|
+
status = (fpy < target) ? "BELOW TARGET" : "OK";
|
|
25
|
+
printf "%s: line %s — %.1f%% first-pass yield (%d of %d units), target %d%%\n", status, line, fpy, passed[line], total[line], target;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
' "{{production_log_csv}}"
|
|
29
|
+
variables:
|
|
30
|
+
production_log_csv:
|
|
31
|
+
default: "./production-yield-log.csv"
|
|
32
|
+
description: "CSV with header row, columns: line_id,units_produced,units_passed_first_time — one row per shift/day for the reporting window."
|
|
33
|
+
fpy_target_pct:
|
|
34
|
+
default: 95
|
|
35
|
+
description: Minimum acceptable first-pass yield percentage per line.
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: Export production-yield-log.csv from your MES's inspection/rework records before each run — a unit only counts as "passed" if it needed no rework or re-inspection.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: lot-traceability-audit
|
|
2
|
+
version: 1
|
|
3
|
+
name: Lot Traceability Audit
|
|
4
|
+
description: >
|
|
5
|
+
Spot-checks that finished-goods lots have complete genealogy back to
|
|
6
|
+
their raw material lots and process records. Use this if a recall has
|
|
7
|
+
ever turned into a scramble because a lot's traceability records had
|
|
8
|
+
gaps nobody caught until they were needed under pressure.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, traceability, quality, compliance, lots]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Pull the list of finished-goods lots produced in the last
|
|
16
|
+
{{lookback_days}} days from {{traceability_system}}. For a sample of
|
|
17
|
+
{{sample_size}} lots (or all of them if fewer), verify each has:
|
|
18
|
+
1. A linked raw material lot / component lot record.
|
|
19
|
+
2. A linked process record (line, operator, date, key process
|
|
20
|
+
parameters).
|
|
21
|
+
3. A linked QC/inspection record with a disposition (pass/hold/reject).
|
|
22
|
+
|
|
23
|
+
Report any lot missing one of these links as a traceability gap, with
|
|
24
|
+
the lot ID and which link is missing. Summarize overall: lots checked,
|
|
25
|
+
lots with complete genealogy, lots with gaps.
|
|
26
|
+
variables:
|
|
27
|
+
traceability_system:
|
|
28
|
+
default: "your MES/QMS lot genealogy records"
|
|
29
|
+
description: System of record for lot genealogy and production/QC linkage.
|
|
30
|
+
lookback_days:
|
|
31
|
+
default: 30
|
|
32
|
+
description: How many days back to pull finished-goods lots from.
|
|
33
|
+
sample_size:
|
|
34
|
+
default: 20
|
|
35
|
+
description: Number of lots to spot-check per run (use a full audit periodically instead of every run for large volumes).
|
|
36
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
37
|
+
notes: This is a spot-check, not a full recall-readiness audit — schedule a complete review of all lots on a longer cadence (e.g. quarterly) separately.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
id: non-conformance-report-backlog-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Non-Conformance Report Backlog Check
|
|
4
|
+
description: >
|
|
5
|
+
Counts open non-conformance reports (NCRs) that have gone past their
|
|
6
|
+
disposition deadline without a root cause or corrective action logged.
|
|
7
|
+
Use this if an NCR has ever sat open for months with the nonconforming
|
|
8
|
+
material still floating around because nobody was tracking the
|
|
9
|
+
disposition clock.
|
|
10
|
+
category: manufacturing
|
|
11
|
+
tags: [manufacturing, quality, ncr, corrective-action, compliance]
|
|
12
|
+
schedule: "0 7 * * 1-5"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
today=$(date +%s);
|
|
17
|
+
awk -F',' -v today="$today" '
|
|
18
|
+
NR==1 {next}
|
|
19
|
+
$2 == "open" {
|
|
20
|
+
cmd="date -d \"" $3 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $3 "\" +%s";
|
|
21
|
+
cmd | getline due_ts; close(cmd);
|
|
22
|
+
if (due_ts < today) { overdue++; printf "OVERDUE: NCR %s (\"%s\") past disposition deadline of %s\n", $1, $4, $3 }
|
|
23
|
+
else open_count++;
|
|
24
|
+
}
|
|
25
|
+
END {
|
|
26
|
+
printf "Summary: %d NCR(s) open and on track, %d overdue past disposition deadline\n", open_count+0, overdue+0;
|
|
27
|
+
}
|
|
28
|
+
' "{{ncr_log_csv}}"
|
|
29
|
+
variables:
|
|
30
|
+
ncr_log_csv:
|
|
31
|
+
default: "./ncr-log.csv"
|
|
32
|
+
description: "CSV with header row, columns: ncr_id,status (open/closed),disposition_due_date(YYYY-MM-DD),description."
|
|
33
|
+
compatible_agents: [generic, claude, codex]
|
|
34
|
+
notes: Export ncr-log.csv from your QMS's non-conformance module before each run — this checks the disposition clock, it doesn't evaluate root cause quality.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: oee-efficiency-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: OEE Efficiency Check
|
|
4
|
+
description: >
|
|
5
|
+
Calculates Overall Equipment Effectiveness (availability x performance x
|
|
6
|
+
quality) for a line from a production log and flags it when it drops
|
|
7
|
+
below target. Use this if a line has ever "felt slow" for weeks before
|
|
8
|
+
anyone put a single number on how much effectiveness it was actually
|
|
9
|
+
losing.
|
|
10
|
+
category: manufacturing
|
|
11
|
+
tags: [manufacturing, oee, efficiency, production]
|
|
12
|
+
schedule: "0 7 * * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
awk -F',' -v target={{oee_target_pct}} '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
{
|
|
19
|
+
planned=$2; runtime=$3; ideal_rate=$4; total_count=$5; good_count=$6;
|
|
20
|
+
availability = runtime / planned;
|
|
21
|
+
performance = (ideal_rate > 0) ? (total_count / (runtime * ideal_rate)) : 0;
|
|
22
|
+
if (performance > 1) performance = 1;
|
|
23
|
+
quality = (total_count > 0) ? (good_count / total_count) : 0;
|
|
24
|
+
oee = availability * performance * quality * 100;
|
|
25
|
+
status = (oee < target) ? "BELOW TARGET" : "OK";
|
|
26
|
+
printf "%s: line %s — OEE %.1f%% (avail %.0f%%, perf %.0f%%, qual %.0f%%), target %d%%\n", status, $1, oee, availability*100, performance*100, quality*100, target;
|
|
27
|
+
}
|
|
28
|
+
' "{{oee_log_csv}}"
|
|
29
|
+
variables:
|
|
30
|
+
oee_log_csv:
|
|
31
|
+
default: "./oee-log.csv"
|
|
32
|
+
description: "CSV with header row, columns: line_id,planned_minutes,runtime_minutes,ideal_units_per_minute,total_units,good_units — one row per line/day."
|
|
33
|
+
oee_target_pct:
|
|
34
|
+
default: 85
|
|
35
|
+
description: Minimum acceptable OEE percentage per line (world-class benchmark is often ~85%; adjust to your baseline).
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: Export oee-log.csv from your MES's downtime and count records — this is a standard availability x performance x quality OEE calculation, not a substitute for the line-level downtime-cause detail in production-line-downtime-watch.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: osha-recordable-incident-audit
|
|
2
|
+
version: 1
|
|
3
|
+
name: OSHA Recordable Incident Log Audit
|
|
4
|
+
description: >
|
|
5
|
+
Checks the incident log for recordable injuries that haven't been
|
|
6
|
+
logged on the OSHA 300 form within the required window. Use this if a
|
|
7
|
+
recordable incident has ever slipped past the logging deadline because
|
|
8
|
+
the person who handled the report forgot to also update the 300 log.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, safety, osha, compliance]
|
|
11
|
+
schedule: "0 7 * * 1-5"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
awk -F',' -v today="$today" -v deadline={{logging_deadline_days}} '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
$3 == "yes" && $4 == "no" {
|
|
19
|
+
cmd="date -d \"" $2 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $2 "\" +%s";
|
|
20
|
+
cmd | getline inc_ts; close(cmd);
|
|
21
|
+
days_since = int((today - inc_ts) / 86400);
|
|
22
|
+
if (days_since >= deadline) printf "OVERDUE: incident %s (%s) is recordable and unlogged, %d days since it happened (deadline %d days)\n", $1, $2, days_since, deadline;
|
|
23
|
+
else printf "PENDING: incident %s (%s) recordable and unlogged, %d days left to log\n", $1, $2, (deadline - days_since);
|
|
24
|
+
}
|
|
25
|
+
' "{{incident_log_csv}}"
|
|
26
|
+
variables:
|
|
27
|
+
incident_log_csv:
|
|
28
|
+
default: "./incident-log.csv"
|
|
29
|
+
description: "CSV with header row, columns: incident_id,incident_date(YYYY-MM-DD),recordable(yes/no),logged_on_300(yes/no)."
|
|
30
|
+
logging_deadline_days:
|
|
31
|
+
default: 7
|
|
32
|
+
description: Days allowed to record a qualifying incident on the OSHA 300 log before it's flagged overdue.
|
|
33
|
+
compatible_agents: [generic, claude, codex]
|
|
34
|
+
notes: >
|
|
35
|
+
This checks logging timeliness against a configurable window you set —
|
|
36
|
+
confirm current OSHA recordkeeping deadlines with your safety officer
|
|
37
|
+
or counsel, this job doesn't determine recordability itself.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: production-schedule-adherence-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Production Schedule Adherence Check
|
|
4
|
+
description: >
|
|
5
|
+
Compares actual output against the planned production schedule and
|
|
6
|
+
explains any meaningful variance. Use this if a schedule slip has ever
|
|
7
|
+
gone unexplained until it was too late to recover the shift, because
|
|
8
|
+
nobody compared plan vs. actual until the week was already over.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, production-planning, schedule, variance]
|
|
11
|
+
schedule: "0 6 * * 1-5"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Pull yesterday's planned vs. actual production output per line from
|
|
16
|
+
{{data_source}}. For any line where actual output missed plan by more
|
|
17
|
+
than {{variance_threshold_pct}}%:
|
|
18
|
+
1. Report the planned quantity, actual quantity, and variance.
|
|
19
|
+
2. Check downtime/quality logs for that line for the same period and
|
|
20
|
+
note any likely cause (downtime event, quality hold, changeover,
|
|
21
|
+
staffing).
|
|
22
|
+
3. If no clear cause is found in the logs, flag it as "unexplained
|
|
23
|
+
variance" for a supervisor to look into.
|
|
24
|
+
|
|
25
|
+
Summarize lines on plan, lines behind with an identified cause, and
|
|
26
|
+
lines with unexplained variance.
|
|
27
|
+
variables:
|
|
28
|
+
data_source:
|
|
29
|
+
default: "your MES/ERP production schedule and output records"
|
|
30
|
+
description: System of record for planned schedule, actual output, and downtime/quality logs.
|
|
31
|
+
variance_threshold_pct:
|
|
32
|
+
default: 10
|
|
33
|
+
description: Percentage variance from plan that triggers a variance investigation.
|
|
34
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
35
|
+
notes: Complements production-line-downtime-watch and quality-defect-rate-check by tying variance back to a likely cause instead of just reporting the stoppage or defect rate in isolation.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: safety-certification-expiry-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Safety Equipment Operator Certification Expiry Check
|
|
4
|
+
description: >
|
|
5
|
+
Warns before an operator's certification for safety-sensitive equipment
|
|
6
|
+
(forklift, overhead crane, powered industrial truck, etc.) expires. Use
|
|
7
|
+
this if an uncertified operator has ever kept running equipment for
|
|
8
|
+
weeks because nobody was tracking cert expiry dates against the roster.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, safety, certification, training, compliance]
|
|
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={{warn_days}} '
|
|
17
|
+
NR>1 {
|
|
18
|
+
cmd="date -d \"" $3 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $3 "\" +%s";
|
|
19
|
+
cmd | getline exp_ts; close(cmd);
|
|
20
|
+
days_left = int((exp_ts - today) / 86400);
|
|
21
|
+
if (days_left <= warn) print "WARNING: " $1 "'"'"'s " $2 " certification expires in " days_left " days (" $3 ")";
|
|
22
|
+
}
|
|
23
|
+
' {{operator_certs_csv}}
|
|
24
|
+
variables:
|
|
25
|
+
operator_certs_csv:
|
|
26
|
+
default: "./operator-certifications.csv"
|
|
27
|
+
description: "CSV with header row, columns: operator_name,equipment_type,cert_expiry_date(YYYY-MM-DD)."
|
|
28
|
+
warn_days:
|
|
29
|
+
default: 21
|
|
30
|
+
description: Days before a certification expires to start warning.
|
|
31
|
+
compatible_agents: [generic, claude, codex]
|
|
32
|
+
notes: >
|
|
33
|
+
Covers operator training certifications (who's allowed to run the
|
|
34
|
+
equipment), distinct from warehousing's forklift-inspection-check,
|
|
35
|
+
which covers pre-shift equipment condition checks, not operator
|
|
36
|
+
credentials. Keep operator-certifications.csv updated from your
|
|
37
|
+
training records after each recertification.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
id: scrap-waste-rate-watch
|
|
2
|
+
version: 1
|
|
3
|
+
name: Scrap and Waste Rate Watch
|
|
4
|
+
description: >
|
|
5
|
+
Tracks scrapped material as a percentage of total material consumed and
|
|
6
|
+
flags it when it runs above target. Use this if scrap has ever crept up
|
|
7
|
+
gradually until it showed up as a surprise hit to material cost at
|
|
8
|
+
month-end.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, scrap, waste, cost]
|
|
11
|
+
schedule: "0 7 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v target={{scrap_target_pct}} '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{ consumed += $2; scrapped += $3 }
|
|
18
|
+
END {
|
|
19
|
+
if (consumed == 0) { print "OK: no material consumption logged for the period"; exit 0 }
|
|
20
|
+
pct = (scrapped / consumed) * 100;
|
|
21
|
+
if (pct > target) printf "ABOVE TARGET: scrap rate %.2f%% (%.0f of %.0f units scrapped), target %.2f%%\n", pct, scrapped, consumed, target;
|
|
22
|
+
else printf "OK: scrap rate %.2f%% is within the %.2f%% target\n", pct, target;
|
|
23
|
+
}
|
|
24
|
+
' "{{scrap_log_csv}}"
|
|
25
|
+
variables:
|
|
26
|
+
scrap_log_csv:
|
|
27
|
+
default: "./scrap-log.csv"
|
|
28
|
+
description: "CSV with header row, columns: material,units_consumed,units_scrapped — one row per material/day for the reporting window."
|
|
29
|
+
scrap_target_pct:
|
|
30
|
+
default: 3
|
|
31
|
+
description: Maximum acceptable scrap rate as a percentage of material consumed.
|
|
32
|
+
compatible_agents: [generic, claude, codex]
|
|
33
|
+
notes: Export scrap-log.csv from your MES's material consumption and scrap-reason records before each run.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: shift-handoff-report
|
|
2
|
+
version: 1
|
|
3
|
+
name: Shift Handoff Report
|
|
4
|
+
description: >
|
|
5
|
+
Pulls the outgoing shift's production, downtime, and open-issue notes
|
|
6
|
+
and drafts a handoff summary for the incoming shift lead. Use this if
|
|
7
|
+
an incoming shift has ever started blind because the handoff was a
|
|
8
|
+
rushed hallway conversation instead of something written down.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, shift-handoff, production, communication]
|
|
11
|
+
schedule: "0 6,14,22 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Pull data for the shift that just ended on line(s) {{line_ids}} from
|
|
16
|
+
{{data_source}}: units produced vs. target, any downtime events and
|
|
17
|
+
their duration/cause, quality holds or rejects, and any open
|
|
18
|
+
maintenance or safety issues.
|
|
19
|
+
|
|
20
|
+
Draft a shift handoff note for the incoming lead covering:
|
|
21
|
+
1. Production vs. target for the shift, in one line.
|
|
22
|
+
2. Any downtime events, with cause and duration.
|
|
23
|
+
3. Open issues the incoming shift needs to watch (unresolved quality
|
|
24
|
+
holds, equipment acting up, parts running low).
|
|
25
|
+
4. Anything explicitly flagged by the outgoing lead as "don't forget."
|
|
26
|
+
|
|
27
|
+
Keep it to a few short bullets — this should be readable in under a
|
|
28
|
+
minute at the start of a shift, not a full report.
|
|
29
|
+
variables:
|
|
30
|
+
line_ids:
|
|
31
|
+
default: "line-1"
|
|
32
|
+
description: Production line(s) this handoff covers.
|
|
33
|
+
data_source:
|
|
34
|
+
default: "your MES/SCADA system and shift log"
|
|
35
|
+
description: Where to pull production, downtime, and issue data from.
|
|
36
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
37
|
+
notes: Draft-only — review before posting to the shift log or handing off verbally, especially anything about open safety issues.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
id: supplier-quality-ppm-watch
|
|
2
|
+
version: 1
|
|
3
|
+
name: Supplier Quality PPM Watch
|
|
4
|
+
description: >
|
|
5
|
+
Calculates each supplier's defect rate in parts-per-million from
|
|
6
|
+
incoming inspection records and flags anyone above target. Use this if
|
|
7
|
+
a supplier's defective parts have ever slipped through in small enough
|
|
8
|
+
numbers each month that no one noticed the trend until a batch got bad
|
|
9
|
+
enough to stop the line.
|
|
10
|
+
category: manufacturing
|
|
11
|
+
tags: [manufacturing, supplier, quality, incoming-inspection, ppm]
|
|
12
|
+
schedule: "0 8 1 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
awk -F',' -v target={{ppm_target}} '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
{
|
|
19
|
+
received[$1] += $2;
|
|
20
|
+
rejected[$1] += $3;
|
|
21
|
+
}
|
|
22
|
+
END {
|
|
23
|
+
for (s in received) {
|
|
24
|
+
ppm = (rejected[s] / received[s]) * 1000000;
|
|
25
|
+
status = (ppm > target) ? "ABOVE TARGET" : "OK";
|
|
26
|
+
printf "%s: supplier %s — %.0f PPM (%d rejected of %d received), target %d PPM\n", status, s, ppm, rejected[s], received[s], target;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
' "{{incoming_inspection_csv}}"
|
|
30
|
+
variables:
|
|
31
|
+
incoming_inspection_csv:
|
|
32
|
+
default: "./incoming-inspection-log.csv"
|
|
33
|
+
description: "CSV with header row, columns: supplier_name,units_received,units_rejected — one row per receipt/day for the reporting window."
|
|
34
|
+
ppm_target:
|
|
35
|
+
default: 500
|
|
36
|
+
description: Maximum acceptable defective parts-per-million before a supplier is flagged.
|
|
37
|
+
compatible_agents: [generic, claude, codex]
|
|
38
|
+
notes: Distinct from supplier-otd-performance-watch — that one tracks delivery timeliness, this one tracks incoming part quality. Export incoming-inspection-log.csv from your receiving/incoming-QC records.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
id: tooling-die-wear-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Tooling and Die Wear Check
|
|
4
|
+
description: >
|
|
5
|
+
Tracks cycle counts against a tool or die's rated life and flags it
|
|
6
|
+
when it's approaching end-of-life. Use this if a worn die has ever kept
|
|
7
|
+
running past its rated cycle count until it started producing bad
|
|
8
|
+
parts nobody traced back to the tooling.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, tooling, dies, maintenance, wear]
|
|
11
|
+
schedule: "0 6 * * 1-5"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v warn={{warn_pct_remaining}} '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
pct_used = ($2 / $3) * 100;
|
|
19
|
+
pct_remaining = 100 - pct_used;
|
|
20
|
+
if (pct_remaining <= warn) printf "WARNING: tool \"%s\" at %.0f%% of rated life (%d of %d cycles), %.0f%% remaining\n", $1, pct_used, $2, $3, pct_remaining;
|
|
21
|
+
}
|
|
22
|
+
' "{{tooling_cycles_csv}}"
|
|
23
|
+
variables:
|
|
24
|
+
tooling_cycles_csv:
|
|
25
|
+
default: "./tooling-cycle-counts.csv"
|
|
26
|
+
description: "CSV with header row, columns: tool_id,cycles_used,rated_life_cycles."
|
|
27
|
+
warn_pct_remaining:
|
|
28
|
+
default: 15
|
|
29
|
+
description: Percentage of rated life remaining at which to start warning.
|
|
30
|
+
compatible_agents: [generic, claude, codex]
|
|
31
|
+
notes: Update tooling-cycle-counts.csv from your press/molding machine's cycle counters or MES tooling module before each run — one row per active tool or die.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: work-order-backlog-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Work Order Backlog Check
|
|
4
|
+
description: >
|
|
5
|
+
Counts open production work orders that have sat unstarted or unfinished
|
|
6
|
+
past their planned completion date. Use this if a work order has ever
|
|
7
|
+
quietly aged for weeks in the queue while everyone assumed someone else
|
|
8
|
+
had picked it up.
|
|
9
|
+
category: manufacturing
|
|
10
|
+
tags: [manufacturing, work-orders, production-planning, backlog]
|
|
11
|
+
schedule: "0 6 * * 1-5"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
awk -F',' -v today="$today" -v warn={{overdue_warn_count}} '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
{
|
|
19
|
+
cmd="date -d \"" $3 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $3 "\" +%s";
|
|
20
|
+
cmd | getline due_ts; close(cmd);
|
|
21
|
+
if ($2 != "closed" && due_ts < today) { overdue++; printf "OVERDUE: work order %s (\"%s\") was due %s\n", $1, $4, $3 }
|
|
22
|
+
}
|
|
23
|
+
END {
|
|
24
|
+
if (overdue+0 >= warn) print "WARNING: " overdue " work orders are past their planned completion date";
|
|
25
|
+
else if (overdue+0 > 0) print "NOTE: " overdue " work order(s) overdue, below the " warn "-order warning threshold";
|
|
26
|
+
else print "OK: no overdue work orders";
|
|
27
|
+
}
|
|
28
|
+
' "{{work_orders_csv}}"
|
|
29
|
+
variables:
|
|
30
|
+
work_orders_csv:
|
|
31
|
+
default: "./work-orders.csv"
|
|
32
|
+
description: "CSV with header row, columns: work_order_id,status (open/in-progress/closed),due_date(YYYY-MM-DD),description."
|
|
33
|
+
overdue_warn_count:
|
|
34
|
+
default: 5
|
|
35
|
+
description: Number of overdue work orders that triggers a WARNING instead of a NOTE.
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: Export work-orders.csv from your MES/ERP work order module before each run — this job only compares dates, it doesn't pull the data itself.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
id: ad-creative-fatigue-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Ad Creative Fatigue Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks an ad creative's frequency (average times seen per user) and
|
|
6
|
+
click-through rate against thresholds, flagging fatigue before
|
|
7
|
+
performance craters. Use this if a top-performing ad has ever kept
|
|
8
|
+
running past its shelf life, burning budget on an audience that had
|
|
9
|
+
already tuned it out.
|
|
10
|
+
category: marketing
|
|
11
|
+
tags: [marketing, ads, creative, fatigue]
|
|
12
|
+
schedule: "0 8 * * 1"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
stats=$(curl -s -H "Authorization: Bearer {{ad_platform_api_token}}" "{{ad_platform_stats_api_url}}");
|
|
17
|
+
frequency=$(echo "$stats" | grep -o '"frequency":[0-9.]*' | head -n1 | cut -d: -f2);
|
|
18
|
+
ctr=$(echo "$stats" | grep -o '"ctr":[0-9.]*' | head -n1 | cut -d: -f2);
|
|
19
|
+
if [ -z "$frequency" ] || [ -z "$ctr" ]; then echo "ERROR: could not fetch frequency/ctr from {{ad_platform_stats_api_url}}"; exit 1; fi;
|
|
20
|
+
if awk "BEGIN{exit !($frequency > {{max_frequency}} && $ctr < {{min_ctr_pct}})}"; then
|
|
21
|
+
echo "WARNING: creative {{creative_name}} fatigued — frequency ${frequency} (max {{max_frequency}}), CTR ${ctr}% (min {{min_ctr_pct}}%)";
|
|
22
|
+
exit 1;
|
|
23
|
+
else echo "OK: creative {{creative_name}} — frequency ${frequency}, CTR ${ctr}%"; fi
|
|
24
|
+
variables:
|
|
25
|
+
ad_platform_stats_api_url:
|
|
26
|
+
default: "https://api.example-ads.com/creatives/{{creative_name}}/stats"
|
|
27
|
+
description: Ad platform reporting API endpoint returning frequency and ctr fields for the creative.
|
|
28
|
+
ad_platform_api_token:
|
|
29
|
+
default: "your-api-token"
|
|
30
|
+
description: API token for the ad platform.
|
|
31
|
+
creative_name:
|
|
32
|
+
default: "your creative"
|
|
33
|
+
description: Name/ID of the ad creative to check.
|
|
34
|
+
max_frequency:
|
|
35
|
+
default: 4
|
|
36
|
+
description: Average impressions per user above which fatigue is likely.
|
|
37
|
+
min_ctr_pct:
|
|
38
|
+
default: 0.5
|
|
39
|
+
description: Click-through rate percent below which, combined with high frequency, counts as fatigue.
|
|
40
|
+
compatible_agents: [generic, claude, codex]
|
|
41
|
+
notes: >
|
|
42
|
+
Generic REST pattern — point at your ad platform's reporting API for a
|
|
43
|
+
single creative; both frequency and CTR must miss their thresholds
|
|
44
|
+
together so a naturally low-CTR-but-fresh creative doesn't false-flag.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
id: affiliate-partner-performance-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Affiliate/Partner Performance Check
|
|
4
|
+
description: >
|
|
5
|
+
Compares each affiliate or partner's referred conversions and revenue
|
|
6
|
+
against their target for the period and flags underperformers. Use
|
|
7
|
+
this if a partner program has ever kept paying placement fees to
|
|
8
|
+
partners who quietly stopped actually driving conversions.
|
|
9
|
+
category: marketing
|
|
10
|
+
tags: [marketing, affiliate, partners, performance]
|
|
11
|
+
schedule: "0 8 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
fail=0;
|
|
16
|
+
while IFS=',' read -r partner conversions revenue target_revenue; do
|
|
17
|
+
[ "$partner" = "partner_name" ] && continue;
|
|
18
|
+
[ -z "$partner" ] && continue;
|
|
19
|
+
pct=$(awk "BEGIN{printf \"%.0f\", ($revenue/$target_revenue)*100}");
|
|
20
|
+
if awk "BEGIN{exit !($pct < {{underperformance_threshold_pct}})}"; then
|
|
21
|
+
echo "UNDERPERFORMING: $partner — \$$revenue of \$$target_revenue target (${pct}%), $conversions conversions";
|
|
22
|
+
fail=1;
|
|
23
|
+
fi;
|
|
24
|
+
done < "{{partner_performance_csv_path}}";
|
|
25
|
+
exit $fail
|
|
26
|
+
variables:
|
|
27
|
+
partner_performance_csv_path:
|
|
28
|
+
default: "./partner-performance.csv"
|
|
29
|
+
description: "CSV with header row, columns: partner_name,conversions,revenue,target_revenue — one row per affiliate/partner for the period."
|
|
30
|
+
underperformance_threshold_pct:
|
|
31
|
+
default: 50
|
|
32
|
+
description: Percent of target revenue below which a partner is flagged as underperforming.
|
|
33
|
+
compatible_agents: [generic, claude, codex]
|
|
34
|
+
notes: >
|
|
35
|
+
Distinct from creator/affiliate-link-expiry-check (tracks individual
|
|
36
|
+
link/code expiry dates) — this tracks whether each partner relationship
|
|
37
|
+
is still actually performing, on a recurring per-period cadence rather
|
|
38
|
+
than a link-by-link deadline.
|