1. Mix the marinade ingredients together and add the chicken pieces, making sure they are all coated. Cover and place in the fridge for a minimum of 30 minutes, but ideally a couple of hours.
2. To prepare the sauce, heat the oil in a large frying pan and cook the onion, garlic and chilli with a pinch of salt until they are soft.
3. Add the rest of the ingredients to the pan and bring to the boil. Simmer on a low heat for about 5-10 minutes, adding more coconut milk or water if it begins to dry out or stick to the pan. The flavour should be a balance of salty, sweet and sour, so adjust with more soy sauce, sugar or lime juice if required.
4. To cook the chicken, thread the marinated meat on the skewers and either grill for 15 minutes, turning so they are cooked evenly, or cook on the barbeque or a griddle pan until cooked evenly.
5. Serve with basmati rice with the sauce on the side for dipping or drizzled over the skewers.