| name | size-a-shipment |
| description | Main entry point for freight volume questions. Takes a product's dimensions and an order quantity and produces a shipment brief - pallet quantity, container load, how many containers, cost per unit if a rate is known - by orchestrating the other skills in this plugin. Use when someone describes a product they are shipping or importing and wants to know how it packs and what it costs, rather than asking one narrow question. |
Size a shipment
Turns "we're importing 5,000 of these, what does that look like?" into a brief
that a forwarder or a supplier can be challenged with.
What to establish first
Ask for what is missing before computing, but do not interrogate — two or three
questions, then compute and state the assumptions you made for the rest.
- External dimensions and gross weight of the shipping carton. External, not
the product's own size and not the internal cavity. If they only have the
product, run
packing-options first: the carton is an output, not an input.
If they have a listing or a URL rather than figures, start with
listing-dimensions — it retrieves the numbers, and more importantly checks
them before anything is computed on them.
- Order quantity. Or the range they are considering.
- Where it ships from and to, roughly — it sets which pallet standard is
realistic. A Chinese supplier builds to 1200 x 1000 (GB/T 2934) unless told
otherwise; European suppliers to EUR-1 1200 x 800; North American to GMA
48 x 40 in.
- Does it nest? Empty crates, buckets, trays and tubs stack into themselves
and the load figure changes by a factor of three or more.
- Any rate they already hold, and on what basis — per container, per m3, per
kg.
Fair defaults when they do not know: 1800 mm pallet build, product stays
upright, no nesting, 50 mm loading clearance, 5% derate on loose loads. State
them.
Sequence
S=${CLAUDE_PLUGIN_ROOT}/scripts/freight.py
python3 $S verify --package 40x30x25 --dim-units cm --per-carton 12 \
--unit 180x130x120 --unit-dim-units mm --gross-weight 6.5
python3 $S pallet --dims 400x300x250 --weight 6.5
python3 $S container --dims 400x300x250 --weight 6.5 \
--container 20gp,40hc --pallet cn --quantity 5000
python3 $S options --dims 190x140x120 --weight 1.5 --pallet cn --container 40hc
python3 $S cost --dims 400x300x250 --weight 6.5 --container 40hc --units 5000 \
--per-container 3400 --per-cbm 88 --min-cbm 2 --unit-price 4.20 --duty-pct 12
Do not do this arithmetic yourself and do not round the tool's output into
something friendlier. The value of the brief is that every number in it is
reproducible from a command.
The brief
Write it in this order, short:
- The load. Units per pallet, units per container by both methods, and the
pallet standard assumed.
- The order. How many containers, how full the last one is, and whether FCL
or LCL is the right shape.
- The binding constraint. Volume or payload — and if payload binds, say the
container ships part empty and more volume buys nothing.
- Money, if a rate was given: freight per unit, landed per unit, freight as a
share of goods value.
- The one thing worth changing. Usually a carton dimension, a pallet
standard, loose instead of palletised, or a quantity that moves to the next
price break. One recommendation, with the figure that supports it.
- What to put in the RFQ. Ask the supplier to confirm units per 20 ft / 40 ft
HC and whether the load is loose or palletised, rather than asking what pallet
they use. If it is palletised on wood, ISPM 15 heat treatment with the IPPC
mark is not optional for most destinations, and the certificate should come
with the documents.
Sanity checks before you present it
- Cross-check against the supplier's own figure if there is one. A gap wider than
the derate means someone's external dimensions are wrong.
- A pallet built over about 2250 mm gross will not pass a standard container
door, whatever the internal height says. The tool flags it; do not bury the
flag.
- Rates are the user's, never yours. This plugin has no rate data and no network
access, and a plausible-sounding invented freight rate is the one error here
that costs real money.