route-print-pack

Builds a print-ready daily delivery route pack PDF from LionWheel and Green Invoice data.

Updated May 8, 2026
One-click install
npx skills add https://github.com/tomw200082-collab/gt-factory-os-production-brain --skill route-print-pack-tomw200082-collab
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: route-print-pack
Source: https://github.com/tomw200082-collab/gt-factory-os-production-brain/tree/main/.claude/skills/route-print-pack
Command: npx skills add https://github.com/tomw200082-collab/gt-factory-os-production-brain --skill route-print-pack-tomw200082-collab

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires pymupdf, pypdf, python-bidi, playwright, and includes scripts (resource) components.

What problem does it solve? Preparing a driver's daily delivery pack means manually pulling the LionWheel work order, hunting down each stop's Green Invoice document, marking picking shortfalls, and printing everything in driving order — a slow, error-prone routine repeated every day. ## Core Features & Use Cases - One merged print-ready PDF: Page 1 is the real LionWheel work order fitted to a single A4 page, followed by every stop in driving order with the annotated Green Invoice (×2 copies) or an official LionWheel waybill when no invoice exists. - Invoice annotation: Stamps per-line picking marks (✓ / ✗ / partial pill), the order id chip, and the package-count badge directly onto the real invoice PDF, and trims blank trailing pages to save paper. - Inventory movement approvals: Detects non-standard stock moves (returns, exchanges, tastings, goods received) and submits them as pending approvals to the Factory OS inbox — never writing to the stock ledger directly. - Email delivery: Sends the finished PDF plus a shortfall summary to production@gteveryday.com through a Supabase Edge Function relay using Resend. - Use Case: Say "prepare tomorrow's route pack for Maxim" and the skill resolves the driver and next working day, builds the pack after the picking line locks, proposes inventory movements for approval, and emails the result. ## Quick Start Ask the assistant to prepare tomorrow's route pack for a named driver, optionally giving a date in YYYY-MM-DD format.

Frequently Asked Questions about route-print-pack

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I generate a daily delivery route pack PDF?▼

Run route_pack.py with a driver name and date, for example python3 route_pack.py --driver "מקסים" --date 2026-06-22. Both arguments are optional: the driver defaults to the configured route driver and the date defaults to the next working day.

How does the skill match Green Invoice documents to orders?▼

It first uses the direct greeninvoice.co.il link on the LionWheel task, then falls back to searching the full Green Invoice document history, paginating newest-first and matching the exact #GT order id in the document remarks. A stop only falls back to a LionWheel waybill when no invoice exists at all.

What Python dependencies does the route pack script need?▼

The scripts require pymupdf, pypdf, python-bidi, and playwright with a Chromium browser installed. API credentials for LionWheel, Green Invoice, Resend, and Supabase must be provided as environment variables.

Does the route pack skill write to the stock ledger?▼

No. The skill only proposes non-standard inventory movements such as returns and exchanges as pending approvals in the Factory OS inbox. Stock ledger entries are posted only when a human approver confirms the lines through the inventory-movement approval flow.

Why does email delivery to production@gteveryday.com fail?▼

Resend test mode only delivers to the account owner until the gteveryday.com domain is verified at resend.com/domains and ALERT_EMAIL_FROM is set to a verified sender. Until then the relay returns the Resend error and the PDF should be delivered in chat instead.

Can I build a route pack starting from a mid-route stop?▼

Yes, pass --from-stop N to route_pack.py to include only stops whose daily_order is N or higher. This flag should only be used when explicitly requested, and daily_order 0 is treated as a valid first stop.