A package specification (spec) is mandatory - it declares the public interface. The package body is optional only if the spec contains only type declarations, variable declarations, or procedure/function headers without implementation. If the spec declares any subprograms, a body is required to implement them.