The civilizations already exist (when I finished their implementation I shared the post summarising their current attributes). Currently I am spending my time going through each civilization and seeing what their gameplay is like. Does the starting situation work, are there any suboptimal or superoptimal city sites, are their modifiers too strong/weak, how do they compare to neighbouring civilizations, and so on.
Most importantly it is about the UHV goals. I am not aiming for any sort of complete balance or final state, but I do want to make sure that when it is time to share the branch that people can play their UHV and I get meaningful feedback beyond "this is obviously off". When discussing the new map we often brought up adjusting existing UHV goals to the new map, this is what happens during this process. Sometimes I also decide to replace or rearrange goals entirely. Of course, for new civilizations, there is no UHV at all and it has to be designed from scratch. That is usually what takes up most of the time because there is no past experience of what works to fall back on - instead I have to experiment and see what is fun and feasible.
So implementation wise it is either nothing (when I can just reuse existing goals or just tweak their parameters - the current implementation of victory goals makes that extremely easy), or small bits all around the code depending on what needs to be adjusted (e.g. modifiers). The most effort is probably implementing an entirely new type of UHV goal that previously did not exist for any civilization in the game. But that is still not that much time compared to actually playing the game.
If you are asking how much work it is right now to add a new civilization - I think at this point most of the effort is getting the right art assets together and defining it all in XML. On the Python side, you just have to adjust the basic definition modules: Consts, Areas, Civilizations, Modifiers. There is nothing magical to do in the DLL besides adjusting its constants to match Consts.py and recompiling. The effort is more in the details of what you want to put in instead of the busywork of adding the boilerplate code.