Shuffling is one of the most important techniques for privacypreserving protocols. Its applications are manifold, including, for example, e-voting, anonymous broadcast, or privacy-preserving machinelearning. For many applications, such as secure e-voting, it is crucial that the correctness of the shuffling operation be (publicly) verifiable. To this end, numerous proofs of shuffle have been proposed in the literature. Several of these proofs are actually employed in the real world. In this work, we propose a generic compiler which can transform any "shuffle-compatible" Σ-protocol (including, among others, Σ-protocols for re-randomization, decryption, or key shifting) into a Σ-protocol for permutations of the underlying relation. The resulting proof of shuffle is black-box, easily implementable, simple to explain, and comes with an acceptable computational overhead over the state-of-the-art. Because we machine-checked our compiler in Coq, the new proof of shuffle is particularly suitable for applications that require a superior level of security assurance (e.g., high-stake elections).