The process involves me creating a raw 768 byte "ch8" file for the Spectrum then running it through a bash script that creates the .psf and .bdf using psf2tools.
The next bash script uses a bunch of third-party tools and my own PixelWorld open-source .NET tool to generate all the other formats and disk images and then packages them up into a zip and uploads it to S3.