Great work, looks really clean! Check out Minithesis [1] and the paper explaining internal shrinking [2]. It will strongly improve your library's shrinking capabilities and prevent users from having to write their own shrinkers for custom objects in most cases.
[1] https://github.com/DRMacIver/minithesis
[2] https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.E...