Combine all the marinade ingredients in a bowl. Add the halibut pieces and turn to coat completely. Thread onto wooden skewers, place onto a baking tray, cover and chill in the fridge for at least two hours.
Preheat the grill to its highest setting.
Place the halibut skewers under the grill and cook, basting every two minutes with the butter and lemon juice, turning the skewers until golden on all sides and cooked through, about ten minutes.
Meanwhile, for the sauce, place the onion, garlic and chillies into a food processor and blend until smooth.
Heat the peanut oil in a pan over low heat. Add the onion mixture and fry for 6-7 minutes, or until golden brown.
Place the coriander leaves, ginger and tomatoes into a food processor and blend until smooth.
Add the tomato mixture into the pan and cook for 15-20 minutes, until most of the liquid has evaporated.
Add the ground coriander, cumin, paprika, fenugreek and garam masala and season, to taste, with salt. Stir and cook for 1-2 minutes, then gradually stir in the yoghurt.
Add the milk and increase the heat to bring the mixture to the boil. Reduce the heat and simmer for five minutes.
To serve, place two halibut skewers onto a plate, spoon over some sauce and garnish with the coriander leaves. Serve with basmati rice and naan.