Slash only, one form: <current>/<total>, both integers, 1/3 through 3/3. Whitespace around the slash is tolerated; nothing else is.
bash
sdods run -p demo-shop -e staging --shard 1/3
SDODS_SHARD takes the same string and goes through the same parser, so if the flag is awkward to quote, set the variable instead:
bash
SDODS_SHARD=1/3 sdods run -p demo-shop -e staging
Whichever way you pass it, a malformed value fails immediately with exit 2 rather than silently running everything on every shard — which is the failure you actually want, because the silent version looks like a passing build with triple the runtime.