This is because internally I treated -p as a synonym for --shader-crate, but the latter is a path while the former specifies the name of a package.
These actually have to be distinct parameters with separate handling. -p needs to do a lookup in the workspace for the package to resolve the path to the crate.