I invented instar (https://github.com/boxed/Instar) which is quite similar to specter (imo a little bit nicer) because I also thought the built in API was weirdly clunky in these respects.
I have used both Spectre and Instar. I prefer Instar for straight forward simple transforms, but Spectre can do more complex ones. Spectre has a more difficult API to wrap your head around and that is its biggest downside, IMO. You really need to dedicate time to learn it rather than try to pull it out on demand.